diff --git a/AGRARIAN_DEVELOPMENT_ROADMAP.md b/AGRARIAN_DEVELOPMENT_ROADMAP.md index 8dc7de8..6554e85 100644 --- a/AGRARIAN_DEVELOPMENT_ROADMAP.md +++ b/AGRARIAN_DEVELOPMENT_ROADMAP.md @@ -34,7 +34,7 @@ Core commitments: Baseline rule: -- [ ] Use `4 real hours = 1 in-game day` as the default server-authoritative world clock unless testing proves it is too slow. +- [x] Use real local time pacing for the represented Earth region as the default server-authoritative world clock. Test-only time acceleration remains allowed. Design intent: @@ -179,8 +179,8 @@ Remaining version 0.01 cleanup before moving deeper into new gameplay: - [x] Finish required plugin documentation. - [x] Confirm the project opens cleanly from a fresh checkout, not just the current working share. - [x] Organize `Content/Agrarian/` folders and move starter/prototype assets into clearly named locations. -- [ ] Launch near-term MVP map-tile serving cloud VM. -- [ ] Define MVP day/night length, survival pressure target, success loop, failure conditions, and closed-test readiness criteria. +- [x] Launch near-term MVP map-tile serving cloud VM. +- [x] Define MVP day/night length, survival pressure target, success loop, failure conditions, and closed-test readiness criteria. # Phase 0 - Project Foundation And Guardrails @@ -288,12 +288,12 @@ Current tooling decisions: - [x] Define acceptable real terrain accuracy for MVP. - [x] Define acceptable real bathymetry/ocean-depth handling for MVP if Ground Zero is coastal. - [ ] Define acceptable first-pass biome/resource accuracy for MVP. -- [ ] Define MVP day/night length. -- [ ] Define survival pressure target. -- [ ] Define basic success loop. -- [ ] Define failure conditions. -- [ ] Define first playable internal milestone. -- [ ] Define closed test readiness criteria. +- [x] Define MVP day/night length. +- [x] Define survival pressure target. +- [x] Define basic success loop. +- [x] Define failure conditions. +- [x] Define first playable internal milestone. +- [x] Define closed test readiness criteria. ## 0.6 Operational Infrastructure @@ -406,7 +406,8 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe - [x] Create world time system. - [x] Add day/night cycle. - [x] Add configurable time scale. -- [ ] Set default server time scale to `4 real hours = 1 in-game day`. +- [x] Set default server time scale to real-time pacing for the represented Earth region. +- [ ] Add real local time-zone and sunrise/sunset lookup for Ground Zero by latitude/longitude. - [ ] Add Agrarian calendar conversion helpers for days, seasons, crop cycles, livestock maturity, spoilage, and long-running tasks. - [ ] Add temperature curve by time of day. - [x] Add simple weather states. @@ -1396,6 +1397,7 @@ The first playable MVP is not complete until: - [ ] Players can create fire. - [ ] Players can build a primitive shelter. - [ ] Weather and time affect survival. +- [ ] Day/night follows the real local time and light cycle of the represented map tile. - [ ] Hunger and thirst matter. - [ ] Injury or damage can create meaningful risk. - [~] At least one wildlife system exists. @@ -1437,8 +1439,8 @@ Earliest incomplete foundation items: - [ ] Create art direction, UX/HUD direction, coding standards, Blueprint standards, and asset/folder naming standards. - [x] Organize `Content/Agrarian/` root folder and remove unused starter variant content. - [ ] Define what qualifies as the 6-month MVP and what is explicitly excluded. -- [ ] Define MVP day/night length, survival pressure target, success loop, failure conditions, first playable internal milestone, and closed-test readiness criteria. +- [x] Define MVP day/night length, survival pressure target, success loop, failure conditions, first playable internal milestone, and closed-test readiness criteria. Immediate next item: -- [ ] Define MVP day/night length, survival pressure target, success loop, failure conditions, and closed-test readiness criteria. +- [ ] Create the core design document. diff --git a/Docs/MvpSurvivalReadinessCriteria.md b/Docs/MvpSurvivalReadinessCriteria.md new file mode 100644 index 0000000..6f87ed0 --- /dev/null +++ b/Docs/MvpSurvivalReadinessCriteria.md @@ -0,0 +1,131 @@ +# MVP Survival And Readiness Criteria + +This document locks the early MVP target for time, survival pressure, player +success, failure, and closed-test readiness. + +## Day And Night + +MVP rule: day/night should mimic the real Earth region represented by the +loaded map tile. + +For Ground Zero, the server-authoritative world clock should follow the local +time of the real Ground Zero region. Weather and sunlight should both come from +the same real-world tile context so the player feels like they are standing in +that place, not in an abstract accelerated map. + +Implementation target: + +- The server owns time and replicates it to clients. +- Ground Zero uses the real local time zone for its real-world coordinates. +- Sunrise, sunset, day length, night length, and seasonal light should be based + on the tile location as the system matures. +- The MVP fallback can use a 24-hour local clock with conservative fixed night + bounds until real sunrise/sunset lookup is implemented. +- Time acceleration is allowed for test commands and automation, but not as the + default player-facing world clock. + +Design consequence: + +- The sky clock stays grounded. +- Skills, tools, teamwork, shelter, storage, domestication, and infrastructure + improve what players can accomplish inside real time. +- Natural biological systems should not be casually compressed just to make + progress feel faster. + +## Survival Pressure Target + +The first playable MVP should feel difficult but learnable. + +Target experience: + +- A new solo player can survive the first session by gathering, drinking, + crafting a basic tool, making fire, and using shelter. +- Ignoring hunger, thirst, cold, injury, or weather can kill the player. +- Death should usually feel preventable after the player understands the rules. +- Early play should be inefficient and hands-on. +- Progress should noticeably reduce friction through better tools, storage, + shelter, food access, water access, and knowledge. + +Early survival pressure should come from: + +- thirst and freshwater access; +- hunger and low-yield gathering; +- cold exposure, especially at night or in bad weather; +- injury/damage; +- fire and shelter reliability; +- limited inventory and carrying capacity; +- weather changing the risk profile. + +## Basic Success Loop + +The MVP loop is complete when a player can: + +1. Spawn into the Ground Zero tile after the startup and character-selection + flow. +2. Read the environment enough to find immediate resources. +3. Gather primitive materials. +4. Drink or collect water. +5. Craft at least one useful primitive tool. +6. Make or use fire. +7. Build or use a primitive shelter. +8. Survive weather and nighttime pressure. +9. Store or preserve some useful progress. +10. Leave and return after restart with core state preserved. + +The loop should show the intended long-term direction: survival starts with +hands, improvised tools, and local knowledge, then moves toward better tools, +storage, shelter, domestication, farming, logistics, and cooperation. + +## Failure Conditions + +The MVP should support clear player failure states: + +- death from health reaching zero; +- dehydration; +- starvation; +- cold exposure/hypothermia; +- injury or damage; +- inability to recover after poor preparation for night/weather. + +For MVP, failure does not need a complete generational inheritance system. +Respawn rules can be simple, but death should still cost enough to make survival +matter. + +## First Playable Internal Milestone + +The first playable internal milestone is ready when: + +- one Ground Zero tile loads as the playable map; +- the map uses the Ground Zero tile context for time/weather direction; +- the player can gather, drink, craft, make fire, and use shelter; +- hunger, thirst, body temperature, and health can all affect survival; +- one meaningful death path works; +- core state survives a server restart; +- the startup flow reaches character selection before entering the world; +- two players can join the same server for a basic multiplayer smoke test. + +## Closed-Test Readiness + +Closed testing can begin when: + +- the Windows build installs and launches on a clean test machine; +- the public or LAN tile endpoint is stable for the test group; +- onboarding tells players enough to start without exposing debug internals; +- at least one full day/night survival test passes; +- basic telemetry/logging is available for crashes and major failures; +- known critical bugs are documented; +- reset/recovery instructions exist for the test server; +- testers can report bugs with build version, map tile, and reproduction notes. + +## Explicit Non-Goals For This MVP + +Do not block first playable MVP on: + +- full Earth-scale streaming; +- full real-weather provider integration; +- full sunrise/sunset astronomy accuracy; +- mature farming/livestock life cycles; +- full economy or AGR utility; +- full generational succession; +- polished character art; +- public Steam/Epic release readiness. diff --git a/Source/AgrarianGame/AgrarianGameState.h b/Source/AgrarianGame/AgrarianGameState.h index c4a8995..5f815cf 100644 --- a/Source/AgrarianGame/AgrarianGameState.h +++ b/Source/AgrarianGame/AgrarianGameState.h @@ -21,8 +21,8 @@ public: UPROPERTY(EditAnywhere, BlueprintReadOnly, Replicated, Category = "Agrarian|World") float WorldHours = 8.0f; - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|World", meta = (ClampMin = "0.1")) - float GameHoursPerRealMinute = 0.5f; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|World", meta = (ClampMin = "0.001")) + float GameHoursPerRealMinute = 1.0f / 60.0f; UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_Weather, Category = "Agrarian|World") EAgrarianWeatherType Weather = EAgrarianWeatherType::Clear;