What's in your folders?

Hey RPG folks,

What do you make of the folder structure we chose? Have you gone for a similar one or different?

Can’t wait to hear what you’ve got to say. For other talk about this lecture head to #11_bm_rpg

The folder structure suggestion is good overall but one area I deviated from was the ‘Game’ folder since it’s really just a redundancy. A game designer is going to use most of what’s already in the project. Instead I use the following:

Art - Models, Textures, Materials, and 3D. Easy revision control via Dropbox, exclude from GitHub.
Animation - animations so that it can branch as a sub-discipline for animators
Asset Packs - a given, packs from the course, makes sense to keep seperate
Prefabs - In general it’s easier to find what you would use with nesting per discipline and track in GitHub.
Scenes - Scenes only and any lightmap/navmesh dependencies
Scripts - Self explanatory, why mess with a good thing?
Tools - Pro Grids, Pro Builder, other useful tools that make life easier can go here and it’s portable
UI - Self explanatory, makes sense

1 Like

I guess we wanted a place to put animation controllers etc. that we felt were more the domain of the designer than the animator. But they don’t really fit under the “Prefab” category.

Then let the designer poke in the animation section. It’s common to do so even in large AAA scale productions. Another suggestion if we go with tradition is to change ‘Game’ to ‘Design’. It’s a departament and a disciple and what most studios and teams refer. I’m being a Nazi about this btw, overall I think you’ve got a good thing :slight_smile:

1 Like

Great lecture about structure and organizing. I wanted to see something like this for some time now.
And I think Sam did a great job with his presentation.
Good structure and nice to listen to.
I hope we will be hearing more from Sam.
Loving this lecture as well as this course.
Cheers, guys.

1 Like

I for myself use my own Folder System, i have “learned”

so i seperate my Game from the Master Folder Section, and put it into a own folder, starting with the Sting “01”

So for Example: 01MyGame.

The plus of this is, if you import Assets from Assetstore (also Buy Assets, or Professional Assets) you should not really rename Folders, or do something like this, because. most Assets want to stay in her Folders. If you move the Scripts or Assets, this can bring a lot of Errors, , so to avoid them, just let the Root Folder be like it is, and do the 01 befoure your Game

like: 01MyGame.

inside of this, i seperate between all Assets. FOr example:

01MyGames/Player/Modelle/PlayerCar

inside the PlayerCar i do subfolders, like:
/ Scripts
/ Animations
/ Materials and Textures
/ Shaders.

So i got all Content of “Player car” in one Place, holding in my Folder 01MyGame, because: 01 will always stay on Top of the Root Folder, so i do not need to search long for anything, and i got all togehter.

next i do Things like:
01MyGame/Opponents/Car1
Same Way here: all Scripts going to this folder
Than: Opponents/FamiliarComponents > Here i place Materials or Scripts, all of them are using.

And than i do some Folders like:
01MyGame/UISysem/
here i place all Things to UI, for example: a Folder named Spirits (maybe Subfolders, if i got different UI Objects, maybe a Tachometer or a Inventory ore something)
And Scripts to all of this Components.

For short. I just keep a Folder Struktur, that contains all Gamebased Things for 1 Object together.
if a Object keeps an other Object inside ( For Example: PlayerCar have a SuitcaseRoom, and inside is a Pack of Beer) so i do PlayerCar/PackofBeer
and there Textures, Materials, Scripts.

short. All together in 1 Place.
It is not important WHAT i am searching for, because. Everything is in the right Place, and well known to find.

For Vegetations, same, i split them into: Trees, Bushes, Stones and so one.
if i got more Landscapes, i do Desert, Wood, Iceworld and other)

In Fakt: all things contains in the same Folder. The best point also to manage scripts.

last Point in my Hirachy is the World itself.
There i got Folders for:
Sky System,
Water System (if i use)
and other Things, that effect the World.

for me the perfect Way to organize my Assets, Scripts and all needet Components.

only Shared Components, are in the special Folder in the Hirachy, there the Components shared, between the users (for Example: OpponentCars / Shared Assets ) there is for example: Light or Materials that all Opponents use.

Last thing i organize are the Scenes.
also joining my GameFolder.

So my plus is: my GameFolder is everytime the 1st Folder in the Assets, and always on Top.
second plus: i got all sortet for all Situations, i know if i want to add / Edit some Player, or some Opponent or some Level or some World things.

and last plus here is: i can import every Asset, and nothing harms my Hirachy.

