Project State – SpaceVoxel Alpha Slice
This document tracks the evolving technical state of the Space-Voxel project. It is descriptive, not aspirational. Items listed here exist in code or have been fully specified and are ready for implementation or extension.
Core Systems Implemented (Prior)
- First-person camera movement (WASD + mouse)
- AR-style overlay toggled with B
- Horizontal selector UI
- ScriptableObject-driven component data model
- Prototype component spawning (fuel + nozzle blocks)
Core Systems Implemented (Procedural Generation – New)
Procedural Generation Architecture (Foundational – Implemented)
A reusable, deterministic Spec → Generator → Artifact pipeline has been implemented for propulsion components.
Key principles now enforced in code:
- All generated geometry is derived from authoritative ScriptableObject specs
- Deterministic results via explicit
seed - Mesh generation is editor-time friendly, but callable at runtime
- Generated artifacts carry metadata for reproducibility and invalidation
Propulsion System – Nozzle Generation (Tier 0 – Partially Implemented)
Implemented Components
- NozzleSpec (ScriptableObject)
- Authoritative geometric and style inputs
- Includes:
- seed
- thrust (placeholder, not yet physics-linked)
- length
- throatRadius
- exitRadius
- radialSegments
- axialProfileSamples
- throatCurvatureFactor
- flareJitter
- Designed to later transition fully to a derived-physics model without reauthoring assets
- ProcArtifact
- Dumb output container for procedural generation
- Holds:
- Mesh
- Bounds
- specHash
- generatorVersion
- inlet / outlet positions
- thrust axis
- tags
- Enables stale-bake detection and cross-machine regeneration
- NozzleProfileSamplerV0
- Pure math sampler producing a 2D axial
(z, r)profile - Deterministic with seed
- Supports:
- Rounded throat region
- Conical diverging section
- Optional deterministic exit flare jitter
- No Unity scene dependencies
- Pure math sampler producing a 2D axial
- RevolveMeshBuilder
- General-purpose lathe / revolve utility
- Revolves
(z, r)profiles around +Z axis - Supports:
- Configurable radial segments
- Optional end caps
- UV generation
- Normal generation
- Intended to be reusable for tanks, hull segments, pipes, etc.
- NozzleGeneratorV0
- Orchestrates:
- NozzleProfileSamplerV0
- RevolveMeshBuilder
- Produces a ProcArtifact with:
- Generated mesh
- Stable spec hash
- Generator version tag
- Establishes coordinate conventions:
- Throat at z = 0
- Exit at z = +L
- Thrust axis = -Z
- Orchestrates:
- Editor Context Menu Preview
- Right-click NozzleSpec → IR / Propulsion / Preview Nozzle From Spec
- Spawns a preview GameObject in-scene under
PROC_PREVIEW_ROOT - Enables rapid iteration without baking assets
Known Limitations / Intentional Gaps
- No wall thickness yet
- Current nozzle meshes are zero-thickness shells
- Inner wall / outer wall + stitching not implemented
- Triangle winding issue observed
- Outside surface is culled, interior visible
- Requires:
- Winding order fix or
flipWindingsupport in RevolveMeshBuilder
- No physics-derived geometry yet
- Throat/exit currently user-authored
- Physics-based derivation planned, not implemented
- No baking pipeline yet
- Meshes are preview-only, not persisted as assets or prefabs
Core Systems Specified (Still Valid)
Materials System (Tier 0 – Fully Specified)
- Deterministic, planet- and node-seeded material generation
- Broad material categories:
- Metal
- Stone / Silicate
- Sedimentary / Carbon
- Liquid
- Gas
- Subtypes per category (metal oxides, native metals, volcanic glass, carbon-rich, etc.)
- Normalized property vector (Tier 0):
- Strength
- MaxTemperature
- ThermalConductivity
- ElectricalConductivity
- ErosionResistance
- CorrosionResistance
- Density
- Manufacturability
- Tier 0 guardrails:
- One dominant property
- One enforced weakness
- Hard caps prevent cross-tier leakage
- Planet modifiers:
- Temperature band
- Pressure band
- Atmospheric chemistry
- Hydrosphere type
- ScriptableObject templates define category means, spreads, and subtype adjustments
Material Visual System (Tier 0 – Fully Specified)
- Deterministic visual generation derived from material properties
- Visual states:
- RawOre
- ConcentratedOre
- RefinedStock
- ManufacturedPart
- PaintedPart
- Visual parameters derived, not authored:
- Base color (category palette + seed)
- Metallic, smoothness
- Noise, dirt, oxidation
- Heat tint (manufactured parts only)
- URP-friendly approach using:
- Shared master materials
- MaterialPropertyBlock per instance
- Optional paint overlay as a cosmetic coating
Folder Layout (As Implemented)
Assets/
- Runtime/
- Materials/
- Propulsion/
- Specs/
- Generation/
- Blocks/
- UI/
- Editor/
- Materials/
- Propulsion/
Namespaces:
- IR.Utils
- IR.Materials
- IR.Propulsion
- IR.Blocks
- IR.UI
Root namespace: IR (Infinite Realms)
Current Behavior (Runtime)
- Press B opens selector
- Auto-drills into Propulsion
- Clicking Solid State spawns transparent FuelBlock + NozzleBlock prefabs
- Nozzle block still uses placeholder geometry at runtime
- Procedural nozzle mesh currently previewed only via editor tools
Authoritative Data (Reaffirmed)
- All gameplay components originate from ScriptableObjects
- Procedural meshes are derived, not hand-authored
- Spec + seed is sufficient to deterministically regenerate geometry
- Baked assets are an optimization, not the source of truth
Immediate Next Implementation Targets (Updated)
- Fix RevolveMeshBuilder triangle winding (outside surface visibility)
- Add wall thickness support (inner + outer profile + stitching)
- Add Bake command:
- Save Mesh asset
- Create Prefab
- Stamp specGuid + specHash + generatorVersion
- Hook baked nozzle into NozzleBlock prefab
- Apply MaterialVisualProfile to generated nozzle meshes
Design Philosophy (Reaffirmed)
- Exploration reveals constraints, not solutions
- Engineering adapts designs to materials
- Early tech favors bulk, inefficiency, and compromise
- Systems are layered so realism can increase without rewrites
- Procedural generation is a tool, not a gimmick
Comments