Friday, August 10, 2007

Effective Use of Sound Effects

If there's one thing that bugs me, it's a module let down by poor use of sound effects. I think sound placement is a major factor in helping immerse the player into the world you're trying to build for them, and I'm not just talking about the ambient sounds you select under area properties.

Placed sound effects can make a huge difference in making your module feel alive, but they can be far more powerful than simply placing them where you think sound should be present. Okay, I admit that for a majority of sounds that's all that's required, after all, a waterfall for example is pretty much going to be constant and not likely to change position.

It seems that some people miss the opportunity to customise their sounds. If you go to sound properties and click on the advanced tab, you'll see a number of options that determine when the sound is played, such as play all the time/day only/night only/specific hours. It's a good idea to make copies of the master sounds if you're going to tinker with them, particularly as it enables you to select them from the custom sound menu for later use. So how can we make use of the above options? That all depends on the type of sound you're placing, so here are a few examples that I've dealt with in the past:

Day Only
  • Seagulls - They rarely cry out at night. Making them day only makes ports feel more alive during the day.
  • Crowd Noises - Even if you want them all the time, make two versions, with the daytime one being louder than the nightime one.

Night Only

  • Frogs - Place near a pond. They're much louder at night.
  • Owls - A little obvious perhaps.

Specific Hours

  • Bells - If placed by something that resembles a bell tower, have them play at 9am, 12am, 3pm, 6pm, and 9pm. They help inform the community of the time, and players will soon realise they don't play all of the time.
  • Cockeral - Have this one play the same hour that your module has designated as morning.

The above are perhaps a little obvious, but you'll be surprised at how much more alive your module will feel.

Another trick is in the placement of them. If you have a city dock where seagull can be heard, make a copy a little less loud, and place it beside doors or windows in interior areas accessed via the dock area. It really helps create the illusion that the worls is still going on outside.

If you want to go a little more advanced, there's always the option of having sounds fired by script. If scripting scares you, fear not, for it doesn't get much easier than this. Let's say for example that on boarding a ship and talking to the captain, the captain says something along the lines of "We're departing now, raise the anchor." It would be pretty neat to have something that sounded like the anchor being raised at that point. First, we have to find a sound that suits the purpose. If you look under the civilisation category in your sound list, you'll find "Crank Creaks Large" which pretty much fits the bill. Make a copy of it, and change the tag name to "raise_anchor". Now, place the sound where you want it to be played, then right click on it and select "properties". Under the "Advanced" tab we need to change the play style to "Once only", otherwise it'll sound like they're forever raising the anchor, and we also need to make the sound inactive so that it will only play when we activate it via script. Got that? Good. Calling it from script is pretty easy. If we go back to our conversation where we want to activate it from, we can click on the "Actions Taken" tab of a conversation mode and build the following script:

void main()
{
object oPC = GetPCSpeaker();
object oTarget;
oTarget = GetObjectByTag("raise_anchor");
DelayCommand(5.0, SoundObjectPlay(oTarget));
}

The delay command gives a five second delay before the sound is actually played.

Of course, there is an even simpler way, and that's to click on the "Other Actions" tab of a conversation node, and select the sound you want played under "Play Sound". The advantage of this method is that you don't have to physically place the inactive sound in your area, while the dowside is you have to know what your sound file is called (although you can get round that by looking it up in the properties of a placed sound). To be honest, for something this simple I'd probably opt for the latter, but the above code can be a handy thing to know if you're starting to dabble with scripting.

That's it for now. Hope this article has been of use to someone :)

1 comment:

Anonymous said...

Thank you. That was very helpful.


Maddyanne