Lessons Learned from Building My First Mobile Game
I spent my summer building a game called Kazakan. Kazakan is a “tower defence meets top-down shooter” style game where you protect the Orb from waves of enemies with your bow, special abilities, and turrets.
This was the first “real” game I’ve ever made. I learned a lot about the entire game development process and picked up some useful tricks along the way. In this article, I will cover some of the main issues I faced, how I overcame them, and what I learned from the experience.
Enemy Movement
Figuring out how to make the movement of enemies feel fair and fun proved to be surprisingly tricky.
In Kazakan, each round ends when the player has defeated every enemy on the map. Enemies have different movement patterns: some creep up on the player and then burst into a sprint, others keep their distance from the player and shoot from afar.
However, in early versions, at the end of each round the player had to go looking around the map to find the last few enemies, which felt anticlimactic.
This was due to a combination of the map being fairly large with spread-out enemy spawn points, and enemies being too slow. Simply increasing the enemy speed caused the enemies to overwhelm the player, so I had to come up with another solution.
The solution was to have enemies that were far away move differently. Enemies that are off-screen always use A* to find the best path to the player, and they move at double their on-screen speed.
This continues until the enemy gets closer to the player, but is still off-screen, so that player doesn’t realize this is happening, yet won’t ever need to go looking for an enemy.
Takeaway: The goal is to make a fun game. Sometimes you need to combine a lot of little solutions to get there. Don’t fixate on finding a single solution that solves every problem.
Making a Good Tutorial
It took a lot of user testing and feedback to get the tutorial feeling intuitive, information, and respectful of the player’s intelligence.
At first, I had a “wall of text” to explain the objective of the game and the basic mechanics. This was inevitably skipped by all players (because nobody wants to read a wall of text) and failed to teach them what they needed to know.
Next, I tried to reduce the chance of the player ignoring the prompts by making them stay on screen until the player did the task depicted in the prompt. For example, rather than saying “Left joystick to move” and disappearing after the player tapped the screen, it would persist until the player used the left joystick to move.
This was a good start, but wasn’t effective enough and was still very annoying for players. This was because everything was still taught in the beginning, which meant that a lot of the skills were not relevant to the user yet. For example, the player doesn’t need to know about the shop if they don’t have any points to spend yet.
Then came the big change: breaking the tutorial into pieces scattered throughout the game. This took the weight of tutorial off the player, and only taught things when they mattered. Initially, the player is told only three things: how to move, how to attack, and to protect the Orb. Then for every other section, the tutorial prompt is displayed only when it is deemed useful. For example: Collected enough points to buy something in the shop? Show the player what the shop is. Can afford to activate a turret? Tell the player to recruit a turret with huge yellow arrows pointing to the turrets.
Takeaway: For the tutorial to be effective, be clear, and pace the information out to prevent telling the player anything that isn’t relevant.
Experimentation
When I first began making Kazakan, all I had was the general idea of making a tower defence game with a top-down shooter twist. Beyond that, I had no clear plan as to what exactly I wanted to implement. Most of the core mechanics and game-play features that ended up in the game were a result of experimentation through every step of development, trying to find what’s fun, and leaning into it.
In the very early steps of development, as a joke, I added a secret developer ability that allowed me to unleash a vast amount of arrows for no extra cost. I realized that it was pretty fun and decided to roll with it, so I tried to implement it as a game mechanic. There were many iterations, from making it a power-up that you pick up, to an item you store and then unleash, but eventually, I made it a secondary charge-up attack that the player can use every once and a while.
The charge-up ability then unlocked new potential for all sorts of bow mechanics that I stumbled upon through further experimentation.
The beauty of these experiments is that even when something doesn’t completely stick, it is rarely a failure; the new mechanic can often be recycled elsewhere.
One example of mechanic recycling in Kazakan was the explosion of one of the bows’ charge-ups. It didn’t quite have the intended effect I had hoped for, and after trying to use it in different scenarios, I found that adding it to the turret’s blasts added an extra feeling of power and looked awesome. This again sparked a new wave of ideas that caused me to implement the blessing system, which led to mechanics such as triple shot turrets, combined power-up effects, piercing arrows, etc.
Takeaway: Keep the things that aren’t working in your back pocket! Looks for opportunities to re-purpose them. Experiment, tweak things, and lean into whatever is fun.
This was a really fun project to work on. If you have any questions, feel free to leave a comment. You can play the game on iOS or in your browser. Thank you for reading!