On the Spotlight Team, we work with the most ambitious Unity developers to try to push the boundary of what a Unity game can be. We see all sorts of innovative and brilliant solutions for complex graphics, performance, and design problems. We also see the same set of issues and solutions coming up again and again.
This blog series looks at some of the most frequent problems we encounter while working with our clients. These are lessons hard won by the teams we have worked with, and we are proud to be able to share their wisdom with all our users.
Many of these problems only become obvious once you are working on a console or a phone, or are dealing with huge amounts of game content. If you take these lessons into consideration earlier in the development cycle, you can make your life easier and your game much more ambitious.
Before you add your first camera, map out your first town, or even get a cube spinning, take a moment to think about the folder structure of your project. While the project view does a very admirable job of making your game data easily searchable, searching isn’t always practical. Ideally, you want a folder structure that guides your teammates to the correct place even when they have no idea what to search for.
There are lots of ways to do this, and I will give some examples of things we have seen work well. But, really, use whatever works for you. If your project layout has good answers for the following questions, it is probably a pretty good layout.
Some examples:
Floating folders
Divide and conquer
Per-discipline top level folders
For larger teams with longer projects it is very easy to have assets from the Asset Store start to bloat a project. The brilliant developers who put tools up on the Asset Store try very hard to make their tools easy to learn. This often means including large tutorial and sample projects with the assets to support them.
The easiest way to handle Asset Store bloat that we have found, is to avoid importing large asset store packages directly into your project. Rather, import your large packages into a new project. You can then delete any heavy content you don’t need before moving what you need over to your project. You can clean up any assets you don’t need, organize the asset package how you would like it, and then package this up in a new package using the “Assets->Export Package…” dialog.
Make sure that you check both the original version and your modified version into whatever source control you use, just in case you need to later update your Asset Store purchase or if anything goes wrong.
The image below is my current desktop. Given the number of client projects I work on, I always have 5+ versions of Unity installed, not counting the 1-3 I have recently built from source code.
If you use external source control -- git, hg, perforce, etc. -- I strongly recommend adding the version of Unity you use. Ideally, every branch of your game contains the project folder and, next to it, the version of Unity used to work on that project. As your team grows this will streamline onboarding, ease the Unity upgrade process, and make me very happy if you ever end up working with the Spotlight Team.
There are quite a few project settings that are easy to overlook when you are just starting up a new project. Tucked away in their own menu, generally far from whatever problem you are trying to solve, it is very easy to forget all about the myriad controls we give over your project. So, here is a quick lightning bonus round of the most commonly overlooked settings, in menu order.
Audio
Time
Player
Physics
Quality
Editor
If your plan is to grow your game into something truly ambitious, taking a moment to set up your project correctly from the word go will save you a ton of time down the road. Our next blog will be a little bit different. We will be sharing several small editor tools written in-house that will hopefully improve your productivity and show you how to customize Unity yourself.
Is this article helpful for you?
Thank you for your feedback!