One of the courseworks during university is to create an audio only game – targetted at hearing impaired gamers. I think this is indeed a very interesting task. I have created text only game but not audio only game!
Building from a basic framework supplied by the course lecturer, Mr. Allan Milne, I’ve created a simple zombie game. Getting the balance right was hard indeed as the game is written for 2 channel stereo audio output. After a lot of fine tuning and debugging I think that the game is roughly playable 🙂
The title of the game is “Zombie Rescue”. It is basically an audio only first person shooter type game. There is one main character that can move freely in a 2D plane. There are also enemies and objects that the player is able to interact with.
There was a viral outbreak at the underground lab that you were working. As a result, all of your colleagues had turned into zombies. You were lucky enough to escape before the military completely sealed off the underground compound. You have been working hard and have discovered a serum that might cure your colleagues. This however means you must venture into the dark underground compound to search for med kits that will work with your serum to cure your zombie colleagues. You have a 1 minute time limit to attempt to cure them all before the military will lock the vault door. Luckily, the zombies appear to be chained to the ground, so they will not give chase. Finally, you must do all this in the dark as any light might potentially kill your colleagues in their zombie form.
The use of DirectSound’s IDirectSound3DListener interface has indeed made the task simpler. With methods like SetPosition and SetOrientation it made the task of creating a virtual “camera” for the player in game manageable. The task of positioning 3D sound in the game is also very straightforward and simple. In a short time, I managed to create a simple soundscape to represent the game world.
There are a few restrictions I had to impose to the game. I had limited the player’s rotation to the XZ plane; therefore it rotates only about the y-axis. This means he is unable to look up and down. I have also disabled movement for the zombies and position them at random positions with random orientation limited to four directions – North, East, South and West. Other limitations also include limiting the number of zombies and med kits. I find that too many variables made the game harder to play. As I add more sounds, they tend to overlap each other and this made it difficult to “feel” the actual position of the player in the game.
I had made extensive use of audio clues in the game so that the player do not feel too detached from the game. The main challenge here is balance. I had to decide to balance between adding more features to the game versus playability. In the end, I managed to work out a decent outcome that borders in between both.
I have also attempted to use the Sound Cone technique and apply it to the zombie. The idea is to project the sound source in a certain orientation and angle so it’s more realistic. I have thoroughly explored the IDirectSound3DListener8 interface’s Sound projection cone methods. However, due to the lack of time I couldn’t manage to include this feature in the final version of the game. Without visual confirmation linking it to the Field of View detection technique that I have implemented for the zombies, it’s very hard to get things right. Sometimes the sound doesn’t sound “right” during game play hence it confuses the player.
However, I generally feel that it is possible to design an audio only FPS game and make it work. Perhaps it would take a slightly longer time. I have tried playing my game with my eyes closed and most of the time I am pretty satisfied with the outcome. There are certain times where things seemed a bit odd but this is due to the Random Number Generator outcome that positions the zombies too close to each other. I strongly feel that by adding multi channel audio support will greatly improve the game playability.
Anyway, I’ve spoken too much 😛 Below are links to the executables and source code :
DirectX Audio Game Code
DirectX Zombie Audio Game Executables