- β Works for many different project types: game, website, app.
- β
/main
lets us have supporting files excluded from Caddy, Godot, etc with zero extra config! - β Avoids industry jargon.
Use ideas you like, leave ideas you dislike. The intention is to be simple adaptable starting point.
- π
/<group>
- π¦ Group to contain many related projects (ex: "company")- π
/<name>
- πΌ Project name (ex "blah.com", "fungame"). Good level to start git.- π
/main
- π» Main project files.- π
/common
- π Internal dependencies. - π
/vendor
- π External dependencies.
- π
- π
/notes
- π Scratch pad. Can be docs, diagrams, "also" files. - π
/run
- βοΈ Files to run project: Caddy, Godot, Dockerfiles, etc. - βοΈ
run.sh
- Task runner. Often calls into/run
(Unified github/scripts
directory into 1 file)
- π
- π
- π
/<group>
- π
/<name>
- π
/main
- π
/public
- π Point the web server here!- π
/css
- π¨ CSS assets. - π
/images
- πΌοΈ Image assets. - π
/js
- π Javascript assets.
- π
- π
/systems
- π€ Singletons, libraries, helpers, managers, utilities.- π
/languages
- π¬ Translations, countries. - π
/tables
- π₯ Tables in data store. (models)
- π
- π
/templates
- π Snippets used in/urls
. (views) - π
/urls
- π URL endpoints using 1:1 file based routing. (PHP? just use/public
)
- π
- π
- π
- π
/<group>
- π
/<name>
- π
/release
- π’ Releaseable builds (if applicable).
- π
- π
- π
/<group>
- π
/<name>
- π
/main
- π
/demo
- π
- π
- Why move away from
dev
/staging
/production
?- Reduced ambiguity. Remove industry jargon.
- Better applied to non-developer teams (ex: art)
- Better applied to Task Board categories.
- Better applied to web, game and apps.
- π
work
- Development.- Environments for working.
- "workspace" ... "workstation" ... "workflow"
- π¬
test
- Review, feedback, staging.- Environments where feedback, reviews, testing and benchmarks happen.
- "The feature is in testing."
- Deploy to Testing:
test.yml
- π
live
- Release, production, shipping.- Environments available to customers.
- You "release" to the live environment.
- "The feature is live." - Super obvious.
- "The bug is live." - Super obvious.
- Deploy to Live:
live.yml
Can be good to adjust these depending on the team (developers, art, business, etc). Ex: "Testing" does not make sense for artists. However these should work for most teams.
π¬ Ideas β‘οΈ π§ Filter β‘οΈ π Working β‘οΈ π Feedback β‘οΈ π Live β‘οΈ π« Cancelled
- π¬ Ideas: Stories to consider.
- π§ Filter: Pitfall reminders to be avoided, references and notes.
- π Working: Ideas being developed.
- π Feedback: Test and review for release.
- π Live: Released and finished ideas.
- π« Cancelled: Ideas that were not implemented for some reason.
- retiring "staging" is a big deal.
- what also makes sense for game dev?
- work / feedback / live
- work / test / live
- edit / test / live
- doing / review / live
- create / review / release
- dev / feedback / live
- dev / testing / live
- dev / review / live
- dev / review / release
- dev / review / launch
- deploy, launch, live, production, shipping / shipped, release
- publish -- too much of a verb only
- too common as language keywords: public, online
views
: actors, entities, partscontrollers
: scenes, sets, groupsmodels
: data, state, records, resourceslibraries
: managers, directors, common, helpers, functions
- actors / directors / scenes
- actors / directors / sets
- actors / systems / scenes
- parts / systems / groups
- parts / systems / scenes
- entitys / systems / screens
- things / systems / scenes
- things / systems / views
- entitys / managers / screens
- entitys / systems / screens
- objects / managers / scenes
- Godot project (Organize by feature; not type. Avoid moving things and keep the root clean!)
- π
/actors
- Good because each entity has a consistent structure.- π
/player
- π
main.gd
- π
main.tscn
- πΌοΈ
main.png
- π
- π
/scene_block_grass
- π
main.gd
- π
main.tscn
- πΌοΈ
main.png
- π
- π
/enemy_b
- π
main.gd
- π
main.tscn
- πΌοΈ
main.png
- π
- π
- π
/common
- Shared resources.- π
/any
- Grab bag. Keep the root clean! - π
/fonts
- π
/images
- π
/languages
- π¬ Strings and translations. - π
/models
- π
/music
- π
/scripts
- π
/shaders
- π
/sounds
- π
/vendor
- π External dependencies.
- π
- π
/directors
- Singletons, managers, helpers.- π
any.gd
- Misc utilities. - π
asset.gd
- Special setup of assets. - π
camera.gd
- Camera management. - π
entity.gd
- Entity management. - π
level.gd
- Level management. - π
main.gd
- Main loop management. - π
map.gd
- When and how to display various screens. - π
screen.gd
- When and how to display various screens. - π
sound.gd
- SFX, Music. - π
story.gd
- One big switch case.
- π
- π
/scenes
- Good because each level has a consistent structure.- π
/planet_blah
- π
main.gd
- π
- π
- π
/uis
- π
- Godot project (Organize by feature; not type. Avoid moving things and keep the root clean!)
- π
/common
- Shared resources.- π
/any
- Grab bag. Keep the root clean! - π
/fonts
- π
/images
- π
/languages
- π¬ Strings and translations. - π
/models
- π
/music
- π
/scripts
- π
/shaders
- π
/sounds
- π
/vendor
- π External dependencies.
- π
- π
/entitys
- Good because each entity has a consistent structure.- π
/player
- π
main.gd
- π
main.tscn
- πΌοΈ
main.png
- π
- π
/level_block_grass
- π
main.gd
- π
main.tscn
- πΌοΈ
main.png
- π
- π
/enemy_b
- π
main.gd
- π
main.tscn
- πΌοΈ
main.png
- π
- π
- π
/levels
- Format that can be created and shared easily.- π `planet1_level1.json"
- π `planet2_level3.json"
- π
/managers
- Singletons, managers, helpers.- π
any.gd
- Misc utilities. - π
asset.gd
- Special setup of assets. - π
camera.gd
- Camera management. - π
entity.gd
- Entity management. - π
level.gd
- Level management. - π
main.gd
- Main loop management. - π
map.gd
- When and how to display various screens. - π
screen.gd
- When and how to display various screens. - π
sound.gd
- SFX, Music. - π
story.gd
- One big switch case.
- π
- π
/screens
- Good because each level has a consistent structure.- π
/menu
- π `main.gd
- π
/planet_blah
- π
main.gd
- π
- π
- π
/uis
- π