Anybody can build a game
The gods of gaming have called upon me. It was decreed that this humble minion make a game using GameMaker Studio. Beleaguered with this divine burden, I set out on this arduous mission. As it turns out it wasn’t difficult at all.
The scale at which games are right now, they’re nothing short of full scale experiences which require stories, soundtracks, screenplay mingled with all the software technology expertise. So it is understandable if the idea of game development brings to your mind a daunting image of hundreds of programmers coding away furiously at their terminals, with many graphic designers churning out design after design inside a huge studio. And you wouldn’t be wrong.
But all that is no longer a necessity if you want to build your own games. Some of the most successful games right now are from small indie studios, sometimes with an employee count in single digits. The specialised knowledge of one particular aspect of game development is not mandatory to develop a game. There are a number of ways in which you, yes you, can develop your very own game. But there’s a catch: I didn’t really know how to build games either. Here’s how my first shot at making a game went using GameMaker Studio.
Tools of the trade
Before anything else, you need to first decide on the tool that you are going to use to make your game. More popularly known as game engines, these are specialised software designed to be equally capable yet easy to use compared to general purpose programming tools when it comes to game development. Some of the famous ones like Unreal Engine, Unity3D are even known to non-developers due to their usage in some of the most popular games around. So how do you select a game engine? These are the factors I considered when I chose mine to build my very first game.
1) Platform: Although most modern engines have cross platform support, not all of them do it equally well or easily. You also need to consider which platforms it will be possible for you to test on. I chose Android. Easy way out? Of course!
2) Minimum Requirements: Make the dev tool will run on your PC.
3) Cost: Game Engines are mostly free, although some have a one time license fee for a premium version of the engine. Some engines even have royalty payment systems i.e. the Game engine company gets a share of your profits if you make your game available commercially. At this juncture, based on the previous two points, I set myself a fixed budget which I would spend if needed.
4) Support community and learning curve: The importance of a vibrant community ecosystem in the world of software cannot be stressed enough. So when you make your choice, look at which engine has been around long enough, has been picked up by developers who were once beginners like you and have been well documented in their usage. My criteria was pretty much beginner level, since I have no prior experience of game or app development.
I went with GameMaker Studio. Not only do its Pros work in favour of me being a complete novice in Game Development, but being platform independent means that you don’t have to learn the nuances of another platform to begin with. Understanding the studio and its own programming language GML (GameMaker Language) is all that is needed to get started. GameMaker Studio has been around for a while and decent community support. There are numerous tutorials on how to develop particular types of games all over YouTube and most of them are for absolute beginners. The free version even allows you to export the game for Windows.
The one and the only difference between the free and paid version of GameMaker Studio is that the paid version lets you export your application to different platforms. You may purchase a module license for a specific platform or go for the all encompassing Pro License. The IDE in GameMaker Studio is highly intuitive and is mostly drag and drop with little or no need for coding. Its approach to game development is similar to that of Visual Basic’s approach to software development. That doesn’t mean that knowledge of programming isn’t an advantage. GML is highly object oriented and anyone who has worked with Java or any object oriented language will find themselves on familiar ground and more inclined towards using the programming method to make it work. The software is available with the free license here.
Once I had decided to work with GameMaker Studio, all that was left was to actually design and build my game. Here’s how it went for me:
Day 1: Ideation
This day will turn out to be the most important of them all, even though you might feel like taking it slow at the beginning. This is the day to decide your idea. I created a Documentation doc in Google docs where I began to jot down any and every idea I could think of, no matter how outrageous or silly it seemed at that time (Yeah, even a dress up game wasn’t off limits).
Once I had a good number of ideas on record, I evaluated their features. One of the easiest way to do this is to compare the ideas with existing games, or even seeing it as a combination of two existing games. This will help you categorise the game and that helps in looking for tutorials, e.g a top down endless runner with shooting. I wanted to keep things simple and chose to develop a platformer.
Writing a Game description might feel boring at the moment, but it keeps you on track and also helps you figure out what the story in the game is. My description read somewhat like this:
|“A hungry baby is on a quest to reach the ultimate treat on each level – be it a five foot cake or a large chocolate bar. She encounters other treats as well as dangers on the way. Help her avoid them and gobble up all the treats for the highest score.”|
Engine: GameMaker Studio a.k.a GMS, Type: Platformer, Features: Scoring points through pickups while avoiding danger (very original, I know)
Day 2: Learning GameMaker Studio
The second day was my day of going back to the classroom, albeit one where games are the main subject! YouTube proved to be adequate for tutorials on a wide range of topics varied from how to build a platformer for Android to how to build an RPG in GMS.
I wanted to play the game on my Android smartphone so I looked for an Android platformer tutorial and the one I found felt exhaustive. Always check the level of expertise required before you start working on it, because a tutorial might seem easy towards the beginning and bring out the real guns later.
Remember, a tutorial is not a workshop for you to actually develop your final game. Most tutorials aim to get you acquainted with how things are done, not walk you through actually doing them. The tutorial I watched was not complete and often did things haphazardly, but did a good job of showing me what can be done with GMS, sometimes through demonstration and sometimes through just a pointer and some comments.
By the time Day 2 was over, I had a pretty good idea of what I had taken up and how much effort it would take from my side.
Day 3: Creating Resources, Characters, Basic Mechanics, Items, Textures and Sprites
The time had now come to roll up my sleeves and get my hands dirty. On Day 3, I extended my documentation sheet with character and object descriptions to get a better idea of how each element of the game will work. Trust me, it gets interesting from here. These very descriptions help you look for the sprites online, or even better, make them yourself.
A large variety of sprites are available from multiple sources online. Before you borrow, just make sure you note down the name of the uploader and credit them later in your game, even if they do not ask you to do so. Not only is this good practice, this also prevents the scope of your game being taken down due to copyright infringement.
Needless to say, several of your characters will need to be animated. GMS supports reading animations from an image strip directly. When you download the sprite sheet for a character, or make one, just make sure that you have spaced each frame equally from the borders and each other. Often, you will encounter entire sprite sheets with hundreds of accumulated sprites. I personally used one such sprite for the furniture and it took a lot of time to separately create individual sprites for each item using Image editors, but it paid off later within GameMaker studio. Once all the sprites were separated, all that was left was uploading them into GameMaker. Like Sprites, all the things that you can use in-game are created from the Resources section in the menu bar or the Resources Directory on the left. Once you name the sprite and upload the image, you can use the edit option to do some useful things like resizing, cropping and even deleting the background using the magic wand tool. It took quite a while for me to get all the sprites for characters, items, environmental objects etc. By the time I was done, it was time to call it a day.
Day 4: Game Starts to take shape
(Objects, Layout Levels, Deciding basic Game mechanics, Screens)
On day 4, it was time to get things into a higher gear. Although sprites decide what your game will look like, they are pretty much useless on their own and to actually create a layout in GameMaker Studio, you need to create objects and link them to sprites. I created all the objects that would be needed in-game, without any behaviour contained in them yet. The only property that was enabled was “Visible” so that I could see them in the layout that I will build.Levels and Screens in GMS are handled as Rooms. I created five rooms, out of which only one was an actual game level, and the rest were screens like the start screen, a completion screen etc. This could be handled within a Room as well, but wanted to keep this development as simple as possible.
Levels and Screens in GameMaker Studio are handled as Rooms. I created five rooms, out of which only one was an actual game level, and the rest were screens like the start screen, a completion screen etc. This could be handled within a Room as well, but wanted to keep this development as simple as possible.
Once the rooms were ready, I set about to create the layout. I used the floor object to define the level structure and placed other objects in the way I wanted the level to be designed, based on my earlier design. While designing, I started to form a pretty good idea of how I wanted the actual game mechanics to work, as in, the jumps, the speed of the main character, the interactions of the character, etc. This took up the rest of day 4.
Day 5: Bringing it together…or not really
On Day 5, I found myself defining the behaviour of objects in GameMaker Studio. Now, although I took a more programming based approach, anything I did could be done equally well with GameMaker Studio’s object tools within the object properties window. One of the things to note here are the few most important events that I have used extensively in my project:
Step: Anything within a step event executes once per frame.
Create: Initialise all the variables and attributes here
Alarm: Any action inside an Alarm event can be set to run after certain time interval of a line of code being executed.
Even when I say ‘variables’, I still mean something that can be handled by dragging and dropping actions into events from the GameMaker Studio standard object action toolbar. Most of my work with the objects involved setting up collisions and managing pre-loaded global variables like lives and score, although I also associated the sounds present in the game.
I chose to enable physics in the room as my character would be mostly jumping and crawling about. GameMaker Studio has an in-built physics engine that makes life a lot easier if you get the hang of using it. Of course, setting it up wasn’t easy and it took some significant trial and error to get the physics right (read: floating baby, tumbling baby etc). Also, at times it felt like the animation that I set up could be better. To improve that, I stretched the animation in the Sprites using the in game sprite editor. You may also need to do this to match the speed of your animation to the frame-rate of the room. Personally, I would tell you to first try making your game without enabling the physics engine. If and only if you need it, then put it to use.
So, Day 5 involved a lot of tweaking and testing, mostly with the Windows platform as target, until I was satisfied with how the game was running.
Day 6: Fixing and finally getting it running
(Errors faced while exporting it to platforms – refer to log, cache clearing errors, buttons missing)
Now it was time for the trial by fire. The free edition of GameMaker Studio, only lets you export your game to Windows, either as a setup file or as a single executable file. To export it to any other platform, like I was targeting Android, you would require the module license for Android or, if it suits you, the Pro License for the GameMaker Studio. The gods of gaming were kind enough to provide me with one.
Creating the application for the Android version did not cause me much trouble and the game ran smoothly on Windows from the start. Only, I had optimised the controls and the gameplay mechanics to work best on a touch based smartphone screen. So it was time to export it to Android, and that’s where the trouble began. Now, to compile and run any application for Android, you need to have the Android SDK present on your machine. Also, different Android development softwares might require different components of the SDK. While enabling the Android Module I had installed the SDK as per instructions. Turns out, I started facing a number of compilation errors like the following:-
1) Could not resolve dependencies for classpath
Could not GET ‘https://jcenter.bintray.com/com/android/tools/build/gradle-core/1.3.0/gradle-core-1.3.0.jar’
Solution: Go to that URL in your browser, download the jar file. Copy jar file and place it in “C:\Users\Arnab\.gradle\caches\modules-2\files-2.1\com.android.tools.build\gradle-core\1.3.0\bcfe0e8470dfadaca337f52f3f01df1ae725ed34”. Now copy this folder and paste it in “C:\Users\Arnab\.gradle\caches\jars-1”. I am not entirely sure why the system wasn’t able to reach the URL but this should solve this error.
2) failed to find Build Tools revision 23.0.1
Solution: Go to the Android SDK Manager. In the topmost Tools header itself you will find the Build Tools Revisions with the version number mentioned. If it is already installed, uninstall it and reinstall it.
3) Could not resolve all dependencies for configuration
‘:com.zafod.BinnyAndTheTreats:_debugCompile’. Could not find com.android.support:support-v4:23.1.1.
Solution: Head back to the SDK manager. Go to the Extras category and Install Android Support Repository and Android Support Library. If they are already installed, uninstall and reinstall them.
It is quite likely that you will face different errors altogether. This is where you will get the real advantage of having a strong community support, as most of the errors can be solved by searching them out on YoYo Games’ support website itself. If not, Stackoverflow and Yahoo answers are your best friends.
Before I called it a day, one online GameMaker forum user pointed me towards something important. I went to Global Game Settings, and under the Android tab, I defined a lot of specifications about the game like the Display Name, Package Name, Version Control, Supported Architectures, Supported orientations and the splash screens for the game. This is highly important!
By the end of day 7, I had a .exe and an APK file ready to be tested.
Day 7: Testing and completion
The big day was here. This was the day where the success or failure of my game was determined. Once I transferred the apk to my phone and had it installed, I did not waste a moment to start the game. And it worked! The game ran perfectly well and I almost had a Eureka moment there. But it wasn’t over yet.
For my smartphone I knew all the parameters like screen resolution, multi-touch support etc. But if the game was to go onto other people, say via the Google Play Store, it had to be tested on all kinds of smartphones. And that is exactly what I did. I shared the apk with a few people around me and got them to play the game without any additional instructions from me.
Not only did the game run, people also gave me lots of positive feedback regarding the game and also highlighted what they would like to be changed. Never Underestimate the power of Beta Testing!
So, time to call it a wrap? Not yet. If you want to launch your app on the Google Play Store, you will need to save the Keystore details found in Keystore Tab. Also, at this stage, you might want to sit and decide whether you have your final, launch-worthy game or do you want to change anything about it – maybe add a background track, change the stock splash screen to something other than the default “Made with GameMaker Studio” etc. Basically, this is your chance to finish the game even after you have finished it. It was at this stage that I did a major overhaul in the screens and the level design which I believe made the game look and feel a lot better.
Special Note: Day 8 : Google Play Store release
Don’t forget to save your Keystore details from the Keystore tab in Android Preferences, which can be located in the Preferences window from the File menu. You will need those details to publish your game on the Google Play Store. A developers account on the Play Store costs a one time fee of US$ 25 (Approximately ₹1,700). Once a game is submitted to the Play Store in compliance with Google’s guidelines, it typically does not take more than a few hours for it to show up on the Store.
From where I started, game development looked like a herculean task which could only be accomplished by fully armed and equipped mainstream studios. But as we discovered, developing Games is not that different than developing any other technology. All it needs is a willingness to learn and choosing the right tools. And if I can go from having zero game development experience to developing a half decent game (ok a really primitive game) in one week, you can surely build the next big thing in no time. If you want to try out the game I’ve made, you’ll find the apk at this link or you can blip the opening image of this article to download the apk on your phone. A fair warning though: be gentle, it’s my first time!
Bonus: Game Engine Comparison
|Unity 3D||One time license
Easy to use
Not good for diverse effects
Lara Croft: Relic Run
HearthStone: Heroes of Warcraft
|Unreal Engine||Most widely used in mainstream
Best update mechanism
Lots of tools
|Steep learning curve
Licensing fees as well as royalty
|Batman: Arkham City
|Cry Engine 3||Artist level programming capability
Powerful audio tool
Easy AI coding
|Lack of community support
Steep learning curve
Free version has poor customer support
|Hero Engine||Robust AI
Easy mapping tools
Offers cloud server support via HeroCloud
Supports Complex Scripting
Good for MMO games
|Steep learning curve
HeroEngine with HeroCloud is expensive for beginners
|Star Wars : The Old Republic
|Game Salad||Good option for iPhone games
|Game Maker Studio||Simple and straightforward for both basic and advanced purposes
One programming language (GameMaker Language -GML)
No dealing with memory management or multithreading
Platform independent development
|Memory issue debugging can be problematic
Exporting application to any other platform than Windows requires pro license, which is more expensive than competition.
Risk of Rain
Hyper Light Drifter
Crash..boom..crash!!! That's the sound of an extraterrestrial cyborg being knocked down mid flight. He is still not completely functional, and while he fixes himself, you might find him engulfed in humanity's most addictive invention - what you call "gaming". After all, its the only thing that simulates his dimension so well. Please note - Do not engage, not unless you come bearing food.