Unity Developer Roadmap

Alina
8 min readMar 4, 2024

--

Imagine you have decided to master a new profession for yourself — ✨becoming a Unity developer. You start studying the basics of Unity and C#, and it soon seems like you’re ready to start your own developer journey. However, when you attend an interview, they ask you about things such as Dependency Injection, ECS, Addressables, and you find yourself stumped by these questions. It begins to feel like all your efforts were in vain, and it might be simpler to go back to relying on your spouse or return to a previous job.

Nowadays, there are a lot of ways to get the profession you desire: you can enrol in a course, hire a mentor or attend a university. I want to emphasize that there are many paths to achieving the ultimate goal of becoming an skilled game developer. The approach I will propose in this article is just one of them. I believe it is a good option for those who cannot afford to spend years in university or invest in expensive courses. If you are still at the beginning of your career or haven’t started it yet and have limited funds, this article might prove to be very helpful to you!

In this article, I will present a detailed plan (roadmap) for those who want to become a Unity developer, covering key skills, tools, and best practices that will help you effectively master this platform and reach new heights in the world of game development. This roadmap will enable you to learn all the necessary basics to start your career in game development or to begin working on your own projects, using the collective knowledge and skills of humanity instead of having to invent complex solutions on your own. I have selected the most interesting and engaging materials to maintain your motivation throughout the learning process. Additionally, I have tried to compile a complete set of resources that will help you not to stop at the level of a beginner, but to continue to grow and develop. I compiled this roadmap primarily for myself, and if you have suggestions for its improvement, please write in the comments so we can grow professionally together.

It’s also worth mentioning that this roadmap is not exhaustive; it can be endlessly expanded with skills, but this is the minimum that, in my opinion, will make you a skilled specialist!

Basics

The first thing you should start with is learning the basics of Unity, C#, and Git.

To learn C#, you can buy a book or start reading the documentation. But if you fall asleep on the second page, you might want to try these services:

  1. exercism.org. This is a free and user-friendly service for solving programming tasks. By solving tasks from easy to hard, you learn the language and earn rewards. You should follow this path!
  2. www.educative.io. This is another nice service, but it’s not free, for learning programming languages and other stuff. Here you can pick individual courses or choose a skill path, for example, this one.

For learning the basics of Unity, Unity Pathways are perfect. They are simple enough and have gamification elements that help keep you motivated.

If you want to understand what Git is, there is a game that helps you learn its basic functionality in a fun way.

Resources and memory

Learning about memory management and resource handling is rarely fun. So, in my opinion, the best solution is to read a book. There are many books about C#, but I recommend C# 8.0 in a Nutshell by Joseph Albahari and Eric Johannsen. You should focus on the chapters “C# Language Basics” and “Disposal and Garbage Collection”.

Resource management is also crucial for a Unity developer. Here, resources mean various images, models, textures for them, fonts, sounds, etc., and you need to know how to manage them. For a deep understanding of how all this works, you should read the manual. It will also be useful to learn about Asset Bundles and a newer feature, Addressables.

Visual

The next part to focus on is visual development. Visuals in Unity can be divided into three categories: UI, 2D, and 3D.

UI in Unity is represented by two different systems: the older Unity UI that operates on standard GameObjects, and the newer UI Toolkit, which is more like web development. Many developers still prefer Unity UI due to its familiarity. The most comprehensive guide on UI by Unity can be found here.

Learning graphics programming is significantly more complex. To start, you need to understand lighting and how it functions in the engine at a high level. Then, you can dive into shaders and the shader language. Alternatively, you can bypass detailed shader programming by using Shader Graph for visual shader programming. It’s also beneficial to learn about HDRP/URP.

Ultimately, you’ll want to animate all of the above. There’s no rocket science here. You just need to get familiar with three things:

  • Animation/Animator as Unity’s basic elements for animations.
  • Timeline is great for game scenarios, for example, creating a long scene composed of multiple animations, sounds, etc.
  • DOTween is an excellent solution for programming animations.

Gameplay

