Game Engines – GameMaker

For the past month I’ve been sitting around writing very little code and thinking a whole heck of a lot about the next game.  It’s been a ‘month off‘ to collect my thoughts, but now March is over and April is the month of investigation!  Engine investigation anyway, starting with GameMaker.

When I speak with other developers about engines and I mention GameMaker I get very mixed reactions, usually somewhere between apathy and blind frothing-at-the-mouth hatred – I have yet to find anyone that actually likes GameMaker, except for possibly @TheCodeTroll.  If you’re not familiar with GameMaker then I suggest you take a look at the link above and see what the fuss is about.

I last used GameMaker about four years ago, would’ve been late 2009, and at that point it was an alright engine for introducing people into game development without getting people distracted by any of the lower level concepts.  What drew my attention back to GameMaker was the additional deployable platforms added over the last year or so, for example the PS4.

What I Did

So the first step was to complete the first tutorial: some game about a bouncing ‘clown‘ that gets faster every time you click on him gaining you points.  I got so far as implementing the basic game before replacing the standard ‘drag & drop‘ mechanics with scripted ones using the engines proper physics engine.  Also I added a load of clowns:

As with most physics engines it’s all dependent on accurate collision meshes, the resultant collisions were pretty awful when I used circular collision but after manually building a six-point polygon around the ‘clown‘ the results were pretty swish. From there I went on and started implementing a little space scene with a sun and a few planets orbiting the sun.  I used the same orbital calculations as Space Salvager and they ported quite well into the GameMaker Language (GML).  The final piece was implementing ‘gravity‘ into some asteroids, so every time I clicked somewhere it dropped an asteroid won into the world and began drawing them towards the nearest gravity well.  That worked well, mostly.

Each little speck is a tiny asteroid, they sort of clumped together and followed the closest planet to them.

My Thoughts

Although this never produced a game of any sort, this did exactly what I wanted it to: experience the engine and get a feel for it.  GameMaker has some good points: physics are easy to implement, collision meshes can be produced quite expediently, sprite animations are very flexible.

That being said, I found it quite hard to do anything really complicated in a clean fashion.  Now this might be down to my inexperience with GameMaker, however I was attempting to manipulate to camera to perform two things: centre on an object and scale on the mouse scroll.  Centring on an object isn’t hard, GameMaker room views will track an object and maintain them inside the viewport with a given buffer around the edges of the viewport.  However, merge this will modifying the view by ‘zooming’ with the scroll-button and you find an issue.  Every time you change the zoom you have to change the buffer around the edges of the viewport to keep the object in the new centre of the screen, something that’s fixable by running the numbers in the script but it felt as though this should be available as a feature or maybe I’m just being lazy…

One of the things about GameMaker that did annoy me was the way you declare class variables, or rather how you do not.  If you want to use a local variable for that script you declare it using ‘var’ much like javascript, it’s type is undefined until you actually start using it which irritates me but I can get on with that.  If you want to use a class level variable you just start using it, there’s no declaration of any kind and much like the local variables you can store whatever you want in it.  Personally I don’t mind having to be aware of my variable names and their types, one of the most fun things I ever wrote was a little demo for the PSP in C using Notepad++, but that doesn’t lead to an expedient ease of development which is what using a high level IDE like GameMaker is about.  This is more of a peeve than an engine-critical issue, a contentious rant shall we say.

…upon reflection…

I’ve taken my time writing this post and that’s because my opinion slowly changed over the course of the days proceeding.  I do like GameMaker, I think it had the potential to be a very good engine for small development teams: like lonesome me.  I am torn between the ease of multi-platform deployment for GameMaker and the high-level of control in using my own engine.  I’m not the greatest games designer ever, I’ll be the first to admit that, but I’m a very decent programmer and fairly good at technical design – using GameMaker was difficult for me because it took away a lot what I’m good at and made me focus far more on the games design aspect, which is good and bad.  This was bad because it was playing to my weaknesses, but good because it forced me not to hide away from my weaknesses and tighten up my games design skills.

I intend to go on using GameMaker, perhaps not to make any full titles, but to make all these little ideas I keep having to prototype and hone my weaker skills in design.  GameMaker is good for prototyping and decent for full titles using the right concept.  Every tool though, no matter how hated, does have it’s use and I think I’ve found my use for GameMaker.

Advertisements

2 thoughts on “Game Engines – GameMaker

  1. I’m not sure what your project needs might be (and I’m sure you’ve looked in to it) but it sounds like Unity might be more up your alley. My understanding is that it has the “ease of multi-platform deployment” and since it’s based in C# it would also play to your strengths in the programming department.

    Now, I say this as someone who chose Game Maker for my project but my background is design and while my scripting and logic skills are fairly well developed my programming knowledge is weak. Even reading your short trial with Game Maker exposes gaps in my knowledge of the system I’ve been working in for months.

    Either way good luck, I look forward to future updates.

    P.S. I found and voted for Space Salvager on Steam Greenlight.

    Like

    • I am going to take a properly look at Unity probably after I finish moving, but it seems everyone uses Unity so I wanted an excuse to write some stuff about other engines that most the people I know don’t use. Might do Game Salad next.

      I’m glad I managed to point of some things you’d not seen before and cheers for voting up Space Salvager on Greenlight: that really means a lot to me.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s