I always figured everyone knew how to easily create and start a new unity project. Turns out it's more than just browsing the UI brainlessly and getting to it.

In this blog post I want to share some tips and tricks I often do to quick-start my Unity Projects with the right foot. So, let's get started.


The Project Creation:

First Tip: Always use version control.

Nowadays creating a commercial game by yourself is rare. People collaborate and since Unity Collab became a pro feature we have to always set up some way to share projects.

My work-flow always start with a new git repository being created. But you can always use Perforce, SVN, Mercurial or even Google Drive.

The next step is to set up your version control to ignore useless files. Github has a very good .gitignore file for this. Or you can use gitugnore.io to generate one.

Second Tip: Create a Sane Folder Structure.

I'm one of those developers that always keep their folders organized. I thrive in nested folders and complex directory structures.

I find it really useful to organize your folders by what they will hold. This makes finding anything really easy. Let me show you.

Assets
│   README.md
└───ArtAssets
│	└───Animations
│	└───Audio
│	└───Materials
│	└───Models
│	└───Shaders
│	└───Textures
└───Prefabs
└───Scenes
│	└───Level
│	└───UI
└───Scripts
	└───System
	└───Player
	└───UI
	└───Singletons

The ArtAssets folder structure is quite simple to understand. Each type of object or asset has their own folder.

My Prefabs folder is often the most complex one. I didn't specify but I usually have the global prefabs in the root of the folder then I create folders to hold specifics. Prefabs of decorations and other things might go into a LevelDesign folder.

My Scenes folder holds just the scene files. Nothing more. I try to organize each level inside their own folder, so I can then move assets relevant to just them inside this folder, like Terrains. Also this makes the generation of NavMeshes less ugly on the folder structure.

Last but not least, the Scripts folder. My favorite. I try to think about it like I'm creating name-spaces. Even if I'm not. I isolate systems and make sure things that are used only once go into the Singletons folder.

Third Tip: Don't Waste Your Time!

The last tip for this post, but maybe the most important one. Don't waste your time. I find that people try to stay away from the Asset Store, but it saves so much time.

Importing assets that help you do to simple things should be a no-brainier. Things like State Machines, Camera Systems, Input Management, Particle Systems, etc are way too time consuming for the beginning of the project, and sometimes you just really need that one particle to test how something feels.

I will end this post with some of my recommendations for the Asset Store. Some assets are paid but they will save you insane amounts of time. Here is a list on the Asset Store.

Thanks for reading!