islaApocalypse/Client
beezm ea11258871 F1: soft-fade biome color blending (BLEND_BAND_METERS, geometry untouched)
Vertex colour is now chosen from the true, unrounded surface height and faded
between adjacent materials across a tunable band, instead of switching at one
rounded integer depth. This removes the horizontal contour banding.

Colour path only: density field, Marching Cubes interpolation/welding, chunk
dimensions, the .dat contract and all road logic are untouched. BlockID
classification is unchanged and still drives non-visual use.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 01:51:06 -04:00
..
Scripts F1: soft-fade biome color blending (BLEND_BAND_METERS, geometry untouched) 2026-08-05 01:51:06 -04:00
README.md baseline: working salvaged prototype on Godot 4.7.1 (pre-F1) 2026-08-05 01:45:41 -04:00

Client Module - IslaApocalypse

Phase 2 Status: Active (Mesh Rendering & Vertex Painting Online)

Overview

The Client directory handles the visual representation of the 3D Voxel Engine. It is strictly responsible for receiving pre-calculated mathematical data from the Server and Core modules and translating it into Godot-native visual nodes (MeshInstance3D). It does not calculate collisions, densities, or terrain generation.

Key Architecture & Components

1. The Visualizer (ChunkRenderer.cs)

A script attached to a MeshInstance3D node that physically draws a single 32x32 chunk of the world.

  • Mesh Generation: Calls MarchingCubes.GenerateMesh() from the Core module, passing in the Densities and BlockIDs scalar fields.
  • Vertex Painting: Dynamically creates a StandardMaterial3D and enables VertexColorUseAsAlbedo = true. This tells Godot to ignore standard texture maps and instead color the mesh using the exact RGB values we assigned to the vertices based on their BlockID (e.g., Green for Grass, Brown for Wasteland).
  • World Positioning: Multiplies the ChunkPosition (e.g., [1, 0]) by Constants.CHUNK_SIZE and Constants.VOXEL_SCALE (1.0f) to perfectly align the chunk in the global 3D space.
  • Backface Rendering: CullMode is explicitly disabled to ensure players don't see through the bottom of the map if they clip inside a mountain.

Next Immediate Steps (Phase 2, Step 4)

  • Currently, the renderer draws the exact topography. Once the Server implements Road Carving, the Client will automatically inherit those flattened vertices and paint them with the ASPHALT vertex color without needing any code changes here.
  • Future implementations will include reading BlockIDs to paint different UV maps/textures instead of just raw RGB vertex colors.