Learning from the sound issues in Caveman Craig 1
If there’s one thing I hate about the development platform of choice (Game Maker), it is the sound engine.
It seems to be lacking so much, both in functionality and stability, that my stomach twists every time I remind myself that my games do eventually need sound effects.
Caveman Craig 1 was whipped up in a month; we had a deadline. As a result not much time was spent on sound. We had to rely on what GM could provide and cop any of the idiosyncracies it has, like some WAV files not loading / playing at all, weird buffer issues, and very limited functionality.
This time round, with CC2, I’ve spent some time researching possible sound engine alternatives. The major problem was, however, that CC2 will not just be released on Windows, and so we couldn’t rely on DLL’s and extensions for all platforms. So I went back to Game Maker to see how I could work with its sound engine. And I believe I’ve had some success!
Firstly, the ‘buffer’ issues I always found in my other games weren’t really buffer issues at all.. I don’t think. There is a “sound_loop” function, but I previously used “if !sound_isplaying() then sound_play();” instead, as it meant as soon as the action stopped (say, preparing fruit), so would the sound associated with it. I wouldn’t need to check if the action had finished and execute a “sound_stop” function. It was laziness on my part, I guess. But I’ve discovered that the “sound_isplaying” function is 1 step/frame out of sync. So, if sound X is not playing, the above code would return true twice before it realises the sound is playing: enough time for the game to play the sound twice, 1 step apart from each other – therefore giving off the impression the sound is not playing correctly. If I discipline myself to use sound_loop and sound_stop, we might not get those issues. Alternatively, if YYG fixed this minor glitch in an update, I will kiss their feet.
Secondly, positional audio in GM is not great. And this is why: each sound file that you load has an ‘index’. You set the position and volume of a sound based on that sound index. So, for example, if you have 5 rocks landing in 5 different places at the same time, and they all play the same sound, only 1 position and volume value can be used. My solution, forgive me if there are technical limitations to this approach (I don’t know how it works in other programming languages, really), would be to give each instance of a sound playing an ID, and choosing the position and volume on a per ID basis. That said, realising that most of the positional sounds are either short or not often played (a rock landing plays a short sound, and the sound of a velociraptor dying is rarely going to play twice, and when it does, positional problems aren’t really going to matter), it looks like we can work with the GM engine after all.
So far, we have implemented a number of the sounds from the original Caveman Craig for testing purposes, and this seems to work just great. I’m looking forward to showing you some more ‘lively’ gameplay teasers soon. Perhaps even with a touch of Ricky’s musical presence!
A look at our workspaces/studio…
Thought I’d show you something a little different. This is the little home studio with which I create Caveman Craig 2 (and any other games of course)!
Some details for the geeks…
- Main PC Desktop: Core i7 2.66Ghz, 6GB DDR3 1600Mhz RAM, 9600GT, 24″ Dell Monitor, DAS Mechanical Keyboard, LS1 Mouse
- MacBook Pro: Core i7 2.66Ghz, 8GB DDR3 1066Mhz RAM
- M-Audio FastTrack Pro Recording Interface, M-Audio Keystation 61es MIDI Keyboard Controller
- AudioEngine 5 Powered Reference Speakers
- Diecast model Delorean!
In the next few days I hope to show you a few snaps of our other studios. Stay tuned, as always =]
Time to meet another Caveman from the upcoming Caveman Craig 2.
This is Jurassic John. Not much to say about him except that he is hairy, sweaty and has a fierce arm when it comes to using his club.
Click here to see the .swf animation.
Enjoy the animation! We will be recording voices and sound FX for the game in the coming week!
Exciting News on the CC2 Front
I have been on and off searching for a suitable musician to produce a quality soundtrack for Caveman Craig 2. In the original game, Tim and I whipped up some very basic tribal music just to give a bit of background noise. This time we’re trying to be just a little more ambitious!
We’re very pleased to announce that Ricky Garcia will be composing the OST for Caveman Craig 2. Ricky is a berklee graduate with some impressive credentials: he was the guitarist for platinum selling pop-rock group “LaFee”, and has worked/played with some world class greats – including Jordan Rudess (of Dream Theater) and Steve Vai. Ricky’s making a move into film and video game soundtracks, and we hope that CC2 is the musical canvas he’s been looking for!
We hope to give you some snippets of what will undoubtedly be some epic orchestral sounds in the near future!
You can visit Ricky Garcia’s website here: http://www.rickygarcia.com
Caveman Craig 2 Dev Update
Just thought it was about time I give you all a development update on CC2.
Things are going really well. Greg, Tim and myself have spoken a lot about revising some areas of the game to make it more fun in general, really getting into the specifics. We’re doing lots of testing of the alpha builds to iron out bugs and make tweaks to make the game more fun. We’ve added a couple more dinosaurs to the sandbox and are working on balancing them out, too. Thankfully at this point there don’t appear to be any big performance issues to tackle, unlike CC2′s predecessors.
As you can see from the previous blog entry, Tim has designed a number of foe’s for Craig, and will continue to show you more over the coming days/weeks right here in the blog. We hope Tim and Greg will have more material for you soon, too.