In this chapter, you will learn about game engines and look at four different types before focusing on Unity. Once that foundation is set, we will start taking a deep look at Unity's beginnings, where the game engine is today, and how it has progressed to being one of the top game engines in use today. We will highlight Unity's capabilities and features. We will then review the system requirements for developing Unity as well as running, Unity games. Finally, we will download and install Unity.
Our topics for this chapter are:
- Game engine overview
- Unity—past, present, and future
- The case for Unity
- System requirements
- Downloading Unity
- Installing Unity
A game engine can be defined as a set of tools that provide the functionality you need to develop and deploy video games. There is no single industry-accepted definition for game engines. That is largely due to the varied nature of them and their uses. Typically, game engines have at least the following set of features:
- 2D and/or 3D graphic design tools
- Animation
- Asset management—the ability to create and import game assets
- Audio support
- Cross-platform deployment—games can be made for multiple platforms (such as desktop, mobile, and console)
- Graphical user interfaces
- Networking—support for multiplayer games
- Physics
- Scripting support in one or more languages
The basic concept of game engines is that they provide a powerful set of tools to handle much of the grunt work of game development, allowing developers to focus on game aesthetics and gameplay. In the early days of video games, each game was coded from scratch without a game engine's libraries or capabilities. Instead of reinventing the wheel for each game, game engines started to emerge, making it easier for game studios to churn out games.
Game engines are not general-purpose software suites that can create any game imaginable. They are highly specialized and, although very flexible, are intended for a specific range of game genres. For example, the Ego Game Technology Engine by Codemasters is used primarily for creating racing games; Pyrogenesis, by Wildfire Games, is used for creating real-time-strategy (RTS) games; the Silent Storm Engine, by Nival Interactive, is used predominately for turn-base tactics games; and ONScripter, by Naomi Takahashi, is used for creating visual novels and first-person adventure games.
There are a plethora of game engines available; many of them are free, some are open source, and others are proprietary. Selecting the right game engine for your game project is a critical pre-development step. Not every game engine will work for your game, and no single game engine will work for every game. Fortunately, we have a lot of options available to us.
When deciding on which game engine to use for a given game project, consider the typical characterization of games in the primary genre that your game is a part of.
Note
We use the phrase primary genre because many modern games blur the genre lines and incorporate characteristics of two or more genres. This genre blurring can result in new and innovative games.
This game genre has a long list of successful titles; here are some of them:
- Battlefield
- Bioshock
- Borderlands
- Call of Duty
- Destiny
- Doom
- HalfLife
- Halo
- Left4Dead
- Overwatch
- Rainbow Six
FPS games are created with the intent of immersing the player in the game world. They are playing as a character and, to obtain the desired level of immersion, animations, audio, and graphics quality are critically important. Special attention is given to the character's arms and weapons:

These games are typically characterized by the following:
- Large 3D segmented game worlds (indoors and outdoors)
- Character travels primarily on foot
- Some vehicle usage
- Standard camera and aiming controls
- Realistic animations
- Large and realistic inventory of hand-held objects (weaponry)
- Non-player characters (NPCs) with realistic artificial intelligence
- Single and multi-player modes
Third-person games are games where the player character is nearly or completely visible in the game scene. This genre includes third-person shooters (TPS) and third-person action/adventure. That means that a considerable effort needs to be focused on a character's appearance and animations. These games are based on the third-person character perspective as illustrated here:

