Getting started with mobile game development with Unity

Audric Steibel
10 min readJun 8, 2020
My first Unity game!

Being a professional mobile developer, I’ve always been curious about game development and wanted to try it out. Those past few weeks, I’ve finally taken the time to get started and ended up developing and releasing a simple game in just a few weeks.

With this article, I’m not trying to do a step-by-step guide on how to create your first project (there are plenty of resources for that, some of which I will share here) but rather provide insights into my journey, what I learned and which resources I’ve used, and the challenges I’ve encountered, from the perspective of someone who had knowledge about development, but none about games specifically

I hope that this article will be useful for anyone who’s interested in game development and that doesn’t necessarily know where to start or where to find resources.

Motivation

I’m a professional Android Developer, who’s been working on several mobile applications using Kotlin. All the projects I’ve worked on were pretty regular mobile applications, and none of them were related to gaming. I’ve always been interested in learning how to make a mobile game though. If you’re reading this, you’re probably used to spend hours and hours playing a variety of games on your mobile phone, just like I am.

However, mobile game development being quite different from regular apps development, I’ve never gotten around actually getting started. Enter 2020 and COVID-19, and I suddenly find myself in a 3-month long strict quarantine (I’m French but live in Spain), and with reduced work hours. Having so much available time on my hands, I thought it was a good opportunity to get started in game development.

Let’s get started!

Where to start?

I decided that I would learn to use Unity, as it seemed the most logical place to start creating games. I didn’t know much about it prior to this, but I was familiar with the name, and that it was something a lot of people were using to create games. A quick Google search showed that there was a lot of documentation and content, and a strong community, which is something very important when developing something. If you’re not familiar with developing and are about to start, you’ll realize that most of the time “developing” means running into a new problem and searching online for the experiences of other developers who have had the same problem, and how they solved them.

As part of my job as an Android developer, I spend a lot of time here on Medium, reading articles from other developers in order to keep on learning new things. So my first instinct was to come here and look for articles on how to get started with Unity, but I was surprised to find very little compared to what I’m used to when looking for Android articles.

My next idea was checking online classes on websites such as Udemy, which I’ve used to learn some other skills at times. I’ve found this interesting class: https://www.udemy.com/course/the-ultimate-guide-to-mobile-game-development-with-unity/ but at the time I wasn’t willing to pay that amount of money just to test out a hobby. However, it does look promising, so you might want to give it a look.

Finally, my searches led me to youtube, where I discovered a huge number of video tutorials on everything Unity. I usually rarely watch Youtube videos about code, as I prefer reading about it in articles, so I can digest it at my own pace (plus, you know, it’s great to copy-paste). However, in the context of game development, it made a lot of sense to watch videos as it a very visual craft. The Unity software itself has a lot of parts with a lot of different purposes (scene view, game view, project resources, inspector, animation, etc…) so it’s a lot easier to follow in a video format.

Lots of different windows here

Most of the videos I found were usually around 20/30 minutes, and are about a single topic, so it is a great way to learn about something specific in a relatively short time. There is a lot of great content out there, so you can search for yourself, but if you’re just getting started now, here are a few channels that have been very useful for me:

What I ended up making in just a few weeks

My first idea of a game was to create a platformer type of game, where the player is taken through various levels, has to defeat enemies, and solve puzzles in order to keep on advancing. I’m a big fan of this kind of game. I had a lot of ideas, and came up with a long list of “concepts” I needed to learn in order to be able to develop the game (Enemy shooting at you! Eney running towards you! Level up system! Moving platforms! etc…). After a couple of weeks, I realized it was quite a huge task for a first project, and that it might be a bit ambitious for the moment. I ended up having a main scene with a bunch of random small things that I was trying out, all jammed up next to each other.

Flying snakes, various platforms types, a bunch of coins, and a giant Eiffel tower… all in about 10 days in.

My first goal was to learn the basics and manage to have a simple game published on the Google Play Store, and then take things to the next level by doing more ambitious games. The reason behind this was that it’s easy to have a lot of ideas and want to add a lot of things to your game but in the end losing track of where you want to go, and ending up abandoning your project before finishing it because it got too complex too fast. Working on a simple project instead allows you to have a game published online faster, which is very rewarding. That first game might not be the game of the year or break any record, but it’s a validation of what you have learned so far, and should give you a good idea of whether or not it’s something you want to pursue. If it is, you’ll likely be very motivated to make more games, with increasing complexity.

With that in mind, I’ve put my platformer game on hold, and instead started a simple infinite runner game, which I called Desert Runner. You can check it out here: https://play.google.com/store/apps/details?id=com.marcusruns

