Skip to content

feat(pocket3d): add reactive playable world - #266

Draft
doodlewind wants to merge 6 commits into
mainfrom
resonant-nannyberry
Draft

feat(pocket3d): add reactive playable world#266
doodlewind wants to merge 6 commits into
mainfrom
resonant-nannyberry

Conversation

@doodlewind

@doodlewind doodlewind commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add a renderer-free pocket3d-world crate with deterministic fixed turns, stable entities, bodies, sphere/capsule contacts, attachments, structure damage, heat, moisture, fuel, combustion, snapshots, ordered events, and state hashing
  • add a Pocket3D orchard POC with apple trees, detachable fruit, axe cutting, pickup/drop, embers, water, fire propagation, third-person movement, camera, particles, HUD, and deterministic headless acceptance receipts
  • replace the placeholder explorer with an original Blender-generated character: modeled face, hair, layered clothing, hands, boots, axe, one 19-joint skin, and named Idle, Walk, and Chop clips
  • fix character interactions: apples follow the animated hand.L socket and release from that world position, Walk arms swing fore/aft without lateral flare, and the axe blade stays on the outside of the right hand through every clip
  • make Q emit a short 2.8 m ballistic water burst from the character's waist; rendering, curved collision volume, distance falloff, and a conserved per-turn water budget share one deterministic trajectory
  • replace fixed douse cooling and unbounded neighbour heating with shared physical laws: inlet-water sensible heat, evaporation latent heat, fuel-funded combustion energy, non-duplicating spatial transfer, and one final combustion transition per entity per turn
  • add Pocket3D named-node animation sampling, in-memory self-contained GLB loading, and opt-in procedural sky, toon bands, rim light, distance fog, and inverse-transpose normal transforms
  • document ownership, scaling seams, backend constraints, and the independent-research boundary; no code, assets, data, shaders, equations, or tuning are copied from zeldaret/botw

Explorer asset contract

  • Blender 5.1.2 generator; clean headless regeneration is byte-identical to the checked-in GLB
  • GLB SHA-256 7948c785bb7bf5df2cab1254ac5cda35d036a2b6c9ff910ae19a88f87c95dbc1
  • one skinned ExplorerMesh, 14 material primitives, 5,410 exported vertices, 6,752 triangles, one skin, and 19 joints
  • exact Idle / Walk / Chop clips; fresh Blender import recovered one armature, one mesh, all 19 bones, and all three actions
  • Walk arm fore/aft travel 0.7032 m, lateral drift 0.0001 m, opposed-phase error 0.0 m, and planted-foot error <= 0.004 m
  • axe blade minimum outward clearance 0.1961 m, minimum body-center clearance 0.5439 m, and forward Chop travel 1.4226 m
  • five studio previews, including rear and side Walk views, plus editable .blend, deterministic generator, and machine-readable receipt

Validation

  • cargo test --locked --manifest-path engine/Cargo.toml -p pocket3d (21/21)
  • cargo test --locked --manifest-path engine/Cargo.toml --workspace -- --test-threads=1
  • cargo test --locked --manifest-path engine/Cargo.toml -p pocket3d-world -- --test-threads=1 (25/25 invariant tests)
  • cargo test --locked --manifest-path engine/Cargo.toml -p playable-world -- --test-threads=1 (23/23)
  • cargo clippy --locked --manifest-path engine/Cargo.toml -p pocket3d-world -p playable-world --all-targets -- -D warnings
  • clean Blender 5.1.2 regeneration in an isolated directory; fresh import passed and GLB digest/bytes matched
  • rustfmt --edition 2024 --check on every changed Rust source; git diff --check
  • Apple M3 Max / Metal headless captures for Walk, Chop, held-apple, short water-burst, active campfire dousing, and the stable extinguished state
  • campfire-douse emitted and delivered one conserved 5.2799993 water budget across the flame and two logs; all three remained extinguished for 246 turns after spraying, with no re-ignition
  • orchard-fire after exactly 720 fixed turns retained state eb36bdf69ea456a7; fracture, fruit terrain contact, reactive-state change, spatial fire propagation, and damp-fuel resistance all passed

@doodlewind
doodlewind force-pushed the resonant-nannyberry branch from e5f6e63 to bfde478 Compare August 13, 2026 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant