Getting Started with Unity 2018 - Dr.Edward Lavieri - E-Book

Getting Started with Unity 2018 E-Book

Dr. Edward Lavieri

0,0
34,79 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

The Unity game engine has revolutionized the gaming industry with its complete set of intuitive tools and rapid workflows, which can be used to create interactive 3D content. With Unity, you can scaffold your way from the basics and make make stunning interactive games.
This book will guide you through the entire process of creating a 3D game, from downloading the Unity game engine to publishing your game. It not only gives you a strong foundation, but puts you on the path to game development.
Beginning with an overview of the Unity engine and its interface, you will walk through the process of creating a game environment and learn how to use built-in assets, as well as assets created with third-party 3D modeling tools such as Blender.
Moving on, you will create custom scripts to control non-player character behaviors and gameplay. You will master exciting concepts such as Heads-Up-Displays, mini-maps, game navigation, sound effects, and lighting effects. Next, you’ll learn how to create your first VR experience, right from setting up the project to image effects. You'll be familiarized with all the tools that Unity has to offer to create your own immersive VR experiences.
Each section is a stepping stone toward the completion of the final game. By the end of the book, you'll have learned advanced topics such as cross-platform considerations which enable your games to run on multiple platforms.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 303

Veröffentlichungsjahr: 2018

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Getting Started with Unity 2018Third Edition

 

 

 

 

 

 

A Beginner's Guide to 2D and 3D game development with Unity

 

 

 

 

 

 

Dr. Edward Lavieri

 

 

 

 

 

 

 

 

 

BIRMINGHAM - MUMBAI

Getting Started with Unity 2018

Third Edition

Copyright © 2018 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

Commissioning Editor: Kunal ChaudhariAcquisition Editor: Larissa PintoContent Development Editor: Mohammed Yusuf ImaratwaleTechnical Editor: Shweta JadhavCopy Editor: Safis EditingProject Coordinator: Hardik BhindeProofreader: Safis EditingIndexer: Partik ShirodkarGraphics: Jason MonterioProduction Coordinator: Shantanu Zagade

First published: August 2013 Second edition: May 2015 Third edition: March 2018

Production reference: 1160318

Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK.

ISBN 978-1-78883-010-2

www.packtpub.com

To Veronica Brentwood for being an inspiration 
– Dr. Edward Lavieri
mapt.io

Mapt is an online digital library that gives you full access to over 5,000 books and videos, as well as industry leading tools to help you plan your personal development and advance your career. For more information, please visit our website.

Why subscribe?

Spend less time learning and more time coding with practical eBooks and Videos from over 4,000 industry professionals

Improve your learning with Skill Plans built especially for you

Get a free eBook or video every month

Mapt is fully searchable

Copy and paste, print, and bookmark content

PacktPub.com

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at [email protected] for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters, and receive exclusive discounts and offers on Packt books and eBooks.

Contributors

About the author

Dr. Edward Lavieri, is a veteran game designer and developer with a strong academic background. He earned a Doctorate in Computer Science from Colorado Technical University. He has taught and been a curriculum developer since 2002. In 2008, he started a software design and development studio, focusing on educational games. He currently serves as the Founder and Creative Director of that studio. Edward authored several books on adaptive learning, Java, Unity, AWS Lumberyard, and LiveCode.

Thank you to Packt Publishing for your continual support and belief in me. There are so many great people at Packt that I worked with on this project, including, Larissa, Yusuf, the reviewers, technical editors, proofreaders, the indexer, and the marketing team. It is a pleasure to have worked with such an amazing team.

About the reviewers

Andreas Oehlke is a professional full-stack software engineer. He holds a bachelor's degree in computer science and loves to experiment with software and hardware. His trademark has always been his enthusiasm and affinity for electronics and computers. His hobbies include game development, building embedded systems, sports, and making music. He currently works full-time as a senior software engineer for a German financial institution. He has also worked as a consultant and game developer in San Francisco, CA. He is also the author of the book Learning LibGDX Game Development.

 

 

 

Ludovico Cellentani is a senior engine programmer at King AB, and he has been working as a professional game programmer for almost 20 years. During this time, he has worked on a number of games released on various platforms, spanning PC, consoles, and mobile.

During the past 6 years, he has worked on a considerable number of games, VR experiences, and gamification projects released for PC, mobile, and custom-built computer installations, all powered by the Unity game engine.

He is currently living with his wife and son in Stockholm, Sweden.

 

 

 

Packt is searching for authors like you

If you're interested in becoming an author for Packt, please visit authors.packtpub.com and apply today. We have worked with thousands of developers and tech professionals, just like you, to help them share their insight with the global tech community. You can make a general application, apply for a specific hot topic that we are recruiting an author for, or submit your own idea.

Table of Contents

Title Page

Copyright and Credits

Getting Started with Unity 2018

Third Edition

Dedication

Packt Upsell

Why subscribe?

PacktPub.com

Contributors

About the author

About the reviewers

Packt is searching for authors like you

Preface

Who this book is for

What this book covers

To get the most out of this book

Download the example code files

Download the color images

Conventions used

Get in touch

Reviews

Downloading and Installing Unity

Game engine overview

Game engines for specific game genres

First-person shooters (FPS)

Third-person games

Other game genres

Available 3D game engines

CryENGINE

Lumberyard

Microsoft's XNA Game Studio

Unreal game engine

Unity – past, present, and future

Version 1.0 - 2005

Version 2.0 - 2007

Version 3.0 - 2010

Version 4.0 - 2012

Version 5.0 - 2015

Version 2017 - 2017

Version 2018 – 2018

The case for Unity

Unity features

Editor

Graphics 

Unity community

System requirements

Development system requirements

Playback system requirements

Downloading Unity 

Installing Unity

Summary

The Unity Interface

Screen real estate 

Menu

Unity

File

Edit

Assets

GameObject

Component

Window

Help

Scene view

Game view

Project window

Hierarchy window

Inspector window 

Toolbar

Transform tools

Gizmo Toggles

Cloud and Account Buttons

Layers and Layouts

Layouts

Summary

Designing the Game

Game concept

Game idea

Input controls

Winning and losing

Game characters

Cucumber Man

Cucumber Beetle

Gameplay

Game world layout

Starting condition

Point system

Heads-Up Display

The difficulty balance

Difficulty balance questions

Implementation plan

Project organization 

Custom assets

Standard assets

Organization

Summary

Creating Our Terrain

Creating the terrain

Working with height maps

Importing the terrain

Shaping the terrain

Smoothing our terrain

Creating our spawn points

Painting the terrain

Adding water

Saving your work

Adding vegetation

Summary

Lights, Cameras, and Shadows

Working with cameras

Understanding camera projections

Orientating your frustum

Creating a Skybox 

Using multiple cameras

Working with lighting

Directional lighting

Point lighting

Spot lighting

Area lighting

Implementing reflection probes

Understanding shadows

Summary

Creating and Importing 3D Objects for Our Game

Understanding assets and GameObjects

Asset packages

Understanding GameObjects

Creating 3D objects in Unity

Using prefabs

Using additional 3D objects

Using the Unity Asset Store

Hands-on with the Unity Asset Store

Incorporating custom assets in our game

Working with imported assets

Planting Cherry Trees

Planting Cucumber Patches

Summary

Implementing Our Player Character

Working with Unity's standard asset package

Importing the game character

Configuring a player controller

Fine-tuning our character

Fine-tuning the motor controls

Fine-tuning scale

Fine-tuning the Capsule Collider

Changing and refining input controls 

Animating our player character

Reviewing the player controller script

Reviewing the Animator component

Previewing the animations

Terraforming the terrain for our Cucumber Man

Summary

Implementing Our Non-Player Characters

