Refactor file structures to put them in a meaningful folder hierachy to help review #84

Closed
opened 2026-08-21 15:25:48 +00:00 by metaheavens · 1 comment
Owner
No description provided.
Author
Owner

Done in 2f16162, live at https://metaheavens.de/spaceship/

215 root files into twelve folders:

buildings  core  controllers  enemies  logistics  planets
resources  shaders  surface  ui  vessels  vfx  world

Grouped by what a thing is rather than what type it is - a vessel's definition, its component scenes and its upgrade resources sit together, because that is the set you read when you change one of them.

332 files moved and every res:// reference rewritten across 306 files, including the autoload and main-scene paths in project.godot. Nothing renamed, so the diff is a pile of pure moves with no behaviour buried in it. ui_theme.tres, icon.svg and web_shell.html stay at the root where Godot and the export preset expect them.

Verified three ways, because the suite alone would not have caught all of it: 117/117 pass, the web export builds clean, and the game renders.

The export is why that matters. The first export after the move failed with Attempt to open script 'res://GameState.gd' - the old path - while project.godot on disk plainly said res://core/GameState.gd. That is this project's documented Android FUSE mtime trap: Godot served a cached copy of a file whose content had changed. A touch fixed it. Nothing in the test suite would have found it, because the suite runs from a copy on a native filesystem - the one place the bug cannot happen.

Done in 2f16162, live at https://metaheavens.de/spaceship/ 215 root files into twelve folders: buildings core controllers enemies logistics planets resources shaders surface ui vessels vfx world Grouped by what a thing **is** rather than what type it is - a vessel's definition, its component scenes and its upgrade resources sit together, because that is the set you read when you change one of them. 332 files moved and every `res://` reference rewritten across 306 files, including the autoload and main-scene paths in `project.godot`. **Nothing renamed**, so the diff is a pile of pure moves with no behaviour buried in it. `ui_theme.tres`, `icon.svg` and `web_shell.html` stay at the root where Godot and the export preset expect them. Verified three ways, because the suite alone would not have caught all of it: **117/117 pass**, the web export builds clean, and the game renders. The export is why that matters. The *first* export after the move failed with `Attempt to open script 'res://GameState.gd'` - the old path - while `project.godot` on disk plainly said `res://core/GameState.gd`. That is this project's documented Android FUSE mtime trap: Godot served a cached copy of a file whose content had changed. A `touch` fixed it. Nothing in the test suite would have found it, because the suite runs from a copy on a native filesystem - the one place the bug cannot happen.
Sign in to join this conversation.
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
metaheavens/spaceship#84
No description provided.