Here are some of the more successful and popular third-person games:
- Dead Space
- Gears of War
- Grand Theft Auto
- Prince of Persia
- Rainbow Six
- Resident Evil
- SOCOM
- Splinter Cell
- Uncharted
These games are typically characterized by the following, in addition to the characteristics listed in the previous section for FPS games:
- Emphasis on the player character
- Camera that follows the player
- Player-controlled character motion sequences
- Full-bodied animations
- Character and camera rotation
There are a large number of other game genres, such as shooters, platformers, vehicle games, fighting, strategy, war, simulation, and puzzle. The difficulty in identifying a particular game's genre lies in the multiple ways in which game genres are classified. For example, you can have a TPS game that is also a massively multiplayer online game (MMOG) and, because it has a large number of puzzles, it can be added to the puzzle genre.
This is not something to be terribly concerned about. It is important to be able to identify what the key components of your game will be so that you can select the best available game engine for your project.
In this section, we will briefly review selected leading game engines to give you a sense of what is available and what their capabilities are.
Note
Because the Unity game engine is featured later in this chapter and used throughout this book, it is not covered in this section.
CryENGINE is developed by Crytek. Interestingly, this game engine was initially created to produce a game demo for Nvidia, a graphics processing unit (GPU) manufacturer and because of that demo's great success, the game (Far Cry) was taken into full production and is now a commercial success. The game engine itself is also very successful.
The engine is freely available along with the full source code. There are no financial obligations for commercial use of CryENGINE such as royalties. This engine is capable of high-quality visuals and excellent performance, and you can develop games for the following platforms:
- Linux PC
- Oculus Rift
- Playstation 4
- Windows PC
- Xbox One
For further information on CryENGINE, I recommend Mastering CryENGINE by Packt Publishing: https://www.packtpub.com/game-development/mastering-cryengine.
Lumberyard is part of the Amazon Web Services (AWS) platform and, at the time of this book's publication, is still in beta. This is a free AAA game engine based on CryENGINE. Lumberyard's unique selling point is that no other game engine offers deep integration with Amazon Web Services and Twitch.
Note
AAA, pronounced "triple-A," games are those with extremely large production and marketing budgets.
With this engine, you can develop for the following platforms:
- Android
- HTC Vive
- iOS
- Oculus Rift
- OSVR
- PC
- PlayStation 4
- PlayStation VR
- Xbox One
For further information on AWS Lumberyard, I recommend Learning AWS Lumberyard Game Development by Packt Publishing: https://www.packtpub.com/game-development/learning-aws-lumberyard-game-development.
Microsoft's XNA Game Studio is a set of tools based on Microsoft's .NET framework. It is freely available. There are some redistribution restrictions that you will want to review if you plan to use this tool.
With XNA, you can develop for the following platforms:
- Windows PC
- Windows Phone
- Xbox 360
For further information on XNA, I recommend Microsoft XNA 4.0 Game Development Cookbook by Packt Publishing: https://www.packtpub.com/game-development/microsoft-xna-40-game-development-cookbook.
The Unreal game engine, by Epic Games, started as a first-person shooter (FPS) game nearly 20 years ago. Since that time, the Unreal game engine has significantly evolved and is now a freely-available AAA game engine. You can develop games with Unreal using C++ or Blueprints, a visual scripting system.
Unreal comes with several templates that make getting started very easy. These are:
- 2D File Scroller
- First Person
- Flying
- Puzzle
- Rolling
- Side Scroller
- Third Person
- Top Down
- Twin Stick Shooter
- Vehicle
- Vehicle Advanced
With Unreal, you can develop for the following platforms:
- Android
- Daydream
- HTML 5
- iOS
- Linux
- macOS
- Nintendo Switch
- Oculus Rift
- PlayStation 4
- PlayStation VR
- Samsung Gear VR
- Steam
- Viveport
- Windows PC
- Xbox One
For furtherinformation on Unreal, I recommend Unreal Engine: Game Development from A to Z by Packt Publishing: https://www.packtpub.com/game-development/unreal-engine-game-development-z.
The Unity game engine was created by David Helgason, Nicolas Francis, and Joachim Ante in Copenhagen, Denmark, in 2004. They created the game engine to develop games, but ended up focusing on the game engine. Here is a brief look at its release history.
Note
If you encounter a term or feature in this section that you are not familiar with, don't worry, we will cover them in subsequent sections and chapters.
This initial release could be used to develop projects for the macOS X operating system. The major features of Unity 1.0 included:
- Some documentation
- Transform script interface
- Alpha-mapped shaders
- Color-coded console warnings and errors
- Fully-sandboxed web player
Version 1.1 supported Microsoft Windows and web browsers as distribution platforms. It also included support for C/C++ external plugins.
Version 2.0 had several impressive features, including better support for projects made for the Windows platform. This release also improved the web player compatibility across platforms.
Engine updates included better graphic processing performance with the support of Microsoft's DirectX and OpenGL. The terrain engine was also introduced in this release, as was the ability for real-time soft shadows and networking.
The Unity Asset Server was also introduced in Version 2.0. This is an asset and version control system for teams working on Unity projects.
The major features of Unity 2.0 included:
- Terrain engine
- Video playback
- DirectX 9.0 renderer
- Networked multiplayer games
- Real-time dynamic shadows
- Game GUIs
- Web player streaming and compression
- Unity Asset Server
- Physics enhancements
- Scripting enhancements
- Water feature
After this, there were incremental releases. Most notably, Version 2.5 was released in 2009 and included cross-platform support so the Unity game engine could run on both Mac and Windows computers.
The release of Version 3.0 included a large number of new features and enhancements, as well as a large number of bug fixes in the editor, rendering, iOS-related, physics, scripting, and networking.
The major features of Unity 3.0 included:
- Support for Android OS
- Improved standard asset packages
- Improved editor
- New graphics features
- Asset pipeline improvements
- Audio improvements
- Physics improvements
- Documentation for scripting features
Version 3.5 represented a tremendous update and was released in 2011. It included support for Flash deployment. Additional key updates included:
- Shuriken particle system
- Built-in pathfinding
- Upgraded occlusion culling
- New level of detail
- Linear space lighting
Version 4.0 was released in 2012 and enabled game developers to create stunning gameplay and animations. The primary updates to the game engine for this release were:
- A new animation system called Mecanim
- Real-time shadows (for all platforms)
- Support for DirectX 11 rendering
- Updated the Shuriken particle system, including support for world collision
- Added new deployment platforms:
- Linux
- Adobe Flash
- Support for cross-platform dynamic fonts
Unity 5.0 launched with a free personal edition. This edition was provided to anyone with less than $100,000 in revenue or funding. No royalties were assessed either, making this a great way to get into the game industry without the initial expense of game engine technology. With the free version, published games included a non-customizable splash screen.
Key features in version 5.0 were:
- Performance improvements to 3D physics
- Animation system updates
- WebGL preview
- Visual fidelity enhancements with HDR reflection probes
- An audio mixer
- Real-time global illumination
- Physically-based standard shader
In 2017, Unity Technologies announced that they would shift the version of the Unity game engine from an incremental number to the year of release. So the major release in 2017 was version 2017, and, since then, all minor releases in that year followed semantic versioning.
Note
Semantic versioning is a formal software versioning convention that uses a three-part version identification schema: major.minor.patch.
The actual first release of 2017 was as 2017.1 in July, 2017. Here are some of the major features introduced with Unity 2017:
- Timeline—a visual tool for creating cinematic content
- Cinemachine—an advanced camera system
- Post-processing—functionality where you can apply filters, controls, and more
- Unity Teams—a new cloud-based collaborative service
- Improved graphics and platform support
- Particle system improvements
- Progressive Lightmapper improvements
- 2D improvements
- Animation improvements
- Real-time shadow improvements
The release of Unity 2018 is anticipated in the spring of 2018. There will be some exciting enhancements to the game engine, especially with the stated focus of graphics.
Here are the highlights of the changes expected for Unity 2018:
- Scriptable Rendering Pipelines (SRP): A new SRP API will be available, giving us finite control of the rendering pipeline via C# scripting. Unity 2018 will include two rendering pipelines (Lightweight and HD) that can be used, replicated, or modified.
- Upgraded post-processing stack: A new version of the post-processing stack includes automatic volume blending, and enhanced controls for custom effects.
- Shader graph: A visual interface for creating shaders.
- Integrated IDE: MonoDevelop will no longer be shipped with Unity as the integrated development environment for scripting. Windows users will receive Visual Studio 2017, and Mac users will receive Visual Studio for Mac. Visual Studio is a much more robust development environment.
- C# job system: This system will empower developers to create safer multithreaded code with performance gains.
With so many game engine options available for both 2D and 3D game development, you might wonder why you should select Unity. The first release in 2005 introduced us to an excellent game engine that has been continually improved upon over the last decade with new features, support, and enhancements. With each new release, developers are presented with more functionality to help them develop stunning games.
Unity Technologies, the creators of Unity, is a well-established company dedicated to continual improvement of the game engine. As new processing technologies and platforms arise, Unity support will not be far behind. As with all Unity features, excellent official documentation accompanies all new functionality and features.
Being able to use a free version of the game engine without having to pay royalties is a game changer. Individuals, hobbyists, and small studios can make games using the same powerful game engine as large studios. In addition, the robust feature set and Unity community are additional factors that make Unity the right choice for your game development projects.
In this section, we will list the core features of the Unity game engine. We will explore them in detail in subsequent chapters. Unity can be used to develop applications for the following devices, which span consoles, desktops, mobile, AR, TV, VR, and the web:
- Android/Android TV
- Daydream
- Facebook Gameroom
- Fire OS
- Gear VR
- Google Cardboard
- iOS/tvOS
- Linux
- macOS
- Microsoft Hololens
- Nintendo 3DS/Nintendo Switch
- Oculus Rift
- PlayStation 4/PlayStation Vita/PlayStation VR
- Samsung SMART TV
- Steam OS/Steam VR
- Tizen
- WebGL
- Wii Universe (no longer supported in Unity 2018)
- Windows/Windows Phone/Windows Store Apps
- Xbox One
Unity's Editor is the main game engine interface, where you will spend most of your time. Here are the key features of the Unity Editor:
- Can be used on both Macs and Windows PCs
- 2D and 3D scene design tools
- Instant play mode
- Powerful animation tools
- Timeline tool for creating cinematic sequences
- Cinemachine tool for smart cameras
- Artificial Intelligence (AI) pathfinding tools
- Extensible—there are ample available plugins available
- Particle system
- Supports C# and JavaScript
- Supports single and multi-player games
- Includes collaborative tools
The graphics capabilities of the Unity game engine are impressive. We have the ability to create game objects natively in the game engine using geometry, meshes, textures, and materials. We can also use high-quality graphics imported from external, specialized software tools including Maya, 3DS Max, and Blender. Advanced lighting and shadow controls as well as the level of detail feature adds an important touch of realism to our games.
Key graphic features include:
- Real-time rendering
- Global illumination
- Physically-based shading
- Native graphics API for faster rendering
- Multiple lighting techniques
Unity has one of the most vibrant communities. Community members share content and help answer questions regarding developing with Unity. The community is heralded by Unity Technologies. In addition to official tutorials, you can find a host of blogs, tutorials, and videos to help you get started with Unity development, as well as learn how to accomplish specific operations with your game.
The Unity Asset Store includes free and for-fee assets from Unity Technologies and the Unity community. Available assets include models, art, animations, scripts, and tools. The Asset Store has an intuitive interface making finding what you need easy. We will explore the Asset Store in Chapter 6, Creating and Importing 3D Objects for Our Game.
Unity hosts periodic live events that allow you to learn about Unity directly from Unity Technologies and connect with fellow designers and developers. Unity Unite events are hosted in America, Asia, and Europe each year. You can learn about past and future Unite events here: https://unite.unity.com/.
System requirements has two parts. The first refers to what hardware and software you need in order to use Unity for game development. The second refers to the hardware and software you need to run a game developed in Unity. While these requirements might change, the requirements, as of Unity 2017, are detailed in the next two sections.
You can use a Mac or a Windows computer for Unity development. The Mac must have macOS X 10.9 or later. For Windows computers, you must have Windows 7 SP1+, Windows 8, or Windows 10.
The Graphics Processing Unit (GPU) on your development computer must have DX9 (shader model 3.0) or DX11 with feature level 9.3 capabilities.
There are additional requirements that are specific to what distribution platforms you are targeting. Please refer to the following table for further information.
If you are developing for... | You must have... | ||||||||||||
Android |
| ||||||||||||
iOS |
| ||||||||||||
WebGL | One of the following:
| ||||||||||||
Windows Store | Windows 8.1 (64-bit) and one of the following as applicable:
| IL2CPP (used for compiling .NET assemblies) | Visual Studio with C++ compiler feature | Universal Windows Platform (UWP) | Visual Studio 2015 or later Windows 10 SDK | Windows 8.1/Windows Phone 8.1 | Visual Studio 2013 or later Windows 8.1 SDK | ||||||
IL2CPP (used for compiling .NET assemblies) | Visual Studio with C++ compiler feature | ||||||||||||
Universal Windows Platform (UWP) | Visual Studio 2015 or later Windows 10 SDK | ||||||||||||
Windows 8.1/Windows Phone 8.1 | Visual Studio 2013 or later Windows 8.1 SDK |
There are not a lot of requirements for users playing Unity games on devices you developed for. Typically, having an up-to-date device, in terms of hardware and operating system, will result in the optimal playing experience.
The basic requirements are detailed as follows:
Device/Platform | Requirements |
Android |
|
Desktop | CPU
Graphics card options
Operating system options
|
iOS | iOS 7.0 or higher |
WebGL | A recent version of one of the following browsers
|
Windows Phone | Windows Phone 8.1 or later |
Getting your hands on Unity is relatively straightforward. Start by visiting the Unity site at https://unity3d.com. In the top-right corner, as shown here, you will see a link to Get Unity
:

