For the last decade, I’ve been tinkering with game development. I’ve played around with DirectX and OpenGL, and written games for Android, as well as desktop games using Java and Unity. I’ve taught students to use Scratch and to write scripts in C# for Unity. Through the years, I’ve come to really like Unity. Unity is free, can create awesome 3D games, and has a wide variety of resources available through their resource store. However, I’ve found that there are some things that Unity just doesn’t work as well for. For instance, while Unity does have 2D support, it seems like a hack to their 3D world. Platformers can be especially painful since floating platforms, for example, violate the rules of physics. And while their animation tools work very well, they can be overwhelming for the novice to use. Overall, Unity has a steep learning curve and, too many times, things that would seem simple become painfully difficult. I remember the attempts I made at creating a simple 3D racing game – wow, dealing with their car controller was a lesson in frustration. This isn’t to say that Unity isn’t a great tool, it most certainly is. It just isn’t the best fit for all games. If I wanted to create a first-person, explorable, realistic, 3D world to explore – Unity would be my first choice. But for many other games, Unity just isn’t your optimal choice.
Enter GameMaker Studio 2. I was recently contacted by a non-programmer who had been tinkering with GameMaker Studio and wanted to know if I would help him make a game. Having worked so much with Unity, I was initially hesitant to switch platforms. To make matters worse, GameMaker Studio isn’t free. So, I reluctantly downloaded the demo version and played around. Wow! What an amazing development platform! I quickly upgraded to the full version ($100) and have been loving what I can do! One of my favorite aspects of GMS2 is the ability to create and edit sprites inside the app. This may seem trivial, but I don’t always want to use Photoshop or Illustrator to create simple pieces of graphics content. Another great feature is how the project resources are automatically broken down into types – objects, sprites, audio, etc. For many junior developers, project organization is never considered. Long term, that means projects become unmanageable. The simple aspect of automatically organizing resources by type helps to keep the project clean. The GMS scripting language is based on C++, but all the ‘hard stuff’ is hidden from the programmer. No need to worry about imports, constructors, or any of the stuff that would make programming daunting to the junior developer. Individual micro-scripts are created for startup, step (each new frame of the game), or events such as button or keyboard actions. These small scripts keep code small and more easily understood. (I would image that as a project gets larger, this could be problematic. But for smaller projects, this is nice.) GMS has built-in functions to change the angle of an object, play a sound, or create labels on the screen. Built-in variables exist for an object x/y position as well as the screen dimensions. Everywhere I look, I see that the makers of GMS worked to create a platform for non-developers to create games with as little technical knowhow as possible. For me, this is particularly exciting. Why? Because many of the people who want to work on a game don’t have the technical expertise to use a more complicated development environment. But with GMS, the bar has been lowered to allow everyone the fun of developing games!
If you’re interested in trying game development, I would highly recommend Game Maker Studio 2.