I have my Asset folder setup like this -

Asset Packs
Editor
… all other special folders from Unity
Src

The “Src” is where I put my own desired folder structure for the game without special folder names such as the Editor folder polluting it. This way I can keep a separation of concerns between what Unity wants to do with its various special folders (root Asset folder) and what I want to do for the specific game and how I wish to structure it (Src subfolder).

1 Like

There is only one change I’ve done so far with all my previous projects, the assets folder is always named “z.” at the beginning of it’s name to switch it to be the last folder in my selection instead of on top.
Unfortunately as you stated in this video, you’re going to be updating the assets folder regularly across the course so it means i can’t edit it’s root name until i finished the course.

You can make your change, and then move the respective files after import to the z folder.

Hi, I wonder if we are able to download the code of certain lecture. For example I want to start my course from section 4, how can I get the code of the end of section 2?

Go to the Github repo linked to the lecture, and click “Browse Files”. From there, you can get a zip of the project in the state it’s in at that commit.
Alternatively, you can clone the repo and reset the current pointer to the lecture on your local copy of the cloned repo.

I work on OpenSource and IT web apps and the most common structure is this:
docs/
src/
test/

Now I dont know the game industry but so far there hasnt been a single tutorial or book that I’ve seen mention Test-Driven Development (TDD) in game dev. Without tests, there is no need for a test and source folder. So I’d probably just take the structure of the OP and just add a docs/ folder for any game design docs

First folder:
_Project

This is just because I know that I won’t tidy up every asset pack I put in right away and this way I got all of my files at the top.

Under that I have two different ways of doing things depending on project.

Ons is going from area of the game down to more and more detail.
UI

  • Start Screen
    • Menu
      • Buttons
  • Game Window
    • Action Bar
      • Buttons
        Characters
  • Player
    • Animations
    • Models
    • Prefabs
  • Enemies
    • Ranged
    • Melee
      Systems
  • Inventory
    • Scripts
    • Graphics
      Editor

etc.

The other is based on what I work with.

Art

  • Music
  • Textures
  • Models
    Scripts
  • Managers or Systems
  • Player
  • Environment
    Characters
    Scenes
    Environment
    Editor
    etc.

In both systems I have a folder called Modules where I put my reusable modules that I build so it can be separated from the project and put into other projects as well.

When starting a project it’s basically:
Art
Prefabs
Scenes
Scripts
Modules

I really wish there was a better implemented standard for asset creators on how to structure their folders so importing things would become more easily managed. Something like:
Plugins / Category (defaults to AssetPack) / CompanyX / NameOfPackCollection (Optional) / NameOfPack /

Might feel strange if you only have a few packs but once you have more than just a few it would be such a mind saver. A lot of energy is wasted on the messy folder structure you end up with now.

It seems many companies go with Assets/CompanyName/Product, but that’s far from most.
Assets/Plugins is a special directory, and generally should only be used for DLLs.

Perhaps something like AssetPacks/… rather than Plugins =) Thanks for letting me know.

I’ve previously seen examples of taking asset pack contents like prefabs and animations and making copies of each and putting it in your own folders (especially if you modify them in some way).

I noticed we didn’t do that here consistently and wondering if that’s because we’re just trying to get things started or if there’s some reason to just directly reference what’s in the asset pack. Related: I’m curious what happens when a developer upgrades their asset packs and how that affects what you have already started to make use of? If that’s covered somewhere else, happy to wait or be referred to it.

1 Like

That’s exactly why many of us make copies or variants of 3rd party material and work on those instead. I once had all of my custom characters overwritten, along with customizations to scripts and shaders, because I’d simply edited the prefabs that came with the asset pack, and when they upgraded it, everything was overwritten.

It’s not something we cover directly in this course, and it probably is something I’ll make sure gets into any future revisions.

2 Likes

Ouch! Seems obvious now that you mention it but I didn’t make the connection until now. The consequence of making a copy however I imagine must be that you might incur some costs with regard to re-integrating the new assets with your own project?

One interesting thing I noticed is within our Player prefab. While it is a prefab we created, the lower levels still have references back to the original asset pack. I’m guessing this is because it’s a nested prefab. So if one were to get an upgraded asset pack, would one get the get the benefit of all non-overridden components getting upgraded while one’s own modifications stay intact? Or now that I think about it, the referential integrity might get broken because the revised assets would get new guids?

Happy to defer this conversation for later if the later lectures on nested prefabs covers this.

Privacy & Terms