Posted: May 16
GameMaker: Studio is a software development tool optimized for the creation of videogames, and it is superb. I have poked at many videogame creation tools, and while they all have their own pros and cons that would in some cases make them superior to GM, nothing, and I mean nothing, has ever come close to being such a fantastic development kit for a solo indie developer. GM is the best tool if you are working alone, and honestly, is also one of the best tools for getting into the game designing industry.
GM uses object-oriented programming for its skeletal operation, more so than most object-oriented applications. With the explorer you can keep track of your files for sprites, sound files, rooms and many other things, one of them being "objects". With these objects you create "instances" of them within the game to make it work. The objects also have "events" inside them that activate code when that event is triggered, which include, but not limited to, when an instance of that object is created, every frame of the game an instance of this object exists, when a specific key is pressed, when an instance of this object is destroyed, etc, etc, etc.
Its these objects that hold all the behind the scenes programming that makes the game run. My obj_spawner instance every few seconds will create an instance of obj_enemy which attempt to fight the first instance of obj_player they see.
But what makes Gm ideal for novice developers? Well the object-oriented paradigm is great for understanding and keeping track with your own game, especially when you start to really add to them as they become increasingly more complex. The engine also allows you to program by either using the engine's own programming language, GameMaker Language (GML) or by using pre-made options that you drag and drop into an event so that these actions trigger, with you able to change the order and set up multiple different conditions. This drag-and-drop mechanic is superb for anyone who needs to try and understand the fundamentals of programming. If you've ever seen programming, you may be scared off by something along the lines of...
if state = "moving"
if sprite_index != spr_enemy_moving
sprite_index = spr_enemy_moving;
image_speed = 30;
if distance_to_object(par_player) < 100
state = "attacking";
But with the drag-and-drop boxes it turns into nearly a literal conversation with the game:
If the enemy's state is moving then set his sprite to his moving version if it isn't already, then move towards the player until you are within 100 distance of him then attack.
And even then, GML is one of the easiest to use programming languages ever, being a cross between C++ and Java then dumbed down for idiots. I love GML because it does away with all of the nonsense of old programming languages and throws away some of the more needless rubbish, such as statement conditions needing to be within brackets, no data types for variables, and NO ♥♥♥♥♥♥♥ SEMICOLONS (I still use them for good habit though :P)
There are so many pre-made functions in GML that even with 150+ hours, 3 games and 2 game jams under my belt, I'm still finding more functions that make GameMaker so easy to use!
If I had any criticism for the language, it's that it took me a while to understand scripts compared to understanding them with other languages, because it was difficult for me to get how scripts were beneficial at all in GML when they're separate from objects, when I'm making custom functions all the time in other languages, but that might just be because I'm dumb.
I've also heard criticism from intermediate programmers that GML is too restrictive, but honestly, if you're trying to make a game so ridiculous that GML is too limiting for it, then you shouldn't be using GameMaker for that project!
What are the limitations of GM? Well, for being such a good tool for working alone, as a consequence, it's awful for working in groups. A team of us tried using GM for a game jam once and we were struggling. We had issues transferring files between the different projects, which caused temporary corruptions in the assets, which I didn't even know what a thing in computers. This might have been caused because we were running it on a business network, but chances are if you're working in a team, you've moved onto Unity by then anyway.
GM also doesn't have a 3D engine. Well that's a lie, actually. If you can imagine Unity is like an artist's kit that has paintbrushes for 2D paintings and tools for 3D sculptures, GameMaker sort of gives you the factory to the brushes, but says "I think i saw some metal deposits over the hills, if you want to make the sculpting tools yourself". GameMaker has functions for making a 3D engine, but that means you have to program it yourself. I've never bothered, I would rather use Unity.
And if you're thinking "We'll what good has ever come out of this engine?", here's a brief list of the game GM are proud to list on their showcase page:
Super Crate Box
Gods Will Be Watching Us
Risk of Rain
Stealth ♥♥♥♥♥♥♥ Deluxe (censored, thanks Steam)
The original free Spelunky
Cook Serve Delicious
And last but certainly not least, Hotline Miami
Oh, and if you need help to learn this engine, look up an amazing YouTuber named Shaun Spalding. This guy is the reason I managed to make my first game for my project at college. His techniques can also be applied to other engines if you know how to translate the programming.
It truly is a golden age to be an indie developer, where we are spoilt for choice for free engines: Unreal 4, Source 2, Unity 5 or GameMaker: Studio. If you wan't to get started, get GameMaker.