Rogen

Routing Folders

Keep all of a feature's code in one folder

Updated

A folder named after a route key sends everything inside it to that route's target. Give each feature a folder, and inside it one routing folder for each side it runs on:

src/On disk
  • Combat/
  • Client/
  • CombatController.luau
  • Server/
  • DamageService.luau
  • Shared/
  • Weapons.luau
  • Data/
  • Server/
  • PlayerData.luau
  • Shop/
  • Client/
  • ShopUi.luau
  • Shared/
  • Prices.luau
ExplorerRoblox Studio
  • ReplicatedStorage
  • Shared
  • Combat
  • Weapons
  • Shop
  • Prices
  • ServerScriptService
  • Combat
  • DamageService
  • Data
  • PlayerData
  • StarterPlayer
  • StarterPlayerScripts
  • Combat
  • CombatController
  • Shop
  • ShopUi

The routing folders disappear, and each feature folder appears under every service it runs in. Data runs only on the server, so it has only a Server/ folder.

Everything about combat sits in src/Combat, so changing it means opening one folder. In the game, code finds the other parts by their path there, as in require(ReplicatedStorage.Shared.Combat.Weapons).