![]() |
(Photo by Niklas Ohlrogge) |
Well, the truth is that this question does not have a single answer. It often depends on the project, your own particularities as a developer and the requirements that the different engines sometimes impose. In any case, there is a certain consensus on some good practices that I will list in this article so that you can choose the one that best suits you.
Engine requirements
To start, let's list the folders that you will always have as a requirement for the engine you are using.
In the case of Unity, it requires you to have 3 folders:
- Assets : Here you will place all the resources you create for the game.
- Packages : This is where the packages you download from the package manager are stored.
- Project Settings : This is where the editor stores your project settings.
The three folders above are the minimum you should keep in your release repository, if you use one (which is highly recommended).
Normally you'll be working inside the Assets folder, since the editor already takes care of the content of the other folders for you. The folder structure you have inside the Assets folder is up to you, but the editor requires you to have at least two:
- Scripts : You must have this folder to store the scripts that will make your game work. Unity compiles the game with the scripts it finds in this folder.
- Editor : If you develop extensions for the editor or custom inspectors, you will need to create this folder and save the extensions code there. Do not save them in the Scripts folder, because the compilation will fail when you want to build the final package, to run the game outside of the editor.
- In the case of Godot, the requirements are more lax. The only fixed folder is the addons folder , since that is where both the plugins you have developed and those you have downloaded from AssetLib are collected.
Once the above requirements have been met, the sky is the limit when it comes to organizing our assets. Let's now look at the most common layouts that people use.
Distribution by type
This is the most classic layout. I based it on it to organize the resources of Prince of Unity .
You create a folder to house each type of asset: one for images, one for sounds, one for prefabs/scenes, one for levels, one for shaders, etc.
This is the structure that Unity documentation usually recommends , so it's probably the first one you'll use.
![]() |
Example of organization by type, according to Unity documentation |
Functional distribution
However, there are many who reject the previous structure. They claim that in order to distinguish between assets by type, it is useless to classify them at the folder level, because the editors (both Unity and Godot) allow you to search for assets, filtering by their type.
That's why Godot's documentation advocates placing assets as close as possible to the scenes that use them. There are style guides for Unreal Engine that recommend the same.
In practice, this means creating a folder per scene and grouping the assets you use there, regardless of their type. In Unity, this means creating a folder per prefab.
Generally, the exception to the above is code, which is usually preferred to be placed in a separate folder where all the source code files are concentrated (in the case of Unity we have already said that having the Scripts folder is a requirement).
But normally our scenes/prefabs are not autonomous islands, but share resources with each other. How is this done in these cases? Is the resource copied to the folder of each scene/prefab? No, in these cases a folder is usually created for the shared resources, it can be a folder at the same level as the scenes/prefabs or a folder located at a higher level than them.
For example, the Unreal Engine style guide I mentioned earlier provides this example structure:
![]() |
Functional organization example |
Proponents of this practice argue that it is better to have a deep folder structure, each containing a few files (even if they are of different types), than to have a few directories but full of files. It is easier to know what resources a scene/prefab uses if you see everything in the same folder.
Conclusion
Organizing your project is a very personal decision. There are no big rules set in stone. In the end, it all comes down to organizing your assets in the way that is most comfortable for you and makes you most productive. Perhaps trying out some of the organization systems I've talked about here will help you find your own.