🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Folder Organization Methods

Started by
5 comments, last by Shaarigan 4 years, 10 months ago

Hi there,

I'm currently working on a C++ project in Visual Studio and trying to organize my folders in a clean and effective manner. My current organization looks like the following:

 

->external (external compiled and source libraries)

-> source (source code written by me)

-> resources (images, music, etc.)

-> visual studio (directory with visual studio folder)

 

I'm curious to see how you guys organize your folders. 

Advertisement

Hello,

it depends on scale of the project - for one of the big ones I'm currently having - full featured game engine with editor (it actually builds multiple libraries and multiple executables - engine editor, runtime, etc.):

- Bin64 (binary output)
- Data (resources - models, textures, scripts, shaders, etc. - I generally live monitor (in editor) only folders under this)
- Dependencies (3rd party dependencies)
- Lib (dynamically loaded libraries (mainly plugins, etc.))
- Source (under this only source files, divided into projects, and for more complex ones even further)
- Projects (Visual studio project files/Makefiles)

for small projects I sometimes tend to dump them in single directory (refactoring once they get bigger).

My current blog on programming, linux and stuff - http://gameprogrammerdiary.blogspot.com

Here are some more directories that could be useful:

- Docs - documentation (also for your future self)
- Raw - source files for creating assets (photoshop files etc.)
- Backup - quick backup for deleted code and other obsolete stuff
- Tools - editors, shell scripts etc.
- Dist - place to build your distribution

Personally I'm not fond of deeply nested directory structures.

There is a workspace in my ~ with projects as main directories. Inside of them:

  • Debug (IDE's default for binaries with debug information)
  • Release (IDE's default for optimized binaries. Unused :-))
  • Extern (3rd party dependencies source and headers)
  • Source (tree containing project's source files and headers, shaders)
  • Resources (textures and the like)
  • Utils (project related stand alone routines. Conversions for example)

Documentation is still missing. Will probably do inline. I too am not very fond of a single Source directory as it grows and grows, contains my framework as well as the tinkering that runs in it. Also i am not very fond of all that stuff the IDE brings with it. One day i'll ditch the IDE. I am just too lazy ...

I build the project from batch files, but it think it's not so important... here's how I structure my projects:

-build: here goes all the crap like debug files, executable for debugging, dll's etc. I go here when I want to debug the application.

-code: just the source code.

-assets: all the data that the application needs.

-release: this is where I put the "final product". With the help of some script I can pack everything I need and slam it in a folder here that will be like "ProjectX_0.0.1".

 

-I also have an "app" folder that contains all the external tools I use, like editor, command line scripts etc but that is one level up relative to the single "project".

-I also have an "external" folder, (one level up relative to the single project folder as well): for example I have external/SDL that contains all the sdl stuff, and I can grab it in every project I want.

 

Hope this helps :)

Our SDK has some more folders in it, some static ones but most are generated from the build tool and package manager. Our package addressing requires a directory tree of no more than 3 sub-directories to find the project folder.

Static Folders

  • Config contains a sub-driectory for every tool we have that stores any kind configuration
  • Source is the root folder for everything project related. It contains a sub-directory Modules that contains the engine source code in separate module fodlers
  • Tools is the root fodler for everything tooling related. It contains a sub-directory Modules that contains the framework source code for tools in separate module fodlers

Generated Folders

  • .build is the hidden cache directory for compiled object files
  • .cache is the hidden directory for any tool to cache data in a sub-folder named like the tool
  • Deploy is the public directory for anything resulting from a build. There are sub-directories for every system/category like Engine, Editor, Tools but also Analytics

This topic is closed to new replies.

Advertisement