SOG - Sound Oriented Game
What is the SOG project?
SOG (standing for Sound Oriented Game) is a challenging project started at the end of 2005. The goal of this project is to provide a free and full-featured game engine exclusively based on a 3D sound representation of space. As you may understand, this engine is primarily designed for blind or visually impaired people. However, this doesn't mean that sighted persons can't try and even help us in the development of the engine.
The development of the project is focusing on the following points:
- Immersion, sound quality and realism: a player should be able to enjoy walking on a lane, listening to the bird, a little river and the sound of the wind in the trees. Of course, SOG is a game engine but also an engine that may provide world exploration and immersion experience.
- A dynamic and interactive world: a bird that stops singing when you come too close to it, etc.
- Portability: The game should work at least on Windows, Linux and Mac OS X.
- An exciting fighting system: a delicious mix between the turn-based model and something requiring action, fastness and training.
- Ease of use: The player should be able to enjoy the game without reading much documentation before starting. This involves an easy way to navigate and find the character's bearings in the game areas, an easy way to locate objects and few character statistics.
- A map editor.
- The ability to play with friends over a local network and/or Internet.
- And probably much things I forget to mention ...
Implemented features
The previous paragraph listed the things we would like to see in our engine. But now it's time to go back to reality and to tell you what is implemented for now:
- Technical description: The engine is written in C++ and we use the FMOD library to render the 3D sound scene. The program is multi-threaded which allows the game engine to ask the sound module to do something while it is doing something else. Communication between modules is implemented through a custom and portable message API we especially developed for the game.
- Static world handling: The engine can read a static description of the world and loads a 3D representation in which the player can walk, run, pass doors etc. Each object is represented by a sound. The static world description is stored in XML files. Our engine already handles object sounds, background sounds and musics.
- Location-based moves: When we defined the game design, we thought that the major problem in 3D-based audio games is the difficulty to get the character's bearings and to find certain passages. In fact, a game that allows to go anywhere in a given area is closer to the reality, but the playability suffers from this lack of landmarks. So, for this time and hopefully just for this time, we decided to sacrifice the realism in favor of playability. So, the gameplay relies on locations that are defined in the map, like in a MUD or like in video games such as Myst.
- Inventory: The player can get and drop objects. If he leaves an area and comes back in it, he will find again the objects he dropped, unless someone else has taken it.
- Compass: the player can press a key to know what direction is is facing (north, south, east, west etc.).
- Subareas: For each game area, the author of a map can define the sounds of footsteps for example. But with the subarea concept, he can define different footsteps sounds depending on the player's coordinates in the area. For example, you are walking on a gravel road and you have to cross a place where there is grass instead of gravel on the ground, then you will ear the difference thanks to the noise of your footsteps. The subarea concept can also be used to define places where there is a specific reverb or echo.
- Spoken messages: we implemented an API that allows the engine to speak messages in order to help the player: object names in the inventory, menus, direction etc. The engine does not embed a TTS (Text-to-Speech) component. A small Windows application has been developed to create speech message. This program is using the Windows SAPI 5 interface to generate the speech audio files.
Want to contribute?
The best idea is probably to subscribe to the Sog-dev mailing list, and post a message to introduce yourself and tell us what you want to do: development, game scenario, sound design etc. You may also directly contact Yannick or Olivier for more information.
Downloading the source code
The subversion repository of the SOG project is available at:
(C) 2009 - Olivier BERT and Yannick PLASSIARD