- β Works for many different project types: game, website, app.
- β
/mainlets 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/scriptsdirectory 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
- π