That link takes you to the https://store.unity.com page where you can click on the Try Personal
link as part of the Personal
plan option.
You will be taken to the Download Unity Personal
page. You should review the information on that page to be sure that you qualify for the Personal Plan.
Note
Depending on your system, you might be prompted to select a Windows or macOS X button. If presented with this choice, select the appropriate operating system for your computer.
Once you acknowledge your eligibility, the Download Installer
button will be enabled.
The installer downloads very quickly. It is just an installer and not the game engine itself. We will review the installation process in the next section.
In the previous section, you downloaded the Unity Installer. Locate that file, likely in your downloads
folder, and launch the program.
For the remaining steps, and throughout this book, we will use Unity running on macOS. The steps and processes for installing and using Unity are the same for both systems; the interfaces might vary slightly in appearance.
Once you launch the Download Assistant, your computer might present you with a security prompt:

Once you accept the security warning, and after clicking the Open
button, you will see the Introduction
pane. Click the Continue
button.
Next, you will see the Software License Agreement
pane (not shown here). You can read, print, and save the Software License Agreement. Click the Continue
button to proceed. This will result in a popup asking you if you consent to the terms of the software license agreement. If you do agree, click the Agree
button.
The next step is the Unity component selection screen
. By default, all components will be selected. You will see how much space is required for these components to be installed on your computer and how much space you have left. You can disable components you know you will not need right away and install them later. Alternatively, you can install all components if space is not an issue:

In order to follow along with this book's tutorials, you will need to, at a minimum, select the following components:
Unity 2017.1
(or later version that is presented in the interface)Standard Assets
In addition, the following components are highly recommended:
Documentation
Example Project
Next, you will select an installation destination and click the
button.Continue
The Download Assistant
will start downloading the components you previously identified (not shown here). If you have a slow internet connection, this could take a while.
This is a good time to create your free Unity ID. If you still have Unity open in your browser, you will see the person icon in the top-right of their page. If you do not see that icon, you can revisit https://unity3d.com. When you click on the icon, you will see a new interface with a Create a Unity ID
button. Click that button and fill out the registration form:

You will need your account to use the Unity Asset Store, even for obtaining free content.
Once all components have been downloaded and installed, you will be notified by the Download Assistant.
When you first launch Unity, you will need to select a license. Unity is now successfully installed on your computer and you are ready to use it.
In this chapter, we explored game engines and looked at four different game engines to support our foundational knowledge about game engines. We also looked at the history of Unity and how it evolved from one release to the next. In addition, we discovered Unity's key capabilities and features. Unity's system requirements for developing Unity games was covered, as were the system requirements for running them. Finally, we downloaded and installed Unity.
In Chapter 2, The Unity Interface, we will provide details on the Unity Editor's User Interface. You will learn about the various views, windows, layouts, and transform tools.