Understanding the non-player characters

Importing the non-player characters into our game

Animating our non-player characters 

Incorporating the non-player characters into our game

Working with the Animation Controller

Terraforming the terrain for our Cucumber Beetles 

Designating a sandbox area

Planting additional cherry trees

Creating spawning sites

Adding cucumber patches to our terrain 

Creating a cucumber patch area in the sandbox

Planting cucumber patches

Adding cucumbers to our terrain

Scripting our non-player characters

Getting organized

Beetle patrol

Beetle finds and eats cucumber

Beetle attacks player on the ground

Beetle stands to attack

Summary

Adding a Heads-Up Display

Designing our Heads-Up Display

Working with a canvas

Adding the canvas

Adding the health bar UI components

Creating the Lives Remaining UI components

Adding the scoring UI components

Adding the cherry UI components

Adding the cucumber and Cucumber Beetle UI components

Creating a mini-map

Scripting for dynamic content

Scripting the cucumber count

Scripting the beetle count

Summary

Scripting Our Points System

Collecting cherries from trees

Detecting collisions of Cucumber Man and cherry trees

Simulating the collection of cherries

Updating the inventory and HUD with cherry count

Adding the cherry-throwing capability

Creating a spot for the cherry

Writing a CherryControl script

Adding points based on cherry collection and combat hits

Creating a points manager script

Adding points for each cherry picked

Adding points for hitting a beetle with a cherry

Summary

Scripting Victory and Defeat

Designing victory and defeat conditions

Updating the player's health

Scripting the health bar

Decrementing health

Implementing victory

Implementing defeat

Scripting defeat based on no cucumbers remaining

Scripting defeat for no lives remaining

Updating the HUD with lives remaining

Scripting the player character's respawning 

Summary

Adding Audio and Visual Effects to Our Game

Discovering Unity's audio system

Unity audio basics

Unity's Audio Mixer

Planning our game's audio

Implementing our game's audio

Importing audio assets

Implementing the Cucumber Beetle audio

Implementing the Cucumber Man audio

Introduction to Unity's lights and shadows

Adding light sources

Directional light

Point light

Spot light

Area light

Shadows

Discovering Unity's special effects

Particle System

Trail Renderer

Adding visual effects to our game

Adding a Point light to our cherry trees

Add a special effect using the Particle System

Summary

Optimizing Our Game for Deployment

Using the Profiler window

Getting more out of the Profilers

Optimizing scripts

Optimized code example

Optimizing graphics rendering

Occlusion culling

Lighting

Mesh renderer

Additional optimizations 

Level of detail

Static colliders

Creating builds

Understanding the Unity build process

Build settings

PC, Mac, and Linux standalone

iOS

tvOS

Android

HTML 5/WebGL

Facebook

Xbox One

PlayStation 4 and PlayStation Vita

Player Settings

Summary

Virtual Reality

Welcome to virtual reality

Development tools

Oculus

GearVR

OpenVR

PlayStation VR

Enabling virtual reality in Unity

Requisite SDKs

Configuring your Unity project

Recommendations from Unity technologies

Starter content

Oculus VR

Oculus Sample Framework

Oculus Stereo Shading Re-Projection Sample

Oculus Integration

Vive software

Vive Stereo Rendering Toolkit

Vive Input Utility

Vive Media Decoder

NVIDIA

NVIDIA VRWorks

NVIDIA VR Samples

Unity Technologies

Summary

Other Books You May Enjoy

Leave a review - let other readers know what you think

Preface

With the pervasiveness of games and the use of gamification in nearly every industry, the desire to discover how to use state-of-the-art development software has never been so great. There is an increasing number of software tools available to help developers create amazing games for consoles, the web, desktop computers, and mobile devices. Game engines are among the most powerful of these tools available. The Unity 3D game engine is one of the elite game engines. It has been used to create popular 2D and 3D games by large game studios and indie developers. With a free version available, and the newest release of Unity, the time has never been better to start using Unity.

