Welcome to Performance Optimization in Unity, the fourth course in Unity’s Gameplay Programming Specialization!
This course is exam preparation for Unity’s Expert Gameplay Programmer Certification Exam. This course will challenge you with a series of realistic programming problems in Unity video-game projects, inspired by one or more of the topics covered in the Expert Gameplay Programmer Exam. Throughout this course, you will learn various optimization techniques, including: optimizing for different platforms, understanding how platform differences can impact gameplay, using Asset Bundle configuration tools, gameplay debugging, and rendering optimization. By the end of this course, you will optimize a 3D “Dual-Stick Survivor” game project for WebGL.
This is an advanced-level course, intended for industry game developers or very experienced Unity enthusiasts who are looking to “level-up” their gameplay programming and implementation strategies. To succeed in this courses, you should have at least 2-3 years of experience developing games with Unity. You should be familiar with the full-game lifecycle (working from early concept to launch), creating and working with Prefabs, understanding game asset and animation pipelines, and have some experience with Unity Services. You should also have advanced programming skills, particularly in the C# language.
For the first week of this course, you’ll begin by optimizing your rendering process. You’ll need to take advantage of Occlusion Culling and LODs to achieve this. By analyzing fill rates and hunting down drops in the frame rate, you’ll make sure your game is displaying smoothly to your user.
Long gone are the days of games released and considered final. DLC has expanded the life expectancy of games, some even into decade-long legacies. Other games have found great success in offer customizations that can be downloaded. The rise in mobile gaming has seen DLC as a means on minimizing wait times for players. Unity’s Asset Bundles provide a solution to all these situations, and more for the clever programmer.
This week you’ll be determining the optimal configurations to support efficient Asset Bundle integration with your game. You’ll need to analyze needs and issues to determine the best package sizes and methods, and determine the solutions required.
As games get more complex, so do our bugs. Even if every line of code worked on the first try (it never does) you’d still stumble across strange behaviours arising from unforeseen interactions or unintended behaviours. Not every bug is a game-killer, though, and learning to prioritize those from the annoying-but-harmless is a key skill of any programmer.
This week you’ll be debugging your game for issues in level gameplay, NPC interaction, and scene transitions. Of course, every issue requires a solution, though some bugs will need to be prioritized ahead of others. After identifying what needs immediate fixing, it will be your duty to recommend solutions based on scene analysis.
Not all the platforms are the same, and games that plan to run on multiple platforms have to take this into consideration. Beyond the differences between one computer and the next, today’s gaming market spans smartphones, tablets, and consoles. Users are viewing games on phone screens and widescreen televisions and VR goggles. They’re mashing buttons, tilting controllers, gesturing, and literally yelling commands. How does that affect your game?
This week you’ll consider the impact different platforms have on the input methods available to the user. You’ll also analyze what storage and system resources are available per platform, and devise methods for running your game under those constraints.
Players expect a game to run smoothly on the device it’s advertised for. Games that drop frames or consume too much memory will lead to frustration. Thankfully there are a number of tools to help us identify and solve such issues before they ever reach our players, even across multiple platforms. This week you’ll start optimizing your game’s performance using the Profiler. You’ll need to analyze what resources you’re using, including CPU, GPU, and system memory. Your game has to run within budget, every frame, and potentially for long periods of time across multiple build targets.