School of Computing & Information Sciences Senior Project, 2013, Fall Game Engine – Audio Subsystem, Configuration Subsystem Student: Brian Lara, Florida International University Mentor: Wei Zeng, Assistant Professor Instructor: Masoud Sadjadi, Florida International University 3- Current System 1- System Overview The goal of this project is to create an open, easy to use, and free game engine. The game engine should allow users of all experience levels to easily get started creating sophisticated games, by providing many key features needed for game development. Ogre 3D is an open source rendering engine. While it provides extensive rendering functionality, It does not provide many of the other features for game design. Moai provides and open source game engine that allows the user to create the game with Lua. Unfortunately, this is the only way a user may create a game. By forcing the user to only use Lua paired with the unique architecture makes it impractical for larger scale games. 2- Problem A game engine is not complete without audio playback. Any game made without audio will not leave the lasting impression of memorable moments that we all have come to know and love from video games. A game engine also needs to maintain the state of its variables to remain consistent throughout its execution. Incorrect manipulation of an engine variable can create a domino affect of unintended changes to the stability of the game engine itself The Unreal Engine is a very popular game engine used throughout the industry. However, its very high cost typically make it an unreasonable choice for smaller studios. 4- Requirements • • • • • • 5- System Design 6- Object Design My Requirements The system shall provide an audio system that can play, loop, and fade audio files synchronously with on screen rendering. The system shall provide an engine configuration subsystem which will allow retrieval, storage and modification of engine configuration variables. Requirements that are integrated with my system The system will provide a way to initialize and control the application using a core game loop that will be maintained by the user. It will also be able to initialize all the various sub systems. The system shall implement an asset management subsystem which will allow data to be loaded onto game engine memory in an efficient manner. The system shall provide an internal engine messaging which will allow a way for subsystems to send messages to multiple listeners across the engine every time it is updated. The system shall contain a scripting subsystem which will provide a method of developing with the engine using only a simple scripting language. 7- Implementation Configuration Subsystem Class Diagram – Shown above is the Configuration Manager class which contains a map of Variable Containers, and methods to set, retrieve and remove them. • The project was built with CMake and programmed in C++. • The Configuration Manager class contains a map of variable container’s. • The Variable Container class uses generic programming to store any type of variable. • The Audio Container class makes calls to the open source library known as SFML. • The Audio Container stores all the information regarding the audio file and allows the user to call its methods to hear audio playback. • The Audio Container must be loaded via the Asset Manager to ensure efficient handling of resources. 8- Verification Google’s testing framework Google Test was used to verify our system and tests were written as implementation of the system was taking place. A bottom up approach was used because it was the most intuitive testing strategy. It allowed us to verify our work quickly by encountering bugs early on in the development cycle. Above is our package diagram that shows the open layered architecture that was used to create the game engine. Having the layered architecture open allows the layers to communicate to any other layer below it. The circled artifacts are the subsystems that I was responsible for, namely the Audio Management Subsystem and the Configuration Management Subsystem. Audio Subsystem Class Diagram – Shown above is the Audio Container class which inherits from the Asset class in the Asset Management Subsystem. The Audio Container class contains methods that provide the user with audio playback functionality and details about the audio file. 9- Screenshots The screenshot above shows an example of how a user will use the Audio Management Subsystem to play an audio file. The two simple steps are one, load an audio file via the Asset Manager class and two call play on the resulting Audio Container. The screen shot above shows the successful execution of 22 test cases that were used to verify the functionality of the audio and configuration subsystems. 10- Summary Creating a new game engine will be the approach our team has taken in order to allow flexibility in meeting our goals of userfriendliness, cost efficiency and accessibility. Leaving our game engine open source will allow new game developers to gain easy access to game development tools at no cost. Providing an easy to use interface and overall user-friendly development environment will make it simple for new game developers to acquire the knowledge needed to use the up-to-date game engine technologies. 11- Acknowledgement The screenshot above shows an example of how a user will use the Configuration Management Subsystem to store and retrieve an engine configuration variable. The code shows the user getting an instance of the Configuration Manager and calling the two methods setVariable() and getVariable() on it. I would like to acknowledge the developers of the SFML library for their very capable audio library and I would also like to thank my teammates Antonio Diaz, Robert Law, Michael Weschler, and Julian Nodarse for being very competent and helpful individuals. Last but certainly not least I would like to thank God for gifting me with determination and perseverance.
© Copyright 2026 Paperzz