Master a series of performance-enhancing coding techniques and methods that help them improve the performance of their Unity3D applications
Key Features
- Discover features and techniques to optimize Unity Engine's CPU cycles, memory usage, and the GPU throughput of any application
- Explore multiple techniques to solve performance issues with your VR projects
- Learn the best practices for project organization to save time through an improved workflow
Book Description
Unity is an awesome game development engine. Through its massive feature-set and ease-of-use, Unity helps put some of the best processing and rendering technology in the hands of hobbyists and professionals alike.
This book shows you how to make your games fly with the recent version of Unity 2017, and demonstrates that high performance does not need to be limited to games with the biggest teams and budgets.
Since nothing turns gamers away from a game faster than a poor user-experience, the book starts by explaining how to use the Unity Profiler to detect problems. You will learn how to use stopwatches, timers and logging methods to diagnose the problem. You will then explore techniques to improve performance through better programming practices.
Moving on, you will then learn about Unity's built-in batching processes; when they can be used to improve performance, and their limitations. Next, you will import your art assets using minimal space, CPU and memory at runtime, and discover some underused features and approaches for managing asset data. You will also improve graphics, particle system and shader performance with a series of tips and tricks to make the most of GPU parallel processing.
You will then delve into the fundamental layers of the Unity3D engine to discuss some issues that may be difficult to understand without a strong knowledge of its inner-workings. The book also introduces you to the critical performance problems for VR projects and how to tackle them.
By the end of the book, you will have learned to improve the development workflow by properly organizing assets and ways to instantiate assets as quickly and waste-free as possible via object pooling.
What you will learn
- Use the Unity Profiler to find bottlenecks anywhere in your application, and discover how to resolve them
- Implement best practices for C# scripting to avoid common pitfalls
- Develop a solid understanding of the rendering pipeline, and maximize its performance by reducing draw calls and avoiding fill rate bottlenecks
- Enhance shaders in a way that is accessible to most developers, optimizing them through subtle yet effective performance tweaks
- Keep your scenes as dynamic as possible by making the most of the Physics engine
- Organize, filter, and compress your art assets to maximize performance while maintaining high quality
- Discover different kinds of performance problems that are critical for VR projects and how to tackle them
- Use the Mono Framework and C# to implement low-level enhancements that maximize memory usage and avoid garbage collection
- Get to know the best practices for project organization to save time through an improved workflow
Table of Contents
- Pursuing Performance Problems
- Scripting Strategies
- The Benefits of Batching
- Kickstart Your Art
- Faster Physics
- Dynamic Graphics
- Virtual Velocity and Augmented Acceleration
- Masterful Memory Management
- Tactical Tips and Tricks
Chris Dickinson grew up in a quiet little corner of England with a strong passion formathematics, science and, in particular, video games. He loved playing them, dissectingtheir gameplay, and trying to figure out how they worked. Watching his dad hack the hexcode of a PC game to get around the early days of copy protection completely blew hismind! His passion for science won the battle at the time; however, after completing amaster's degree in physics with electronics, he flew out to California to work in the field ofscientific research in the heart of Silicon Valley. Shortly afterward, he had to admit tohimself that research work was an unsuitable career path for his temperament. After firingresumes in all directions, he landed a job that finally set him on the correct course in thefield of software engineering (this is not uncommon for physics grads, I hear).His time working as an automated tools developer for IPBX phone systems fit histemperament much better. Now he was figuring out complex chains of devices, helping itsdevelopers fix and improve them, and building tools of his own. Chris learned a lot abouthow to work with big, complex, real-time, event-based, user-input driven state machines(sounds familiar?). Being mostly self-taught at this point, Chris's passion for video gameswas flaring up again, pushing him to really figure out how video games were built. Once hefelt confident enough, he returned to school for a bachelor's degree in game and simulationprogramming. By the time he was done, he was already hacking together his own (albeitrudimentary) game engines in C++ and regularly making use of those skills during his dayjob. However, if you want to build games, you should just build games, and not gameengines. So, Chris picked his favorite publically available game engine at the time--anexcellent little tool called Unity 3D--and started hammering out some games.After a brief stint of indie game development, Chris regretfully decided that the demands ofthat particular career path weren't for him, but the amount of knowledge he hadaccumulated in just a few short years was impressive by most standards, and he loved tomake use of it in ways that enabled other developers with their creations. Since then, Chrishas authored a tutorial book on game physics (Learning Game Physics with Bullet Physics andOpenGL, Packt Publishing) and two editions of a Unity performance optimization book(which you are currently reading). He has married the love of his life, Jamie, and workswith some of the coolest modern technology as a software development engineer in Test(SDET) at Jaunt Inc. in San Mateo, CA, a Virtual Reality/Augmented Reality startup thatfocuses on delivering VR and AR experiences, such as 360 videos (and more!).Outside of work, Chris continues to fight an addiction to board games (particularlyBattlestar