Getting Started with Unity 2018, Third Edition covers one of the most popular game engines available. This book will guide you through the entire process of creating a 3D game, from downloading the Unity game engine to publishing your game. You will enjoy the coverage of some exciting topics in this book, including player-controlled characters and animation. Whether you are just getting started as a game developer or have experience with Unity or other game engines, this book will provide you with a guided tour of developing games with Unity 2018. With clear explanations, tips, and ample screenshots, you will be provided with detailed steps to develop your game.

This book takes a practice hands-on approach to learning Unity 2018. As you progress through each chapter, you will build a 3D interactive game called Cucumber Beetle. As you create the game, you'll learn the key features of Unity 2018, including creating a game environment, animating characters, scripting, and more. All meshes, models, textures, animations, and other assets are available on the book's website.

By the time you complete the lessons in this book, you'll have the confidence to start using Unity 2018 to create your own games.

Who this book is for

This book is written for people new to Unity or those who have some experience with a version prior to Unity 2018. If you want to take a look at Unity 2018, get a refresher, or if you just want to see how games can be developed with a top game engine, this book is for you.

What this book covers

Chapter 1, Downloading and Installing Unity, gives an overview of game engines, followed by a deep look at Unity's beginnings, where the game engine is today, and how it progressed to being one of the top game engines in use today. Unity's capabilities and features are highlighted, and instructions are provided for downloading and installing it.

Chapter 2, The Unity Interface, examines Unity's primary views, windows, layouts, and the toolbar. The interface components covered in this chapter are the ones used most often.

Chapter 3, Designing the Game, covers the design of the book's featured game—Cucumber Beetle. The game design includes gameplay, game mechanics, the player character, the non-player characters, game assets, animations, and more. Screen mock-ups and narratives are used to document the game's design.

Chapter 4, Creating Our Terrain, features the creation and customization of game terrain. Shaping tools are introduced, and water and vegetation features are added to the game environment.

Chapter 5, Lights, Cameras, and Shadows, explores cameras and lighting in Unity. The chapter starts with a look at cameras to include perspectives, frustums, and Skyboxes. The use of multiple cameras to include mini-maps is covered. Different types of lighting, reflection probes, and shadows are also explored.

Chapter 6, Creating and Importing 3D Objects for Our Game, focuses on making the game environment more robust, and trees and other objects are added to the game scene. This chapter also examines the steps necessary to create 3D objects using Unity's native modeling tools. Assets are added to the game from the Unity Asset Store and from 3D assets prepared specifically for the Cucumber Beetle game.

Chapter 7, Implementing Our Player Character, incorporates the game's player character—the Cucumber Man. The character is imported, and the controls and animations are reviewed. By the end of the chapter, the game will be ready for testing in the game mode.

Chapter 8, Implementing Our Non-Player Characters, explains the non-player characters—the Cucumber Beetles. The beetles' 11 animations are examined and changes are made to the non-player character's animation controller. In addition, scripts will be written to control the non-player characters. Also, in this chapter, cucumber patches, cucumbers, and cherries are added to the game world.

Chapter 9, Adding a Heads-Up Display, covers the design and development of, and how to incorporate, a Heads-Up Display (HUD) in the game. A canvas is used to create text and graphics that provide visual indicators of points, health, and additional information to help the player maintain situational awareness during game play. A mini-map is also implemented.

Chapter 10, Scripting Our Points System, looks at the design, scripting, and implementation of the game's point system. This includes providing frame-by-frame updates to key onscreen components of the game's HUD.

Chapter 11, Scripting Victory and Defeat, dives into the design and scripting of the game's victory and defeat conditions. Scripts will be updated to manage the Cucumber Man's health, provide frame-by-frame onscreen updates, and ensure that a player life is lost when the health runs out. Character lives and respawning are also covered.

