Top 7 Hard Skills for Unity Junior Developer
Looking back to 2010, when I started my journey in Gamedev with Unity. I would be grateful to have this list of tips from the start. It would have helped me save time in the future and less reinvent the wheel.
Unity Fundamentals
Your development journey with Unity can be separated at least into 2 parts of Unity areas: Unity Editor and Unity Runtime. From Unity Editor, you must know all the main parts of the Unity editor, like the Play button, Scene, Hierarchy, Inspector, GameView, Prefab, Project and Player settings, Package Manager, and the Console window. Let’s see Unity Learn.
Please take into account for future one important thing that Unity gives you so great instruments for customizations in Unity editor. You can develop your custom editor windows, automate routine or override default editor windows into new one with your custom views and tools.
From Unity Runtime, the must things to know
- Unity life cycle
- Monobehaviour is the primary component of Unity game development
- How to create and manage GameObjects and ScriptableObjects.
- Unity basic components and Unity API related to Transform, Renderer, Animation, Rigidbody
- How to handle Input, work with Scenes and Cameras, and interact with components.
- How to use Coroutine and Time.deltaTime
- PlayerPrefs — to save and restore the state of the game
Great briefly explanation of 134 Unity components in youtube for 30 minutes
Once you implement transform.Translate() in your first script and attach the script to a primitive box in the scene, and after play mode pressing, you see moving this. You are great, dude. You did it. Next, all things will become easier.
I still remember when I created a button in a form in Delphi, and when I pressed the button, I saw a log-in console 15 years ago. Just Wow.
C# programming language
As Unity has the primary programming language for development C# that is crucial to understand the main concepts of .Net and the basic features of the language. Unity 2021 supports C# 8.0 and partly 9.0 features. The great book for all time I recommend is CLR via C#, Fourth Edition by Jeffrey Richter. With all the main basic features of the C# like classes, methods, inheritance etc, please deep dive into these :
- All types are derived from the System.Object
- Reference and Value types. Boxing and Unboxing
- The System.String type. Immutable and mutable types.
- The managed heap and garbage collection
These four key bullets will allow you to be on top of all other junior developers who start the Unity journey by learning C# on the fly with basic tutorials for Unity.
Please remember one important thing that in Unity some features of .Net could work differently like Garbage Collection compared to .Net classic implementation and all nuances will be discovered by you in the process of your way.
Design patterns, SOLID, and KISS principles
I recommend starting your journey with an attempt to understand the main design patterns and trying to implement some of the examples. The great material can be found at Refactoring Guru. From the beginning, it will be hard to understand the right time to use a proper design pattern. But it will save so much time by avoiding reinventing the bicycle. Gang of Four Design Patterns in .NET has 23 patterns, but I could highlight these to start:
- Singleton
- Factory
- Builder
- Decorator
- Strategy
Basic math and algorithms
Unity hides the main difficulties of the rendering and transformations underhood of the engine. And to rotate the object, you will call just transform.Rotate() in Update() method of MonoBehaviour.
But when you want to implement a tower defense game, for instance, and you need to find the nearest enemies in a radius to attack them in such cases, will be useful basic things from mathematics.
During your lifetime as a Unity developer, I see big chances that you need to understand:
- Vector and basic operations such as Cross and Dot products.
- Quaternions — at least check which uses cases for using them
- Local and world screen space.
- Basic trigonometry and use cases for using sin, cos.
- Know about tree structures with BFS or DFS algorithm.
- Pathfinding algorithms.
of course it depends on the type of your specialization in future. And if you are going to become a technical artist it needs to deep dive more into math.
Most calculations are available in Unity API; you just need to call Vector.Dot(), for example. What’s left is an understanding of the real case of applying it.
I recommend starting with videos from Freya Holmer Math for Game Dev.
Unity Main Windows and Tools
Inside Unity, you will be able to find a lot of windows and tools. And some of these will require you to spend more time to learn. It would be great, at least from the beginning, to know about existing and where you find and use cases of these windows and tools.
Animator Window — here, you will be able to alive your character
Unity UI + Text MeshPro — create a beautiful text and user interface
Asset Store — here, you find many excellent components and resources to speed up your development.
Device Simulator — will allow you to test your game with different device skins
Unity Package Manager — You can manage packages for your project here.
Tests Runner Window — I hope you will write tests for your code. And in the TestRunner window, you will manage your tests effectively.
Profilers — are your code so lagged, and FPS is not good? Let's open Frame Debugger or Profiler to see where the bottleneck is.
Visual Scripting Tool — This might be a good alternative from the beginning to overcome the main fear of starting to do something because there are not enough coding skills.
Skip UI Toolkit for runtime because that is not fully production ready to cover all use cases and take it for editor tools only. Comparison of UI systems in Unity
Problem-Solving and Debugging
From the beginning, many things will not work as you expected. Developing strong problem-solving and debugging skills from the beginning will help you quickly identify issues in your code and troubleshoot effectively. Must things to know:
- Compilation errors and how to interact with the Unity console window
- Debugging with Debug.Log and custom error logging
- Debugging from your IDE. In Rider, for instance
- Using the Unity profiler. At least to know about the existence of it.
Basic configuration for debugging in Unity and steps can be found here
For troubleshooting, I recommend using Stack Overflow and Unity Forum.
One more important thing. Please be careful with advice from the internet and pay attention to the date of publication and Unity-related versions or context. The best advice is trust but check.
Source Control (e.g., Git)
I hope your first job will be in a good product company with more experienced colleagues and a great culture of reviewing your work in Pull Request and providing feedback to grow. To work with the code of a project and effectively collaborate within a team, the skill to work with a source control tool is a must. I recommend starting from GIT. That is the most popular source control tool around the world. The main operations to know with GIT:
- Create a branch, push your changes to the origin, and fetch changes.
- Merging code
- Resolving conflicts
In conclusion
I believe that game development is a great area to explore your creativity, boost your growth into a professional, and give you an awesome opportunity to work together with talented people and not have boring daily tasks.
Just a reminder, you will not become a game developer just by watching YouTube. No books or ChatGPT advice will make you a great professional just because you read it. Any theoretical knowledge must be applied to your coding practice.
If you liked this, please show your support by 👏 or follow me to get the latest publications in the future.
Thank you for reading!