Now it’s time to start making the core gameplay. The first thing to get acquainted with in the engine is physics. You might even remember the basics of linear algebra and what gravity is (but if not, it’s time to refresh). Next, you’ll need to learn about Colliders, RigidBodies, Overlaps, Raycasts, and Layers. Try it out! (It will be much clearer in practice than in words.)

If your game will have online multiplayer, you’ll need to add multiplayer features. This is quite complex for a client-side developer. If the company doesn’t use a custom solution, it often uses Photon. You should also get to know Unity Multiplayer. Before that, do not forget to learn about how networking works in general. Afterward, you’ll have to figure out how networking in games works, including Prediction, Interpolation, and Lag Compensation.

To create NPCs in the game, you’ll need AI knowledge. Besides traditional scripted bots, there are various approaches to implementing bot behaviour: Decision Trees, Finite State Machines, Behaviour Trees, described in the book AI for Games by Ian Millington, and Utility AI. Besides behaviour, you’ll need pathfinding algorithms: for custom solutions, you should learn about A*, but Unity already has its own solution, AI Navigation.

Project Architecture

Developers become developers when they start thinking about the project architecture so that other developers can also work on the project.

Firstly, a developer should familiarize themselves with algorithms, data structures, and their complexity. You might also enjoy a fun book about algorithms, “Grokking Algorithms” by Aditya Y Bhargava.

Besides, to structure your code, you’ll need 3 things:

  1. Architectural patterns.

First, get to know some programming principles:

Next, you should read about more practical things:

  • For organizing client-side code, MV* patterns (MVC, MVP, MVVM) are useful.
  • To implement dependency injection, learn about DI and IoC. A widely used DI framework for Unity is Zenject.
  • For core gameplay development, the ECS approach is the most popular now. You can use Unity DOTS or other implementations you prefer.

2. Design patterns. There are many resources for learning them, like Refactoring Guru and game development patterns. Essential patterns include Singleton, Observer, State, Command, Object Pool.

3. Design principles like SOLID, KISS, DRY, and YAGNI. Also read about Clean Code.

Next level

On the next level, you need to start learning desirable but not necessary things for a beginner developer. This does not mean that you can skip this stage, you will still have to learn about it sooner or later.

First of all, you may notice that you have already made a fairly large game and it has started to lag and freeze. To fix such problems you must understand how to optimize and profile your game. Unity has two main tools for this: Profiler and Memory Profiler. Actually, there are a lot of methods and tools available for improving game performance.

Next, you will have to get acquainted with such a concept as concurrency. You will have to learn what Coroutines, async/await and UniTask are.

You may also want to try to create your own custom Editor window and customize Build Pipeline.

Once you begin crafting more complex and useful projects, the integration of various external packages becomes necessary. This can be the integration of analytical tools, such as Firebase or Amplitude, for tracking user behaviour and optimizing your games.

Advertising packages, such as AdMob or Unity Ads, are necessary for monetizing your free projects. Push notifications, which can be implemented using OneSignal or Firebase, will help you retain and bring back users.

You may also need tools for connecting with support, such as Zendesk or Helpshift, to provide quality support to users and resolve their issues.

In addition, testing plays an important role in game development. Unit tests, which can be written using NUnit or xUnit, help check each separate part of the code for correct operation. You should also pay attention to Unity Test Framework and Performance Testing Package.

Using benchmarks allows you to measure the performance of your code and optimize it, and load testing will help to check how your game will cope with a large number of users.

Conclusion

I wrote this article because it took me a lot of time to figure out exactly what I needed to learn to become cool. I hope this article will make it easier for you to dive into a new profession.

Keep advancing your skills: subscribe to various digests, follow developers on X, TikTok and YouTube. Read and listen to podcasts on dev.to, attend conferences, write articles, participate in game jams.

There’s also a popular C# developers’ roadmap you can use for your learning journey.

In conclusion, I wish you luck, especially if you’re just starting out in IT! Do not hesitate to ask questions, even if they seem stupid to you! And feel free to suggest additions to this roadmap, and I’ll be happy to update it!

Download the roadmap here!

I also really apologize for my English 😅 Thank you for reading!

--

--