Programmer16 has been doing a good job getting some of the maps from part2 done, and I've gotten almost all the maps for Part1 done.
Though unfortunately my time is really being help up with engine features, I was hoping they wouldn't run this long, but, they are necessary so I just need to suck it up and work faster so we remain on schedule.
Audio has vexed me on every project I've ever worked on that needed a substantial audio system. I imagine this is so because in a lot of cases audio just doesn't get the same hands-on time that most other aspects of game development do. Now I know what some of you are thinking "Raymond, I can play a sound like super easy with 'insert api here', so what is your problem?"
It's not playing the sounds that's hard, but rather integrating how audio is controlled via the developer, and how the system controls audio on it's own, let me explain.
Average Tetris Game:
- Play one of three music tracks, looping, change frequency based on game state
- Play various single-shot sound fx
A full-length Adventure Game(such as Malathedra):
- Each map needs to have it's own music track associated with it
- When you arrive at a map it should fade out previous track and then play new track, looping.
- Ability to 'instantly' switch a music track, without the previous track fade out.
- Ability to play various 2D audio, both single-shot and looping, associated with the current map you are on, this audio must silence and start as you move from map to map
- Ability to play various 3D audio, both single-shot and looping, associated with an entity, this audio must silence and start depending if you encounter the entity.
- Ability to control the volume on three channels,(music,sfx,voice), which must effect all currently playing sounds in those categories and all further sounds
- Ability to save the game and later restore the game and have all of the audio continue playing where it left off, potentially with new volume settings.
- Should use a recycled buffer management system to keep buffer usage as low as possible (non playing sounds have no actual sound resource usage)
In short, implementing a system this complicated that is bug free, is a bit of a challenge, but the first step to solving it is doing what i've done, making a complete feature list, so you can decide how best to code the system without needing to implement forgotten features later, or even worse, implementing feature you don't need!
Fun Fun Fun =)