It’s a Sunday afternoon- you’re relaxing on the couch, watching movies on your TV while playing some PUBG Mobile during the commercials. And then you realize how much you love mobile gaming since it affords you the convenience of being able to play awesome games anywhere and at any time. You can play games while at home, traveling, or even in the workplace, seriously though, don’t play while working. But how are these mobile games made? A lot of you probably thought about becoming a game developer at some point in your childhood, when you first got into the exciting world of gaming. Truth is, mobile game development is hard work (as is the case with developing games for any platform). You need to keep up with a rapidly evolving industry that constantly adopts new technologies. While praying that your creation doesn’t get lost among the thousands of other games that are released every week. Then there is the question of monetization- are you going to make a premium or free-to-play game? Finally, you need to consider promotion and post-launch content updates.
So, how are mobile, PC, Console games made? It is a long and complex process, but we can split it into three distinct stages- pre-production, production, and post-production. The pre-production stage involves brainstorming and coming up with a concept for your game. You decide what genre the game will be, how it will play, the storyline, marketing strategies (Youtube, social media), etc. You also come up with a prototype and concept art for your game, followed by planning and building a core team. The production stage is the actual “development” part. Here you create the assets, levels, sound, and write the code to bring it all together. All of this is done with a game engine such as Unity or Unreal. The final stage (post-production) consists of two main parts- game testing, and patches (DLC, game balancing, etc.).
Marketing starts right after the very first prototype is tested, sometimes even earlier. Often, you’ll see marketing being done in parallel, alongside development. For example, indie devs often stream themselves creating the game on sites like Twitch or Youtube. And you want to have a nice healthy community set up as early as possible, which can be accomplished through social media like Facebook or Twitter. Create an official landing page for your game, which contains a small 5 or 10-minute gameplay sample along with a list of goals/ features. A discord server is great to manage your community and keep them updated on the latest developments. Often times you will find some really helpful development advice from fellow coders and artists in your audience, along with potential beta testers who will inform you about bugs. If you want your game to be financially successful, you will need to do a lot of research. What is the current trend in mobile gaming? Which demographics are you looking to target? How will you implement ads in your game? Which engine to use? And most importantly- is your game enjoyable? It has to hook the user and keep them coming back regularly.
The Game Engine
A game engine acts as the base or framework upon which everything else is bolted on- artwork, sound, levels, animation, scripts, etc. It is a software development environment that makes things easier by providing you with tools to speed up the game development process significantly. There are 4 main components to any game engine-
- Game Logic: This consists of all the scripts which help you interact with the character, like being able to input commands for movement and action. Plus, game logic ties everything together and makes sure it all works as intended- scoreboards, damage taken, in-game resources like gold and mana, weapons, etc. This is the “brains” of your game.
- Rendering Engine: Here is where all the visual magic happens, everything you see on your screen is processed by the renderer.
- Audio Engine: One of the things that makes a good game great is the audio. Think of your favorite game, almost every single one of them will have multiple catchy soundtracks or unique audio effects. The sound of a barbarian’s sword being driven into enemies in Clash of Clans. Or the catapult straining under pressure, as you pull it back to demolish a fortress of pigs in Angry Birds. Or perhaps you remember the menu music from Temple Run. All of these sounds consist of audio files, which are managed and synchronized with player input/ in-game events using an audio engine.
- Physics Engine: A physics engine attempts to simulate real-life physics, mimicking elements such as gravity and solids/ liquids/ gases. When you’re playing a 2D side scroller, physics ensures that your character doesn’t fall through the ground or merge into another object within the level. When you notice a ball bounce off a surface, the angle and velocity at which it bounces are determined by the physics engine. Trajectories of projectiles, collisions between vehicles, destruction, and more can be handled by it.
Why Do We Even Need Game Engines?
Before you start building a house, you need to lay the foundation. There are two ways to do this. In the first, you excavate the ground by hand using a shovel. Then you make your own concrete from limestone and clay heated in a kiln at 2640°F, ground and mixed with some gypsum. You then gather iron ore required to create steel rebars, melt the ore, purify it, mix in other compounds, and shape the molten metal into bars. Then you start chopping wood to build the frame for your walls. Starting to feel tired yet? Well, in that case, you should have chosen the second method. In the second method, you purchase bags of premixed concrete, processed lumber, steel rebar, and a pre-constructed wooden frame. All you have to do is pour concrete, lay down the premade rebar, build the floor with the pretreated lumber, and BOOM! You have a house.
The first approach requires you to have a thorough knowledge of how all these materials work, their chemical properties, physical limits, precise ratios at which you must mix them, etc. Not to mention, you will take ages to make a single house. In the second approach, everything is already laid out for you, prefabricated. You just have to put the pieces together. There is no need to reinvent the wheel when you can simply reuse the wheel that someone else created.
This is analogous to writing a video game from scratch vs creating it via a game engine. When you do it without an engine, you write your own engine as a foundation. You need to implement the render engine, the audio engine, and the physics engine. Most of the work goes into the rendering engine because you need to implement a lot of principles on how to display the game’s assets on the display. Even if you are some sort of a coding guru who is also an expert in mathematics and physics, it will take you quite a long time to make the game. Which is precisely why engines such as Unity and Unreal exist. They give you a complete package so you can finish your game as soon as you can. The game engine provides an IDE to write the scripts, and an advanced rendering and animation system to design the visuals, export system and a lot more.
Prototyping And Coding The Game Logic
Put yourself in the shoes of a talented game developer for a minute. You’ve just come up with this brilliant new idea that might end up being the hottest hit of the year on both Android and iOS. You pull out your pen and start drawing sketches of the character and game world, write a 50-page document on the mechanics, and come up with some sick features unique to your game. But there is just one problem- ideas don’t mean anything until you put them into practice. It means you now have to create a prototype for your game before you can move forward with development. Similar to how airplanes are tested in a wind tunnel before a pilot flies them. Think of prototyping as a means to answer questions or a solution to a problem. A game prototype has 3 main objectives
- Find out if the mechanics of your game work as intended.
- Test if your core gameplay loop is actually fun, even before adding in well-polished artwork and sound effects.
- Convince the team that your concept is ready to be put into production.
A prototype can be looked at from two different perspectives. First, it allows the developers to test out basic features and mechanics. Secondly, with a working prototype, you can check whether it is a good idea to continue the development of the game or move to the next. At the stage of the game development cycle, you don’t have fully fleshed out character models and sprites. No textures, advanced lighting, or sound effects. During the prototype phase, you are going to write the core code of your game, testing out things like AI and physics. Art and storyline is not the focus, which is why rough models and placeholders are used. You might end up with a short 10 or 15-minute gameplay segment that can be used as a sales pitch. Indie devs typically grab free generic assets from online repositories to use as placeholders, and in the case of a platformer, you can even replace the main character with something as simple as a square or cube.
Different genres of games require different approaches to prototyping. For instance, let’s assume you are thinking about developing a digital card game such as Hearthstone. You could create paper prototypes first, by using handwritten text and sliding the cards around on a board to get a feel of the character abilities and how the game will play out. Then, you can create a digital prototype to understand ideas and issues that wouldn’t be revealed through a simple physical card prototype. On the other hand, if you’re developing a fighting game the prototype process would be completely different. You will need animators to work on the two characters on your screen, even if they are stick figures. The motion has to feel like it blends in well with fighting mechanics and special moves. But remember that you aren’t focusing on visuals, which is why there are simple stick figures instead of well designed 3D models.
In the case of a top-down strategy game, you don’t need animations like the fighting game. You can replace the units with simple squares or triangles, and have them collide with each other to test physics and damage registration. Maybe you set up a counter that displays a new number when damage is taken or received. And the ranged units may shoot tiny dots instead of actual projectiles. The goal is to focus on gameplay, and test out if the core of your game is interesting enough. After this, you can iterate upon your original prototype to implement new technologies or features.
Game Logic
We’ve already discussed game logic while talking about engines. And game logic is implemented with code. Not English, because computers haven’t quite advanced that far just yet. They only understand machine language which is 0’s and 1’s. But we have created programming languages, each language has its own unique keywords and syntax. Essentially, you are writing a set of instructions telling the processor what to do with all the data. These instructions are sent to a compiler which breaks it down into low-level code that can be understood by the device. There are 3 phases of in-game programming- problem-solving, coding, and debugging.
In the design phase, you come up with a set of ideas on how your game is supposed to play. Say you are making an RPG, in which the player has to rescue a medieval kingdom from the clutches of an invasive monster army. The map will be split into various sections. And your playable character will fight enemies to level up while also collecting new weapons and items. The story progresses forward as you complete mission objectives. But how do you keep track of progression? You can’t just throw in the 3D models and sound effects, expecting the game to play on its own. You need to script missions and NPCs, while also keeping a log of damage dealt and received by the player. You would need a database to track the constantly changing state of your imaginary game world. And you need to write code for the user interface, as well as code for multiplayer if your game has co-op or online play. Coding is perhaps the most complicated part of designing any AAA game. Dozens of specialized programmers are involved in the development of something like Fortnite mobile, under the leadership of a senior programmer.
Can You Get By Without Coding?
Depending on the type of game engine you choose, you will need to learn various programming languages. Is it possible to create a game without writing a single line of code? Yes, some hyper-casual games have been created without any coding from the developer’s side. That’s because we have game engines today which let you drag and drop features into your game, using blocks of the prewritten script.
One of the most popular tools used to create games without coding is GameMaker Studio. It has drag & drop functionality, meaning you can insert features into your game such as the ability to take player input without having to actually write any scripts. And in case you do wish to obtain greater flexibility, GameMaker has its own programming language (GML) which is far easier to learn compared to something like Java or C#. Two extremely popular games- Hotline Miami and Spelunky had their initial versions created on GameMaker Studio. RPG Maker, Adventure Game Studio, and GameSalad are other examples of game engines that require little or no prior experience with coding. Mainstream game engines like Unity support a vast array of plugins that allow you to implement game logic without coding. One of those plugins is Playmaker for Unity. Visual programming languages like MIT’s Scratch will help you create your first game without writing any code.
But what if you want to implement specific functions and logic, which aren’t supported by these visual programming languages? Or maybe the scale of your game is too large to skimp out on coding. Even if you use code- free engines like GameMaker, it is a good idea to set yourself up for the long run. And C# is a great place to start since it is widely used among Unity game devs. JavaScript is a scripting language used in many engines and popular games. AAA games are created using multiple languages, each serving a specific purpose. Let’s take the PUBG mobile as an example. It uses Java as a side source language, with PHP or JavaScript as a web interface. The core of the game uses Python. You will also find that certain AAA games have their own engine, created from scratch using a language like C++.
Inserting Characters
Remember the prototype phase when we were using blocky models and placeholders? Well, the finished product can’t have any rough edges. Here is where you polish the initial character models and shape them into the final product. The process through which playable characters and NPCs are made will vary depending on the studio budget and time allocated. Some games such as PUBG and Call of Duty are backed by giant publishers with millions of dollars to spend on hiring top-notch 3D animators and artists. There are multiple teams working on the art and animation at the same time, to pump out regular content updates and patches. Artists use software such as Autodesk Maya, ZBrush, Blender, etc. to create 3D models. Then these models are “rigged”, which basically means inserting digital bones underneath the 3D skin. You form a skeleton for the model which allows it to move and rotate various parts of the body. Then an animator comes in to give motion to this digital puppet. It has to move and feel genuine. Not all characters have to be realistic, mirroring real life. You just need to make sure that the character fits in with the game’s theme. If you’re creating a cartoonish world with low poly models and bright colorful levels, the character is supposed to feel like something which could realistically exist in that imaginary world.
Not all games are created in 3D, most of the indie and low budget games use 2D assets. These are often designed in Illustrator, Photoshop, or within game engines such as Construct 2. And most of the time, you don’t even have to create your own character assets. You can simply purchase assets like 3D models, environments, templates, audio, etc. from online marketplaces such as the Unity Store. You can download free sound clips from freesound.org and use Audacity to edit them for your game. One word of advice- don’t simply flip assets from the store into your game. Make some modifications, to ensure that the character model fits in with the visual style and theme of your specific game.
Designing Levels
A character alone doesn’t mean anything if there is no surrounding environment to interact with. We are using the generic term “level”, which can also be interpreted as a map or mission stage. Level design is a complicated topic and requires years to master. It can vary greatly depending on the genre of your game. From the vast landscapes of open-world exploration games to the simplistic platforms of a 2D side scroller, levels come in all shapes and sizes. And it isn’t just the map or terrain that you need to worry about, premium AAA games even implement day/ night and weather cycles into their level design which increases the complexity exponentially.
The first rule of level design to make it fun for the player. Resources such as power-ups, weapons, ammo, gold coins, etc. are scattered around the map in strategic locations. Doorways, secret passages, buttons, levers, etc. are sprinkled around the map to give a player multiple options on how to beat the level. Enemy spawn points and scripted events make sure that your character always has something to do within the game. Textures, lighting, and animated objects breathe life into the level and make it visually appealing.
Good level design always starts with a tutorial stage, gradually ramping up the difficulty of each subsequent level as the player gets deeper into the game. Level designers start with an idea or concept, deciding upon a location type that facilitates the narrative style of their game. Anything can be a game location- the neighborhood you pass daily on the way to work, or the scenic mountain ranges in the Alps. Or perhaps you want an entirely fictional setting, something futuristic looking (like in the Bladerunner movies). You can design your own levels from scratch, or download assets from online repositories and modify them to suit your specific needs. Certain questions need to be answered before designing a level. Like how long it should be, are there any hardware constraints (example- limited RAM on mobile devices), and what age groups are you targeting, etc.
Game Optimization
Game optimization is something that you plan beforehand, right after your prototype has proven that the game is viable. Choose your models and textures wisely, because it is a real headache to go back and replace stuff once you’re done. Even the choice of the engine comes into play because its rendering abilities will greatly affect the performance of your game. Keep things simple, and always ask yourself if you can cull away objects that don’t have a positive impact on the game experience. Overstuffing the game with features isn’t a good idea, as it will just create confusion within the player base while tanking performance. Sometimes, less is more. Reduce and reuse textures if possible, and use the proper compression for audio files. Streamline physics calculations, utilize LODs, and constantly go through your code during the entire development process to weed out unoptimized stuff.
When developing games for mobile platforms, you need to have a proper grasp on the capabilities of the device your game is supposed to run on. The mobile phone market is extremely diverse in terms of hardware specifications, with phones costing anywhere between 200 to 1000 dollars. The core count of the processor will vary, as will the clock speeds and amount of RAM. You also need to consider the amount of GPU grunt that is required to run your game, adding in settings that allow the player to lower resolution and visual details such as shadows, textures, etc. Consider the fact that people upgrade their phones every 1.5 to 2.5 years, so your game should be able to run on hardware that is at least 2 to 2.5 years old.
The pipeline for developing mobile games isn’t drastically different from the development process of a PC or console game. Monetization is treated very differently on mobile compared to a PC or console, but the production itself is quite similar. The main difference being the fact that you use lower poly models and smaller maps, to compensate for the fact that mobile devices lack the memory and processing power of a desktop or console. Consider how your game will look on various display sizes and resolutions, as well as different OS versions.
Profiling is the first step towards optimizing your mobile game. Both Android and iOS have a built-in profiler which lets you know the specific parts of your game that are slowing things down- physics, rendering, scripts, etc. However these integrated profilers don’t provide very detailed data, and you’re better off using the profiler built into a game engine such as Unity. Depending on the studio size and budget, developers often try to test their games on as many devices as possible. Emulators are fine if you’re an indie dev, but they don’t provide the full picture. Optimization is further assisted during the alpha and beta testing phases, where bugs and performance issues are pointed out.
Conclusion
Developing your game is only half the battle, as you also have to keep it fresh via content updates and patches. Good developers frequently visit forums and read reviews on the app store to get an idea of what their players think about the game. Marketing is a completely different problem, and it is really challenging to make your game stand out from the rest. Hopefully, our article provided you with some insight into the hard work and skills that are required to develop a popular game. Games come in various flavors- indie, AAA, AA, crowdfunded, etc. And often the most unique/ interesting games are buried underneath the mass propaganda machines of titles such as Fortnite or PUBG. The next time you load up into your favorite game, maybe you’ll be a bit more sympathetic towards the creators for not fixing that one bug. Or perhaps you are now inspired to create your own game.