Follow these best practices to speed up development and boost the quality of the final product.

Set up correct version control

Use text serialization (by default in Unity).

Set up built-in YAML merge tool. See more about SmartMerge here.

Set up commit hooks. See more here.

Use the Cache Server

Switching platforms decreases development speed.

Make sure to set up the Cache Server for your team.

Avoid storing static data in JSON or XML files

This results in slow loading.

Parsing generates garbage.

Instead, for built-in static data use ScriptableObjects with custom editor tools.

Don’t leave unused assets, plugins and duplicated libraries in your project

Unused assets in your project can still be built into the game. Make sure that you don’t leave garbage in your project: if you set up a version control system, restoring files should be easy.

Check what dependencies assets from the Asset Store drag into the project. For example, you might be surprised to find that you have five different JSON libraries in the project.

Check for outdated assets and scripts from early prototypes.

Moving old assets to the “removed” folder still results in resources and scripts being built into the game.

Repetitive actions require manual work

For every repetitive task there should be a script automating it.

Make sure that you can “play” the game or interactive content from any scene.

Consider a solution, such as Cloud Build, that automates the build process.

For larger teams, Unity Build Server licenses can be a useful option because they offload project builds to network hardware.

Profile your project on target devices as well as in the editor

Always profile the content on your target device; if you profile in the editor only, you can miss performance bottlenecks.

Use both built-in and platform-specific profiling and debugging tools

Here are resources to learn about Unity’s profiling tools:

Profile and optimize early on

The longer you wait with profiling, the larger the performance costs can become.

Start profiling early on, so you’re sure your project fits into the frame, memory and disk size budgets.

Profile before your optimize, so that you have the data you need to optimize actual bottlenecks.

Make sure you know as much as possible about your target platform(s)

Desktop, mobile and console platforms have very different bottlenecks.

More tips

Profiling, optimizing, bugfixing, and general QA processes are necessary both during development and for updating our live games. A couple of Unity solutions to consider pre- and post-launch are Backtrace and Game Simulation.

Backtrace automates the collection and analysis of crash and exception reports. It works cross-platform. See this blog post for a good introduction. All Unity users can try it for free for 30 days.

Game Simulation is ensures playtesting before you launch is both time and cost-efficient. It uses cloud simulation to optimize your game balance more efficiently and accurately. You can sign up for free access here.