Sound Effects

In contrast with the synthy background music track I created, I’ve actually been experimenting with 8-bit NES style noises as sound effects elsewhere in the game. These started off as placeholder sounds so that I could work out what type of noises to include, but they all seem to fit really well.


I’ve been making the majority of my sound effects using a browser-based software called as3SFXR, which generates random 8-bit sounds that you can adapt and customise in your web browser before saving and downloading your generated sound. You can see from the image above that its possible to customise all settings of any sound created, generate sounds based on category or create completely random sounds using the randomise button. You can export sounds as good quality .wav files!

Sound effects I’ve currently created in as3SFXR are:

  • jump & double jump
  • hurt sound
  • door sound
  • “flower squash”
  • “flower unsquash”
  • blossom collection
  • sushi box collection

As luck would have it, a couple of days ago an article came up on TIGsource about a lesser known piece of software that could be used to generate multi-channel sound effects called LabChirp.


This works very similarly, you can generate random sounds or create your own very easily. The main difference about LabChirp is that you can use the 8 channels listed down the right hand side of the first window to create complex sounds which utilise up to 8 instruments playing at once. You can see here that I’ve set the category to footstep, which is a category not covered by as3SFXR! I’ve made myself a very simple footstep sound based on a random generation which I customised to be softer and quieter. This only uses one channel, but was much easier to make from the starting point presented by the program. I’ve also made a “death” sound which uses two channels, and plays when the player runs out of health. You can also export sounds created in LabChirp as .wav files.

As I’ve mentioned before, I’m trying to avoid using Game Maker’s built in sound functions because there are much better ways of implementing sound effects and music. I had a go at using the Caster extension for Game Maker, which supports .ogg playback. Ogg Vorbis files are a great alternative to mp3s, especially with the restrictions on mp3 files and as Game Maker support for mp3s is temperamental at best. Game Maker plays .wav files fairly well, but using many .wav files can result in an unnecessarily large game file. Caster uses many of the same sound calling functions as the built in GM functions, but allows better customisation of things like volume and panning. In the end though, I’ve decided to use the SuperSound.dll because it seems to have much more support on the internet. This .dll still support the use of Ogg Vorbis files, and many of the same functions as Caster, but works much differently as it is a .dll rather than an extension.


The Super Sound System comes with several scripts for GM. This example is a script called SS_Init, which is called in any instance where a sound is played. There are several other scripts (you can see some of them in the browser on the left hand side) including scripts to play and stop sound, and change various settings. In order for an external sound to be played, it must first be loaded. This can be done individually within each instance, but to save memory I’ve created an instance which loads all sounds as globals. This is created once, meaning that all sounds are only loaded once but can be played several times.


Here are all the sounds I currently have loaded (this list really needs some sorting out and arranging-it’s a bit messy!) I start off by initialising the Super Sound System, then use the SS_LoadSound function to load sounds from their location in the “Sound” folder. I’ve given each sound a handle, which acts as a unique ID for each sound. for example:

global.musHanami
is the background track which is continuously looped;

global.sndstep
is the sound that the footsteps make.

You can see I’ve also used the SS_SetSoundVol function, which allows you to change the volume of individual sounds. Because my sounds files have been brought in from various places, volume levels are a little erratic! This is only there temporarily, as eventually I’m planning to change the volume of the actual files to decrease the amount of functions called. I’ve been using Audacity to convert my files from .wavs to .oggs, and changing the volume is no problem.


Here’s a really simple example of how a sound is played. This script runs when the Z button is pressed (making the player jump). The Super Sound System is initialised with SS_Init();. If the player is on the ground when the Z button is pressed, the SS_PlaySound(global.sndjump) function is called. The second section of code applies to when Z is pressed and the player is in the air performing a double jump. This plays the global.snddoublejump handle, which is a higher pitched version of the jump sound.

Most of the sound effects have been fairly simple to implement, based on various parameters like the ones above. The most complex so far has been the step sound, which uses a timer between plays that I had to time perfectly to the point when each foot touches the floor! You’ll be able to hear some of these sounds in my next devlog video!


Loads of things to do this week! Next week’s target is to create a prototype ready enough for testing by other people, so this week is pretty much a preparatory phase to get as much in as possible before hand.

This morning, I applied some of the new tiles I’d made to the game in Game Maker. I created the ground by laying out a random assortment of the rocky/mountainy tiles, and this is how it looked…

My first observation of this technique is firstly that the tile repetition makes the whole scene look horribly boring, and secondly that the square tiles inevitably make the scene look very angular. I noticed that the repetition is not so obvious in places where there is a lot going on. When there is a lot of space and the occasional rock jutting out, the repetition of small details are a lot more emphasised. So my first objective is to limit the amount of plain tiles used throughout the pattern.

For a little insight into how other developers are tackling the problem, I went to the DevLog section of the TIGsource forums and clicked on the first link for a random example. I’m worried that if I keep going back to the same sources, my game will appear to be a mimicry of another game…
By pure coincidence, I landed on a pixel-art style game that uses a similar rocky tileset! The game is called Out There Somewhere, and has recently been finished.

Out There Somewhere


Here, there is only one rocky tile which is regularly repeated throughout. There is a slight variation in some of the edge tiles etc, but the pattern mainly consists of one tile. Towards the bottom of the image, after the tile has been repeated 3 or 4 times, the pattern gradually breaks apart and becomes a simpler pattern, but in an organised way unlike the random pattern I had tried to create. This really helps relieve what could potentially be an over-complicated, messy design, and somehow doesn’t look “blocky”, despite this game also using square tiles.

Out There Somwhere


To resolve my problem, firstly I felt that the rocky tiles should fit together more seamlessly in the first place. I’ve seen a technique used for create seamless surface textures for 3D models which I though would also be appropriate in this situation- I split the rocky tile into 4 and offset the design so I could work on the joining parts in the middle. The result is this, which has been changed very little, but looks a lot more seamless than before:


After feeling happy with this, I went on to create the “middle” tile to connect the rocky tile to the simple, block colour tile. I created one of these tiles for each side of the tile, so it can be used anywhere in the design. I thought about using a lighter colour for this, but preferred the darker colour as it attracts less attention!


I tweaked the slanted tiles slightly, although they didn’t need changing much to fit in with the altered tile design.

There are still a few tiles I need to make to completely eliminate the unnatural-looking square edges, most of these are edge tiles to avoid too many straight lines. I’m also going to create some edge tiles for grass and some random patches of grass growth to dot throughout large areas of the same pattern.

Also, looking back at my learning agreement I’ve noticed that I mentioned that some sound should be in place by now, which is something I haven’t really considered yet… Like the graphics, I’m OK with using placeholder sounds as this point, as I mainly want to ensure that I get good, working sound throughout this project.