Chapter 12, Adding Audio and Visual Effects to Our Game, demonstrates the plan and implementation of audio and visual effects in the game to help enhance overall game play. Specifically, audio is added to the key events in the combat system and several special effects, using Unity's particle system, are added to the game.

Chapter 13, Optimizing Our Game for Deployment, discusses optimization and deployment. The steps required to diagnose Unity games for performance problems are explored, in addition to how to optimize scripts and graphic rendering. The Unity build process is explained along with how to create a standalone player and how to deploy games for multiple platforms.

Chapter 14, Virtual Reality, examines Unity's capabilities with regard to virtual reality. An introduction to Virtual Reality is provided, including the hardware requirements. you will learn how to create a Virtual Reality game using the Unity game engine.

To get the most out of this book

You do not need to have experience of programming, working with game engines, or knowledge of Unity to benefit from this book. No assumptions have been made regarding knowledge or experience.

The only software requirement is downloading and installing the Unity game engine. Those steps are detailed in the book, so no software is required before you start reading.

Download the example code files

You can download the example code files for this book from your account at www.packtpub.com. If you purchased this book elsewhere, you can visit www.packtpub.com/support and register to have the files emailed directly to you.

You can download the code files by following these steps:

Log in or register at

www.packtpub.com

.

Select the SUPPORT tab.

Click on Code Downloads & Errata.

Enter the name of the book in the Search box and follow the onscreen instructions.

Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:

WinRAR/7-Zip for Windows

Zipeg/iZip/UnRarX for Mac

7-Zip/PeaZip for Linux

The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/Getting-Started-with-Unity-2018-Third-Edition. In case there's an update to the code, it will be updated on existing GitHub repository.

We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!

Download the color images

We also provide a PDF file that has color images of the screenshots/diagrams used in this book. You can download it here: http://www.packtpub.com/sites/default/files/downloads/GettingStartedwithUnity2018ThirdEdition_ColorImages.pdf.

Conventions used

There are a number of text conventions used throughout this book.

CodeInText: Indicates code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles. Here is an example: "Ensure the Skybox folder is selected in the Project panel"

A block of code is set as follows:

public AudioSource audioSource;public AudioClip eating;public AudioClip attack;public AudioClip die;

Bold: Indicates a new term, an important word, or words that you see onscreen. For example, words in menus or dialog boxes appear in the text like this. Here is an example: "Select Fill option from the HUD_canvas."

Warnings or important notes appear like this.
Tips and tricks appear like this.

Get in touch

Feedback from our readers is always welcome.

General feedback: Email [email protected] and mention the book title in the subject of your message. If you have questions about any aspect of this book, please email us at [email protected].

Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you have found a mistake in this book, we would be grateful if you would report this to us. Please visit www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details.

Piracy: If you come across any illegal copies of our works in any form on the Internet, we would be grateful if you would provide us with the location address or website name. Please contact us at [email protected] with a link to the material.

If you are interested in becoming an author: If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, please visit authors.packtpub.com.

Reviews

Please leave a review. Once you have read and used this book, why not leave a review on the site that you purchased it from? Potential readers can then see and use your unbiased opinion to make purchase decisions, we at Packt can understand what you think about our products, and our authors can see your feedback on their book. Thank you!

For more information about Packt, please visit packtpub.com.

Downloading and Installing Unity

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

Game engine overview

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. 

Game engines for specific game genres

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. 

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.

First-person shooters (FPS)

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

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

Other game genres

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.

Available 3D game engines

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. 

Because the Unity game engine is featured later in this chapter and used throughout this book, it is not covered in this section.

CryENGINE

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

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.

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

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.

Unreal game engine

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 further information 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.

Unity – past, present, and future

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.

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.

Version 1.0 - 2005

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 - 2007

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.

Version 3.0 - 2010

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 - 2012

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

Version 5.0 - 2015

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

Version 2017 - 2017

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.

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

Version 2018 – 2018

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