Godot rewrites project.godot on import and strips all comments, replacing the header with its own boilerplate. The isolation SETTINGS survived — name, use_custom_user_dir and custom_user_dir_name are intact and the probe still passes — but the block explaining why they must not be touched was deleted. A comment there is therefore not a durable place for a warning. The warning moves to README.md, which records the behaviour so nobody puts it back, and the actual guarantee stays where it was always enforced: UserDirProbe, which exits non-zero if user:// ever resolves to the old prototype's directory. Also drops the now-empty [rendering] section the rewriter removed as redundant (forward_plus is already declared in config/features).
4.2 KiB
Isla Apocalypse — v2
The rewrite (D-049). A post-apocalyptic survival voxel game: one island, generated once offline, loaded by everyone.
Status: Phase 0 — foundation. This repo is a skeleton. It builds, it resolves its own runtime directory, and it carries the two data contracts and the tooling rails. It generates nothing.
⚠ Two repos. Never one.
| Repo | Role |
|---|---|
~/celerNexus/islaApocalypse-v2/ (this) |
The rewrite. Every line of new code is written here. |
~/celerNexus/islaApocalypse/ |
⛔ READ-ONLY. The pre-rewrite prototype, archived at ab78883, tag pre-rewrite-reference. Ported FROM; never written to. |
~/celerNexus/islaApocalypse-vault-v0.1/ |
The design vault — the source of truth for WHAT and WHY. The vault leads. |
The old codebase is a spent quarry (D-050): mined, never tracked, never synced, never canon'd. Writing rewrite code into it would corrupt the very thing being ported from.
⚠ Runtime data isolation — do not weaken
This project pins its user:// directory away from the old prototype's, which holds the
preserved reference seeds, blueprints and batches:
user:// → ~/.local/share/islaApocalypse-v2/ ← this project
~/.local/share/godot/app_userdata/islaApocalypse/ ← ⛔ the OLD prototype. Never touch.
Pinned two ways in project.godot — a distinct application/config/name and
use_custom_user_dir + custom_user_dir_name. Both must stay.
⚠ Do not document this with a comment in
project.godot— it will not survive.Godot rewrites
project.godoton import and STRIPS ALL COMMENTS, replacing the header with its own boilerplate. (Measured: a warning block written there was gone after the next--import. The settings survived; only the explanation was deleted.) So the warning lives here, and the guarantee is enforced by the probe below — which exits non-zero on a clash and therefore works in a pre-flight check, not just by eye.
After any change to the [application] block, re-run the probe:
Godot_v4.7.2-stable_mono_linux.x86_64 --headless \
--path ~/celerNexus/islaApocalypse-v2 res://Tools/Scenes/UserDirProbe.tscn
Layout
Core/ math + data only, ENGINE-FREE — depends on nothing above it
Server/ authoritative logic — may use Core (empty: Phase 0)
Client/ rendering — may use Core (empty: Phase 0)
Tools/ the offline generator — ⚠ may NOT use Client (Phase 1 fills it)
Each layer has a README.md stating its role and its boundary. Read the one for the layer you are
about to write in — they carry the reasons, not just the rules.
The contracts this phase establishes
- ★★ The column model (D-053) — the world as a 2D grid of columns, each a stack of
(material, thickness)runs. Air is the top run; there is no air-vs-solid height branch. →Core/Scripts/Column.cs - The material schemas (D-054) — terrain and building, two schemas bridged by a transformation
seam that is deliberately empty. Identity is a registry key, never an ordinal. Mesh style is
per-origin, never a material property. →
Core/Scripts/MaterialRegistry.cs - The scaling discipline — nothing uses a raw pixel number.
→
Core/Scripts/GenerationScale.cs - Tooling safety — every path env-overridable, deletion refused by code.
→
Core/Scripts/ToolingPaths.cs,Core/Scripts/FileSafety.cs
Build
dotnet build
Godot_v4.7.2-stable_mono_linux.x86_64 --headless --import --path .
Godot 4.7.2 (mono) · .NET 8 (net8.0) · Godot.NET.Sdk/4.7.2
The reference repo is Godot 4.7.1. This repo deliberately targets 4.7.2 — clean rewrite, current tooling. 4.7.1 is the port source, not a constraint on new code.
What this phase is NOT
No generation, no mesher, no stratigraphy, no biomes, no water, no algorithms of any kind. The pipeline is 2D-maps-first (D-056): stages 1–5 are flat maps, gotten completely right before a single 3D vertex exists. Building the mesher before the data is right is the specific trap this rewrite exists to undo.