Introduction
Throughout my time in Roblox development, I’ve worked with various groups and game environments, and one common issue I’ve noticed is disorganization within the file structure. ![]()
Before I came up with this system, I tried various other methods of organization, using different structures that I changed around a lot until I finally settled with one I was happy with! ![]()
Here you can see part of the system that I’ve put together:
While there are other file structure resources available, this one is designed to be as flexible, scalable, and efficient as possible! Whether you’re working solo, or with a collaborative team, this system ensures your project stays organized, easy to navigate, and adaptable to future changes! ![]()
Why Choose This One?
- The file names are consistent, easy to read, and allow for change if needs be!

- Each file is explained in detail as to what goes in each if you’re unsure at first!

- This is designed to work for both small and large-scale projects, ensuring long-term usability.

- It’s up to you to how you utilize the system!

How do I Set This Up?
-
Head over to the template experience here.
-
Get a copy of the experience by clicking the “Edit in Studio” button from the experience page, as shown below:
-
Once you’ve understood the system and would like to remove the example folders and “ReadMe” scripts, run this command in the Command Bar:
require(game:GetService("ServerStorage").Modules.Shared.Misc.SetupSystem):setup()
What this does is require an existing ModuleScript that I’ve setup to remove all the “ReadMe” scripts and other example objects that I inserted for you guys, following a tag that directly links all the objects.
- Mess about with the folders and start organizing!
Additional Info
I’d like to give credit to this resource as the inspiration and foundation for GreenStructure. Many of the naming conventions in this system are influenced by that post, so I highly recommend checking it out as well! ![]()
The system is fully open-sourced - feel free to do what you want with the system! If this system ends up being widely used across Roblox games, I’d greatly appreciate any credit where possible. ![]()
I’d love to hear your feedback on this system! Feel free to share any suggestions or improvements. Please note that while I’ll do my best to respond, it may take some time to get to every question! ![]()
Enjoy!
Version History
v1.0.0 - Initial Release
- Date: 17/02/2025
v1.0.1 - Minor Setup Process Fixes
- Date: 08/03/2025
- Changes:
- Renamed certain LocalScripts found in StarterPlayer that were supposed to be removed via the setup command to “ExampleLocalScript” to give a better indication of the objects’ names.
- Added all renamed LocalScripts to the “ExampleObject” tag so they can be removed with the setup command.
v1.1.1 - Structure Change
- Date: 02/04/2025
- Changes:
- Added the “DynamicAssets”
FoldertoWorkspace.- Removed the “ExampleContainer”
FolderfromWorkspacedue to the better alternative (given above).- Added the “Vegetation”
Folderto the “World”FolderinWorkspaceto provide another area to separate objects in experiences.- Added the “Vegetation”
Folderto the “World”FolderinWorkspace.- Renamed “Assets” in the “Components”
Folderfound inReplicatedStorageto “Shared” to provide better clarity on how that Folder should be used, and to support the consistency of how the folders are currently named in the template - multiple scripts should have access to the assets there.- Renamed the “Assets”
FolderinReplicatedStorageto “Shared” to provide clarity on how that Folder should be used - multiple scripts should have access to the assets there.- Removed the “Scripts”
FolderinReplicatedStoragedue to the fact that “Components” should be used to storeScriptsthat are to be used by client-specific systems. Any scripts you wish to run, instead of putting in that Folder that I originally had, I’d recommend putting into eitherStarterCharacterScriptsorStarterPlayerScripts. “Components” should only store disabledScriptsthat are to be later used by other systems.- Added the “Components”
FoldertoReplicatedFirst, containing a new “Shared”Folderand the old “Dependencies”Folder.- Added “Libraries”, “Packages”, “Classes” and “Modules” to
ReplicatedFirst, though you shouldn’t really aim to put many things in thoseFolders, consider only using them in the worst case scenario, or if you have a lot of scripts that immediately need running inReplicatedStoragewhen a client joins a server.- Renamed the “Assets”
FolderinServerStorageto “Shared” to provide clarity on how that Folder should be used - multiple scripts should have access to the assets there.- Added the “Packages”
FoldertoServerScriptService, as it came to mind that some Packages can have scripts that are by default enabled, so are needed on server start.- Added the “CoreSounds”, “ExampleSystemSounds” and “Shared” to
SoundService.



