For my last game Multi I implemented a system which allowed for my game character to walk on and jump from walls based on collision handling from an article in the SoulHow Assistance Guides. I thought I’d share that Wall Walking System with you.
You have familiarity with writing code in Game Maker.
You have a basic understanding of writing simple physics code in Game Maker.
Your environments gravity pull objects downwards.
That you have handled cases where your character can move on horizontal surfaces
The following Wall Walking System allows a character to walk in a variety of different situations that I’ll illustrate and refer to using the following diagram.
On completing this short guide your should have a better idea on how to have your character walk in the following cases:
Green Case – Left, Right on Horizontal Surfaces
Blue Case – Up and Down Completely Vertical Left Walls
Red Case – Up and Down Completely Vertical Right Walls
Purple Case – Left and Right on Vertical Ceiling Walls
In addition your character will also be able to jump up, down, right and left in the Green, Purple, Blue, and RedCases respectively.
A caveat of this Wall Walking System is that it will not work in the corner cases highlighted by the orange lines due to not specifically handling the effect of the assumed environments gravity. Now on to the system!
Have you played a game with no background music/sounds? In most cases it makes the game feel quite dead. So in developing my game Multi I needed a basic looping background music player of sorts which filled the following requirements:
Tracks needed to be played one after another starting from the first track to some n number of tracks.
Through this iteration of tracks, tracks must only be played one time.
On reaching the end of the final track the first track would again be played creating an infinite loop.
For clarity purposes heres a diagram:
Following the blue arrows from Track 1, tracks are listed in play order from left to right then restarting from the last to the first. Put simply I wanted to have a looping background music player. With this in mind, I began the project with some research and found this post on Steam Community.
The basic summary of what’s suggested in the above link is:
Combining all your tracks into one long track with a program like Audacity, then play that and loop it.
Running a queue of songs using Game Makers alarms, then looping it.
Using simple logic based checks, play one song after another then repeat to form a loop.
All the above are valid methods which have advantages and disadvantages, but for the foundation of this music player I went with option three.
Building the Music Player
To start create a persistent object. Name is whatever you want, it doesn’t need a sprite either, but it will be need to be placed in the room you want your music to start in. If this object is not persistent and the music player gets reinitialized at any point, it will lose its place and start from (track 1) the beginning again. For a looping music player this is not what we want.
Now give the persistent object a create event, and add this code:
// Start sound_track_1
// track_pointer initialization
OK the first line makes sense, it starts the loop, but what’s with that counter? Good question.
Writing a good, feature rich platformer engine takes a lot of work. Building a simple platformer engine is considered a case of ‘reinventing the wheel’. So it makes sense why some choose to find a pre-built engine to plug in to their game.
The trouble with this can be:
Getting it plugged in.
Figuring out how it works.
Finding it doesn’t do exactly what you what.
Seeing as the feature needs for a game I’m building are simple. I instead decided to learn the basics then build such an engine in Game Maker. For now, I’ll briefly run through the resources that helped me build a major part of what I’ve implemented. Collision detection.
Implementing collision detection can be a head ache if your new to ‘game physics’. So to help you on your way here is a good video by Shaun Spaulding which gives an in-depth look into how to create a platformer in Game Maker. I’d recommend watching the whole thing, in particular where he explains the basic concept of collisions at about 22:30.
The system he describes is basically a method of checking several pixels ahead per frame. If a situation arises where two objects intersect, move the moving object to a point where they are next to each other but not intersecting. This is the method I choose; there are many many ways of doing it.