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:
— Sam Albon (@2PersonGames) April 5, 2014
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.
— Sam Albon (@2PersonGames) April 5, 2014
Each little speck is a tiny asteroid, they sort of clumped together and followed the closest planet to them.
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…
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.