5.8 KiB
Executable File
5.8 KiB
Executable File
M2 implementation and verification — The Last Hearth
Updated: 2026-11-02. Scope: first-night gameplay implementation and technical verification. This document does not claim unfamiliar-player acceptance, M1 human acceptance, community-location approval or production readiness. See the roadmap, M1 evidence, architecture and launch checklist.
M2 implementation present
| Area | Implemented behavior | Boundary |
|---|---|---|
| Safe arrival and home | Bounded emergence and safe-surface checks reject unloaded/liquid/hazard/occupied/claimed/recently lethal locations. /sethome requires a safe point in the owner's claim. /home revalidates the saved point before trying a safe world spawn or a 64-node bounded rescan. |
No automatic geolocation. The old persistent play world is not used by tests. |
| Death | Inventory, food, water and wetness persist; respawn recovers at a verified safe point with only stamina and warmth limited. | No item-recovery corpse or final player-approved death policy. |
| Fire and light | Cold fuel needs a reusable firestarter; fuel is not self-igniting. Craftable torch supports nighttime activity. | No uncontrolled fire spread, lamps or light-quality playtest. |
| Cooking and water | Six-second cooking and four-second boiling reserve their fuel charge at queue time. Absolute deadlines continue during server absence, fuel can expire, and completed output remains until safe collection. | Offline player needs remain paused. No crops, spoilage or generalized offline simulation. |
| Rest | A placed bedroll inside a claim requires five still seconds under sheltered, ventilated cover. Movement, damage, unsafe cover or permission changes interrupt; completion adds modest warmth and has a 30-second cooldown. | Does not advance or pause the shared world clock; environmental shelter remains M1's four-ray approximation until M3. |
| Discovery | /recipes, the recipe-index button and guide page provide paginated plain-text search across recipes/ingredients plus process durations and sources. |
Existing recipes and the progression ceiling remain intentionally small; tester-led balance is still required. |
| Persistence | Save schema 1 now validates the homes world-storage map; hearth job metadata is validated/reconciled on timer/load and output completion is idempotent. |
Engine node metadata is not an envelope-schema transaction or crash-durable database. |
| Map starts | test:seeds creates fresh real-engine worlds for eight fixed map seeds and checks required resources plus a dry, supported safe-arrival surface in the same bounds as fallback spawn. |
This is deterministic fixture coverage, not exhaustive world-generation proof or human assessment of start quality. |
Automated verification on the current Windows host
- M2 historical contract: Node.js 24.22.0; stock Luanti 5.18.0; game 0.3.0-m2; save schema 1. M3 release supersedes it.
- Engine integration:
scripts/run.mjs testpassed. The pinned real engine compiled 39 Lua files, ran 16 isolated suites totaling 254 checks, and passed registry, recipes, terrain/resources/enclosure, and native gravity/collision/animation smoke. The native smoke explicitly does not prove rendered animation, audible playback, movement feel or a client playtest. - Node tooling/assets: 30 named tests passed across
tests/tooling.test.mjsandtests/assets.test.mjs. Optional full codec decode/regeneration was not run; Ogg framing/CRC/hash checks did run. Windows did not grant file-symlink privilege; directory-junction protection was exercised. - Multi-seed:
scripts/run.mjs test:seedspassed on eight fresh worlds for seeds 731104, 19027, 2026, 987654321, 271828, 314159, 42 and 8675309. Every world had all required starting-resource types and a dry, supported safe-arrival surface; the smallest checked fallback area had 229 such surfaces (seed 42). The aggregateLAST_HEARTH_SEED_TEST_PASSmarker was emitted. Seed 42 initially exposed that the ±32-node fallback bound had no dry arrival; arrival/emergence checks and the fixture were aligned and widened to ±64, after which all seeds passed. - No separate Lua interpreter, clean-machine run, Linux/macOS native run or test of the persistent play world is claimed. The exact M1 human gate remains open.
Manual M2 acceptance still required
- Use a disposable local
HEARTH_HOME; never use a fixture in the preserved play world. Test both first-night summer and winter fixtures, without revealing recipe answers to the tester. - Ask five unfamiliar testers to attempt 30–60 minutes without coaching. Observe whether each can identify local resources, craft a useful tool, ignite a hearth, produce food and clean water, make a usable shelter/bedroll, and recover from an unsafe spawn or death.
- Record time-to-goal, failed/dead-end recipes, fuel/output loss, nighttime visibility, recovery fairness and actionable feedback. Do not collect location/account data.
- Capture exact game/engine/fixture, seed, host/device, controls and reproducible defects. Do not present synthetic 45°N/0°E fixture runs as community-location approval or climate balance.
- The user/operator must explicitly choose and configure community coordinates before shared climate staging. M1 voluntary repeat-play and real-client performance/network evaluation also remain outstanding.
Disposition
M2 gameplay implementation is in place and the available automated integration and Node test gates passed at its release. M3 has since been implemented; M2 is still not human-accepted until the unfamiliar-tester and operator gates above are evidenced. No claim is made that M2 completes the launch checklist or authorizes production.