home | et13 - game prototyping in Gamemaker prev | next

David Javelosa

Copyright © 2001-2020, David Javelosa unless otherwise stated.


week 13 - Rapid Prototyping - Bad Game Design - Sound Functions

Bad Game Design

What to avoid while designing games in GameMaker:
(thanks to Ernest Adams)

Boring and Stupid Mazes - they don't have to be bad, they should be attractive, clever and fun to solve
Games without Maps - kinda like a movie without a script. If it's just to confuse and slow down the player, they may just not want to play!
Fantasy Killing with no tie-in to plot - Again, no story, no direction. There should be some reason for doing this!
Pointless Surrealism - see above. Unless there is some tie-in to the plot, why spoil the fantasy? Wierd in-side jokes are just that.
Puzzles requiring extreme lateral thinking - there should be logic to any puzzle solution
Puzzles requiring NO lateral thinking - logic and logical sequence; can there be more than one solution that makes sense?
Puzzles requiring obsucre knowledge from Outside the Game - if it's not related to the big picture, why torture the player?
A switch in one room opens a door in another a mile away... - a game of local concentration can be a fun challenge; but again, why torture the player? make it challenging but not annoying!
Only One Combination Works (out of many) - this can be a cover-up for lazy game design. Making it hard for the hell of it is not being clever! There should be a reward for innovation.
Create logical sequences of activities; not spending adventure time micro-managing with shop keepers.
Keep time limits reasonable and realistic! - Remember to create a difficulty curve, a grid of skills that can be learned each level to make the game progressively challenging.
Make Opponents smart - hords of dumb monsters that try to overwhelm you can just be irratating. Give them some sort of intellegence to challenge the conflict. It's easy to balance a game with non-challenging opponents.

Basic Sound Functions

Besides using the sound icon behaviors in the object properties "main1" tab, there are several sound functions that can be called from GML script. These can go beyond Play a Sound, Stop a Sound, and "if a sound is playing".


sound_play(index) plays the indicated sound once. If it is background music, the previous BGM is stopped.

sound_loop(index) plays sound as continous loop. If BGM, previous is stopped.

sound_stop(index) stops indicated sound. stops all instances of sound.

sound_isplaying(index) returns True if indicated sound is playing.


sound_volume(index, value) changes volume on sound

sound_global_volume(value) changes overall volume of game

sound_fade(index, value, time) creates a transition to a new volume based in milliseconds.

sound_pan(index, value) changes pan channels; -1 = left; 0 = center; 1 = right

sound_background_tempo(factor) changes the tempo of a BGM MIDI file within a range of .01 and 100; where 1 is normal tempo.

Rapid Prototyping

Determine a simple game play mechanic for a 2D side-scroller.


- animated main character

- tiles for building the world

- room for the entire length of the level; auxilliary portals to secret levels

- create opponent instances that are destroyed by shooting or jumping on



gravity_direction = 270;
if place_free(x,y+1)
gravity = 0.5
gravity = 0;
if (vspeed >12) vspeed = 12


//use the above code on Create. Apply Key Press up, left and right directions.


// create collision boundries with Bounce action.

How does changing variables affect the action?


Characteristics of the room can be set by selecting ROOM properties. Under the View tab, a smaller window can be configured to scroll over the larger size of the room. The dimensions of Width and Height can be set, as well as the object to be followed, object border restrictions, and border spacing.

Copyright © 2001-2014, David Javelosa unless otherwise stated.