Game development is more accessible than ever thanks to advancements in technology and the proliferation of more user-friendly game engines. But with so many different tools and services out there, it can be difficult for new developers to learn which offerings are best for their experience and needs.
While game development involves many different components like game design, asset creation (for 2D assets, 3D assets, and animation), scripting, and testing, understanding game engines and how to use plugins and complementary software is key to getting off to a strong start with your game. Unity is one of many options out there, and is popular with game developers because of is relative ease of use, flexibility, and the sheer number of resources available.
This comprehensive guide will teach you everything you need to know when considering Unity as the basis for your next game project.
Table of contents:
- What is Unity?
- What types of games can be created with Unity?
- Unity vs. Unreal Engine
- What are the features of Unity?
- GameObjects in Unity
- Scripting in Unity
- Performance in Unity
- The Unity Asset Store
- What other tools work with Unity?
- 2D and 3D Asset Creation
- Coding in Unity
- Testing in Unity
- How does the pricing structure for Unity work?
- Where can I learn more about Unity?
What is Unity?
Unity is a powerful game engine that lets you build games for every modern platform.
A game engine is a specialized application that supports the development of games by providing:
- an editor environment where code and assets can be linked and manipulated, and
- a set of tools for basic functionality such as movement physics or platform-specific build processes.
It is possible to make a game without an engine of sorts—instead writing custom code for everything from managing assets to simulating physics—but this is increasingly rare as it creates an unnecessary burden for testing and maintenance. Instead, by using an off-the-shelf game engine solution, you can skip straight to writing game systems without worrying about re-inventing the wheel first.
The Unity editor runs on macOS, Windows, and Linux, and incorporates a 2D/3D editor environment, an asset manager, a powerful render engine, a flexible .NET-powered C# scripting system, and more. It has integrations for everything from modeling tools to version control, and also has a built-in Asset Store full of pre-made goodies you can use straight away in your own projects.
What types of games can be created with Unity?
This is a bit like asking “what can you cook in a microwave?”; virtually any type of game can be created in Unity—it is just that some may be a better fit than others. To figure out if Unity is the best solution for your needs, let’s have a look at some of the things Unity does best and the scenarios in which an alternative may better suit.
On modern platforms, Unity often accounts for the majority of game releases—estimates in the 60-70% range are common. The only comparable product is Unreal Engine, which is famously responsible for Fortnite: a game that topped annual game revenue lists for multiple years following its release in 2017. Countless smaller game engines then exist to serve more specific user needs—including completely free and Open Source mod-able engines such as Godot, or engines tailored for specific genres of games such as RPG Maker.
Unity vs. Unreal Engine
Comparisons between Unity and Unreal Engine are common, as they are both large, as-a-Service providers of general-purpose game development software for 2D and 3D games. Preferences between them are often entirely subjective, yet both camps are full of developers willing to die on their respective hills. So let’s let their games do the talking.
Compared to Unreal Engine, Unity is a more popular choice for mobile games or titles with broad platform support requirements. Targeting an additional platform with a Unity-based game can sometimes be as simple as ticking a box at build time, and the development process benefits from a decade of being the de facto standard for 3D and also many 2D mobile games. Build size is a factor, but Unity already works with all the tools and platforms you need to make a mobile game, and the road to making a Unity-based game available on the various app storefronts is well-travelled.
Unity is also popular among for newer or smaller studios, likely due to its relative ease of access, low licensing fees, and abundance of beginner-friendly tutorials. Because Unity is a popular teaching tool among universities that teach game design, a large demographic of students-turned-pros in the game industry have remained loyal users of Unity in their professional lives. Even without dedicated tools, the process to work collaboratively on a Unity project is not onerous like it can be with many alternatives. Unity is regarded as the typical way to get game projects started fast, and this is evidenced by the overwhelming popularity of Unity among hobbyist and game jam participants the world over.
Unity is also a choice pick in a category of games which would typically use niche or bespoke engines: games with complex physics modeling requirements. One notable Unity title in this category is Kerbal Space Program: a game in which players are tasked with designing and piloting spacecraft to distant bodies in the Solar System under the influence of realistic (and thus extremely punishing) orbital physics. Though the underlying physics engine that Unity is built on is also shared by alternatives such as Unreal Engine, the differentiator for Unity is in its custom scripting support for core components including physics interactions.
So if you’re making something small, unusual, or that needs to be deployed everywhere, Unity is probably for you. But now let’s look at the gaps: if you’re writing a large game for a limited set of non-mobile platforms, you might instead elect to use Unreal Engine. Unlike Unity, Unreal has been very frank in their targeting of large AAA titles, and only recently begun offering a royalty-free license tier (though with a limit). Unreal is often regarded as more complicated, but is a typical choice for games where photorealistic graphics are a priority, and the tooling support between the two is largely comparable. Thus, the choice between the two is really up to the specific needs of your game and its creators.
What are the features of Unity?
Unity encompasses a broad ecosystem of tools and integrations. The Unity editor is a place where tools and assets come together to power the development of virtually any type of game you can imagine. Before we discuss in-editor features, let’s begin with the basics of how Unity composition works…
GameObjects in Unity
The fundamental building block of Unity is the GameObject. A GameObject is an entity that exists in a Unity Scene that Components can be attached to. A GameObject can have Components that:
- represent physical aspects, such as a mesh (model) and material (texture);
- impact the object’s interaction with the physics engine, such as to make it solid or subject to gravity;
- give the object behaviors or make it able to respond to certain inputs, by attaching scripts that define these behaviors;
- define properties of the object, or its semantic relationships to other objects,
- and much more.
In this way, a GameObject can represent everything from a player (with Components for its physical model and movement behavior, and links to related objects like inventory system) to a camera (with its location and Components for its render settings, status, and movement cues) to a scene trigger (with no physical aspect but exists invisible in the scene, with Components for what it watches for and what it responds to and how). Thus, a game in Unity is made up of Scenes, each Scene will hold a hierarchy of GameObjects, and each GameObject will contain Components to suit their purpose. This method of defining objects and behaviors is extremely flexible, and allows for a learning curve that flattens quickly and a development experience that can be easily distributed—such as in teams working on different behavior Components—and dynamic, because change is fast when everything is made up of building blocks.
This answers how making things in Unity works, on the part of game-specific models, assets, systems, and behaviors. The differentiator, then, is the support Unity has for the broader development process, and to shortcut the creation of boilerplate systems. Because porting to another engine after a project has begun is extremely difficult, you want to be sure that the one you’ve picked supports the workflows you want and need.
Scripting in Unity
Let’s begin with scripting. In Unity, a component on a GameObject can be a reference to a script that defines behavior. These scripts are typically written in C#, and can make use of the long-running and robust ecosystem that exists for C# as a language outside of the Unity editor—including first-class code editor support and integration, version control, testing tools, and more. But for those that don’t want to write C# code, Unity also has a built-in visual, node-based, low-code editing experience called Unity Visual Scripting.
Performance in Unity
Ensuring performance in Unity-based games is made easy by Unity’s own Profiler tool. Profiler handles running game systems and looking for anomalies and opportunities for improved performance across CPU usage, GPU usage, memory usage, audio management, physics simulation and more. And in the last few years, Unity also made a splash in the world of artificial intelligence with the release of Unity ML-Agents: an Open Source framework that allows Unity environments to be used for training and deploying Machine Learning models. This can be used to train agents (bots) for games or simulations, directly in-engine, with the use of a range of existing tools across C# and Python.
The Unity Asset Store
And that’s not nearly all. Unity’s Asset Store then provides a marketplace for everything else the editor doesn’t provide natively—and may things it does. This allows users to mix-and-match integrations with tools they already know and love, making for a highly customizable user experience within the Unity editor.
To read more about the basic concepts of working inside the Unity engine, check out our upcoming tutorial content. For everything you may need to do outside of the Unity engine, it’s all about the integration and support of external tools…
What other tools work with Unity?
Unity has been around since the mid-2000s and has been responsible for hundreds of thousands of released games. It has a large fan/userbase featuring a significant portion of developers and tool-makers. Suffice it to say, lots of people have made tools for Unity. Tools to do virtually anything you can think of. But let’s look at the most popular across key stages in a game development pipeline.
Let’s start with the concept stage. “Grayboxing” system, level, and layout design directly in Unity is typical, and there are an abundance of community tools to support this. Fantastic asset packs made for environment prototyping are available for cheap (e.g. Synty’s Polygon prototype pack) or even free (e.g.
Kenney’s Isometric Miniature Prototype pack) to get you started fast, and the modular design of Unity’s GameObjects lends itself well to iterative system design in the early stages.
2D and 3D Asset Creation
Then onto asset creation. Like before, you can make use of the abundance of pre-made assets available on the Unity Asset Store and beyond. Or I guess technically Unity does have some basic modelling functionality built in with ProBuilder, but it’s a bit limited and not super nice to use so people tend to only use it for games with a simple or low-poly style. For those “hero assets”, the typical process is to instead use an external modelling tool and then import to Unity for animation and use.
For 3D modeling, Blender is definitely the most popular choice nowadays. And for good reason: it’s free, its Open Source, it’s supported by a great community and an abundance of online tutorials in every medium, and Unity can natively import .blend files. Unity’s first-party support for the import of models from Blender, Maya/3ds Max, and other popular alternatives then opens up a world of options; specialized editors such as voxel editors (e.g. MagicaVoxel) or sculpting tools (e.g. ZBrush) which export to the generic .obj format can be imported via Blender conversion to Unity itself.
Coding in Unity
Now onto the systems implementation and coding. Unity has support for all your favorite code editors: first-party support for Visual Studio, Visual Studio Code, and JetBrains Rider; and only minimal fiddling is required to make it work nicely for others like Atom (deprecated but still beloved), Sublime, and Xcode. For version control, Unity has custom integrations for Perforce-and Plastic-based version control, but many prefer to use the de facto industry standard Git-based hosted solutions like GitHub, GitLab, or BitBucket via custom plugins (that allow Unity to use these directly) or code editor integration (that manage versioning of script files alone). Though Unity is notorious for triggering complex merge conflicts with changes to non-human-readable metadata or scene files, so tread with caution.
Testing in Unity
Moving on to tuning and testing. Unity’s inbuilt profiler is such that external tools are often not needed for the majority of tuning, though other options do exist for both performance and functional testing. And when it comes to play testing, integrations exist for testing on the majority of platforms and storefronts, including TestFlight for iOS, PC via Steam Beta Release, and more.
Then finally the shipping phase: build, package and deploy. This is a huge focus for Unity, which allows “one-click” build for all major platforms with minimal fuss, available in both local and cloud-based flavors. Several popular third-party tools exist to automate build and verification processes for games with a large amount of target platforms, spanning from managed CI/CD solutions to smart wrappers for the UnityTest framework, and that take care of the all-important compliance checks required to target modern console platforms.
From the earliest stage of concept design to the post-release maintenance phase, Unity has tools for whatever you need.
How does the pricing structure for Unity work?
For many users, Unity may be completely free. Unity is a closed-source product that provides specific build and support services for a fee, but the main licensing terms that dictate the price of using Unity in a project is primarily based on how much money you make. This is among the fairer of pricing models: it doesn’t matter what you make with it, how many people you work with, just how much money you earn from making games. Unity licenses are available in four tiers.
The free tier of Unity applies to any person or entity who has made less than $100,000 USD in the past year. And yes it is actually free: that means no licensing fees upfront, and no royalties afterwards. This allows Unity to be widely used by students and hobbyists, and has made Unity a popular tool for teaching game design and development.
The next tier of license is the Unity Plus plan, which includes a series of tools to support collaborative development across a team and removes some Unity branding from final builds. This plan costs on the order of a few hundred dollars per “seat” per year, where seat means individual with access to Unity covered by that license. Seats are purchased in bulk by a studio and then allocated to individual employees who need to use Unity directly. Though these can be reallocated—retracted and re-issued to someone else on the fly—the spirit of the license means the number of seats an organization purchases will typically approximate their combined number of programmers, with some additional allocation for animators, level designers, and QA.
The further tiers of Unity license typically target very large studios. For a higher per-seat fee, users will have access to all of the standard and premium features of the lower tiers—including their advanced collaboration tools and Unity’s cloud-based automated build system—as well as some level of personalized technical and feature support from Unity themselves.
Where can I learn more about Unity?
As with tools, the popularity of the Unity engine means tutorials are everywhere. The quality of these are not always equal; being favored by new developers means a lot of “rookie” content, and Unity’s long history means a lot of documentation will have gone out of date over the years—one must keep an eye on the version numbers they are using or else be perpetually confused—but overall, community-made content is one of Unity’s greatest strengths.
As with any large software project that evolves rapidly, the official documentation is fine—well-made and -meaning but vague at the best of times. Through no fault of their own, game engines are just complicated and none of them are any better at this. In Unity’s case, their practical course content fills the gaps quite well. But the community thrives on its healthy stream of video tutorials, podcasts, and written articles (such as this one) from people who are out in the real world making all sorts of wild and wonderful things with Unity.
As a developer, I have found the most useful tidbits in devlogs or coverage of specific tools or games that are similar to the project I am working on. Others have espoused the value in formal courses from online providers such as Udemy or Coursera. And if all that doesn’t work, there are hundreds of friendly Discord servers full of helpful people who will happily answer questions or debug scripts with you.
Stay tuned for more tutorials and how-to content.