I decided to go with an infinite runner kind of game because the mechanisms behind it were fairly simple: you need to create every individual level parts, and then simply spawn those parts at random as the player advances in the game.

I’ve added a little bit of complexity by gradually increasing the speed as the game plays, and generating harder level parts by increasing the odds of every individual part to have obstacles.

My game in action

If you would like to know more about the specifics of this game, drop me a message in the comments. And if you have suggestions or feedback about the game, I’d love to hear them!

Challenges

The Unity software has a lot of different parts, that can be quite complex at first. My recommendation is that whenever you’re ready to add a particular thing to your game (ex: animations, or music), watch a couple of videos about this topic, and you’ll quickly learn the basics of that particular part of Unity. From my perspective, some parts of the software were not obvious until after they were pointed out to me (especially when it came to Animator and Animations, it took me a while to figure out how to remove a transition). However, once something has been explained to me, I feel like it was quite easy to come back to that specific part of the software later on.

Regarding the programming language, C#, I’ve never used it before. My main programming language up to that point was Kotlin. However, if you have experience with programming languages but not C#, you’ll probably be fine as it was easy to write in it. It definitely won’t be your biggest blocker, personally, my main issue with C# was constantly forgetting to add semicolons, as it’s not a thing in Kotlin. However, if you have no prior coding experience, you’ll likely need to take some time to get familiar with the basics of programming. Luckily, a good number of tutorials on this topic can be found on Youtube, both in the channels mentioned above or others. I cannot speak to their quality as I didn’t need to use them, but I assume they’re on par with the videos about Unity itself.

Finally, my main challenge when it came to game development was with music and graphics element. I don’t consider myself a particularly artistic person in general, so creating a look and feel for my game was a big worry for me. I’ve tried to create and use some of my own sprites, but I found myself spending way too much time on this, and I couldn’t do everything I would have liked. And frankly, my first goal was to get the game to work and be playable more than creating great art. This is definitely something I’ll need to be working on in the future though, and if you have recommendations about this I’d love to hear them in the comments. I definitely have a newfound appreciation for my artistic friends and coworkers at least, when I saw how much I was struggling to create very “simple” things like a cactus.

Thankfully there are a lot of great content creators who are sharing their art online, for developers to use, with different types of licensing. A great resource for finding content is http://opengameart.org/. I’ve also found some nice things on https://craftpix.net/. Those were great places to find great art that could fit your game, from graphics elements like players, enemies, background, platforms, etc… to music and sounds as well. For fonts, I’ve found plenty of great ones here: https://fonts.google.com/

As always when taking content found online, be sure to have a look at the license details of the content you’re downloading, and carefully read it and follow it. Content creators who share their work with others need to be credited for it, so don’t forget to add a credits section to your game and add the relevant information there.

Where to now?

So my game Desert Runner has been out for a couple of days now. It’s a struggle to get it discovered by people, and I’ve spent a lot of time researching on ASO (App Store Optimization) and writing messages about it on various message boards or game-related website (Twitter, Reddit, itch.io, this very article…) with little success so far. Of course, I’m not expecting this game to have any kind of success, but I’d be very happy to get some users to play it that doesn’t come from my family or friend circle.

My imaginary players…

I’ve added some Google Play Game Services feature like achievements to unlock and a leaderboard, in the hope that it would motivate players to play the game more. I’m planning on adding a few more different types of obstacles to make things more interesting, as well as a lives system. For now, there are no ads in the game, so I’m not expecting to make any money on it. However, I could imaging adding rewarded videos, to get an extra life in the game for example. I wouldn’t add any forced ads in the game though, as I personally don’t enjoy that as a player, and I’m not developing games for commercial success at the moment. But it’s definitely could be a revenue stream in the long run, if I want to try to take things to the next level.

Otherwise, I’m thinking of resuming work on my platformer game, as I had a few interesting ideas that I would love to work on and put into a game!

Conclusion

I hope that this article provided you with interesting insights into the journey of starting developing mobile games with Unity, as well as some solid links to resources to learn.

If you want to get a look at my game desert runner, here’s a link to it:

https://play.google.com/store/apps/details?id=com.marcusruns

If you have any thoughts on the article, suggestions for the future, or any question about something I wrote about, I would love to hear them in the comment section! Also, given that I’m still a newbie game developer, I have a lot to learn still, so if you have any tips, insights, and interesting resources, please share in the comments!

Thank you for reading, and good luck with your game!

Dogs make everything better 🐶

--

--

Audric Steibel

Product Manager, previously Mobile Developer. Interested in building great products and providing users with a fantastic user experience.