islaApocalypse/Core/README.md
beezm 7f0f43b5fb baseline: working salvaged prototype on Godot 4.7.1 (pre-F1)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 01:45:41 -04:00

27 lines
No EOL
2.3 KiB
Markdown

# Core Module - IslaApocalypse
**Phase 2 Status:** Active (Voxel Math & Parsing Online)
## Overview
The `Core` directory contains the mathematical foundation, data structures, and parser required to bridge the 2D procedural generation with the 3D Voxel Engine. It is strictly logic-driven and contains no Godot Nodes or visual elements.
## Key Architecture & Components
### 1. The Data Bridge (`MapDataParser.cs`)
Responsible for deserializing the highly compressed binary `.dat` file generated by the `/Tools` pipeline.
* **Outputs:** A `WorldBlueprint` object held in RAM.
* **Capabilities:** Reads the 2D heightmap, biome map, and town locations. Crucially, it parses all four tiers of A* road vectors (Highways, Branch Roads, Rugged Roads, Trails) for the Server to use in terrain flattening.
### 2. Voxel Data Containers (`ChunkData.cs` & `Constants.cs`)
* **Chunk Dimensions:** Defined in `Constants.cs`. Currently optimized to `32x32` horizontal with a massive `256` vertical height limit to allow for true AAA-scale mountain ranges without heightmap compression.
* **Seamless Borders:** `ChunkData.cs` expands its scalar field arrays (`Densities` and `BlockIDs`) by `+1` on all axes. This allows the Marching Cubes algorithm to sample the neighboring chunk's data, ensuring meshes connect perfectly without gaps.
### 3. The Math Engine (`MarchingCubes.cs`)
Transforms the raw `ChunkData` scalar fields into physical Godot `ArrayMesh` geometry.
* **Analytical Normals:** Instead of flat shading, the algorithm calculates exact 3D slope gradients at the corners of each voxel. This produces smooth, realistic lighting across curved terrain.
* **Vertex Painting:** Reads the `BlockID` assigned to each voxel corner and applies physical RGB colors directly to the mesh vertices before committing the geometry.
### 4. Biome & Material Mapping (`BiomePalette.cs`, `BlockRegistry.cs`)
Translates the 2D world into physical 3D materials.
* **BlockRegistry:** A byte-based lookup table defining physical materials (`SAND`, `STONE`, `WASTELAND_DIRT`, `ASPHALT`).
* **BiomePalette Logic:** Uses the 2D `Biome` pixel combined with the 3D `currentY` depth to determine the block type. For example, `Biome.Wasteland` combined with a depth of 0 yields `WASTELAND_DIRT`, while a depth > 4 yields `STONE`.