Tuesday, March 08, 2005

0.A.D.

About time I gave some word count to this project that has been consuming my time lately.

0.A.D. is a Real Time Strategy of massive scale, set across a map of varied geography with real live everything. Time passes, Weather Changes, Life happens...Virtually, that is.

The current challenge is in laying the foundation for managing the assets, and charting a straight path to implementation. (I say challenge with a smile, as I head deep into the recesses of my organizational mind)

First off I talked with Janwas about some of the work he has done with regards to the OPENAL audio engine. He helped nail down some of the basic specs and requirments as well as the flexabilities.

Next I needed to start with a naming standard to work with, so I probed the Acumen for a quick tip on how they like it down in code world. What came out of that was an attempt to give everything a [XXX_XXX_##] designation for in-code sound clip referance, as well as the ability organize in the spreadsheet in the short term.

The other cool thing that came outta that talk was the idea of "playlists" that could be randomized. Ahh, sweet randomness how you will solve all of my woes of overworked audio and often heard audio cues. I'm hoping to randomize a fair share of things to keep the sounds fresh and spry in a world so full of life.

The potential for sharing various sounds across multiple sound groups has become desirable, and I'll try to illustrate what I might be thinking with an example:

---One of the actions in the game is to collect resources for building houses and weapons in order to build your empire.

Foresting is used to collect wood to build houses and ships, a worker is assigned to a plot that has tree's on it and goes to town de-foresting until all the tree's are gone.

Instead of having a single loop that starts with the action, I'm proposing:1. Random loop selected from the [tree_chop__##] "playlist" that would play immediatly.2. Random loop selected from the [tree_creak_##] "playlist" that would play after a random pause from the start of action of betweeen 5-10 seconds.3. Randomly play sounds from [group_lumbering_##] "playlist" that would include any other sounds in a defined "lumbering" group, potentially: [fire_crackling_##], [gather_leaves_##], etc. to help fill in ambience of the event.(occiasional blacksmithing sound, or vocal asset tied to the action of Foresting)

The furthering of this idea may be to have EACH forresting location emanating these sounds, panned in relation to their locations on the map.

If you can imagine the cacaphony of a dozen foresters hacking away at a forest with radomized sounds emanating from each of their loactions across the map. Merzbow would likely be proud. (mebbe need a way to limit it to X # of entities)

(note: what about live musical instruments in mmporpg's, has there ever been a drum "circle" in a online game? Positionally panned emanating sound sources.)---

Something that has been thrown around a bit is the idea of randomizing the pitch of the sound clip to give even more variability to the sound. This sounds like it would work in some applications within certain ranges, and as long as those parameters are specifiable we should be able to play with that a bit. (i.e. randomising the pitch on each instance of wood chopping would sound great in the above mentioned scenario as long as it wasnt pitched too high/low)

Sharing sounds will be an important factor, along with pitch shift, frequency and bit rate conversion all in an attempt to try and keep the total audio size budget on track. (re:small)

Needless to say it involves a multible tabbed Excel spreadsheet with a maddening amount of variables in order to communicate effectively to the programmers as well as team of audio specialists what we are trying to accomplish. I envision looking to the spreadsheet to get a grip on who is working on what, what sounds are finished, what sounds are implemented by programming, etc. (I'm also hoping to use it to cook rotisserie chicken!)

That said, it's not quite there yet...up for discussion is all of the above, as well as the various variables and wheather some are neccessary or not.