Files
agrarian/dev/HANDOFF.md
T

9502 lines
357 KiB
Markdown

# Agrarian Codex Handoff
## Gitea Container Repair - 2026-05-20
- Gitea is hosted on Unraid as Docker container `Gitea`.
- LAN endpoint:
- Web UI: `http://192.168.5.21:3000`
- Git SSH: `192.168.5.21:2221`
- Persistent data path:
`/mnt/user/appdata/gitea`
- What broke:
- the container was started with Unraid's Tailscale hook as its entrypoint.
- that hook waited for Tailscale authentication and never launched Gitea.
- Docker showed no host port bindings because the container correctly uses
`br0` with static IP `192.168.5.21`; the real issue was that Gitea was not
running.
- Repair performed:
- recreated only the container definition, preserving
`/mnt/user/appdata/gitea`.
- restored the official `gitea/gitea` entrypoint.
- kept `br0` static IP `192.168.5.21`.
- set `SSH_LISTEN_PORT=2221` plus matching Gitea server config.
- after first install, removed the restart loop caused by both container
OpenSSH and Gitea's built-in SSH server trying to bind `:2221`; container
OpenSSH now owns Git SSH on `2221`, and `START_SSH_SERVER=false`.
- updated Unraid template
`/boot/config/plugins/dockerMan/templates-user/my-Gitea.xml` so Tailscale
stays disabled and Gitea's built-in SSH stays off on future GUI recreates.
- Verification:
- `curl http://192.168.5.21:3000/user/login` returns the Gitea sign-in page.
- TCP `192.168.5.21:2221` is open.
- TCP `192.168.5.21:22` is closed.
- Docker reports `RestartCount=0`, `Status=running`, and
`Restarting=false` after the SSH listener fix.
- Repository seed:
- seeded `nathan/agrarian-game` from the latest GitHub game repo state,
`pacificao/AgrarianGameBuild` `origin/main`.
- Gitea `main` now points to
`4e17cede2d3a4458ffd007875bd73e2e2b5feb73`
(`Stabilize investor visual smoke build`).
- uploaded Git LFS content to Gitea: 846 objects plus 10 explicit objects
referenced only by GitHub `origin/main`.
- verification clone succeeded from
`http://192.168.5.21:3000/nathan/agrarian-game.git`; `git lfs fsck`
passed and `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`
checked out as a 7,603,168 byte real asset.
- local older uncommitted game changes were not mixed into Gitea `main`;
they were preserved as
`/home/nathan/gitea-migration/AgrarianGameBuild-local-uncommitted-20260520.patch`.
## Agrarian 0.1.Q Craft Shelter Gate - 2026-05-19
- Completed the sixth `0.1.Q MVP QA Gates` item:
`Can craft a shelter.`
- Latest pushed game commit:
`0a40d2a Add craft shelter QA gate`.
- Changes:
- extended `Docs/QA/MvpQaGates.md` with the craft-shelter gate.
- tied the gate to primitive frame/wall/roof/shelter recipes, native build
placement, `BP_PrimitiveShelter`, shelter persistence/protection hooks, and
the natural shelter playable-loop smoke test.
- added `Scripts/verify_craft_shelter_qa_gate.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_craft_shelter_qa_gate.py`
- `python3 -m py_compile Scripts/verify_craft_shelter_qa_gate.py`
- `python3 Scripts/verify_shelter_weather_protection.py`
- `git diff --check`
- Deployment classification:
gameplay/server-relevant QA coverage. No immediate deployment was performed;
include this in the next milestone server package.
## Agrarian 0.1.Q Craft Fire Gate - 2026-05-19
- Completed the fifth `0.1.Q MVP QA Gates` item:
`Can craft a fire.`
- Latest pushed game commit:
`3d8ce85 Add craft fire QA gate`.
- Changes:
- extended `Docs/QA/MvpQaGates.md` with the craft-fire gate.
- tied the gate to `DA_Recipe_Campfire`, player recipe setup,
`BP_Campfire`, replicated lit/fuel state, fire interaction prompts,
campfire persistence, and fire-risk QA.
- added `Scripts/verify_craft_fire_qa_gate.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_craft_fire_qa_gate.py`
- `python3 -m py_compile Scripts/verify_craft_fire_qa_gate.py`
- `python3 Scripts/verify_fire_persistence.py`
- `python3 Scripts/verify_fire_risk_qa_coverage.py`
- `python3 Scripts/verify_fire_maintenance_gameplay.py`
- `git diff --check`
- Note:
`Scripts/verify_recipe_definitions.py` is an Unreal Python script and must run
through an Unreal editor command context, not system Python.
- Deployment classification:
gameplay/server-relevant QA coverage. No immediate deployment was performed;
include this in the next milestone server package.
## Agrarian 0.1.Q Resource Gathering Gate - 2026-05-19
- Completed the fourth `0.1.Q MVP QA Gates` item:
`Can gather resources.`
- Latest pushed game commit:
`436a5b5 Add resource gathering QA gate`.
- Changes:
- extended `Docs/QA/MvpQaGates.md` with the resource gathering gate.
- tied the gate to Ground Zero wood/fiber nodes, `AAgrarianResourceNode`,
replicated `RemainingHarvests`, inventory grants, resource persistence, and
the playable-loop smoke test.
- added `Scripts/verify_resource_gathering_qa_gate.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_resource_gathering_qa_gate.py`
- `python3 -m py_compile Scripts/verify_resource_gathering_qa_gate.py`
- `git diff --check`
- Deployment classification:
gameplay/server-relevant QA coverage. No immediate deployment was performed;
include this in the next milestone server package.
## Agrarian 0.1.Q Two-Client Connection Gate - 2026-05-19
- Completed the third `0.1.Q MVP QA Gates` item:
`Can connect two clients.`
- Latest pushed game commit:
`57dd034 Add two client connection QA gate`.
- Changes:
- extended `Docs/QA/MvpQaGates.md` with the two-client connection gate.
- added `Scripts/RunTwoClientConnectionSmoke-Windows.bat`.
- helper checks packaged client availability and can launch two client
instances against `play.agrariangame.com:7777` or a LAN endpoint.
- tied manual observation to `Docs/Ops/MultiplayerLatencyTestPlan.md`.
- added `Scripts/verify_two_client_connection_gate.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_two_client_connection_gate.py`
- `python3 -m py_compile Scripts/verify_two_client_connection_gate.py`
- `git diff --check`
- live play-server check: service active and `AgrarianGame` listening on
`0.0.0.0:7777/udp`.
- Deployment classification:
client/server QA helper and docs. No new deployment was required for this
item; the helper will be included in the next packaged investor/demo checkout.
## Agrarian 0.1.Q Server Launch Gate - 2026-05-19
- Completed the second `0.1.Q MVP QA Gates` item:
`Can launch server.`
- Latest pushed game commit:
`388ae36 Add server launch QA gate`.
- Changes:
- extended `Docs/QA/MvpQaGates.md` with the server launch gate.
- documented true dedicated-server build path and current Linux game-server
fallback path.
- required deployed `/opt/agrarian/server/AgrarianGameServer.sh`,
`agrarian-game-server.service`, UDP `7777`, and Ground Zero browse
evidence.
- added `Scripts/verify_server_launch_gate.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_server_launch_gate.py`
- `python3 -m py_compile Scripts/verify_server_launch_gate.py`
- `git diff --check`
- live play-server check: service active, `AgrarianGame` listening on
`0.0.0.0:7777/udp`, journal shows Ground Zero map browse started.
- Deployment classification:
server QA/docs/script plus live server verification. No new deployment was
required for this item because the 0.1.P Linux fallback package was already
deployed and verified.
## Agrarian 0.1.Q Packaged Client Launch Gate - 2026-05-19
- Completed the first `0.1.Q MVP QA Gates` item:
`Can launch packaged client.`
- Latest pushed game commit:
`80e6318 Add packaged client launch QA gate`.
- Changes:
- added `Docs/QA/MvpQaGates.md`.
- documented the packaged-client launch evidence requirements.
- tied the gate to the Windows package script, packaged executable,
installed investor launchers, and real-GPU visual QA readiness helper.
- added `Scripts/verify_packaged_client_launch_gate.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_packaged_client_launch_gate.py`
- `python3 -m py_compile Scripts/verify_packaged_client_launch_gate.py`
- `git diff --check`
- Deployment classification:
client QA/docs/script only. No multiplayer server deployment is required for
this item.
## Agrarian Linux Server Build Block Cleared With MVP Fallback - 2026-05-19
- Latest pushed game commit:
`67006ff Add Linux game server fallback packaging`.
- Windows-Builder repair:
- confirmed the UE 5.7 Linux cross-toolchain exists at
`C:\UnrealToolchains\v26_clang-20.1.8-rockylinux8`.
- restored Linux build visibility by setting `LINUX_MULTIARCH_ROOT` for the
build process.
- persisted the machine variable with `setx /M`, but the guest-agent shell
still did not read it reliably, so the build scripts now self-heal from the
known toolchain path.
- True dedicated server status:
- `Scripts\BuildLinuxDedicatedServer-Windows.bat` now gets past the previous
`Platform Linux is not a valid platform to build` failure.
- the remaining true dedicated-server blocker is Epic binary-engine support:
`Server targets are not currently supported from this engine distribution.`
- this still requires a future source-built/server-capable Unreal engine if
we want the real `AgrarianGameServer` target.
- MVP fallback added:
- added `Scripts\PackageLinuxGameServerFallback-Windows.bat`.
- updated `Docs/Ops/DedicatedServerBuildRunbook.md` with the fallback path.
- fallback output is `Builds\LinuxGameDevelopment`.
- Verification completed:
- manual Windows-Builder Linux fallback package succeeded through UAT
`BuildCookRun`.
- package output:
`/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/LinuxGameDevelopment`
- package size:
`1.1G`
- `git diff --check` passed before commit.
- Multiplayer deployment:
- deployed the 0.1.P Linux fallback package to
`nathan@192.168.5.15:/opt/agrarian/server`.
- previous server directory was preserved as
`/opt/agrarian/server_backup_20260519_202543`.
- recreated `/opt/agrarian/server/AgrarianGameServer.sh` as the headless
launch wrapper.
- restarted `agrarian-game-server.service`.
- Server verification:
- `systemctl is-active agrarian-game-server.service` reports `active`.
- `ss -lunp` shows `AgrarianGame` listening on `0.0.0.0:7777/udp`.
- journal shows the Ground Zero map browse started for
`/Game/Agrarian/Maps/L_GroundZeroTerrain_Test?Name=Player?listen`.
## Agrarian 0.1.P Completion And Investor Demo Build - 2026-05-19
- Completed all `0.1.P MVP Audio And Atmosphere` roadmap items.
- Latest pushed game commit:
`86a0fcb Fix UI sound verifier for volume playback`.
- Final verification completed:
- all eighteen `0.1.P` local verification scripts passed.
- `git diff --check` passed.
- Windows editor compile passed.
- Windows Development investor package passed.
- Windows visual QA helper passed with packaged demo present and
`SunshineService` running.
- Windows investor demo:
- package checkout:
`/mnt/projects/AgrarianGameBuild_0_1_P_Package`
- package output:
`/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/WindowsDevelopment`
- launchers:
`Start Agrarian Demo.cmd`,
`Start Agrarian Demo - DX12.cmd`,
`Start Agrarian Demo - Compatibility DX11.cmd`
- executable:
`AgrarianGame.exe`
- package size:
`1.1G`
- Windows-Builder status from build logs:
- UnrealBuildTool used 5 physical / 10 logical cores.
- Unreal cook saw approximately 32 GB RAM.
- known `NetCullDistanceSquared` deprecation warnings remain; they are
already tracked in the `0.1.Q` roadmap cleanup gate.
- Deployment classification:
server deploy required at milestone packaging time because `0.1.P` includes
server-authoritative campfire risk, vegetation/structure ignition, fire
spread, suppression, and active-fire persistence changes.
- Multiplayer deployment result:
blocked. `Scripts\BuildLinuxDedicatedServer-Windows.bat` was run from the
clean package checkout, but Windows-Builder reported:
`Platform Linux is not a valid platform to build. Check that the SDK is
installed properly and that you have the necessary platform support files
(DataDrivenPlatformInfo.ini, SDK.json, etc).`
- Current server verification:
non-interactive SSH verification to `nathan@192.168.5.15` failed with
`Permission denied (publickey,password)`, so the current play-server process
was not verified from this session.
- Required follow-up:
restore Linux platform support/toolchain visibility on Windows-Builder, rerun
`Scripts\BuildLinuxDedicatedServer-Windows.bat` or the MVP Linux game-server
fallback package, deploy to `play.agrariangame.com:7777`, then verify the
service listener and client connection.
## Agrarian 0.1.P Volume Sliders - 2026-05-19
- Completed the seventeenth and final `0.1.P MVP Audio And Atmosphere` item:
`Add volume sliders.`
- Latest pushed game commit:
`7c74d4f Add MVP audio volume sliders`.
- Changes:
- added MVP frontend sliders for master, ambient, weather, effects, wildlife,
and UI volume levels.
- stores runtime slider values on the frontend widget.
- applies master/UI volume immediately to frontend feedback sounds.
- leaves final SoundClass/audio-subsystem bus binding for authored audio
assets.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_volume_sliders.py`.
- Verification completed:
- `python3 Scripts/verify_volume_sliders.py`
- `python3 -m py_compile Scripts/verify_volume_sliders.py`
- `git diff --check`
- Deployment classification:
client UI/audio hook. No multiplayer server deployment is required for this
item.
## Agrarian 0.1.P Audio Mix Settings - 2026-05-19
- Completed the sixteenth `0.1.P MVP Audio And Atmosphere` item:
`Add mix settings.`
- Latest pushed game commit:
`d36481e Add MVP audio mix settings`.
- Changes:
- added `Config/AgrarianAudioMixSettings.ini`.
- defined master, ambient, weather, foley, fire, wildlife, and UI buses.
- added conservative investor-build default levels.
- added `Docs/Audio/MixSettings.md`.
- marked the roadmap item complete.
- added `Scripts/verify_audio_mix_settings.py`.
- Verification completed:
- `python3 Scripts/verify_audio_mix_settings.py`
- `python3 -m py_compile Scripts/verify_audio_mix_settings.py`
- `git diff --check`
- Deployment classification:
client config/docs/verification only. No multiplayer server deployment is
required for this item.
## Agrarian 0.1.P UI Sounds - 2026-05-19
- Completed the fifteenth `0.1.P MVP Audio And Atmosphere` item:
`Add UI sounds.`
- Latest pushed game commit:
`d0ad644 Add MVP frontend audio hooks`.
- Changes:
- added optional 2D confirm, back, selection, and save/quit sound slots to
`UAgrarianMvpFrontendWidget`.
- keyboard and mouse actions now share the same UI feedback path.
- widget remains silent until UI audio assets are assigned.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_ui_sounds.py`.
- Verification completed:
- `python3 Scripts/verify_ui_sounds.py`
- `python3 -m py_compile Scripts/verify_ui_sounds.py`
- `git diff --check`
- Deployment classification:
client UI/audio hook. No multiplayer server deployment is required for this
item.
## Agrarian 0.1.P Wildlife Sounds - 2026-05-19
- Completed the fourteenth `0.1.P MVP Audio And Atmosphere` item:
`Add wildlife sounds.`
- Latest pushed game commit:
`f6e126a Add MVP wildlife audio hooks`.
- Changes:
- added a spatialized `WildlifeAudioComponent` to
`AAgrarianWildlifeBase`.
- added assignable idle, flee/chase, death, and harvest sound slots.
- added server-triggered multicast playback for wildlife state changes and
harvest events.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_wildlife_sounds.py`.
- Verification completed:
- `python3 Scripts/verify_wildlife_sounds.py`
- `python3 -m py_compile Scripts/verify_wildlife_sounds.py`
- `git diff --check`
- Deployment classification:
replicated gameplay/audio hook. Multiplayer server deployment can wait for
the milestone package unless live wildlife-audio testing is needed now.
## Agrarian 0.1.P Weather Sounds - 2026-05-19
- Completed the thirteenth `0.1.P MVP Audio And Atmosphere` item:
`Add weather sounds.`
- Latest pushed game commit:
`6cad068 Document MVP weather sound hooks`.
- Changes:
- added `Docs/Audio/WeatherSounds.md`.
- formalized the existing placed weather audio controller as the MVP
weather-sound path.
- documented rain, wind, storm, clear ambient, and biome loop slots.
- verified playback logic follows replicated weather state, provider wind
speed, and day/night state while remaining silent until assets are assigned.
- marked the roadmap item complete.
- added `Scripts/verify_weather_sounds.py`.
- Verification completed:
- `python3 Scripts/verify_weather_sounds.py`
- `python3 Scripts/verify_weather_audio_controller.py`
- `python3 -m py_compile Scripts/verify_weather_sounds.py`
- `git diff --check`
- Deployment classification:
client audio docs/verification only. No multiplayer server deployment is
required for this item.
## Agrarian 0.1.P Fire Risk QA Coverage - 2026-05-19
- Completed the twelfth `0.1.P MVP Audio And Atmosphere` item:
`Add QA coverage for safe campfires, unsafe campfires, vegetation spread,
shelter ignition, suppression, and save/load recovery.`
- Latest pushed game commit:
`61548d1 Add fire risk QA coverage gate`.
- Changes:
- added `Docs/QA/FireRiskQACoverage.md`.
- documented safe campfire, unsafe campfire, vegetation spread, shelter
ignition, suppression, and save/load recovery scenarios.
- tied the manual scenarios to the fire-risk verifier scripts.
- marked the roadmap item complete.
- added `Scripts/verify_fire_risk_qa_coverage.py`.
- Verification completed:
- `python3 Scripts/verify_fire_risk_qa_coverage.py`
- `python3 -m py_compile Scripts/verify_fire_risk_qa_coverage.py`
- `git diff --check`
- Deployment classification:
docs/QA/verification only. No multiplayer server deployment is required for
this item.
## Agrarian 0.1.P Active Fire Persistence - 2026-05-19
- Completed the eleventh `0.1.P MVP Audio And Atmosphere` item:
`Persist active grass, forest, and structure fires across save/load without
corrupting world state.`
- Latest pushed game commit:
`dbb9110 Persist active fire spread state`.
- Changes:
- verified campfire persistence captures and restores vegetation, forest, and
structure ignition risks and flags.
- verified active grass, forest, and structure fire intensities persist.
- added persistence for active fire spread radius and suppression pressure.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_fire_persistence_state.py`.
- Verification completed:
- `python3 Scripts/verify_fire_persistence_state.py`
- `python3 -m py_compile Scripts/verify_fire_persistence_state.py`
- `git diff --check`
- Deployment classification:
persistence/gameplay change. Multiplayer server deployment can wait for the
milestone package unless live save/load fire testing is needed now.
## Agrarian 0.1.P Fire Suppression Hooks - 2026-05-19
- Completed the tenth `0.1.P MVP Audio And Atmosphere` item:
`Add fire suppression hooks for rain, water carrying, dirt/sand, cleared
firebreaks, and future firefighting tools.`
- Latest pushed game commit:
`6b43a23 Add fire suppression hooks`.
- Changes:
- added shared server-side `ApplyFireSuppression`.
- added water, dirt/sand, firebreak, and tool suppression wrappers.
- suppression raises pressure, reduces ignition risk, reduces active fire
intensity, and shrinks spread radius.
- water/rain also drains fuel; wet weather contributes passive suppression
pressure.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_fire_suppression_hooks.py`.
- Verification completed:
- `python3 Scripts/verify_fire_suppression_hooks.py`
- `python3 -m py_compile Scripts/verify_fire_suppression_hooks.py`
- `git diff --check`
- Deployment classification:
replicated gameplay change. Multiplayer server deployment can wait for the
milestone package unless live suppression testing is needed now.
## Agrarian 0.1.P Fire Maintenance Gameplay - 2026-05-19
- Completed the ninth `0.1.P MVP Audio And Atmosphere` item:
`Add fire maintenance gameplay so watched, cleared, contained, or
extinguished fires are safe, while neglected fires can become dangerous.`
- Latest pushed game commit:
`b4e9cce Add campfire maintenance gameplay hooks`.
- Changes:
- changed lit campfire prompt to `Maintain fire`.
- lit interaction adds fuel when wood is available, otherwise watches and
maintains the fire.
- added native `WatchFire`, `ClearAreaAroundFire`, and `ContainFire` hooks.
- maintenance reduces campfire, vegetation, forest, and structure ignition
risk while extinguishing resets active risk state.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_fire_maintenance_gameplay.py`.
- Verification completed:
- `python3 Scripts/verify_fire_maintenance_gameplay.py`
- `python3 -m py_compile Scripts/verify_fire_maintenance_gameplay.py`
- `git diff --check`
- Deployment classification:
replicated gameplay change. Multiplayer server deployment can wait for the
milestone package unless live fire-maintenance testing is needed now.
## Agrarian 0.1.P Server Fire Spread Rules - 2026-05-19
- Completed the eighth `0.1.P MVP Audio And Atmosphere` item:
`Add server-authoritative fire spread rules for grass, brush, trees,
shelters, and other burnable actors, including fuel, distance, wind, weather,
and suppression hooks.`
- Latest pushed game commit:
`dde42bf Add server authoritative fire spread state`.
- Changes:
- added replicated grass, forest, and structure fire intensities.
- added replicated active fire spread radius.
- server-side spread grows from nearby fuel, ignition state, wind/weather, and
current suppression pressure.
- persisted active fire intensities and spread radius with campfire
persistence.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_fire_spread_rules.py`.
- Verification completed:
- `python3 Scripts/verify_fire_spread_rules.py`
- `python3 -m py_compile Scripts/verify_fire_spread_rules.py`
- `git diff --check`
- Deployment classification:
replicated gameplay/persistence change. Multiplayer server deployment can
wait for the milestone package unless live fire-spread testing is needed now.
## Agrarian 0.1.P Structure Ignition Risk - 2026-05-19
- Completed the seventh `0.1.P MVP Audio And Atmosphere` item:
`Add shelter/structure ignition risk when fires are placed too close to
primitive shelters, wood piles, flammable crafting stations, or settlement
objects.`
- Latest pushed game commit:
`168cd0e Add structure ignition risk checks`.
- Changes:
- added replicated structure ignition risk and ignition flag to campfires.
- checks nearby primitive shelters and flammable wood/fiber resource nodes as
MVP stand-ins for wood piles, flammable crafting stations, and settlement
objects.
- skips the structure check for contained fires.
- scales risk with burn duration, weather/wind, and current fire-risk ratio.
- persists structure ignition risk state with campfire persistence.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_structure_ignition_risk.py`.
- Verification completed:
- `python3 Scripts/verify_structure_ignition_risk.py`
- `python3 -m py_compile Scripts/verify_structure_ignition_risk.py`
- `git diff --check`
- Deployment classification:
replicated gameplay/persistence change. Multiplayer server deployment can
wait for the milestone package unless live fire-risk testing is needed now.
## Agrarian 0.1.P Vegetation Ignition Checks - 2026-05-19
- Completed the sixth `0.1.P MVP Audio And Atmosphere` item:
`Add grass and forest ignition checks from irresponsible fire placement,
wind/weather, dry fuel, nearby vegetation, and burn duration.`
- Latest pushed game commit:
`dca9d01 Add vegetation ignition risk checks`.
- Changes:
- added foliage fuel counting around world locations for grass, shrubs, and
trees.
- added replicated campfire grass/brush and forest ignition risk scores.
- added grass/brush and forest ignition flags.
- tied ignition accumulation to campfire risk, nearby dry fuel, burn duration,
wind speed, weather, and cleared-area safety.
- persisted vegetation ignition risk state with campfire persistence.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_vegetation_ignition_checks.py`.
- Verification completed:
- `python3 Scripts/verify_vegetation_ignition_checks.py`
- `python3 -m py_compile Scripts/verify_vegetation_ignition_checks.py`
- `git diff --check`
- Deployment classification:
replicated gameplay/persistence change. Multiplayer server deployment can
wait for the milestone package unless live fire-risk testing is needed now.
## Agrarian 0.1.P Unattended Fire Risk - 2026-05-19
- Completed the fifth `0.1.P MVP Audio And Atmosphere` item:
`Add unattended and poorly maintained fire risk for campfires and other
open-flame sources.`
- Latest pushed game commit:
`14cd823 Add unattended campfire risk state`.
- Changes:
- added replicated campfire risk state for lit duration, seconds since
maintenance, cleared area, containment, and `FireRiskScore`.
- added server-side risk growth for unattended fires and high-fuel fires.
- added mitigation from maintenance, cleared area, containment, and wet
weather.
- persisted the new campfire risk state through the existing persistent actor
component.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_unattended_fire_risk.py`.
- Verification completed:
- `python3 Scripts/verify_unattended_fire_risk.py`
- `python3 -m py_compile Scripts/verify_unattended_fire_risk.py`
- `git diff --check`
- Deployment classification:
replicated gameplay/persistence change. Multiplayer server deployment can
wait for the milestone package unless a live server test needs the fire-risk
state immediately.
## Agrarian 0.1.P Fire Sounds - 2026-05-19
- Completed the fourth `0.1.P MVP Audio And Atmosphere` item:
`Add fire sounds.`
- Latest pushed game commit:
`280fa76 Add MVP campfire audio hooks`.
- Changes:
- added spatialized campfire loop and event audio components.
- added assignable `FireLoopSound`, `IgniteSound`, and `ExtinguishSound`
slots.
- tied loop playback to replicated lit-state updates.
- added server-triggered multicast ignition/extinguish event cues.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_fire_sounds.py`.
- Verification completed:
- `python3 Scripts/verify_fire_sounds.py`
- `python3 -m py_compile Scripts/verify_fire_sounds.py`
- `git diff --check`
- Deployment classification:
replicated gameplay/audio hook and docs/verification. No multiplayer server
deployment is required until the next server package because this only adds
optional audio hooks.
## Agrarian 0.1.P Gathering Sounds - 2026-05-19
- Completed the third `0.1.P MVP Audio And Atmosphere` item:
`Add gathering sounds.`
- Latest pushed game commit:
`47cd7a5 Add MVP gathering audio hooks`.
- Changes:
- added a spatialized `GatheringAudioComponent` to
`AAgrarianResourceNode`.
- added assignable `GatheringSound` and `DepletedGatheringSound` slots.
- added an unreliable multicast cue after successful server-authoritative
harvests so nearby clients can hear gathering without trusting client
gather requests.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_gathering_sounds.py`.
- Verification completed:
- `python3 Scripts/verify_gathering_sounds.py`
- `python3 -m py_compile Scripts/verify_gathering_sounds.py`
- `git diff --check`
- Deployment classification:
replicated gameplay/audio hook and docs/verification. No multiplayer server
deployment is required until the next server package because this only adds a
sound hook and does not change required server deployment state.
## Agrarian 0.1.P Footstep Placeholders - 2026-05-19
- Completed the second `0.1.P MVP Audio And Atmosphere` item:
`Add footstep placeholders.`
- Latest pushed game commit:
`bb5ed38 Add MVP footstep audio placeholders`.
- Changes:
- added a spatialized `FootstepAudioComponent` to
`AAgrarianGameCharacter`.
- added assignable walk, sprint, crouch, and prone placeholder sound slots.
- added movement-state footstep cadence that only plays when the character is
alive, grounded, and moving.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_footstep_placeholders.py`.
- Verification completed:
- `python3 Scripts/verify_footstep_placeholders.py`
- `python3 -m py_compile Scripts/verify_footstep_placeholders.py`
- `git diff --check`
- Deployment classification:
client character audio hook/docs/verification only. No multiplayer server
deployment is required for this item.
## Agrarian 0.1.P Ambient Biome Audio - 2026-05-19
- Completed the first `0.1.P MVP Audio And Atmosphere` item:
`Add ambient biome audio.`
- Latest pushed game commit:
`fb658ba Add MVP ambient biome audio hook`.
- Changes:
- extended `AAgrarianWeatherAudioController` with an explicit
`BiomeAmbientLoopSound` slot.
- added separate day/night biome ambient volume targets.
- kept the placed Ground Zero audio controller as the owner of the ambient
coastal-scrub bed so final or placeholder audio assets can be assigned
without changing gameplay code.
- updated technical design notes and marked the roadmap item complete.
- added `Scripts/verify_ambient_biome_audio.py`.
- Verification completed:
- `python3 Scripts/verify_ambient_biome_audio.py`
- `python3 Scripts/verify_weather_audio_controller.py`
- `python3 -m py_compile Scripts/verify_ambient_biome_audio.py`
- `git diff --check`
- Deployment classification:
client audio hook/docs/verification only. No multiplayer server deployment is
required for this item.
## Agrarian 0.1.O Completion And Windows Investor Demo Build - 2026-05-19
- Completed the `0.1.O Investor Visual MVP And Menu Polish` milestone.
- Latest pushed game commit:
`c37d8d9 Fix Windows visual QA helper checks`.
- Built the Windows Development investor demo from a fresh clean shared clone:
`/mnt/projects/AgrarianGameBuild_0_1_O_Package`.
- Demo output:
- Linux path:
`/mnt/projects/AgrarianGameBuild_0_1_O_Package/Builds/WindowsDevelopment`
- Windows path:
`P:\AgrarianGameBuild_0_1_O_Package\Builds\WindowsDevelopment`
- Executable:
`AgrarianGame.exe`
- Artifact size:
`1.1G`
- Build verification completed:
- Windows editor compile succeeded with
`Scripts\BuildEditor-Windows.bat`.
- Windows package build succeeded with
`Scripts\PackageWindowsDevelopment.bat`.
- Package artifact check found
`/mnt/projects/AgrarianGameBuild_0_1_O_Package/Builds/WindowsDevelopment/AgrarianGame.exe`.
- `Scripts\RunWindowsInvestorVisualQACheck.bat --check-tools` passed on
the Windows build VM: packaged demo exists and `SunshineService` is
running.
- Build notes:
- The build VM reported `5 physical cores / 10 logical cores` and
approximately `32 GB` RAM during cook/package.
- Known `NetCullDistanceSquared` deprecation warnings remain and are tracked
for future cleanup.
- The package also emitted Unreal's staging warning that
`AgrarianRenderingPresets.ini` is staged but not explicitly allowed or
denied; the file was still included.
- The older shared checkout at `/mnt/projects/AgrarianGameBulid` was dirty
and stale, so it was not reset or reused for this package.
- Deployment classification:
client/demo visual, menu, map, documentation, and QA tooling changes only.
No multiplayer server deployment was required or performed.
## Agrarian 0.1.O Investor Demo Acceptance Gate - 2026-05-19
- Completed the fourteenth and final `0.1.O Investor Visual MVP And Menu
Polish` item:
`Add an investor-demo acceptance gate: no current build should be described
as investor visual MVP if menus are confusing, character art is mannequin-only,
terrain is flat/tan, foliage is absent or unreadable, or core objects still
read as primitive debug shapes.`
- Latest pushed game commit:
`f27f2f9 Add investor demo acceptance gate`.
- Changes:
- added `Docs/Investor/InvestorDemoAcceptanceGate.md`.
- updated `Docs/Investor/InvestorDemoStatus.md`.
- added `Scripts/verify_investor_demo_acceptance_gate.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_investor_demo_acceptance_gate.py`
- `python3 -m py_compile Scripts/verify_investor_demo_acceptance_gate.py`
- `python3 Scripts/verify_investor_demo_systems_first_status.py`
- `git diff --check`
- Deployment classification:
docs/acceptance/QA policy only. No multiplayer server deployment is required
for this item.
## Agrarian 0.1.O Packaged Demo Visual QA Evidence Gate - 2026-05-19
- Completed the thirteenth `0.1.O Investor Visual MVP And Menu Polish` item:
`Add packaged-demo visual QA screenshots or short clips for startup credits,
character selection, first spawn, terrain, vegetation, water, campfire,
shelter, pause menu, and save/quit before each investor build is called
ready.`
- Latest pushed game commit:
`1ac7166 Add investor visual QA evidence gate`.
- Changes:
- added `Docs/Ops/PackagedDemoVisualQAEvidence.md`.
- added `Scripts/RunWindowsInvestorVisualQACheck.bat`.
- added `Scripts/verify_packaged_demo_visual_qa_evidence.py`.
- expanded the existing startup GPU visual checklist/helper to include
terrain, vegetation, water, campfire, and shelter captures.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_packaged_demo_visual_qa_evidence.py`
- `python3 -m py_compile Scripts/verify_packaged_demo_visual_qa_evidence.py`
- `python3 Scripts/verify_packaged_client_gpu_startup_visual_test.py`
- `git diff --check`
- Deployment classification:
docs/tooling/QA process only. No multiplayer server deployment is required
for this item.
## Agrarian 0.1.O Non-Ray-Traced Default Verification - 2026-05-19
- Completed the twelfth `0.1.O Investor Visual MVP And Menu Polish` item:
`Verify the non-ray-traced compatibility/default path still looks credible on
common investor, tester, and remote-session hardware.`
- Latest pushed game commit:
`81bf5ec Verify non ray traced investor default`.
- Changes:
- added `Scripts/verify_non_ray_traced_default.py`.
- updated `Docs/Rendering/InvestorRenderingPresets.md` to state packaged
investor demos should launch on the Default preset unless another profile
is explicitly selected.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_non_ray_traced_default.py`
- `python3 -m py_compile Scripts/verify_non_ray_traced_default.py`
- `git diff --check`
- Deployment classification:
docs/config verification only. No multiplayer server deployment is required
for this item.
## Agrarian 0.1.O Investor Rendering Presets - 2026-05-19
- Completed the eleventh `0.1.O Investor Visual MVP And Menu Polish` item:
`Define default, recommended, and cinematic investor rendering presets, with
ray tracing available only as an optional high-end/cinematic mode and never
required for baseline visual credibility.`
- Latest pushed game commit:
`4894c9d Define investor rendering presets`.
- Changes:
- added `Config/AgrarianRenderingPresets.ini`.
- added `Docs/Rendering/InvestorRenderingPresets.md`.
- added `Scripts/verify_investor_rendering_presets.py`.
- defined Default and Recommended as non-ray-traced presets.
- defined Cinematic as the optional high-end ray-tracing/capture preset.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_investor_rendering_presets.py`
- `python3 -m py_compile Scripts/verify_investor_rendering_presets.py`
- `git diff --check`
- Deployment classification:
config/docs/verification only. No multiplayer server deployment is required
for this item.
## Agrarian 0.1.O MVP Realism Target Guardrails - 2026-05-19
- Completed the tenth `0.1.O Investor Visual MVP And Menu Polish` item:
`Preserve realism as the target: use assets, materials, lighting, and
environmental dressing that can survive toward MVP production rather than
cosmetic throwaways where practical.`
- Latest pushed game commit:
`c429648 Document MVP realism target guardrails`.
- Changes:
- added `MVP Realism Target Rules` to
`Docs/ArtUxCodeAndAssetStandards.md`.
- defined production-directed proxy expectations for current 0.1.O character,
survival-object, foliage, water, and Ground Zero material passes.
- added `Scripts/verify_mvp_realism_target.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_mvp_realism_target.py`
- `python3 -m py_compile Scripts/verify_mvp_realism_target.py`
- `git diff --check`
- Deployment classification:
docs/standards/verification only. No multiplayer server deployment is
required for this item.
## Agrarian 0.1.O Density And Sightline Tuning - 2026-05-19
- Completed the ninth `0.1.O Investor Visual MVP And Menu Polish` item:
`Add density and sightline tuning so grasses, shrubs, trees, and resource
clusters are visible enough to sell the world without hiding
gameplay-critical objects.`
- Latest pushed game commit:
`b2e315a Tune Ground Zero foliage sightlines`.
- Changes:
- added protected foliage clearances around the player start, demo survival
targets, freshwater source, and Ground Zero biome resource nodes.
- added sampled first-look sightline corridors from the player start to wood,
fiber, campfire, shelter, wildlife, and freshwater.
- kept investor-facing foliage density at 64 trees, 148 shrubs, and 260 grass
clumps while preventing the generated dressing from covering early
gameplay reads.
- added `Docs/Terrain/GroundZeroDensitySightlineTuning.md`.
- added `Scripts/verify_ground_zero_density_sightlines.py`.
- regenerated `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- marked the roadmap item complete.
- Verification completed:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_ground_zero_density_sightlines.py`
- `git diff --check`
- Windows Unreal Python:
`Scripts\setup_ground_zero_demo_map.py`
- Windows Unreal Python:
`Scripts\verify_ground_zero_density_sightlines.py`
- passed with 21 protected labels, 6 sightline corridors, 64 trees,
148 shrubs, and 260 grass clumps.
- Deployment classification:
client map/visual/script/docs only. No multiplayer server deployment is
required for this item.
## Agrarian 0.1.O Water Source Visual Pass - 2026-05-19
- Completed the eighth `0.1.O Investor Visual MVP And Menu Polish` item:
`Add a real water-source visual pass with surface material, edge treatment,
scale, and placement that reads as collectable freshwater instead of a
placeholder plane.`
- Latest pushed game commit:
`d0c1e22 Add Ground Zero water source visual gate`.
- Changes:
- added `Docs/Terrain/GroundZeroWaterSourceVisualPass.md`.
- added `Scripts/verify_ground_zero_water_source_visual_pass.py`.
- updated `Scripts/setup_ground_zero_demo_map.py` so the Ground Zero
freshwater source keeps sandstone material on its root/bank proxies while
applying freshwater material only to the water surface and collect marker.
- regenerated `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- marked the roadmap item complete.
- Verification completed:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_ground_zero_water_source_visual_pass.py`
- `git diff --check`
- Windows Unreal Python:
`Scripts\setup_ground_zero_demo_map.py`
- Windows Unreal Python:
`Scripts\verify_ground_zero_water_source_visual_pass.py`
- passed with one labeled freshwater source, 4 native visual components,
and 4 nearby water-bank/reed dressing actors.
- Deployment classification:
client map/visual/script/docs only. No multiplayer server deployment is
required for this item.
## Agrarian 0.1.O Ground Zero Investor Biome Dressing - 2026-05-19
- Completed the seventh `0.1.O Investor Visual MVP And Menu Polish` item:
`Replace the placeholder Ground Zero environment presentation with
investor-facing biome dressing: believable terrain material, grass, brush,
shrubs, bushes, trees, rocks, water visuals, and local coastal-scrub color
variation.`
- Latest pushed game commit:
`be64862 Upgrade Ground Zero investor biome dressing`.
- Changes:
- increased repeatable Ground Zero foliage counts to 64 trees, 148 shrubs,
and 260 grass clumps.
- expanded the labeled environment variation layer from 11 to 23 actors.
- added additional tree canopy/trunk, coyote-brush clusters, grass mats,
rock slabs, water-bank pieces, reeds, and freshwater surface variation.
- changed `Scripts/setup_ground_zero_demo_map.py` to derive its project root
from Unreal project context instead of the stale hardcoded `Z:` path.
- regenerated `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- updated `Docs/Terrain/GroundZeroNaturalEnvironmentPass.md`.
- updated `Scripts/verify_ground_zero_natural_environment_pass.py` for the
richer investor-facing gate.
- marked the roadmap item complete.
- Verification completed:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_ground_zero_natural_environment_pass.py`
- `git diff --check`
- Windows Unreal Python:
`Scripts\setup_ground_zero_demo_map.py`
- Windows Unreal Python:
`Scripts\verify_ground_zero_natural_environment_pass.py`
- passed with 9 materials, 1 landscape, 17 dressed resource/water actors,
and 23 variation actors.
- Deployment classification:
client map/visual/script/docs only. No multiplayer server deployment is
required for this item.
- Operational note:
the setup script no longer assumes `Z:\AgrarianGameBulid`; it now works from
the mounted project path Unreal reports, which matched the restored Windows
`P:\AgrarianGameBulid` setup.
## Agrarian 0.1.O Readable Survival Object Proxies - 2026-05-19
- Completed the sixth `0.1.O Investor Visual MVP And Menu Polish` item:
`Replace box/sphere/cylinder survival objects with readable MVP meshes for
campfires, primitive shelter pieces, resource pickups, water sources,
wildlife, and gathered items.`
- Latest pushed game commit:
`63f48bc Add readable MVP survival object proxies`.
- Changes:
- added composed native child mesh proxies for campfires: stone/ash base,
stacked logs, and ember proxy.
- added composed primitive-shelter proxies: floor, rear wall, sloped roof
panels, and frame posts.
- added pickup/resource-node bundle and marker proxies so gathered items and
harvestable nodes no longer read as single debug primitives.
- added water-source proxies: stone bank, water surface, and collect marker.
- added wildlife body/head/ear/tail proxies suitable for the MVP rabbit/
small-wildlife pass.
- kept the existing root components as the gameplay collision/interaction/
save/replication contract; all added child visuals use no collision.
- added `Docs/CharactersAndObjects/MvpReadableSurvivalObjectProxies.md`.
- added `Scripts/verify_mvp_readable_survival_object_proxies.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_mvp_readable_survival_object_proxies.py`
- `python3 -m py_compile Scripts/verify_mvp_readable_survival_object_proxies.py`
- `git diff --check`
- Windows editor compile via `Scripts\BuildEditor-Windows.bat`
- Deployment classification:
client visual/game-code only. No multiplayer server deployment is required
for this item.
- Remaining known warning:
existing direct `NetCullDistanceSquared` deprecation warnings remain in
gameplay actors and are already tracked for future cleanup.
## Agrarian 0.1.O MVP Character Proxy Selection - 2026-05-19
- Completed the fifth `0.1.O Investor Visual MVP And Menu Polish` item:
`Add first realistic playable character proxies for the selected young adult
male and female archetypes, replacing the default mannequin/dummy
presentation for investor builds.`
- Latest pushed game commit:
`bc7617b Add MVP character proxy selection`.
- Changes:
- added selected male/female MVP proxy application to
`AAgrarianGamePlayerController`.
- menu completion now issues `AgrarianSelectCharacter male|female` based on
the selected archetype before gameplay input resumes.
- male proxy uses `SKM_Manny_Simple`; female proxy uses `SKM_Quinn_Simple`.
- added earth-tone Agrarian workwear material assets for both proxies under
`Content/Agrarian/Characters/Materials`.
- added `Scripts/setup_mvp_character_proxies.py`.
- added `Docs/Characters/MvpCharacterProxies.md`.
- added `Scripts/verify_mvp_character_proxies.py`.
- always-cook coverage now includes `/Game/Agrarian/Characters`.
- updated the character-archetype verifier for the UMG click-handler path.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_mvp_character_proxies.py`
- `python3 Scripts/verify_mvp_character_archetype_choice.py`
- `python3 -m py_compile ...`
- `git diff --check`
- Windows Unreal Python:
`Scripts\setup_mvp_character_proxies.py`
- Windows editor compile via `Scripts\BuildEditor-Windows.bat`
- Deployment classification:
client character/UI/C++/asset cook only. No multiplayer server deployment is
required for this item.
- Caveat:
these are still MVP proxy humans based on the available mannequin meshes, not
final production character art. They replace the single default dummy
presentation and create the runtime selection path for final realistic assets.
## Agrarian 0.1.O GPU Startup Visual Test Gate - 2026-05-19
- Completed the fourth `0.1.O Investor Visual MVP And Menu Polish` item:
`Add a visually verified packaged-client startup test using Sunshine/
Moonlight or another real GPU desktop capture path, because QEMU guest-agent
screenshots cannot validate the interactive rendered desktop.`
- Latest pushed game commit:
`11a1304 Add GPU startup visual test gate`.
- Changes:
- added `Docs/Ops/PackagedClientGpuStartupVisualTest.md` with the real-GPU
startup visual test process.
- added `Scripts/RunWindowsGpuStartupVisualCheck.bat` for Windows-side
packaged-demo and Sunshine service checks before a Moonlight capture
session.
- added `Scripts/verify_packaged_client_gpu_startup_visual_test.py`.
- linked the new packaged-client visual test from
`Docs/Ops/WindowsBuilderGpuRemoteAccess.md`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_packaged_client_gpu_startup_visual_test.py`
- `python3 -m py_compile Scripts/verify_packaged_client_gpu_startup_visual_test.py`
- `git diff --check`
- Windows helper check:
`Scripts\RunWindowsGpuStartupVisualCheck.bat --check-tools`
reported the packaged demo exists and `SunshineService` is running.
- Deployment classification:
visual QA/docs/scripts only. No multiplayer server deployment is required
for this item.
## Agrarian 0.1.O Segmented Startup/Pause Flow - 2026-05-19
- Completed the third `0.1.O Investor Visual MVP And Menu Polish` item:
`Make startup credits, character selection, server/join, loading, pause,
save, and quit feel like separate intentional segments, with no impression
that gameplay has started underneath the UI.`
- Latest pushed game commit:
`de02b20 Segment MVP startup and pause flow`.
- Changes:
- startup/menu control now uses UI-only input while credits and MVP menus are
active.
- added explicit segment labels for character selection, server join,
loading, pause, and saving.
- pause menu now states that gameplay is paused while the menu is active.
- Save & Quit now transitions through a dedicated `Saving World` screen
before issuing `AgrarianSaveWorld` and `quit`.
- added `SavingAndQuit` to the MVP frontend screen enum and debug screen
selection path.
- added `Scripts/verify_mvp_segmented_startup_pause_flow.py`.
- updated existing menu/startup verifiers for the UMG frontend and UI-only
input flow.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_mvp_segmented_startup_pause_flow.py`
- `python3 Scripts/verify_mvp_menu_input_and_quit_flow.py`
- `python3 Scripts/verify_startup_credits_sequence.py`
- `python3 Scripts/verify_mvp_frontend_umg_flow.py`
- `python3 -m py_compile ...`
- `git diff --check`
- Windows editor compile via `Scripts\BuildEditor-Windows.bat`
- Deployment classification:
client UI/C++ only. No multiplayer server deployment is required for this
item.
- Remaining known warning:
existing direct `NetCullDistanceSquared` deprecation warnings remain in
gameplay actors and are already tracked for future cleanup.
## Agrarian 0.1.O UMG Menu Flow - 2026-05-19
- Completed the second `0.1.O Investor Visual MVP And Menu Polish` item:
`Replace the native painted MVP frontend with a proper UMG menu flow using
real button widgets, hover/pressed states, keyboard/controller focus, mouse
click targets, and predictable back/escape behavior.`
- Latest pushed game commit:
`af1edb5 Replace MVP frontend with UMG menu flow`.
- Changes:
- converted `UAgrarianMvpFrontendWidget` away from native Slate paint and
manual hit-box mouse handling.
- rebuilt the MVP frontend with runtime UMG `WidgetTree` controls:
`UButton`, `UTextBlock`, `UVerticalBox`, `UHorizontalBox`, `UBorder`, and
`USizeBox`.
- added real click handlers for primary action, back, save/quit, and male/
female pioneer selection.
- added hover/pressed button styling and keyboard focus handoff to the
primary action button.
- preserved the existing player-controller API for screen switching,
character selection, high-contrast mode, confirm/back, and save/quit.
- added `Scripts/verify_mvp_frontend_umg_flow.py`.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_mvp_frontend_umg_flow.py`
- `python3 -m py_compile Scripts/verify_mvp_frontend_umg_flow.py`
- `git diff --check`
- Windows editor compile via `Scripts\BuildEditor-Windows.bat`
- Deployment classification:
client UI/C++ only. No multiplayer server deployment is required for this
item.
- Remaining known warning:
existing direct `NetCullDistanceSquared` deprecation warnings remain in
gameplay actors and are already tracked for future cleanup.
## Agrarian 0.1.O Systems-First Investor Demo Classification - 2026-05-19
- Completed the first `0.1.O Investor Visual MVP And Menu Polish` item:
`Reclassify the current investor demo as systems-first, not investor visual
MVP, until the visual/menu quality gate below is complete.`
- Latest pushed game commit:
`2a336ff Classify investor demo as systems first`.
- Changes:
- added `Docs/Investor/InvestorDemoStatus.md` with the current
systems-first prototype classification and the visual MVP gate criteria.
- updated investor legal notices to explicitly say the build is not yet an
investor visual MVP.
- updated startup/demo notice text to
`Systems-first investor prototype - visual MVP gate pending`.
- updated packaged Windows demo README generation to include the same
classification and warning.
- marked the roadmap item complete.
- Verification completed:
- `python3 Scripts/verify_investor_demo_systems_first_status.py`
- `python3 -m py_compile Scripts/verify_investor_demo_systems_first_status.py Scripts/verify_startup_credits_sequence.py`
- `git diff --check`
- Deployment classification:
client presentation/docs/packaged README only. No multiplayer server
deployment is required for this item.
## Agrarian 0.1.D Ground Zero Backfill / Windows Investor Demo Built - 2026-05-19
- Completed the remaining `0.1.D Single Biome MVP Map` items after the
investor-polish rule change:
- `Create playable test map`
- `Add resource nodes`
- Latest pushed game commit:
`25e20c8 Finish Ground Zero playable map resources`.
- Changes:
- updated the Ground Zero playable-map verifier to validate the current
real-terrain demo map instead of deprecated flat-test labels.
- verifier now checks safe player start, nearby wood/fiber/water/fire/
shelter/wildlife loop actors, map boundary, sky/weather controllers, and
absence of legacy flat-test actors.
- updated the playable loop smoke test to use the current Ground Zero demo
actor labels.
- extended resource verification across wood, fiber, edible plants, and
stone to require stable persistence IDs, yield item IDs, remaining
harvests, and readable first-pass material assignments.
- added the edible-plant material to natural-environment verification/docs.
- marked both remaining `0.1.D` roadmap items complete.
- Verification completed:
- `python3 -m py_compile Scripts/verify_test_map_placements.py Scripts/verify_ground_zero_resources.py Scripts/verify_ground_zero_natural_environment_pass.py Scripts/verify_playable_loop_smoke.py`
- `git diff --check`
- Windows Unreal: `Scripts\verify_test_map_placements.py`
- passed with 11 critical actors checked.
- map check reported 0 errors and 0 warnings.
- Windows Unreal: `Scripts\verify_ground_zero_resources.py`
- passed with 4 wood, 5 fiber, 3 edible plant, and 4 stone nodes.
- Windows Unreal: `Scripts\verify_ground_zero_natural_environment_pass.py`
- passed with 9 materials, 1 landscape, 17 dressed resource/water actors,
and 11 variation actors.
- Windows Unreal: `Scripts\verify_playable_loop_smoke.py`
- passed natural gather/craft/place/save/restore loop.
- Windows package status:
- package completed with `BUILD SUCCESSFUL`.
- output path:
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`.
- verified `AgrarianGame.exe`, `Start Agrarian Demo.cmd`,
`Start Agrarian Demo - DX12.cmd`,
`Start Agrarian Demo - Compatibility DX11.cmd`,
`Install Prerequisites.cmd`, and `README-Investor-Demo.txt`.
- output folder size checked at approximately `1.1G`.
- packaged README still shows
`Investor Demo v0.1.N - Build 2026.05.18`; this was left unchanged because
the work was a 0.1.D roadmap backfill on top of the current investor build
line, not a version downgrade.
- Deployment classification:
client/map/docs/verification only. No multiplayer server deployment was
required or performed.
- Remaining known warning:
existing direct `NetCullDistanceSquared` deprecation warnings remain and are
already tracked in the roadmap under `0.1.P MVP QA Gates`.
- Automation note:
item and final workflow summary emails delivered through `pacificao-mail`
local delivery tooling; AWS SES is not used for Agrarian workflow emails.
## Agrarian MVP Menu Input / Save-Quit Rebuild - 2026-05-18
- Fixed the follow-up investor-demo menu issue where the character selection
screen could still feel like it arrived after gameplay had begun and input
could fail to advance reliably.
- Latest pushed game commit:
`b9efcdf Harden MVP menu input and quit flow`.
- Changes:
- player movement/look input is now suppressed during the startup credits
delay and restored only after the MVP menu flow is completed.
- keyboard fallback input now handles Enter/Space, Backspace, and Escape at
the player-controller level when the MVP widget is visible.
- mouse clicks remain owned by the widget hit regions so character card
selection and button clicks do not accidentally skip screens.
- Escape now opens an MVP game menu after the frontend flow closes.
- the MVP game menu includes Resume and Save & Quit.
- Save & Quit runs `AgrarianSaveWorld` before issuing `quit`.
- the frontend backdrop is nearly opaque while active so the selection flow
reads as its own segment after the credits.
- Verification completed:
- `python3 -m py_compile Scripts/verify_mvp_character_selection_landing.py Scripts/verify_mvp_character_archetype_choice.py Scripts/verify_mvp_join_server_screen.py Scripts/verify_mvp_loading_screen.py Scripts/verify_startup_credits_sequence.py Scripts/verify_mvp_menu_input_and_quit_flow.py`
- `python3 Scripts/verify_mvp_character_selection_landing.py`
- `python3 Scripts/verify_mvp_character_archetype_choice.py`
- `python3 Scripts/verify_mvp_join_server_screen.py`
- `python3 Scripts/verify_mvp_loading_screen.py`
- `python3 Scripts/verify_startup_credits_sequence.py`
- `python3 Scripts/verify_mvp_menu_input_and_quit_flow.py`
- `git diff --check`
- Windows editor compile via `Scripts\BuildEditor-Windows.bat`
- Windows investor package via `Scripts\PackageWindowsDevelopment.bat`
- Windows package status:
- package completed with `BUILD SUCCESSFUL`.
- output path:
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`.
- verified `AgrarianGame.exe`, `Start Agrarian Demo.cmd`, and
`README-Investor-Demo.txt`.
- output folder size checked at approximately `1.1G`.
- packaged README still shows
`Investor Demo v0.1.N - Build 2026.05.18`.
- Remaining known warning:
existing direct `NetCullDistanceSquared` deprecation warnings remain and are
already tracked in the roadmap under `0.1.P MVP QA Gates`.
## Agrarian MVP Menu/Credits Fix - 2026-05-18
- Fixed the MVP startup/menu issue reported in the investor demo.
- Latest pushed game commit:
`15b40c5 Use supported MVP menu focus API`.
- Main menu-flow commit:
`3aac902 Fix MVP menu startup and mouse flow`.
- Changes:
- startup credits now play as their own full-screen segment before the MVP
character menu appears.
- MVP frontend waits for the credits window before spawning.
- mouse cursor/input is enabled for the MVP menu.
- painted menu now has explicit mouse hit regions for character cards,
continue, back, and enter-world actions.
- `Choose your first settler` was replaced with `Choose your first pioneer`.
- loading screen now has an `Enter Ground Zero` action that closes the MVP
menu and restores game input.
- Verification completed:
- `python3 Scripts/verify_mvp_character_selection_landing.py`
- `python3 Scripts/verify_mvp_character_archetype_choice.py`
- `python3 Scripts/verify_mvp_join_server_screen.py`
- `python3 Scripts/verify_mvp_loading_screen.py`
- `python3 Scripts/verify_startup_credits_sequence.py`
- `git diff --check`
- Windows editor build via `Scripts\BuildEditor-Windows.bat`
- Windows package status:
- C++ targets compiled successfully.
- cook/stage completed successfully.
- normal archive to `Builds\WindowsDevelopment` could not safely overwrite
because the existing demo files were locked over SMB, likely by an active
or recently tested demo process.
- copied the successful staged build to:
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment-MenuFix-20260518`.
- installed investor demo launchers in that fresh folder.
- verified the fresh folder contains `AgrarianGame.exe`,
`Start Agrarian Demo.cmd`, and `README-Investor-Demo.txt`.
- verified packaged README still shows
`Investor Demo v0.1.N - Build 2026.05.18`.
- Remaining known warning:
existing direct `NetCullDistanceSquared` deprecation warnings remain and are
already tracked in the roadmap under `0.1.P MVP QA Gates`.
## Agrarian 0.1.N Complete / Windows Investor Demo Built - 2026-05-18
- Completed `0.1.N MVP UI And UX` and built the Windows investor demo.
- Latest pushed game commit:
`a2cf951 Fix persistence subsystem forward declaration`.
- Final 0.1.N UI commit before build:
`485dd61 Verify MVP UI resolution scaling`.
- Demo metadata commit:
`43cece4 Update investor demo metadata to 0.1.N`.
- Build output:
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`.
- Investor demo version verified from the packaged README:
`Investor Demo v0.1.N - Build 2026.05.18`.
- Primary launchers/output:
- `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment/Start Agrarian Demo.cmd`
- `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment/Start Agrarian Demo - DX12.cmd`
- `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment/Start Agrarian Demo - Compatibility DX11.cmd`
- `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment/AgrarianGame.exe`
- Build verification completed:
- synced Windows build share to `a2cf951`
- ran `Scripts\PackageWindowsDevelopment.bat` through the Windows build VM
- Unreal editor target compiled successfully
- packaged game target compiled successfully
- cook/stage/archive completed with `BUILD SUCCESSFUL`
- output folder size checked at approximately `1.1G`
- Build notes:
- the first package attempt exposed a missing forward declaration for
`UAgrarianPersistenceSubsystem` in `AgrarianGameGameMode.h`; fixed and
pushed before the successful build.
- Unreal still reports non-blocking deprecation warnings for direct
`NetCullDistanceSquared` access. Track as future cleanup before Unreal API
upgrades.
- Deployment classification:
client UI/build only for 0.1.N. No multiplayer server deployment was required
or performed.
- Automation note:
final workflow summary email delivered through `pacificao-mail` local
delivery tooling; AWS SES is not used for Agrarian workflow emails.
## Agrarian 0.1.N UI Common Resolution Scaling - 2026-05-18
- Completed the final `0.1.N MVP UI And UX` roadmap item:
`Ensure UI scales on common resolutions`.
- Latest pushed game commit:
`485dd61 Verify MVP UI resolution scaling`.
- Tightened the native MVP frontend panel layout around explicit margins,
preferred panel dimensions, minimum panel bounds, and the existing supported
UI scale range.
- Added static/resolution verifier:
`/home/nathan/AgrarianGameBuild/Scripts/verify_mvp_ui_common_resolution_scaling.py`.
- Verification completed:
- `python3 -m py_compile Scripts/verify_mvp_ui_common_resolution_scaling.py`
- `python3 Scripts/verify_mvp_ui_common_resolution_scaling.py`
- `git diff --check`
- Deployment classification:
client UI only. No multiplayer server deployment is required for this item.
- Automation note:
item summary email delivered through `pacificao-mail` local delivery tooling;
AWS SES is not used for Agrarian workflow emails.
- Roadmap state:
`0.1.N MVP UI And UX` is complete. Next required action is updating investor
demo metadata, building the Windows investor demo, verifying the output, and
stopping. Multiplayer deployment is only needed if final build review finds a
server-relevant change.
## Latest AgrarianGameBuild Update - 2026-05-17
- Added native cinematic startup credits to the investor-demo notice sequence.
- Latest pushed game commit:
`075689d Add cinematic startup credits`.
- Credits include Nathan, Hunter, Lisa, River, Fisher, and the funding note for
cherished individuals, Pacificao seed funding, and Lina Family Investment
Funds.
- The credits run as native Slate drawing in `UAgrarianDemoNoticeWidget`: each
card slams in, holds briefly with a stylized illustration, and slides out.
- Updated investor demo labels to `0.1.H`.
- Added forest-fire risk/spread from irresponsible campfire/open-flame placement
to the roadmap as a future server-authoritative system.
- Validation completed:
- `python3 -m py_compile Scripts/verify_startup_credits_sequence.py`
- `python3 Scripts/verify_startup_credits_sequence.py`
- `git diff --check`
- Windows editor build via `Scripts\BuildEditor-Windows.bat`
- Next required action:
rebuild the Windows investor demo from `075689d`, verify archive output, and
stop.
- Completed the final `0.1.H Fire System` roadmap item:
`Connect rain/weather to fire behavior`.
- Latest pushed game commit:
`879a480 Connect campfires to weather`.
- Campfires now read replicated `AAgrarianGameState::Weather`, burn fuel faster
in rain and storms, and deterministically extinguish when wet weather leaves
fuel below the low-fuel threshold.
- Added `AAgrarianCampfire` Blueprint helpers:
`GetWeatherFuelDrainMultiplier()` and `IsWetWeatherActive()`.
- Added static verifier:
`/mnt/projects/AgrarianGameBulid/Scripts/verify_fire_weather_behavior.py`.
- Validation completed:
- `python3 -m py_compile Scripts/verify_fire_weather_behavior.py`
- `python3 Scripts/verify_fire_weather_behavior.py`
- `git diff --check`
- Windows editor build via `Scripts\BuildEditor-Windows.bat`
- Roadmap state:
- `0.1.H Fire System` is complete.
- Next required action in the active workflow is building the Windows investor
demo and stopping.
## Project State
Active repo:
```bash
/var/www/root_builds/agrarian
```
## Unraid Build Support Box
Unraid host being built to support Agrarian game/build work:
```text
Host: DevBox
IP: 192.168.5.8
SSH user: root
```
Do not store the plaintext Unraid password in this handoff file.
SMB / Windows share troubleshooting completed 2026-05-11:
- The initially supplied IP `192.168.4.8` was wrong/unreachable.
- Correct IP `192.168.5.8` is reachable by SSH.
- Samba is running and listening on ports `139` and `445`.
- WSD discovery is running via `wsdd2` on ports `3702` and `5355`.
- NetBIOS is disabled, so old Windows Network browsing is not expected to work;
modern Windows should use WSD or direct UNC paths.
- Workgroup is `WORKGROUP`.
- The issue was that all shares had SMB export disabled with `shareExport="-"`,
leaving `/etc/samba/smb-shares.conf` empty.
- After fixing share export, Samba lists these shares:
`appdata`, `backups`, `domains`, `isos`, `projects`, `system`, and `IPC$`.
Verification command:
```bash
ssh root@192.168.5.8 'smbclient -L //127.0.0.1 -N -m SMB3'
```
Windows direct access path for build work:
```text
\\192.168.5.8\projects
```
Security follow-up: at verification time the exported shares were public and
writeable. That is convenient for setup, but `appdata`, `domains`, and `system`
should be locked down or hidden after the Windows workflow is confirmed.
Ubuntu-Codex VM repair completed 2026-05-11:
- VM name: `Ubuntu-Codex`.
- It was running in libvirt but showing the OVMF UEFI shell instead of booting.
- The vdisk was blank/uninstalled:
`/mnt/cache/domains/Ubuntu-Codex/vdisk1.img`, raw 50 GiB.
- The attached Ubuntu ISO was corrupt/sparse. Kernel extraction produced zeroed
data, and GRUB reported `invalid magic number` / `you need to load the kernel
first`.
- Bad ISO preserved at:
`/mnt/cache/isos/ubuntu-24.04.4-live-server-amd64.iso.bad-sparse`.
- Fresh Ubuntu Server ISO downloaded from Ubuntu releases and verified against
`SHA256SUMS` as `OK`.
- VM config changed to:
- BIOS boot instead of OVMF/pure EFI.
- 4 GiB RAM.
- 4 vCPU, 2 cores x 2 threads.
- CD-ROM boot order 1, vdisk boot order 2.
- Previous VM XML backup:
`/boot/config/Ubuntu-Codex.before-bootfix-20260511.xml`.
- Final verification: VM reaches the Ubuntu Server installer language screen.
- After installation, eject/remove the ISO or set vdisk first so it boots into
the installed OS.
Windows 11 ISO refresh completed 2026-05-11:
- Existing `Win11_25H2_English_x64_v2.iso` was sparse/incomplete: logical size
7.9 GiB, actual disk use about 406 MiB.
- Bad copy preserved at:
`/mnt/cache/isos/Win11_25H2_English_x64_v2.iso.bad-sparse`.
- Fresh Microsoft-hosted ISO downloaded to:
`/mnt/cache/isos/Win11_25H2_English_x64_v2.iso`.
- Verified SHA256:
`768984706b909479417b2368438909440f2967ff05c6a9195ed2667254e465e3`.
- File ownership/permissions normalized for Unraid share access:
`nobody:users`, mode `0666`.
VirtIO driver ISO refresh completed 2026-05-11:
- Existing `virtio-win-0.1.285.iso` was sparse/incomplete: logical size
754 MiB, actual disk use about 94 MiB.
- Bad copy preserved at:
`/mnt/cache/isos/virtio-win-0.1.285.iso.bad-sparse`.
- Fresh Fedora `virtio-win` stable ISO downloaded to:
`/mnt/cache/isos/virtio-win-0.1.285.iso`.
- Verified byte size `789645312` and representative Windows 11 amd64 driver
files under `vioscsi`, `viostor`, `NetKVM`, and `Balloon`.
- Verified SHA256:
`e14cf2b94492c3e925f0070ba7fdfedeb2048c91eea9c5a5afb30232a3976331`.
- File ownership/permissions normalized for Unraid share access:
`nobody:users`, mode `0666`.
Windows-Builder VM created on Unraid 2026-05-12:
- VM name: `Windows-Builder`.
- Intended role: Windows build/Unreal development VM.
- No GPU passthrough yet; initial graphics is VNC/QXL.
- Machine/firmware: Q35 (`pc-q35-9.2`) with OVMF pure EFI.
- CPU/RAM: 8 vCPU with topology 4 cores x 2 threads, 8 GiB RAM.
- Disk: 100 GiB raw VirtIO disk at
`/mnt/cache/domains/Windows-Builder/vdisk1.img`.
- Attached Windows ISO:
`/mnt/cache/isos/Win11_25H2_English_x64_v2.iso`.
- Attached VirtIO ISO:
`/mnt/cache/isos/virtio-win-0.1.285.iso`.
- Network: bridged to `br0` with VirtIO NIC.
- TPM 2.0 emulator enabled for Windows 11 installer compatibility.
- UUID: `4244a763-91ae-4745-b417-224d42e9fb20`.
- MAC: `52:54:00:17:ec:5d`.
- Verified VM starts successfully. VNC display was `:1` / TCP `5901` at
creation time.
Windows-Builder boot fix 2026-05-12:
- User saw the OVMF mapping table / UEFI shell instead of Windows setup.
- Found the VM definition had drifted to bad install values: max memory about
14 GiB, current memory 1 GiB, and no TPM.
- Backups saved on Unraid:
- `/boot/config/Windows-Builder.before-bootfix-20260512.xml`
- `/boot/config/Windows-Builder.VARS.before-bootfix-20260512.fd`
- Re-defined VM with 8 GiB current/max RAM, 8 vCPU, OVMF/Q35, TPM 2.0, VNC/QXL,
Windows ISO boot order 1, VirtIO disk boot order 2, and a five-second OVMF
boot menu.
- Reset OVMF vars from `/usr/share/qemu/ovmf-x64/OVMF_VARS-pure-efi.fd`.
- Started VM, sent a boot key during the Windows DVD prompt, and verified by
screenshot that Windows 11 Setup reached the language selection screen.
Windows-Builder RDP/QEMU tools update 2026-05-13:
- Installed local headless RDP tooling on the Codex host:
`freerdp2-x11`, `xvfb`, `xdotool`, and `imagemagick`.
- Used headless RDP to connect to `192.168.5.12` as local admin `nathan`.
- Extracted `qemu-ga-x86_64.msi` and `virtio-win-guest-tools.exe` from the
VirtIO ISO on Unraid and staged them through RDP drive redirection.
- Copied installers into `C:\Users\nathan\Downloads`.
- Installed QEMU Guest Agent from an elevated Windows command prompt.
- Verified Windows service `QEMU-GA` is running.
- Verified from Unraid:
- `virsh domifaddr Windows-Builder --source agent` reports
`192.168.5.12/22`.
- guest agent responds to `guest-info`, version `110.0.2`.
- active NIC is `Red Hat VirtIO Ethernet Adapter`, status `Up`, MAC
`52-54-00-17-EC-5D`, link speed `10 Gbps`.
- RDP/SMB/RPC remain reachable on `192.168.5.12`.
- Also ran `virtio-win-guest-tools.exe /S` from elevated prompt to install the
bundled VirtIO guest tools package.
Ubuntu-Codex VM network fix 2026-05-13:
- Initial SSH to `nathan@192.168.5.10` failed with `No route to host`.
- From Unraid, the VM was running with VirtIO NIC model but no guest IPv4.
- Runtime NIC MAC was `34:c9:3d:2d:09:74`, conflicting with the Unraid host
wireless-derived MAC pattern and unsuitable for a VM.
- XML backups saved on Unraid:
- `/boot/config/Ubuntu-Codex.before-netfix-20260513.xml`
- `/boot/config/Ubuntu-Codex.persistent.before-netfix-20260513.xml`
- Changed persistent VM NIC MAC to `52:54:00:a5:cf:63`.
- Mounted the guest vdisk offline via `qemu-nbd`; logs confirmed Ubuntu already
had `virtio_net` in use, so there is no separate Linux VirtIO network driver
package like on Windows.
- Added `/etc/netplan/99-static-enp1s0.yaml` with static
`192.168.5.10/22`, gateway `192.168.4.1`, DNS `192.168.4.1` and `1.1.1.1`.
- Disabled cloud-init network rewrites with
`/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`.
- Installed `qemu-guest-agent`; Unraid can now report guest IPs through the
agent.
- Verified SSH works, `enp1s0` is up at `192.168.5.10/22`, `ethtool -i enp1s0`
reports driver `virtio_net`, and a 20-packet ping test had `0%` loss.
- Passwordless sudo enabled for `nathan` via
`/etc/sudoers.d/90-nathan-nopasswd`.
- Verified with `visudo -cf /etc/sudoers.d/90-nathan-nopasswd` and
`sudo -n true`.
Ubuntu-Codex DevBox SMB name-resolution fix 2026-05-13:
- User reported CIFS mount path `//DevBox/projects` failed before mounting with
`could not resolve address for DevBox`.
- Did not mount the share.
- Cause: Ubuntu was only using `/etc/hosts` plus DNS for host lookup; DNS did
not know `DevBox`. Unraid has NetBIOS disabled and WSD enabled, which is fine
for Windows discovery but not enough for Linux bare-name CIFS resolution.
- Backed up Ubuntu hosts file to:
`/etc/hosts.bak.20260513-devbox-resolution`.
- Added:
`192.168.5.8 DevBox devbox DevBox.local devbox.local`.
- Verified `getent hosts DevBox`, `ping DevBox`, and SMB port 445 via
hostname. Share was not mounted.
Agrarian Earth-scale tile streaming design update 2026-05-15:
- Completed the roadmap item to create the Earth-scale terrain/tile streaming
design document.
- Repo path:
`/mnt/projects/AgrarianGameBulid/Docs/Terrain/EarthScaleTileStreamingDesign.md`
- Content captured:
- 1 km x 1 km Earth-scale tile architecture for an eventual 510-520 million
possible tile world.
- Ground Zero MVP tile identity:
`gz_us_ca_pacifica_utm10n_e544_n4160`.
- Coordinate strategy: registry maps real-world coordinates to logical tiles;
Unreal uses tile-local metric coordinates and World Partition placement.
- Projection, UTM-zone, dateline, and polar handling approach.
- Tile adjacency/stitching, package versioning, immutable publication, and
save-data separation rules.
- MVP static HTTP tile delivery protocol using
`http://maps.agrariangame.com:18080`.
- Decision: the LAN-hosted `Agrarian-TileServer` VM is acceptable for MVP and
internal closed testing; move public delivery to an external cloud/CDN path
before broader public testing.
- Client cache layout, cache retention, redownload/revalidation behavior,
single-tile import pipeline, biome/resource inference pipeline, QA gates,
and World Partition requirements.
- Roadmap updated:
- Marked the Earth-scale terrain/tile streaming design document complete.
- Marked related Phase 0.7 design decisions complete.
- Immediate next item is creating the economy and AGR design document.
Agrarian economy and AGR design update 2026-05-15:
- Completed the roadmap item to create the economy and AGR design document.
- Repo path:
`/mnt/projects/AgrarianGameBulid/Docs/EconomyAndAgrDesignDocument.md`
- Content captured:
- Economy progression from survival barter to specialization, settlements,
regional trade, and later AGR utility.
- MVP economy scope: secure barter/direct trade, ownership transfer,
server-side validation, transaction records, and persistence.
- AGR MVP boundary: design/placeholder only; no token transfers, wallet
requirement, paid survival advantage, marketplace, or real-money utility in
the first playable MVP.
- Wallet/account direction: defer custodial vs non-custodial choice; do not
store wallet secrets in the Unreal client, saves, logs, config, or repo.
- Testnet/devnet, confirmation, in-game ledger, anti-abuse, fairness, legal,
compliance, and testing gates.
- Roadmap updated:
- Marked the economy and AGR design document complete.
- Marked related AGR design/planning items complete.
- Immediate next item is creating art direction, UX/HUD direction, coding
standards, Blueprint standards, and asset/folder naming standards.
Agrarian art/UX/code/asset standards update 2026-05-15:
- Completed the roadmap item to create art direction, UX/HUD direction, coding
standards, Blueprint standards, and asset/folder naming standards.
- Repo path:
`/mnt/projects/AgrarianGameBulid/Docs/ArtUxCodeAndAssetStandards.md`
- Content captured:
- Grounded visual/art direction for real terrain, survival materials, Ground
Zero, character presentation, and startup/demo UX.
- HUD/UX priorities for survival, interaction, inventory, crafting,
building, weather, and player-facing copy.
- `Content/Agrarian` folder standards and Unreal asset naming prefixes.
- Data asset and save/persistence standards.
- C++ and Blueprint standards for server authority, replication, categories,
testing, and prototype content.
- Added `.gitkeep` placeholders for missing Agrarian content folders including
Audio, Characters, Environment, Items, Materials, Prototypes, Systems, UI,
Developer, Blueprint subfolders, and DataAsset subfolders.
- Roadmap updated:
- Marked the standards item complete.
- Marked the corresponding Phase 0.3 and 0.4 folder/naming checklist items
complete.
- Immediate next item is defining what qualifies as the 6-month MVP and what
is explicitly excluded.
Agrarian six-month MVP definition update 2026-05-15:
- Completed the roadmap item to define what qualifies as the six-month MVP and
what is explicitly excluded.
- Repo paths:
- `/mnt/projects/AgrarianGameBulid/Docs/SixMonthMvpDefinition.md`
- `/mnt/projects/AgrarianGameBulid/Docs/MvpSurvivalReadinessCriteria.md`
- Content captured:
- Six-month MVP statement and acceptance checklist.
- Target test audience and player count: minimum 2-player proof, target
4-player closed-test smoke group, stretch 8-player test if stable.
- Required pillars for startup/entry, Ground Zero map, survival loop,
time/weather, multiplayer, persistence, UI/UX, and build/operations.
- Explicit exclusions including full Earth-scale world, complete
farming/livestock, family/generation systems, full economy/AGR utility,
wallet linking, public Steam/Epic launch, vehicles, final art/audio, and
public anti-cheat/moderation suite.
- Acceptable first-pass biome/resource accuracy for Ground Zero.
- Roadmap updated:
- Marked Version 0.01 Foundation Baseline complete.
- Advanced current version to `0.1 Foundational Survival MVP`.
- Immediate next item is deciding first-person, third-person, or hybrid
camera.
- Milestone build rule:
- Fresh Windows Development packaged build completed successfully after the
`0.01` milestone closed.
- Output archive:
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`
- Build command:
`UNRAID_PASSWORD=... /home/nathan/bin/winbuilder cmd 'set AGRARIAN_NO_PAUSE=1 && pushd \\DevBox\projects\AgrarianGameBulid && Scripts\PackageWindowsDevelopment.bat'`
- Smoke launch used the packaged `AgrarianGame.exe` with `-nullrhi`,
`-nosound`, and an explicit log path:
`/mnt/projects/AgrarianGameBulid/Saved/Logs/PackagedSmoke-20260515-001.log`
- Smoke result: process was stopped after 60 seconds because it did not
auto-exit in headless mode, but the log confirms `UEngine::Browse`,
`LoadMap`, and `Load map complete` for
`/Game/Agrarian/Maps/L_GroundZeroTerrain_Test`.
Agrarian camera perspective decision update 2026-05-15:
- Completed the roadmap item to decide first-person, third-person, or hybrid
camera.
- Decision: hybrid camera with third person as the default view and an optional
first-person toggle that players can switch back from.
- Repo path:
`/mnt/projects/AgrarianGameBulid/Docs/CameraPerspectiveDecision.md`
- Roadmap updated:
- Marked the camera decision complete in `1.1 Core Player Foundation`.
- Added `Implement first/third-person camera toggle` as the next roadmap
implementation item.
- Immediate next item is implementing the first/third-person camera toggle.
Agrarian roadmap aging/care-quality update 2026-05-15:
- User asked where the roadmap tracks character aging, lifetime care quality,
stat effects based on care received, and visual skin/body aging.
- Updated `/mnt/projects/AgrarianGameBulid/AGRARIAN_DEVELOPMENT_ROADMAP.md`.
- Added near-term guardrails:
- Phase `1.2 Character Stats`: reserve long-term care history fields for
nutrition, illness, injury, sleep, shelter, stress, workload, and treatment
quality.
- Phase `1.13 Persistence MVP`: save long-term character care history
placeholders without applying aging gameplay yet.
- Expanded Phase `4.1 Aging And Lifespan` with lifetime care quality model,
lifetime care tracking, stat impacts, childhood/development care effects, and
long-term consequences/benefits from poor or good care.
- Added Phase `4.5 Character Visual Aging And Condition` for visual age stages,
skin aging, hair aging, body/posture aging, care-quality appearance,
MetaHuman/material/mesh strategy, morph/material parameters, replication,
persistence, and UI/profile presentation.
- Immediate next roadmap item remains `Implement first/third-person camera
toggle`.
Unraid DevBox network discovery fix 2026-05-13:
- Fixed discovery on Unraid because Windows and Ubuntu clients could not reach
`DevBox` by name.
- Backups on Unraid:
- `/boot/config/ident.cfg.bak.20260513-discovery`
- `/boot/config/avahi-daemon.conf.bak.20260513-discovery`
- `/boot/config/go.bak.20260513-discovery`
- Enabled NetBIOS in `/boot/config/ident.cfg`:
`USE_NETBIOS="yes"`.
- Restarted Samba; verified `nmbd` is running and UDP 137/138 are listening.
- Fixed Avahi runtime publishing:
- `host-name=DevBox`
- `allow-interfaces=br0`
- `publish-workstation=yes`
- `use-ipv6=no`
- Restarted Avahi; it now advertises `DevBox.local` instead of
`DevBox-4.local`.
- Added a boot-time block to `/boot/config/go` so the Avahi runtime changes are
re-applied after reboot.
- Verified from Windows VM:
- `Resolve-DnsName DevBox` returns `DevBox.local` and IPv4 `192.168.5.8`.
- `Test-NetConnection DevBox -Port 445` succeeds.
- `Test-NetConnection DevBox.local -Port 445` succeeds.
- Verified from `ubuntu-codex`: hostname resolution and TCP 445 work for
`DevBox` and `DevBox.local`.
- Caveat: arbitrary Linux clients using bare `//DevBox/...` still need DNS or
`/etc/hosts` for the single-label name, or they should use `DevBox.local`
with mDNS enabled.
Active branch:
```bash
2.0
```
The 2.0 branch is intended to become the main development line after final build
validation. The worktree may contain build-generated files after local compiles;
do not commit generated build output.
## Current Build Baseline
Validated locally during the final pre-main pass:
```bash
env JOBS=8 ./contrib/build-linux.sh
env JOBS=8 ./contrib/build-linux-wallet.sh
./contrib/smoke-test-daemon.sh
./contrib/smoke-test-wallet.sh
./contrib/smoke-test-qt.sh
```
Expected successful artifacts:
```bash
src/agrariand
src/agrarian-cli
src/agrarian-tx
src/qt/agrarian-qt
```
Additional validation completed during this pass:
```bash
ALLOW_ROOT_BUILD_MENU=1 AGRARIAN_MENU_CHOICE=windows-daemon WORKDIR=/var/www/root_builds/agrarian BRANCH=2.0 JOBS=8 ./contrib/agrarian-build-menu.sh
ALLOW_ROOT_BUILD_MENU=1 AGRARIAN_MENU_CHOICE=windows-qt WORKDIR=/var/www/root_builds/agrarian BRANCH=2.0 JOBS=8 ./contrib/agrarian-build-menu.sh
ALLOW_ROOT_BUILD_MENU=1 AGRARIAN_MENU_CHOICE=linux-arm64-daemon WORKDIR=/var/www/root_builds/agrarian BRANCH=2.0 JOBS=8 ./contrib/agrarian-build-menu.sh
ALLOW_ROOT_BUILD_MENU=1 AGRARIAN_MENU_CHOICE=linux-arm64-qt WORKDIR=/var/www/root_builds/agrarian BRANCH=2.0 JOBS=8 ./contrib/agrarian-build-menu.sh
```
The ARM64 daemon cross-build produced ARM aarch64 ELF binaries. The ARM64 Qt
target correctly refused to run on x86_64 and remains native-only.
## Build Menu
Use the menu for fresh-machine testing:
```bash
curl -L https://raw.githubusercontent.com/pacificao/agrarian/2.0/contrib/agrarian-build-menu.sh -o agrarian-build-menu.sh
chmod +x agrarian-build-menu.sh
BRANCH=2.0 ./agrarian-build-menu.sh
```
For controlled root-only environments only:
```bash
ALLOW_ROOT_BUILD_MENU=1 BRANCH=2.0 ./contrib/agrarian-build-menu.sh
```
The menu now includes Linux, Windows, and ARM64 targets. ARM64 daemon cross-build
from x86_64 is supported. ARM64 Qt is native-only for now.
## Network Notes
Mainnet P2P port:
```text
51336
```
Seed nodes currently use:
```text
node1.agrariancoin.com
node2.agrariancoin.com
node3.agrariancoin.com
node4.agrariancoin.com
node5.agrariancoin.com
```
The daemon has been used to test peer visibility with another node at
`dev.barnealogy.com`. Recheck connectivity after major consensus or network
changes.
## Important Decisions
- Keep Berkeley DB at 4.8.30 for 2.0 wallet compatibility.
- Do not upgrade to BDB 18.x in this release.
- Treat a SQLite wallet backend as a future migration project with backup,
migration, and rollback documentation.
- For now, Linux validation is the fastest correctness loop, but Windows builds
must pass before release.
- Do not assume Linux success guarantees Windows success; cross-build and Qt
plugin/link behavior can fail independently.
## Known Warning Areas
- `std::random_shuffle` deprecation warnings remain.
- Some vendored dependency warnings remain.
- Some old Boost/LevelDB warning noise remains.
- Cleanup should be correctness-driven, not broad cosmetic churn before release.
## Safe Cleanup Pattern
Before committing, stage intentional source/doc/script files first, then revert
unstaged build output:
```bash
git add <intentional files>
git restore .
git clean -nd
```
Only run `git clean -fd` after reviewing the dry-run output.
## Ubuntu-Codex DevBox Project Mount / GitHub Setup - 2026-05-13
- On `ubuntu-codex` (`192.168.5.10`), mounted Unraid `//DevBox/projects` at
`/mnt/projects`.
- Persistent mount added to `/etc/fstab` using guest/public SMB access:
`//DevBox/projects /mnt/projects cifs guest,uid=nathan,gid=nathan,file_mode=0775,dir_mode=0775,vers=3.1.1,noserverino,_netdev,nofail,x-systemd.automount,x-systemd.idle-timeout=600 0 0`
- The `projects` share is public on Unraid, so no SMB password is needed for
this mount.
- Installed `git-lfs` on `ubuntu-codex` and ran `git lfs install`.
- GitHub SSH access on `ubuntu-codex` was configured with a GitHub-only SSH
identity copied from the working local Codex host key. Do not write private
key material or passwords into handoff files.
- A newly generated Ubuntu-Codex-specific GitHub key was preserved as
`~/.ssh/id_ed25519_ubuntu_codex_generated`; it is not active unless added to
GitHub later and referenced in `~/.ssh/config`.
- Cloned the private Unreal project repo:
`git@github.com:pacificao/AgrarianGameBuild.git`
- Clone target, matching the requested path spelling:
`/mnt/projects/AgrarianGameBulid`
- Verification:
- `git status --short --branch` returned clean `main...origin/main`.
- `git fetch --dry-run origin` succeeded.
- `git push --dry-run origin HEAD` succeeded with `Everything up-to-date`.
- Git LFS hooks under `.git/hooks` are executable after changing CIFS
`file_mode` to `0775`.
## Windows-Builder Tooling Setup - 2026-05-13
- Target toolchain for Agrarian Game build VM:
- Unreal Engine `5.7`
- Visual Studio Community `2026`
- Previously installed/verified:
- VirtIO guest tools
- QEMU guest agent
- VirtIO network driver
- Installed Visual Studio Community 2026 from Microsoft stable 18.x bootstrapper:
- Install path: `C:\Program Files\Microsoft Visual Studio\2026\Community`
- Verified `devenv.exe` exists.
- Verified MSVC toolchain exists at:
`C:\Program Files\Microsoft Visual Studio\2026\Community\VC\Tools\MSVC\14.51.36231`
- Workloads requested:
- `Microsoft.VisualStudio.Workload.NativeDesktop`
- `Microsoft.VisualStudio.Workload.NativeGame`
- `--includeRecommended` for recommended SDK/tooling components.
- Installed Epic Games Launcher from official Epic MSI:
- MSI cached on Unraid:
`/mnt/user/isos/EpicGamesLauncherInstaller.msi`
- Launcher verified at:
`C:\Program Files\Epic Games\Launcher\Portal\Binaries\Win64\EpicGamesLauncher.exe`
- Git was intentionally skipped on Windows for now because `ubuntu-codex`
manages the repository on `/mnt/projects` / `\\DevBox\projects`.
- Remaining manual/interactive step:
- Log into Epic Games Launcher on Windows-Builder and install Unreal Engine
`5.7`. Epic does not provide a normal unauthenticated silent installer for
launcher-managed Unreal Engine installs.
Windows-Builder disk expansion on 2026-05-13:
- User increased VM virtual disk from 100GB to 250GB.
- Windows Disk Management could not extend `C:` because the Windows Recovery
partition was immediately after `C:`.
- Inside Windows:
- Disabled WinRE with `reagentc /disable`.
- Removed Disk 0 Partition 4, the small Recovery partition.
- Extended `C:` to the supported maximum.
- Re-enabled WinRE with `reagentc /enable`.
- Final state:
- `C:` NTFS size: `268207894528` bytes, roughly 249.8GB.
- Free space immediately after expansion: `206745464832` bytes, roughly
192.6GB.
- WinRE status: enabled, now located under partition 3 / `C:`.
## Agrarian Game Build Lane And Input Setup - 2026-05-13/14
- Current Unreal project checkout:
`/mnt/projects/AgrarianGameBulid`
- Windows share path:
`\\DevBox\projects\AgrarianGameBulid`
- Windows-Builder `P:` drive:
`P:` is mapped to `\\DevBox\projects` for the Windows `nathan` user.
`P:\AgrarianGameBulid\AgrarianGame.uproject` was verified.
- Persistent Windows mapping support:
- Scheduled task: `MapDevBoxProjectsPLogon`
- Script: `C:\Temp\map-p-drive.cmd`
- Log: `C:\Temp\map-p-drive.log`
- Codex Windows helper:
`/home/nathan/bin/winbuilder`
- Uses Unraid QEMU guest agent to run Windows commands.
- Requires `UNRAID_PASSWORD` in the environment.
- Do not write the password into scripts or handoff files.
- Codex Unreal build helper:
`/home/nathan/bin/agrarian-build-editor`
- Verified successful after latest input asset changes.
Repo commit completed:
```text
744b3c3 Add interact input assets
```
That commit includes:
- `Scripts/RunUnrealPython-Windows.bat`
- `Scripts/setup_interact_input.py`
- `Scripts/verify_interact_input.py`
- `Content/Input/Actions/IA_Interact.uasset`
- updated `Content/Input/IMC_Default.uasset`
- updated `Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset`
- updated `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Completed roadmap item:
- Created `IA_Interact`.
- Bound `IA_Interact` to `E`.
- Bound `IA_Interact` to `Gamepad_FaceButton_Left`.
- Assigned `IA_Interact` to `BP_ThirdPersonCharacter.InteractAction`.
- Verified the saved assets with a fresh Unreal command-mode load using
`Scripts/verify_interact_input.py`.
- Verified `AgrarianGameEditor Win64 Development` still builds through the
Codex headless Windows build lane.
Next roadmap item:
- Create item definition assets for wood, stone, fiber, food, meat, hide, and
primitive structure parts.
## Agrarian Item Definition Assets - 2026-05-13/14
Completed the item definition asset roadmap item.
Added scripts:
- `Scripts/setup_item_definitions.py`
- `Scripts/verify_item_definitions.py`
Created data assets under:
```text
/Game/Agrarian/DataAssets/Items
```
Created item definitions:
- `DA_Item_Wood` / `wood`
- `DA_Item_Stone` / `stone`
- `DA_Item_Fiber` / `fiber`
- `DA_Item_Food` / `food`
- `DA_Item_Meat` / `meat`
- `DA_Item_Hide` / `hide`
- `DA_Item_PrimitiveFrame` / `primitive_frame`
- `DA_Item_PrimitiveWallPanel` / `primitive_wall_panel`
- `DA_Item_PrimitiveRoofPanel` / `primitive_roof_panel`
Verification:
- `Scripts/verify_item_definitions.py` passed in Unreal command mode from a
fresh editor load.
- `/home/nathan/bin/agrarian-build-editor` succeeded after the new assets.
Roadmap:
- `AGRARIAN_DEVELOPMENT_ROADMAP.md` now marks the item definition asset task
complete.
Git:
- These item definition changes are not committed yet as of this handoff note.
Next roadmap item:
- Create recipe data assets for campfire, primitive shelter, basic tool, and
bandage.
## Agrarian Recipe Data Assets - 2026-05-13/14
Completed the recipe data asset roadmap item.
Added scripts:
- `Scripts/setup_recipe_definitions.py`
- `Scripts/verify_recipe_definitions.py`
Created recipe data assets under:
```text
/Game/Agrarian/DataAssets/Recipes
```
Created recipes:
- `DA_Recipe_Campfire` / `campfire`
- `DA_Recipe_PrimitiveShelter` / `primitive_shelter`
- `DA_Recipe_BasicTool` / `basic_tool`
- `DA_Recipe_Bandage` / `bandage`
Verification:
- `Scripts/verify_recipe_definitions.py` passed in Unreal command mode from a
fresh editor load.
- `/home/nathan/bin/agrarian-build-editor` succeeded after the new assets.
Roadmap:
- `AGRARIAN_DEVELOPMENT_ROADMAP.md` now marks the recipe data asset task
complete.
- Primitive tool, campfire, shelter, and bandage recipe line items are marked
complete under Primitive Crafting.
- Added a follow-up item to create item definition assets for craft result
items: campfire, primitive shelter, basic tool, and bandage.
Git:
- These item and recipe asset changes are not committed yet as of this handoff
note.
Next roadmap item:
- Create item definition assets for craft result items, then create Blueprint
child actors for wood resource, campfire, primitive shelter, and first
wildlife species.
## Agrarian Crafted Result Items And Playable Blueprints - 2026-05-13/14
Completed the next roadmap item after recipe data assets.
Extended item definition scripts:
- `Scripts/setup_item_definitions.py`
- `Scripts/verify_item_definitions.py`
Added crafted result item definitions:
- `DA_Item_Campfire` / `campfire`
- `DA_Item_PrimitiveShelter` / `primitive_shelter`
- `DA_Item_BasicTool` / `basic_tool`
- `DA_Item_Bandage` / `bandage`
Added Blueprint helper scripts:
- `Scripts/setup_playable_blueprints.py`
- `Scripts/verify_playable_blueprints.py`
Created Blueprint child actors:
- `/Game/Agrarian/Blueprints/Resources/BP_WoodResourceNode`
- `/Game/Agrarian/Blueprints/Structures/BP_Campfire`
- `/Game/Agrarian/Blueprints/Structures/BP_PrimitiveShelter`
- `/Game/Agrarian/Blueprints/Wildlife/BP_RabbitWildlife`
Verification:
- `Scripts/verify_item_definitions.py` passed in Unreal command mode from a
fresh editor load.
- `Scripts/verify_playable_blueprints.py` passed in Unreal command mode from a
fresh editor load.
- `/home/nathan/bin/agrarian-build-editor` succeeded after the new assets.
Roadmap:
- `AGRARIAN_DEVELOPMENT_ROADMAP.md` now marks crafted result item definitions
and first playable Blueprint child actors complete.
Git:
- These item, recipe, and Blueprint asset changes are not committed yet as of
this handoff note.
Next roadmap item:
- Place the wood resource node, campfire, primitive shelter, and rabbit
wildlife Blueprint in the test map.
## Codex Local Session Config - 2026-05-13/14
Local Codex config was updated at:
```text
/home/nathan/.codex/config.toml
```
Current important setting:
```toml
sandbox_mode = "danger-full-access"
```
Reason:
- The current session repeatedly hit:
`bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted`
- New/resumed trusted sessions should avoid the broken Linux sandbox wrapper
while keeping normal approval prompts active.
- This is not the full approval/sandbox bypass mode.
Security note:
- Do not store plaintext passwords, private SSH keys, Mailgun/API secrets, or
Unraid/Windows login passwords in handoff files.
## Agrarian Test Map Placements - 2026-05-13/14
Completed the next roadmap item after playable Blueprint child actors.
Added editor automation helper:
- `Source/AgrarianGame/AgrarianEditorAutomationLibrary.h`
- `Source/AgrarianGame/AgrarianEditorAutomationLibrary.cpp`
Purpose:
- Exposes `SpawnActorInEditorWorld` for Unreal Python setup scripts.
- Bypasses Unreal's viewport-backed editor placement path, which crashed in
command-mode `-NullRHI` while spawning actors.
- `Source/AgrarianGame/AgrarianGame.Build.cs` adds `UnrealEd` only for editor
builds.
Added placement scripts:
- `Scripts/setup_test_map_placements.py`
- `Scripts/verify_test_map_placements.py`
Placed actors in `/Game/ThirdPerson/Lvl_ThirdPerson`:
- `AGR_WoodResourceNode_01`
- `AGR_Campfire_01`
- `AGR_PrimitiveShelter_01`
- `AGR_RabbitWildlife_01`
Verification:
- `Scripts/verify_test_map_placements.py` passed in Unreal command mode from a
fresh editor load.
- `/home/nathan/bin/agrarian-build-editor` succeeded after the map placement
and helper code changes.
Roadmap:
- Test map placement item is complete.
- Near-term placement/test items for wood resource, campfire, primitive
shelter, and rabbit wildlife are complete.
Git:
- These map placement and helper-code changes are not committed yet as of this
handoff note.
Next roadmap item:
- Run the first full gather -> inventory -> craft -> place shelter -> save/load
loop.
## Agrarian Playable Loop Smoke Test - 2026-05-13/14
Completed the next roadmap item after test map placement.
Updated editor automation:
- Extended `Source/AgrarianGame/AgrarianEditorAutomationLibrary.h`
- Extended `Source/AgrarianGame/AgrarianEditorAutomationLibrary.cpp`
Added verification script:
- `Scripts/verify_playable_loop_smoke.py`
What the smoke test covers:
- Loads `/Game/ThirdPerson/Lvl_ThirdPerson`.
- Finds placed `AGR_WoodResourceNode_01`.
- Spawns a test `BP_ThirdPersonCharacter`.
- Gathers wood through the real interactable resource node path.
- Seeds only currently-unobtainable primitive shelter ingredients.
- Crafts `primitive_shelter` through `UAgrarianCraftingComponent`.
- Places `BP_PrimitiveShelter` through `UAgrarianBuildingPlacementComponent`.
- Captures persistent actor state from `UAgrarianPersistentActorComponent`.
- Restores captured primitive shelter actors from saved state data.
Verification:
- `/home/nathan/bin/agrarian-build-editor` succeeded after helper changes.
- `Scripts/verify_playable_loop_smoke.py` passed in Unreal command mode:
`PASS: gathered wood 0->2, crafted primitive_shelter, placed shelter, saved
2 persistent actor(s), restored 2 actor(s)`.
Roadmap:
- Gather -> inventory -> craft -> place shelter -> save/load data smoke loop is
complete.
- Added follow-up item to make primitive shelter ingredients naturally
obtainable in normal play.
- Added follow-up item for a later PIE/server persistence test using
`UAgrarianPersistenceSubsystem` with a live GameInstance.
Git:
- These playable-loop smoke test changes are not committed yet as of this
handoff note.
Next roadmap item:
- Test wildlife damage/death/harvest loop.
## Agrarian Wildlife Damage/Harvest Smoke Test - 2026-05-14
Completed the next roadmap item after the playable loop smoke test.
Added verification script:
- `Scripts/verify_wildlife_loop.py`
What the smoke test covers:
- Loads `/Game/ThirdPerson/Lvl_ThirdPerson`.
- Finds placed `AGR_RabbitWildlife_01`.
- Spawns a test `BP_ThirdPersonCharacter`.
- Applies nonlethal wildlife damage and verifies the rabbit enters fleeing
state.
- Applies lethal wildlife damage and verifies the rabbit is dead.
- Harvests the dead rabbit.
- Verifies `meat` and `hide` are added to the character inventory.
- Verifies the rabbit cannot be harvested twice.
Verification:
- `Scripts/verify_wildlife_loop.py` passed in Unreal command mode:
`PASS: wildlife damage/death/harvest verified health 12.0->11.0->0, meat
0->1, hide 0->1`.
Roadmap:
- Wildlife damage/death/harvest loop is complete.
- Wildlife damage task is complete.
Git:
- These wildlife smoke test changes are not committed yet as of this handoff
note.
Next roadmap item:
- Make all primitive shelter ingredients obtainable through normal play.
## Agrarian Natural Primitive Shelter Ingredient Loop - 2026-05-14
Completed the next roadmap item after wildlife damage/death/harvest testing.
Added recipe assets:
- `DA_Recipe_PrimitiveFrame`
- `DA_Recipe_PrimitiveWallPanel`
- `DA_Recipe_PrimitiveRoofPanel`
Added gather path:
- `BP_FiberResourceNode`
- Placed `AGR_FiberResourceNode_01` in `/Game/ThirdPerson/Lvl_ThirdPerson`
Updated existing playable assets:
- Wood resource node now has enough harvests for a full primitive shelter loop.
- Rabbit wildlife now yields 2 hide so one rabbit satisfies the shelter recipe.
Updated automation:
- Added `RunNaturalShelterLoopSmokeTest` to
`UAgrarianEditorAutomationLibrary`.
- Updated `Scripts/verify_playable_loop_smoke.py` so it no longer seeds missing
shelter ingredients. It gathers wood, gathers fiber, harvests hide, crafts
primitive frame/wall/roof parts, crafts `primitive_shelter`, places it, and
verifies save/restore state.
Verification:
- `Scripts/verify_recipe_definitions.py` passed.
- `Scripts/verify_playable_blueprints.py` passed.
- `Scripts/verify_test_map_placements.py` passed.
- `Scripts/verify_playable_loop_smoke.py` passed:
`PASS: naturally gathered wood=26 fiber=24 hide=2, crafted parts 2/4/2,
crafted and placed primitive_shelter, saved 2 persistent actor(s), restored
2 actor(s)`.
- `Scripts/verify_wildlife_loop.py` passed after the hide-yield change:
`PASS: wildlife damage/death/harvest verified health 12.0->11.0->0, meat
0->1, hide 0->2`.
Roadmap:
- Natural primitive shelter ingredients are complete.
- Fiber resource is complete.
- Primitive shelter structure part recipes are complete.
Git:
- These natural shelter loop changes are not committed yet as of this handoff
note.
Next roadmap item:
- Add a PIE/server persistence test that exercises `UAgrarianPersistenceSubsystem`
with a live GameInstance.
## Agrarian Live GameInstance Persistence Automation - 2026-05-14
Completed the next roadmap item after the natural primitive shelter ingredient
loop.
Added native Unreal automation:
- `Source/AgrarianGame/AgrarianPersistenceAutomationTest.cpp`
- Test name: `Agrarian.PersistenceSubsystem.LiveGameInstance`
Updated editor automation:
- Added `RunPersistenceSubsystemSmokeTest` to
`UAgrarianEditorAutomationLibrary`.
- The smoke test uses the live `UAgrarianPersistenceSubsystem`, a temporary
save slot named `AgrarianAutomationPersistence`, registers the
`primitive_shelter` actor class, saves a spawned shelter, reloads the save,
restores the actor, verifies the counts, and deletes the temporary save slot.
Verification:
- `/home/nathan/bin/agrarian-build-editor` passed.
- Unreal automation passed with:
`Automation RunTests Agrarian.PersistenceSubsystem.LiveGameInstance`
- Result:
`PASS: live persistence subsystem saved 1 actor(s), restored 1 actor(s), world
now has 1 persistent actor(s)`.
Implementation note:
- The first test used `/Game/ThirdPerson/Lvl_ThirdPerson`; the subsystem check
passed, but command-mode PIE marked the test failed because that
world-partition map emits a handled editor viewport ensure in headless mode.
The final test creates a blank transient editor map before starting PIE so the
result reflects the persistence subsystem only.
Roadmap:
- Live GameInstance persistence test is complete.
Git:
- These persistence automation changes are not committed yet as of this handoff
note.
Next roadmap item:
- Decide whether to keep the current template variants or remove unused starter
variants.
## Agrarian Earth-Scale Terrain And Tile Roadmap Direction - 2026-05-14
The roadmap was updated with the long-term terrain/tile direction before moving
to the next implementation task.
User direction captured:
- Agrarian should eventually support real-world terrain at very large scale.
- Terrain tile unit is 1 km x 1 km.
- Full Earth-scale coverage implies roughly 510-520 million possible tiles.
- Tiles should be generated and added over many years, not all at once.
- Tiles should be served from a server, cached locally, scrubbed when unused for
a configured amount of time, and redownloaded if a player returns.
- Terrain height, ocean depth, mountains, hills, rivers, biomes, and natural
resources should be derived from real-world data where practical.
- Travel should use believable real-world pacing for humans, animals, boats,
tractors, cars, horses, etc., modified by age, condition, strength, endurance,
terrain, fatigue, carried weight, hunger/thirst, and injury.
- Need to choose one "Ground Zero" 1 km x 1 km MVP tile and use it to prove
automated terrain import, tile tracking, stitching, and World Partition
placement.
Roadmap changes:
- Reordered the roadmap so Phase 0 comes before `Version .01 / 0.01`.
- Added Phase 0.7 `Earth-Scale Terrain Architecture`.
- Added Ground Zero MVP tile tasks to Phase 0.5, Phase 1.4, and near-term
actions.
- Added tile registry/database tasks for a future 510-520 million tile registry.
- Added real terrain, bathymetry, river/coastline, biome, natural resource,
cache, streaming, scrubber, and tile QA tasks.
- Immediate next item is now:
`Choose Ground Zero 1 km MVP tile and define first tile registry schema`.
Verification:
- Documentation-only update; no build/test run required.
## Agrarian Ground Zero Tile And Registry Schema - 2026-05-14
Completed the roadmap item to choose the Ground Zero 1 km MVP tile and define
the first tile registry schema.
Ground Zero:
- Location: Linda Mar / San Pedro Valley edge in Pacifica, California.
- Tile ID: `gz_us_ca_pacifica_utm10n_e544_n4160`
- Projection for prototype: `WGS84 / UTM zone 10N`
- Bounds:
- Easting: `544000-545000`
- Northing: `4160000-4161000`
- Nominal center:
- Latitude: `37.5925`
- Longitude: `-122.4995`
- Working biome: `coastal_california_scrub_woodland`
Files added:
- `Docs/Terrain/GroundZeroTile.md`
- `Docs/Terrain/TileRegistrySchema.md`
- `Data/Tiles/tile_registry.schema.json`
- `Data/Tiles/ground_zero_tiles.json`
- `Data/Tiles/tile_registry.sql`
Registry seed:
- Includes the Ground Zero tile plus all eight adjacent placeholder neighbors.
- Tracks candidate source categories for elevation, hydrography, bathymetry, and
land cover.
- Separates terrain tile registry state from player-made world persistence.
Validation:
- JSON syntax validated for both registry files.
- Sanity check verified 9 tiles, 1 km tile size, and Ground Zero neighbor
references.
- SQL schema executed successfully in an in-memory SQLite database.
Roadmap:
- Ground Zero selection is complete.
- First tile registry schema is complete.
- MVP tile metadata/registry prototype is complete.
Next roadmap item:
- Prototype real terrain import for the selected MVP tile.
## Agrarian Ground Zero Terrain Import Prototype - 2026-05-14
Completed the roadmap item to prototype real terrain import for the selected MVP
tile.
Added:
- `Scripts/prototype_ground_zero_terrain.py`
- `Docs/Terrain/TerrainImportPrototype.md`
Generated:
- `Data/Terrain/Generated/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_elevation_samples_33.csv`
- `Data/Terrain/Generated/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_heightmap_33.r16`
- `Data/Terrain/Generated/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_terrain_metadata.json`
Generation result:
- Source: USGS Elevation Point Query Service.
- Sample grid: 33 x 33.
- Sample count: 1,089.
- Spacing: 31.25 m.
- Elevation range: `3.458832026m` to `96.11089325m`.
- USGS reported raster ID: `65833`.
- USGS reported resolution: `1m`.
Validation:
- Terrain metadata JSON parses cleanly.
- Tile registry JSON parses cleanly after generation.
- CSV has 1 header row plus 1,089 sample rows.
- R16 size is 2,178 bytes, matching `33 * 33 * 2`.
- Ground Zero tile registry status is now `generated` with
`generation_version=1`.
Roadmap:
- Real terrain import prototype is complete.
- Real elevation terrain base is marked in progress.
Next roadmap item:
- Define acceptable real terrain accuracy and final DEM/lidar source
requirements for the MVP tile.
## Agrarian Terrain Accuracy And Source Requirements - 2026-05-14
Completed the roadmap item to define acceptable real terrain accuracy and final
DEM/lidar source requirements for the Ground Zero MVP tile.
Added:
- `Docs/Terrain/TerrainAccuracyRequirements.md`
Updated:
- `Data/Tiles/ground_zero_tiles.json`
- Keeps USGS Elevation Point Query Service as the confirmed prototype source.
- Adds USGS 3DEP 1-meter DEM / Seamless 1-Meter DEM as the MVP target
elevation source.
- Adds NOAA/NCEI coastal DEM or Coastal Relief Model as the MVP coastal or
bathymetry target source if the tile area requires it.
Requirements now defined:
- Tier 0 current prototype.
- Tier 1 MVP required accuracy.
- Tier 2 preferred post-MVP accuracy.
- Final ground elevation source priority.
- Coastal and bathymetry source priority.
- Unreal import metadata requirements.
- MVP terrain acceptance tests.
- Known gaps in the current 33 x 33 point-sampled prototype.
Validation:
- `python3 -m json.tool Data/Tiles/ground_zero_tiles.json` passed.
Roadmap:
- Real terrain accuracy requirements are complete.
- Bathymetry/ocean-depth handling requirements are complete.
- Real-world terrain source evaluation is complete.
Next roadmap item:
- Acquire or extract the final USGS 3DEP DEM/lidar source for the Ground Zero
tile.
## Agrarian USGS 3DEP DEM Acquisition And Extraction - 2026-05-14
Completed the roadmap item to acquire/extract the final USGS 3DEP DEM/lidar
source for the Ground Zero tile.
Installed free geospatial packages on `pacificao-dev`:
- `gdal-bin`
- `python3-gdal`
- `python3-rasterio`
Added:
- `Scripts/acquire_ground_zero_dem.py`
- `Scripts/extract_ground_zero_dem_subset.py`
- `Docs/Terrain/DemAcquisition.md`
Source products:
- `USGS 1 Meter 10 x54y416 CA_CaliforniaGaps_B23`
- `USGS 1 Meter 10 x54y417 CA_CaliforniaGaps_B23`
- Dataset: `Digital Elevation Model (DEM) 1 meter`
- Publication date: `2025-08-20`
- Format: GeoTIFF
Ground Zero sits on a 3DEP 10 km tile boundary, so both products are required.
Files:
- `Data/Terrain/Sources/gz_us_ca_pacifica_utm10n_e544_n4160/USGS_1M_10_x54y416_CA_CaliforniaGaps_B23.tif`
- `Data/Terrain/Sources/gz_us_ca_pacifica_utm10n_e544_n4160/USGS_1M_10_x54y417_CA_CaliforniaGaps_B23.tif`
- `Data/Terrain/Sources/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_tnm_1m_dem_product.json`
- `Data/Terrain/Extracted/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_1m_dem_subset.tif`
- `Data/Terrain/Extracted/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_1m_dem_subset_metadata.json`
Validation:
- `gdalinfo` reports extracted subset size `1000 x 1000`.
- Pixel size is `1.0m x 1.0m`.
- CRS is `EPSG:26910` / NAD83 UTM zone 10N.
- Bounds are E `544000-545000`, N `4160000-4161000`.
- Metadata JSON parses cleanly.
- Tile registry source metadata validates with `status=source_data_found`,
`coverage_status=confirmed`, and local source folder populated.
Roadmap:
- USGS 3DEP DEM acquisition/extraction is complete.
Next roadmap item:
- Convert the extracted 1-meter DEM subset into an Unreal Landscape-ready
heightmap and import plan.
## Agrarian Unreal-Ready Ground Zero Heightmap - 2026-05-14
Completed the roadmap item to convert the extracted 1-meter DEM subset into an
Unreal Landscape-ready heightmap and import plan.
Added:
- `Scripts/convert_ground_zero_dem_to_unreal_heightmap.py`
- `Docs/Terrain/UnrealLandscapeImportPlan.md`
Generated:
- `Data/Terrain/Unreal/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_unreal_1009.r16`
- `Data/Terrain/Unreal/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_unreal_1009_preview.pgm`
- `Data/Terrain/Unreal/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_unreal_heightmap_metadata.json`
Notes:
- Optional PNG output was skipped because Pillow is not installed.
- The `.r16` is the Unreal import target.
Import settings:
- Heightmap resolution: `1009 x 1009`
- X scale: `99.2063492063492 cm`
- Y scale: `99.2063492063492 cm`
- Z scale: `18.22824631817639 cm`
- Elevation range: `3.176246404647827m` to `96.50486755371094m`
- Z offset guidance: `3.176246404647827m`
Validation:
- Metadata JSON parses cleanly.
- R16 byte size is `2,036,162`, matching `1009 * 1009 * 2`.
- Metadata confirms 1009 x 1009 resolution and expected Unreal scale values.
Roadmap:
- Unreal Landscape-ready heightmap/import plan is complete.
Next roadmap item:
- Import the Ground Zero R16 heightmap into an Unreal terrain test map.
## Agrarian Ground Zero Unreal Terrain Map Import - 2026-05-14
Completed the roadmap item to import the Ground Zero R16 heightmap into an
Unreal terrain test map.
Corrected final import settings:
- Heightmap encoding: `unreal_landscape_midpoint_32768_sea_level`
- Heightmap resolution: `1009 x 1009`
- X scale: `99.2063492063492 cm`
- Y scale: `99.2063492063492 cm`
- Z scale: `100.0 cm`
- Z offset: `0.0 m`
- Elevation range: `3.176246404647827m` to `96.50486755371094m`
Added:
- `UAgrarianEditorAutomationLibrary::ImportLandscapeHeightmapIntoEditorWorld`
- Unreal `Landscape` module dependency
- `Scripts/setup_ground_zero_terrain_map.py`
- `Scripts/verify_ground_zero_terrain_map.py`
Generated/saved:
- `/Game/Agrarian/Maps/L_GroundZeroTerrain_Test`
- `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`
Validation:
- `UNRAID_PASSWORD=... /home/nathan/bin/agrarian-build-editor` succeeds.
- `setup_ground_zero_terrain_map.py` imports `AGR_GroundZero_Landscape`.
- `verify_ground_zero_terrain_map.py` passes.
- Verified landscape scale is `(99.206352, 99.206352, 100.0)`.
- Verified X/Y bounds extent is about `50000 cm`, so the terrain spans
`100000 cm` / `1000 m`.
- Verified bounds origin is centered near XY zero.
Operational note:
- Unreal Build Accelerator hung during the first compile attempt, so
`Scripts/BuildEditor-Windows.bat` now passes `-NoUBA`.
Roadmap:
- Ground Zero R16 terrain map import is complete.
- Terrain base and 1 km scale verification are complete.
Next roadmap item:
- Add first-pass water depth/shoreline handling if applicable.
## Agrarian Ground Zero Investor Demo Package - 2026-05-14
Completed the first Windows Development packaged investor demo setup.
What changed:
- Project default game and editor startup map now point to the Ground Zero
terrain test map:
`/Game/Agrarian/Maps/L_GroundZeroTerrain_Test.L_GroundZeroTerrain_Test`.
- Packaging settings cook the Ground Zero map and keep the original ThirdPerson
map available as a fallback/reference.
- Added repeatable packaging wrapper:
`Scripts/PackageWindowsDevelopment.bat`.
- Added Ground Zero demo setup script:
`Scripts/setup_ground_zero_demo_map.py`.
- The setup script placed demo-ready actors on the real Ground Zero terrain:
player start, wood node, fiber node, campfire, primitive shelter, rabbit,
directional light, skylight, and fog.
- Added splash asset:
`Content/Splash/Splash.bmp`.
- Added investor demo notices:
`Docs/Legal/InvestorDemoNotices.md`.
Build output:
- Packaged executable:
`Builds/WindowsDevelopment/AgrarianGame.exe`.
- Larger runtime executable:
`Builds/WindowsDevelopment/AgrarianGame/Binaries/Win64/AgrarianGame.exe`.
- Packaged output size was about `1.1G`.
- `Builds/` is now ignored so packaged artifacts are not accidentally
committed.
Verification:
- Windows-Builder packaging completed with `BUILD SUCCESSFUL`.
- Smoke launched the packaged executable with
`-nullrhi -nosound -unattended`.
- Runtime log confirmed browse/load into:
`/Game/Agrarian/Maps/L_GroundZeroTerrain_Test?Name=Player`.
- Runtime log confirmed the game mode remained
`BP_ThirdPersonGameMode_C`.
- Runtime log exited cleanly after the smoke command.
Next roadmap item:
- Use the packaged demo as the investor baseline, then continue with Ground Zero
visual/gameplay polish: shoreline/water if needed, biome-appropriate
resources, simple HUD/debug display, and first playable survival tuning.
## Agrarian Investor Demo Launch Fix - 2026-05-14
User reported the investor package would not open/run.
Diagnosis:
- The packaged build itself was valid, but the normal graphics launch path
crashed when started through the Unraid/QEMU guest-agent helper.
- Failure in runtime log:
`DXGI_ERROR_NOT_CURRENTLY_AVAILABLE` during swapchain creation.
- The same issue occurred with both D3D12 and D3D11 when launched as `SYSTEM`
through QEMU guest agent.
- `query user` on Windows-Builder showed the `nathan` Windows session was
disconnected, so this headless QEMU launch is not representative of a real
interactive desktop demo.
Fix implemented:
- Kept the main project default DX12-first in `Config/DefaultEngine.ini`.
- Added Windows package override:
`Config/Windows/WindowsEngine.ini`
with `DefaultGraphicsRHI=DefaultGraphicsRHI_DX11`.
- The packaged investor build now defaults to DX11 compatibility mode while
still cooking both D3D12 SM6 and D3D11 SM5 shader formats.
- Added:
- `Scripts/InstallWindowsDemoLaunchers.bat`
- `Start Agrarian Demo.cmd`
- `Start Agrarian Demo - DX12.cmd`
- `Start Agrarian Demo - Compatibility DX11.cmd`
- `Install Prerequisites.cmd`
- `README-Investor-Demo.txt`
- The package includes Microsoft VC++ runtime installer at:
`Engine/Extras/Redist/en-us/vc_redist.x64.exe`.
Rebuilt package:
- Output:
`Builds/WindowsDevelopment`.
- Package size remains about `1.1G`.
- Rebuild completed successfully after clearing an old locked package artifact.
Important demo instruction:
- Investors should keep/copy the entire `WindowsDevelopment` folder together
and start with `Start Agrarian Demo.cmd`.
- If the demo does not open, run `Install Prerequisites.cmd`, then
`Start Agrarian Demo - Compatibility DX11.cmd`.
- `Start Agrarian Demo - DX12.cmd` is included for DX12-specific testing.
## Agrarian Startup Movie And Demo Notice - 2026-05-14
Added the first investor-facing launch sequence.
Startup movie:
- Installed free `ffmpeg` on this machine to generate the movie.
- Added movie asset:
`Content/Movies/AgrarianStudioIntro.mp4`.
- Duration: `6.0` seconds.
- Resolution: `1280 x 720`.
- The first and primary line is the motto:
`What survives after you are gone?`
- The movie also shows:
- `AGRARIAN STUDIO`
- `Investor Demo v0.01 - Beta Prototype`
- `Copyright (c) 2026 Agrarian Studio. All rights reserved.`
- Configured startup movie in `Config/DefaultGame.ini`:
`+StartupMovies=AgrarianStudioIntro`.
In-game demo notice:
- Added runtime UI classes:
- `UAgrarianDemoNoticeWidget`
- `AAgrarianDemoNoticeActor`
- `setup_ground_zero_demo_map.py` now places `AGR_DemoNoticeActor` in the
Ground Zero map.
- Notice shows motto, `Investor Demo v0.01`, beta prototype/non-distribution
language, and copyright for the first few seconds of gameplay.
Packaging/build notes:
- Added `*.mp4` to Git LFS attributes.
- Updated `Scripts/PackageWindowsDevelopment.bat` so package builds compile
targets explicitly with `Build.bat ... -NoUBA`, then run UAT with
`-skipbuild`. This avoids the UAT/UBA hang seen during packaging.
- Rebuilt the Windows Development investor package successfully.
- Verified packaged movie exists at:
`Builds/WindowsDevelopment/AgrarianGame/Content/Movies/AgrarianStudioIntro.mp4`.
- Headless `-nullrhi` smoke test loaded the Ground Zero map and exited cleanly.
## Agrarian Ground Zero Water/Shoreline Pass - 2026-05-14
Completed the next roadmap item:
- `Add first-pass water depth/shoreline handling if applicable.`
Added:
- `Scripts/analyze_ground_zero_water.py`
- `Docs/Terrain/GroundZeroWaterShoreline.md`
- `Data/Terrain/Analysis/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_water_shoreline_analysis.json`
Result:
- The current Ground Zero tile does not contain ocean water or shoreline inside
the 1 km tile bounds.
- DEM minimum elevation is about `3.16 m`.
- Sea-level or below samples: `0`.
- Near-sea-level samples at `<= 2.0 m`: `0`.
- Low coastal samples at `<= 5.0 m`: `57,812` / `1,000,000`.
- North and west edges contain the lowest coastal-influenced terrain.
Decision:
- Do not place an ocean plane in the current Ground Zero tile.
- Do not fake bathymetry in this tile.
- Keep NOAA/NCEI bathymetry/coastal DEM work for west/southwest neighbor tiles
when coastal/ocean tiles come into scope.
- Add a gameplay freshwater source in a later map pass.
Roadmap:
- Marked first-pass water depth/shoreline handling complete.
- Immediate next item is first-pass hill, mountain, river, stream, lake, and
coastline/absence handling from the Ground Zero terrain data.
## Agrarian Ground Zero Landform Pass - 2026-05-14
Completed the next roadmap item:
- `Add first-pass hill, mountain, river, stream, lake, and coastline handling if
present in Ground Zero.`
Added:
- `Scripts/analyze_ground_zero_landforms.py`
- `Docs/Terrain/GroundZeroLandforms.md`
- `Data/Terrain/Analysis/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_landform_analysis.json`
Result:
- Hills are present in the Ground Zero tile.
- Mountains are not present; max elevation is `96.51 m`, p95 elevation is
`54.57 m`.
- Steep slopes are present; max slope is `53.62 deg`, p95 slope is
`26.95 deg`.
- River, confirmed stream, lake, and coastline are not present from this
DEM-only pass.
- DEM shape suggests drainage/freshwater search candidates, but those need
hydrography validation before being treated as real streams.
- First-pass walkable/buildable terrain: `83.42%`.
- First-pass difficult/slow-travel terrain: `16.58%`.
- Possible drainage/freshwater search zone: `17.30%`.
Decision:
- Use the landform analysis for first-pass movement modifiers, buildability,
resource placement, and foliage density.
- Do not add fake mountains, lakes, rivers, streams, or coastline inside the
current tile.
- Validate freshwater candidates against a real hydrography source later.
Roadmap:
- Marked first-pass hill/mountain/river/stream/lake/coastline handling
complete.
- Immediate next item is to verify neighboring tile edge coordinates against
the registry before multi-tile stitching.
## Agrarian Ground Zero Neighbor Edge Verification - 2026-05-14
Completed the next roadmap item:
- `Verify neighboring tile edge coordinates against the registry before
multi-tile stitching.`
Added:
- `Scripts/verify_ground_zero_neighbor_edges.py`
- `Docs/Terrain/GroundZeroNeighborEdges.md`
- `Data/Terrain/Analysis/gz_us_ca_pacifica_utm10n_e544_n4160/gz_us_ca_pacifica_utm10n_e544_n4160_neighbor_edge_verification.json`
Result:
- Verification passed.
- Verified tile count: `9`.
- Found neighbor count: `8`.
- Missing neighbors: `0`.
- All tiles use exact `1000 m x 1000 m` UTM bounds.
- All tile IDs match their minimum UTM kilometer coordinates.
- North, south, east, and west neighbors share exact full 1 km edges with
Ground Zero.
- Northeast, southeast, southwest, and northwest neighbors touch Ground Zero at
corners only.
Decision:
- The registry is ready for coordinate-based neighbor stitching around Ground
Zero.
- This only verifies registry bounds and adjacency. Elevation seam continuity
still needs neighbor DEM extraction/generation before real stitched terrain.
Roadmap:
- Marked neighbor edge coordinate verification complete.
- Immediate next item is the Ground Zero foliage pass.
## Agrarian Ground Zero Foliage Pass - 2026-05-14
Completed the next roadmap item:
- `Add foliage pass.`
Added:
- `AAgrarianFoliagePatch`
- `Scripts/verify_ground_zero_foliage.py`
- `Docs/Terrain/GroundZeroFoliagePass.md`
Updated:
- `Scripts/setup_ground_zero_demo_map.py`
- `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`
Result:
- Ground Zero now has one deterministic first-pass foliage actor:
`AGR_GroundZeroFoliage_FirstPass`.
- The actor uses hierarchical instanced static mesh components for first-pass
rendering efficiency.
- Foliage instance counts:
- Trees: `42`
- Shrubs: `96`
- Grass clumps: `180`
- Placement is terrain-height-aware and avoids the player start, demo
structures, resource nodes, and wildlife spawn.
Validation:
- `UNRAID_PASSWORD=... /home/nathan/bin/agrarian-build-editor` succeeded.
- `Scripts/RunUnrealPython-Windows.bat Scripts/setup_ground_zero_demo_map.py`
succeeded.
- `Scripts/RunUnrealPython-Windows.bat Scripts/verify_ground_zero_foliage.py`
succeeded and confirmed `42` trees, `96` shrubs, and `180` grass clumps.
Roadmap:
- Marked foliage pass complete.
- Immediate next item is biome-appropriate natural resources based on Ground
Zero.
## Agrarian Ground Zero Biome Resource Pass - 2026-05-14
Completed the next roadmap item:
- `Add biome-appropriate natural resources based on Ground Zero.`
Added:
- `BP_StoneResourceNode`
- `Scripts/verify_ground_zero_resources.py`
- `Docs/Terrain/GroundZeroResourcePass.md`
Updated:
- `Scripts/setup_playable_blueprints.py`
- `Scripts/verify_playable_blueprints.py`
- `Scripts/setup_ground_zero_demo_map.py`
- `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`
Result:
- Ground Zero now has biome-appropriate natural resource nodes for the selected
coastal California scrub/woodland tile.
- Resource node counts:
- Wood: `4`
- Fiber: `5`
- Stone: `4`
- Wood nodes are placed in scrub/woodland and hillside areas.
- Fiber nodes are placed in grassland, scrub, and drainage-candidate areas.
- Stone nodes are placed on slope, exposed-terrain, and valley-edge areas.
- Freshwater intentionally remains separate because the next roadmap item is
`Add water source.`
Validation:
- `Scripts/RunUnrealPython-Windows.bat Scripts/setup_playable_blueprints.py`
succeeded and created/configured `BP_StoneResourceNode`.
- `Scripts/RunUnrealPython-Windows.bat Scripts/verify_playable_blueprints.py`
succeeded.
- `Scripts/RunUnrealPython-Windows.bat Scripts/setup_ground_zero_demo_map.py`
succeeded.
- `Scripts/RunUnrealPython-Windows.bat Scripts/verify_ground_zero_resources.py`
succeeded and confirmed `4` wood, `5` fiber, and `4` stone nodes.
Roadmap:
- Marked biome-appropriate natural resources complete.
- Immediate next item is to add a water source.
## Agrarian Ground Zero Freshwater Source - 2026-05-14
Completed the next roadmap item:
- `Add water source.`
Added:
- `AAgrarianWaterSource`
- `BP_FreshWaterSource`
- `Scripts/verify_ground_zero_water_source.py`
- `Docs/Terrain/GroundZeroWaterSource.md`
Updated:
- `Scripts/setup_playable_blueprints.py`
- `Scripts/verify_playable_blueprints.py`
- `Scripts/setup_ground_zero_demo_map.py`
- `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`
Result:
- Ground Zero now has one gameplay freshwater source:
`AGR_GZ_FreshWaterSource_01`.
- The water source uses `/Game/Agrarian/Blueprints/World/BP_FreshWaterSource`.
- It restores `45.0` thirst/water through `UAgrarianSurvivalComponent::AddWater`.
- Placement is in the drainage-candidate area and is a gameplay source, not a
confirmed real hydrography feature.
Validation:
- `UNRAID_PASSWORD=... /home/nathan/bin/agrarian-build-editor` succeeded.
- `Scripts/RunUnrealPython-Windows.bat Scripts/setup_playable_blueprints.py`
succeeded.
- `Scripts/RunUnrealPython-Windows.bat Scripts/verify_playable_blueprints.py`
succeeded.
- `Scripts/RunUnrealPython-Windows.bat Scripts/setup_ground_zero_demo_map.py`
succeeded.
- `Scripts/RunUnrealPython-Windows.bat Scripts/verify_ground_zero_water_source.py`
succeeded.
Roadmap:
- Marked water source complete.
- Immediate next item is weather exposure zones if needed.
## Agrarian Time And Real Weather Planning - 2026-05-14
Roadmap-only planning update before the next implementation item.
Added time/progression philosophy:
- Default target clock: `4 real hours = 1 in-game day`.
- The world should not feel artificially sped up; the player gets better through
skills, tools, infrastructure, cooperation, and knowledge.
- Skills should improve efficiency, yield, quality, reliability, survival odds,
and capacity more than they shorten natural biological time.
- Crops, livestock, spoilage, disease, healing, tree growth, seasons, and other
long-running systems use the Agrarian calendar.
- Early survival should remain difficult and hands-on, with hunting, gathering,
fishing, scavenging, and primitive crafting available while domestication and
farming mature over meaningful calendar time.
Added real-weather roadmap plan:
- Add a Ground Zero real-world weather provider adapter by latitude/longitude.
- Use Open-Meteo as the first global MVP source.
- Use NOAA/NWS as a US fallback or enrichment source where useful.
- Cache weather snapshots server-side; clients should not call public weather
APIs directly.
- Map real weather inputs into Agrarian states: temperature, precipitation,
wind, cloud cover, humidity, pressure, visibility, and weather code.
- Keep deterministic fallback weather simulation when external data is
unavailable.
## Agrarian Roadmap Reordering - 2026-05-14
Reworked the roadmap structure so it flows in order:
- Project North Star and time/progression philosophy.
- Current milestone status: `Version 0.01 Foundation Baseline`.
- Phase 0 foundation and guardrails.
- Phase 1 foundational survival MVP.
- Later gameplay/civilization phases.
- Cross-cutting technical tracks.
- Six-month calendar, MVP definition of done, and earliest next actions.
Removed the duplicated standalone `Version .01 / 0.01` block that previously
sat below `0.7`, which made the roadmap look like it jumped backward in time.
Version `0.01` is now summarized near the top as the active milestone, while
workstream sections like `0.1`, `0.2`, and `0.7` remain inside Phase 0.
Updated the near-term next actions to restart from the earliest missed
foundation items before continuing deeper gameplay/weather work.
Immediate next item:
- `Create protected main branch.`
Also added a new Storefront Development Distribution track covering Steam and
Epic development-build launch planning, including Steamworks/Epic portal
checklists, internal/investor/closed-test/public channels, build metadata,
store branch naming, entitlement/account-linking requirements, and release
checklists.
Note: `gh` is not installed and no GitHub token is available in the local
environment, so GitHub branch protection cannot be applied from this host yet
without adding/authenticating tooling or doing it through the GitHub UI.
## Agrarian GitHub Branch Protection Check - 2026-05-14
Installed and authenticated GitHub CLI as `pacificao`.
Confirmed:
- Repo: `pacificao/AgrarianGameBuild`
- Visibility: private
- Local GitHub CLI permission: `ADMIN`
- Remote `main` branch exists.
Branch protection result:
- GitHub API returned HTTP `403`.
- Message: `Upgrade to GitHub Pro or make this repository public to enable this feature.`
- No branch protection changes were applied.
- No billing, repository visibility, deletion, or paid setting changes were made.
Roadmap update:
- Marked `Create protected main branch` as blocked.
- Immediate next foundation item is deciding whether to create/use a long-lived
`dev` branch.
## Agrarian Repository Storage Guardrails - 2026-05-14
Completed storage guardrail work to keep GitHub free-tier viable as long as
possible.
Added:
- `Docs/RepositoryStoragePolicy.md`
- `Scripts/audit_repo_storage.sh`
Policy:
- GitHub is for source, configs, scripts, docs, metadata, and curated project
assets.
- Raw DEM/lidar/GIS datasets, packaged builds, generated terrain tile packages,
DerivedDataCache, and large source-art archives stay on DevBox or future
object storage.
- Git stores manifests, checksums, provenance, import scripts, and small curated
samples when needed.
Cleanup:
- Removed two raw USGS DEM `.tif` files from Git tracking and local unpushed Git
history.
- The raw files remain locally on DevBox under `Data/Terrain/Sources/...`.
- Added ignore rules for raw terrain/source archives.
- Re-added the GitHub remote after `git filter-repo` removed it.
Audit result:
- Git object database pack after cleanup: about `5.65 MiB`.
- Largest tracked non-LFS file: about `4.3 MB`.
- Largest LFS object: about `21 MB`.
- Generated/local folders remain large on DevBox, which is expected:
`Intermediate`, `Saved`, `Builds`, and `Binaries`.
Branch decision:
- Decided not to create/use a long-lived `dev` branch yet.
- Current approach: `main` plus short-lived task branches until team size or
release channels require a staging branch.
- Immediate next foundation item is finishing branch naming conventions.
## Agrarian Branch Naming And Tile-Serving MVP Roadmap - 2026-05-14
Completed branch naming conventions for the current lightweight workflow.
Added:
- `Docs/BranchingConventions.md`
Policy:
- `main` remains the only long-lived development branch for now.
- Do not create a long-lived `dev` branch yet.
- Use short-lived task branches named `type/short-description`.
- Allowed branch prefixes are `feature/`, `fix/`, `docs/`, `ops/`, `test/`,
`asset/`, and `experiment/`.
- Keep raw terrain datasets, generated builds, DerivedDataCache, and large
archives out of every Git branch.
Roadmap update:
- Marked branch naming conventions complete in version `0.01 Foundation
Baseline`.
- Split commit message conventions into the next separate foundation item.
- Added near-term MVP map-tile serving server work to Phase `0.7` and Near-Term
Next Actions:
- Launch a small Ubuntu/Linux cloud VM for map-tile serving.
- Publish a tiny Ground Zero tile manifest/package.
- Prove lookup, download, local cache, redownload, and immediate-neighbor
metadata flow.
- Add cost controls and runbook notes so MVP testing stays free or near-free.
Immediate next roadmap item:
- Finish commit message conventions.
## Agrarian Commit Message Conventions - 2026-05-14
Completed commit message conventions for `Version 0.01 Foundation Baseline`.
Added:
- `Docs/CommitMessageConventions.md`
Policy:
- Use concise, plain-English, imperative commit subjects.
- Keep subjects specific, capitalized, and usually under 72 characters.
- Prefer one commit per roadmap item or tight implementation slice.
- Add commit bodies for non-obvious reason, tradeoff, validation, operational
impact, build impact, networking, tile delivery, or save compatibility.
- Never include secrets, passwords, tokens, private keys, or credentials in
commit messages.
- Avoid vague messages such as `updates`, `misc`, `changes`, `work`, or `wip`.
Roadmap update:
- Marked commit message conventions complete.
- Immediate next roadmap item is defining backup expectations for NAS and the
repository.
## Agrarian Backup Expectations - 2026-05-14
Completed the roadmap item to define backup expectations for NAS and repository.
Added:
- `Docs/BackupExpectations.md`
Backup policy:
- GitHub is not enough by itself; it protects source history, not all local
terrain source data, generated build outputs, VM state, or deleted local files.
- DevBox remains the primary working storage for the Unreal project.
- Linastorage is the first backup target for project snapshots, VM backups, and
deleted-file recovery.
- Back up `/mnt/projects/AgrarianGameBulid` / `\\DevBox\projects\AgrarianGameBulid`
incrementally during active development when changes exist.
- Recommended project cadence:
- every 2 hours during active development if changes exist
- daily, weekly, and monthly retained snapshots
- manual pre-change snapshots before major Unreal, plugin, terrain, migration,
or build-pipeline changes
- Retention target:
- frequent snapshots: 7 days
- daily snapshots: 30 days
- weekly snapshots: 12 weeks
- monthly snapshots: 12 months
- important deleted files recoverable for at least 30 days, preferably 90 days
for major assets/source data/investor-demo material
- Backup method should stage locally or on DevBox first, write manifests and
checksums, copy to Linastorage under `.incomplete-*`, verify on the NAS, then
atomically rename the completed snapshot.
- VM backups must cover `Windows-Builder`, `Ubuntu-Codex`, VM XML/NVRAM, Unraid
flash/config, and related helper scripts.
- Do not copy live VM disk images directly without quiescing. Use Unraid VM
backup tooling, QEMU guest-agent freeze/thaw, or a powered-down maintenance
backup.
- Restore testing is required:
- weekly single-file restore
- monthly repo snapshot restore/list check
- monthly VM backup readability check
- quarterly fuller restore drill
Roadmap update:
- Marked backup expectations, VM snapshot cadence, and Unraid share backup
policy as documented.
- Added follow-on implementation items:
- Implement Linastorage incremental project backup job.
- Implement quiesced VM backup job for Windows-Builder and Ubuntu-Codex.
- Add recurring restore-test log for project and VM backups.
- Immediate next roadmap item is implementing the Linastorage incremental
project backup job.
## Agrarian Linastorage Project Backup Job - 2026-05-14
Completed the roadmap item to implement the Linastorage incremental project
backup job.
Repo files added/updated:
- `Scripts/agrarian_project_backup.sh`
- `Operations/systemd/agrarian-project-backup.service`
- `Operations/systemd/agrarian-project-backup.timer`
- `Docs/Ops/AgrarianProjectBackupRunbook.md`
Installed on this host:
- Script: `/usr/local/sbin/agrarian-project-backup`
- Service: `/etc/systemd/system/agrarian-project-backup.service`
- Timer: `/etc/systemd/system/agrarian-project-backup.timer`
Active backup implementation:
- Uses `restic`, installed from Ubuntu packages.
- Repository:
`/mnt/backups/linastorage/backups/agrarian-game/project/restic-repository`
- State files:
`/mnt/backups/linastorage/backups/agrarian-game/project/state`
- Password file:
`/root/.backup-secrets/agrarian-project-restic.password`
- Do not copy or write the restic password into handoff files or the repo.
- Timer runs every 2 hours with randomized delay.
- Script records a source signature and skips scheduled runs when no project
changes are detected.
- Retention:
- keep all snapshots within 7 days
- keep daily snapshots for 30 days
- keep weekly snapshots for 12 weeks
- keep monthly snapshots for 12 months
Important implementation note:
- First attempt used `rsync --link-dest`, but Linastorage over SMB does not
support the hard-link operations required for that model.
- Restic replaced rsync because it stores encrypted, deduplicated chunks as
normal files and works with the SMB target.
- A one-time legacy rsync snapshot remains under the old `snapshots/` directory
as a temporary safety copy; active backups are restic.
Verification completed:
- First restic snapshot: `e7ec1ce7`, processed about `825 MiB`, stored about
`566 MiB`.
- Incremental snapshot after script/runbook changes: `208d7710`, stored about
`5 KiB`.
- Final incremental snapshot after lock handling change: `3d77f1d2`, stored
about `8 KiB`.
- Restored `AGRARIAN_DEVELOPMENT_ROADMAP.md` from restic latest with
`restic dump` and verified it matched the live file with `diff`.
- Final dry run returned:
`No project changes detected since latest restic backup; skipping`.
- Timer is enabled and active; next trigger was scheduled after verification.
Roadmap update:
- Moved the private-repo GitHub protected `main` branch item out of `0.01`
foundation and into the release/build pipeline as a paid-plan/revenue-timed
hardening item.
- Marked Linastorage incremental project backup job complete.
- Immediate next roadmap item is implementing quiesced VM backup jobs for
`Windows-Builder` and `Ubuntu-Codex`.
## Agrarian Unraid VM Backup Job - 2026-05-14
Completed the roadmap item to implement quiesced VM backup jobs for
`Windows-Builder` and `Ubuntu-Codex`.
Repo files added/updated:
- `Scripts/agrarian_vm_backup_unraid.sh`
- `Operations/unraid/agrarian-vm-backup.cron`
- `Docs/Ops/AgrarianVmBackupRunbook.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Installed on Unraid `DevBox`:
- Persistent script: `/boot/config/custom/agrarian-vm-backup.sh`
- Runtime script copy: `/usr/local/sbin/agrarian-vm-backup`
- Persistent cron: `/boot/config/plugins/dynamix/agrarian-vm-backup.cron`
- Loaded cron entry in `/etc/cron.d/root`
Backup behavior:
- Weekly safe check runs Sunday at `03:15`.
- Scheduled/default mode skips running VMs and publishes no empty snapshot.
- Manual maintenance mode:
`/usr/local/sbin/agrarian-vm-backup --shutdown-running`
- Maintenance mode gracefully shuts down selected running VMs, backs them up,
and starts VMs again unless `--no-start-after` is used.
- Captures VM XML, NVRAM when present, compressed qcow2 disk images via
`qemu-img convert -O qcow2 -c`, selected Unraid VM/share config, manifest,
and SHA256 checksums.
- Snapshot root: `/mnt/user/backups/agrarian-game/vms/snapshots`
- Retention: deletes snapshots older than 120 days.
Verification completed:
- Local script syntax passed with `bash -n`.
- Unraid safe dry run saw both VMs running, skipped both, and published no
snapshot.
- Unraid maintenance dry run for `Ubuntu-Codex` showed the intended shutdown,
XML export, and qcow2 conversion path without actually stopping the VM.
- `update_cron` loaded the weekly cron entry successfully.
Important operational note:
- A real full VM backup was not run during implementation because
`Windows-Builder` and `Ubuntu-Codex` were active. Run the maintenance command
during a planned window to create the first disk-image snapshots.
Roadmap update:
- Marked quiesced VM backup job complete.
- Immediate next roadmap item is creating repeatable dedicated server build
instructions.
## Agrarian Dedicated Server And Tile Delivery Build Lanes - 2026-05-14
Completed the roadmap item to create repeatable dedicated server build
instructions, and included a fast static cloud map-tile delivery package path.
Repo files added/updated:
- `Source/AgrarianGameServer.Target.cs`
- `Scripts/BuildLinuxDedicatedServer-Windows.bat`
- `Scripts/build_ground_zero_tile_delivery_package.sh`
- `Operations/cloud-map-tile-server/bootstrap_ubuntu_tile_server.sh`
- `Docs/Ops/DedicatedServerBuildRunbook.md`
- `Docs/Ops/MapTileDeliveryServerRunbook.md`
- `.gitignore`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Dedicated server lane:
- Added Unreal target `AgrarianGameServer` with `TargetType.Server`.
- Windows-Builder command:
`Scripts\BuildLinuxDedicatedServer-Windows.bat`
- Expected output:
`Builds\LinuxServerDevelopment`
- Expected log:
`Saved\BuildLogs\BuildLinuxDedicatedServer.log`
- Server package cooks `/Game/Agrarian/Maps/L_GroundZeroTerrain_Test`.
- Requires Epic's Unreal `5.7` Linux cross-compile toolchain on
Windows-Builder before the actual Linux package can build.
Map-tile delivery lane:
- Build command from the repo on Linux:
`Scripts/build_ground_zero_tile_delivery_package.sh`
- Output archive:
`BuildArtifacts/TileDelivery/agrarian-ground-zero-tile-delivery.tar.gz`
- Static package includes:
- `manifest.json`
- `ground_zero_tiles.json`
- tile registry schema
- Ground Zero Unreal heightmap, metadata, landform analysis, water/shoreline
analysis, and neighbor edge verification
- `SHA256SUMS`
- `BuildArtifacts/` is ignored and should not be committed.
- Bootstrap command on a fresh Ubuntu tile server:
`sudo Operations/cloud-map-tile-server/bootstrap_ubuntu_tile_server.sh /path/to/agrarian-ground-zero-tile-delivery.tar.gz`
- Bootstrap installs nginx and serves `/health`, `/manifest.json`,
`/ground_zero_tiles.json`, and versioned tile package files.
Verification completed:
- Bash syntax passed for both Linux scripts.
- Ground Zero tile delivery package built successfully from current repo data.
- `sha256sum -c SHA256SUMS` passed for the generated static tile package.
- Archive listing confirmed the manifest, registry, schema, and Ground Zero
tile files are included.
- Dedicated server Windows batch script was reviewed but not executed here,
because the Linux Unreal cross-compile toolchain state must be checked on
Windows-Builder.
Roadmap update:
- Marked repeatable dedicated server build instructions complete.
- Marked one-command Linux dedicated server build wrapper complete.
- Added and marked complete the static Ground Zero tile-delivery package and
Ubuntu nginx bootstrap script item.
- Immediate next roadmap item is finishing required plugin documentation.
## Agrarian Required Plugin Documentation - 2026-05-14
Completed the roadmap item to finish required plugin documentation.
Repo files added/updated:
- `Docs/RequiredPlugins.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Current enabled plugins in `AgrarianGame.uproject`:
- `StateTree`
- `GameplayStateTree`
- `ModelingToolsEditorMode`
Decision captured:
- Keep `StateTree` and `GameplayStateTree` for version `0.01` because the
compiled template AI code under `Variant_Combat` and `Variant_SideScrolling`
still depends on `StateTreeModule`, `GameplayStateTreeModule`, and
`UStateTreeAIComponent`.
- Keep `ModelingToolsEditorMode` enabled as an editor workflow plugin for
terrain, mesh, and prototype world-building work.
- Do not add Steam, Gameplay Ability System, Marketplace, or machine-specific
editor-helper plugins until a roadmap item needs them.
- Revisit StateTree dependencies during the template-variant cleanup item.
Verification completed:
- `AgrarianGame.uproject` parsed successfully as JSON.
- Secret scan of the new plugin documentation returned no matches.
Roadmap update:
- Marked required plugin documentation complete.
- Immediate next roadmap item is confirming the project opens cleanly from a
fresh checkout.
## Agrarian Fresh Checkout Open Verification And Character Selection Roadmap - 2026-05-14
Completed the foundation baseline item to confirm the project opens cleanly from
a fresh checkout, and added the requested MVP character-selection landing page
requirement to the roadmap.
Roadmap additions:
- Phase `1.14 MVP UI And UX` now includes a post-splash/startup landing page.
- The landing page should let the player choose a realistic young adult male or
female character with average proportions for the MVP.
- The first playable MVP definition of done now includes the startup flow
reaching that character selection landing page and allowing the male/female
character choice before entering the world.
Fresh checkout used:
- Path: `/mnt/projects/AgrarianFreshCheckout-20260514-133248`
- Commit checked out: `0173b34`
- Clone source: `git@github.com:pacificao/AgrarianGameBuild.git`
Verification completed:
- Fresh clone completed with Git LFS content filtered.
- `git lfs fsck` passed.
- Fresh clone `git status --short` was clean before Unreal generated files.
- Windows-Builder built the fresh checkout with:
`Scripts\BuildEditor-Windows.bat`
- Build result: `AgrarianGameEditor Win64 Development` succeeded.
- Windows-Builder opened the fresh checkout through command-mode Unreal with:
`Scripts\RunUnrealPython-Windows.bat Scripts\verify_ground_zero_terrain_map.py`
- Ground Zero map loaded successfully.
- Map check reported `0 Error(s), 0 Warning(s)`.
- Verification script reported the expected 1 km terrain bounds and exited
cleanly.
Operational note:
- The fresh checkout was left in place for reference. Unreal generated
`Binaries/`, `Intermediate/`, and `Saved/` inside that checkout during the
validation.
Roadmap update:
- Marked fresh-checkout project open verification complete.
- Immediate next roadmap item is deciding whether to keep current Unreal
template variants or remove unused starter variants.
## Agrarian Template Variant Decision - 2026-05-14
Completed the roadmap item to decide whether to keep current Unreal template
variants or remove unused starter variants.
Repo files added/updated:
- `Docs/TemplateVariantDecision.md`
- `Docs/RequiredPlugins.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Decision:
- Remove or quarantine unused starter variants during the next content
organization cleanup:
- `Variant_Combat`
- `Variant_Platforming`
- `Variant_SideScrolling`
- Keep `ThirdPerson` temporarily because the current player Blueprint,
interaction setup, and automation still use it.
- Keep shared mannequin/animation content only where current Agrarian assets
still reference it.
- Recheck and remove `StateTree` / `GameplayStateTree` plugin and module
dependencies after the unused variant code/content is removed.
Reason:
- The starter variants add compile time, plugin dependencies, packaging noise,
and make the project look like a generic Unreal template.
- Actual source/content deletion is intentionally deferred to the next roadmap
item so content redirects, maps, external actors, and smoke tests can be
handled in one focused editor-aware cleanup pass.
Verification completed:
- Reviewed source/config/content references for `Variant_*`, `ThirdPerson`,
`StateTree`, and `GameplayStateTree`.
- Secret scan of the new decision doc and plugin doc returned no matches.
Roadmap update:
- Marked the template variant decision complete.
- Immediate next roadmap item is organizing `Content/Agrarian/` folders and
moving/removing starter/prototype assets into clearly named locations.
## Agrarian Starter Variant Content Cleanup - 2026-05-14
Completed the roadmap item to organize `Content/Agrarian/` folders and remove
unused starter/prototype assets.
Repo files updated:
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
- `AgrarianGame.uproject`
- `Config/DefaultEditor.ini`
- `Config/DefaultEditorPerProjectUserSettings.ini`
- `Docs/RequiredPlugins.md`
- `Docs/TemplateVariantDecision.md`
- `Source/AgrarianGame/AgrarianGame.Build.cs`
Removed:
- `Source/AgrarianGame/Variant_Combat`
- `Source/AgrarianGame/Variant_Platforming`
- `Source/AgrarianGame/Variant_SideScrolling`
- `Content/Variant_Combat`
- `Content/Variant_Platforming`
- `Content/Variant_SideScrolling`
- Matching World Partition external actor/object folders for those variants.
Build/config cleanup:
- Removed `StateTreeModule` and `GameplayStateTreeModule` from
`AgrarianGame.Build.cs`.
- Removed explicit `StateTree` and `GameplayStateTree` plugin entries from
`AgrarianGame.uproject`.
- Updated editor defaults so the simple map and content browser path now point
at Agrarian/Ground Zero locations instead of the old ThirdPerson template
folder.
Intentional leftovers:
- `Content/ThirdPerson` remains because the current player Blueprint,
interaction setup, and automation still depend on it.
- `Content/LevelPrototyping` remains because current scripts/prototype
Blueprints still reference simple cube/cylinder meshes.
- Replace those with Agrarian-specific character selection/player assets and
project-native prototype meshes in a later cleanup.
Verification completed:
- Windows-Builder built `AgrarianGameEditor Win64 Development` successfully
through `Scripts\BuildEditor-Windows.bat`.
- Windows-Builder loaded `L_GroundZeroTerrain_Test` through command-mode Unreal
with `Scripts\RunUnrealPython-Windows.bat
Scripts\verify_ground_zero_terrain_map.py`.
- Ground Zero map check reported `0 Error(s), 0 Warning(s)`.
- `AgrarianGame.uproject` parsed successfully as JSON.
- Source/config/project stale-reference scan found no remaining runtime
references to the removed variant source/content or removed module
dependencies. Remaining matches are explanatory docs only.
- Secret scan of updated roadmap/docs found no secrets.
Roadmap update:
- Marked the starter variant content cleanup complete.
- Immediate next roadmap item is launching the near-term MVP map-tile serving
cloud VM and proving Ground Zero tile lookup/download/cache flow.
## Agrarian MVP Tile Server Launch - 2026-05-14
Completed the roadmap item to launch the near-term MVP map-tile serving VM and
prove Ground Zero tile lookup/download/cache/redownload.
Current endpoint:
- Host VM: `Agrarian-TileServer` on Unraid `DevBox`
- VM IP: `192.168.5.14`
- Port: `18080/tcp`
- Base URL: `http://192.168.5.14:18080`
Published from:
- `/srv/agrarian/tile-delivery/public`
Live endpoints verified:
- `http://192.168.5.14:18080/health`
- `http://192.168.5.14:18080/manifest.json`
- `http://192.168.5.14:18080/ground_zero_tiles.json`
- `http://192.168.5.14:18080/tiles/gz_us_ca_pacifica_utm10n_e544_n4160/v0/...`
Implementation notes:
- Built the static tile package on Unraid from the local project share because
building it through the CIFS-mounted repo path stalled.
- Created a dedicated `Agrarian-TileServer` Ubuntu VM on Unraid from the Ubuntu
Noble cloud image.
- Installed nginx inside `Agrarian-TileServer`.
- Configured nginx to listen on the uncommon local MVP port `18080`.
- Published the Ground Zero tile-delivery package under `/srv/agrarian`.
- Added `Scripts/verify_tile_delivery_client.sh` for repeatable client proof.
- Updated `Docs/Ops/MapTileDeliveryServerRunbook.md` with the current endpoint,
verification path, cost-control note, and dedicated-VM follow-up.
Verification completed:
- `curl http://192.168.5.14:18080/health` returned `ok`.
- Manifest returned successfully from `http://192.168.5.14:18080/manifest.json`.
- `Scripts/verify_tile_delivery_client.sh http://192.168.5.14:18080` passed.
- Client verification downloaded the manifest, registry, SHA256SUMS, schema, and
Ground Zero terrain package files.
- Client verification confirmed `neighbor_count=8`.
- Client verification deleted and redownloaded the heightmap, then revalidated
checksums.
Operational follow-up:
- The service is now isolated inside `Agrarian-TileServer`; Unraid is only the
hypervisor/storage host.
- `Ubuntu-Codex` is not serving the tile endpoint.
- Decide later whether public testing uses this LAN-hosted VM or an external
cloud host.
Roadmap update:
- Marked the near-term MVP map-tile serving VM item complete.
- Immediate next roadmap item is defining MVP day/night length, survival
pressure target, success loop, failure conditions, and closed-test readiness
criteria.
Additional DNS/public endpoint note, 2026-05-15:
- `maps.agrariangame.com` now resolves to the same public IP as
`dev.agrariangame.com`: `208.79.250.18`.
- Public tile endpoint verified:
`http://maps.agrariangame.com:18080`
- Public client verification passed against
`http://maps.agrariangame.com:18080`, including manifest, registry,
checksum validation, 8 neighbor entries, and heightmap redownload.
## Agrarian MVP Survival And Readiness Criteria - 2026-05-15
Completed the roadmap item to define MVP day/night length, survival pressure
target, success loop, failure conditions, first playable internal milestone,
and closed-test readiness criteria.
Repo files updated:
- `Docs/MvpSurvivalReadinessCriteria.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
- `Source/AgrarianGame/AgrarianGameState.h`
Decision:
- Day/night should mimic the real Earth region represented by the loaded map
tile, like weather.
- For Ground Zero, the server-authoritative world clock should follow real
local time pacing for the Ground Zero region.
- Time acceleration remains allowed for tests and debug tools, but it is not
the default player-facing world clock.
- Player progression should come from skills, tools, shelter, storage,
knowledge, cooperation, and infrastructure rather than speeding up the sky
clock.
Code alignment:
- Changed the default `GameHoursPerRealMinute` from the old accelerated value
to real-time pacing (`1.0f / 60.0f`).
- Relaxed the editor clamp so real-time pacing is valid.
Verification completed:
- Searched docs/source to remove the old `4 real hours = 1 in-game day`
default.
- Windows-Builder built `AgrarianGameEditor Win64 Development` successfully
through `Scripts\BuildEditor-Windows.bat`.
Roadmap update:
- Marked the MVP survival/readiness criteria item complete.
- Immediate next roadmap item is creating the core design document.
Correction on 2026-05-15:
- Restored `4 real hours = 1 in-game day` as the MVP gameplay calendar target.
- Clarified that real-region day/night is the presentation/solar/weather
context, not a replacement for the MVP gameplay calendar pace.
- `GameHoursPerRealMinute` was restored to `0.1f`.
- Windows-Builder rebuild passed after the correction.
## Agrarian Core Design Document - 2026-05-15
Completed the roadmap item to create the core design document.
Repo files updated:
- `Docs/CoreDesignDocument.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Content captured:
- Core identity: persistent generational civilization simulator.
- Motto/design question: "What survives after you are gone?"
- Design pillars: civilization is built, legacy matters, world remembers,
frontier always exists, knowledge progression, real place/believable pace,
hard beginnings/earned ease.
- MVP experience and first loop.
- Long-term world model and Earth-scale tile direction.
- Time/weather split: `4 real hours = 1 in-game day` for MVP gameplay calendar,
with day/night presentation and weather grounded in the represented region.
- Survival, progression, multiplayer/society, economy/AGR principles.
- Non-goals and design risks.
- Current design decisions, including `maps.agrariangame.com:18080` and
`Agrarian-TileServer`.
Roadmap update:
- Marked the core design document complete.
- Immediate next roadmap item is creating the technical design document.
## Agrarian Technical Design Document - 2026-05-15
Completed the roadmap item to create the technical design document.
Repo files updated:
- `Docs/TechnicalDesignDocument.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Content captured:
- Current Unreal 5.7 C++ / Blueprint architecture baseline.
- Server-authoritative runtime model and client responsibilities.
- Gameplay system boundaries for GameState, survival, inventory, crafting,
interaction, resource actors, buildables, and persistence.
- Time/environment target: `4 real hours = 1 in-game day`, with real-region
day/night presentation and weather context.
- MVP tile delivery architecture and endpoint:
`http://maps.agrariangame.com:18080`.
- Data contracts for Unreal Data Assets, JSON metadata, and save data.
- Persistence, multiplayer, build automation, infrastructure, source control,
security, and testing gates.
- Open technical questions for the next design passes.
Roadmap update:
- Marked the technical design document complete.
- Immediate next roadmap item is creating the multiplayer/networking design
document.
## Agrarian Multiplayer And Networking Design - 2026-05-15
Completed the roadmap item to create the multiplayer/networking design
document.
Repo files updated:
- `Docs/MultiplayerNetworkingDesign.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Content captured:
- MVP networking goal for at least two players on the same server.
- Network model: listen server acceptable for quick internal testing; dedicated
server remains preferred closed-test target.
- Server-authority rules for survival, inventory, crafting, resources,
wildlife, world time/weather, build placement, persistence, spawn/respawn,
and active tile/package version.
- Client responsibilities and replication scope.
- RPC validation rules and examples.
- Join, spawn, respawn, disconnect, and reconnect MVP behavior.
- Tile delivery split: tile server delivers static files, gameplay server owns
authoritative world/tile state.
- Missing tile handling, network relevancy, latency expectations, security
baseline, dedicated server direction, and testing gates.
Additional roadmap items marked complete because this document defines them:
- Confirm listen server vs dedicated server for MVP.
- Define server authority over streamed terrain tiles.
- Define server response when a client requests a missing tile.
- Add player join flow.
- Add player spawn flow.
Roadmap update:
- Marked the multiplayer/networking design document complete.
- Immediate next roadmap item is creating the persistence design document.
## Agrarian Persistence Design Document - 2026-05-15
Completed the roadmap item to create the persistence design document.
Repo files updated:
- `Docs/PersistenceDesignDocument.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Content captured:
- Persistence principles: save meaningful state, version long-lived records,
keep external metadata external, and make the server own writes.
- MVP persistence scope: player identity, survival snapshot, inventory
snapshot, placed structures, resource depletion where needed, world
time/weather state, active Ground Zero tile ID, and active tile package
version.
- Save data vs external tile metadata boundary.
- Player identity, survival, inventory, world state, placed object, resource
depletion, tile reference, and container record shapes.
- Save timing, load-on-server-start flow, migration rules, storage backend
options, backup/recovery, security, and testing gates.
Roadmap update:
- Marked the persistence design document complete.
- Marked only the design/scope decisions complete in `1.13 Persistence MVP`;
implementation tasks such as saving player identity, stats, inventory, world
time, weather state, containers, save interval, load-on-start, and tile
registry persistence remain open.
- Immediate next roadmap item is creating the Earth-scale terrain/tile
streaming design document.
## Agrarian First/Third-Person Camera Toggle - 2026-05-15
Completed the roadmap item to implement the hybrid camera toggle.
Repo files updated:
- `Source/AgrarianGame/AgrarianGameCharacter.h`
- `Source/AgrarianGame/AgrarianGameCharacter.cpp`
- `Content/Input/Actions/IA_ToggleCamera.uasset`
- `Content/Input/IMC_Default.uasset`
- `Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset`
- `Scripts/setup_camera_toggle_input.py`
- `Scripts/verify_camera_toggle_input.py`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Behavior:
- Third person remains the default view.
- Press `V` or gamepad right thumbstick to toggle first-person view.
- First-person view uses a zero-length spring arm with a head-height camera
offset, disables camera collision, and hides the local owner's mesh.
- Toggling back restores the third-person boom distance and mesh visibility.
Verification:
- Windows editor build completed successfully with
`Scripts\BuildEditor-Windows.bat`.
- Unreal Python verification completed successfully with
`Scripts\verify_camera_toggle_input.py`, confirming the input action,
keyboard/gamepad mappings, and Blueprint assignment.
Roadmap update:
- Marked `Implement first/third-person camera toggle` complete.
- Immediate next roadmap item is `Implement sprinting`.
## Agrarian Sprinting - 2026-05-15
Completed the roadmap item to implement sprinting.
Repo files updated:
- `Source/AgrarianGame/AgrarianGameCharacter.h`
- `Source/AgrarianGame/AgrarianGameCharacter.cpp`
- `Content/Input/Actions/IA_Sprint.uasset`
- `Content/Input/IMC_Default.uasset`
- `Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset`
- `Scripts/setup_sprint_input.py`
- `Scripts/verify_sprint_input.py`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Behavior:
- Hold `LeftShift` or gamepad left thumbstick to sprint.
- Default walk speed is `500`; sprint speed is `750`.
- Sprinting spends stamina only on the server and only while moving.
- Sprint intent replicates to clients and updates movement speed on replication.
- Sprinting automatically stops when stamina falls below `MinSprintStamina`.
Verification:
- Windows editor build completed successfully with
`Scripts\BuildEditor-Windows.bat`.
- Unreal Python setup completed successfully with `Scripts\setup_sprint_input.py`.
- Unreal Python verification completed successfully with
`Scripts\verify_sprint_input.py`, confirming the input action,
keyboard/gamepad mappings, and Blueprint assignment.
Roadmap update:
- Marked `Implement sprinting` complete.
- Immediate next roadmap item is `Define real-world baseline walking speed`.
## Agrarian Baseline Walking Speed - 2026-05-15
Completed the roadmap item to define real-world baseline walking speed.
Repo files updated:
- `Docs/MovementAndTimeScaleBaseline.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Decision:
- Keep the MVP calendar target of `4 real hours = 1 in-game day`.
- Do not multiply player movement speed by the calendar time scale.
- Baseline adult walking speed is `1.4 m/s`, or `140 Unreal units/s`.
- MVP tuning may allow up to about `1.6 m/s` for a brisk walk if the first
playable build feels too sluggish.
- A flat 1 km tile edge-to-edge walk should take about 12 real minutes at
baseline pace.
Rationale:
- Real terrain and 1 km tiles need real physical movement to feel grounded.
- Calendar compression should affect day/night rhythm, survival pressure,
weather, sleep, crop growth, and long-term simulation, not the physical speed
of the player body.
- Long travel consuming daylight is intentional; roads, carts, mounts, boats,
vehicles, shelter, storage, and settlement planning should become meaningful
progression systems.
Roadmap update:
- Marked `Define real-world baseline walking speed` complete.
- Immediate next roadmap item is `Define real-world baseline running speed`.
## Agrarian Baseline Running Speed - 2026-05-15
Completed the roadmap item to define real-world baseline running speed.
Repo files updated:
- `Docs/MovementAndTimeScaleBaseline.md`
- `Source/AgrarianGame/AgrarianGameCharacter.h`
- `Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset`
- `Scripts/setup_movement_baseline.py`
- `Scripts/verify_movement_baseline.py`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Decision:
- Keep movement measured in real distance per real second.
- Do not multiply running or sprinting by the `4 real hours = 1 in-game day`
calendar.
- Sustainable adult running target is `3.0 m/s`, or `300 Unreal units/s`.
- The current MVP sprint input is a short burst at `5.5 m/s`, or
`550 Unreal units/s`.
- The default walk speed was aligned to the walking baseline at `140 Unreal
units/s`.
- Sprint stamina cost was raised to `28` per second so early characters cannot
sprint across a full 1 km tile without rest or progression.
Verification:
- Windows editor build completed successfully with
`Scripts\BuildEditor-Windows.bat`.
- Unreal Python movement baseline verification completed successfully with
`Scripts\verify_movement_baseline.py`, confirming Blueprint defaults.
Roadmap update:
- Marked `Define real-world baseline running speed` complete.
- Immediate next roadmap item is `Connect movement speed to age, condition,
strength, endurance, hunger, thirst, injury, carried weight, and terrain`.
## Agrarian Movement Modifiers - 2026-05-15
Completed the roadmap item to connect movement speed to age, condition,
strength, endurance, hunger, thirst, injury, carried weight, and terrain.
Repo files updated:
- `Source/AgrarianGame/AgrarianGameCharacter.h`
- `Source/AgrarianGame/AgrarianGameCharacter.cpp`
- `Source/AgrarianGame/AgrarianInventoryComponent.h`
- `Source/AgrarianGame/AgrarianInventoryComponent.cpp`
- `Scripts/setup_movement_baseline.py`
- `Scripts/verify_movement_baseline.py`
- `Docs/MovementAndTimeScaleBaseline.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Behavior:
- Character movement speed now uses `base speed * movement modifier`.
- Live modifiers include hunger, thirst, injury, carried inventory weight, and
terrain multiplier.
- Replicated hooks were added for age, physical condition, strength, endurance,
and terrain.
- Inventory now exposes `GetTotalWeight()`.
- Strength raises effective carry thresholds.
- Endurance improves movement resilience and reduces sprint stamina cost.
- Terrain multiplier is available through `SetTerrainMovementMultiplier()`.
- Movement modifier is clamped between `0.15` and `1.35`.
Verification:
- Windows editor build completed successfully with
`Scripts\BuildEditor-Windows.bat`.
- Unreal Python movement baseline setup and verification completed successfully
with `Scripts\setup_movement_baseline.py` and
`Scripts\verify_movement_baseline.py`.
Roadmap update:
- Marked the movement-modifier item complete.
- Immediate next roadmap item is `Implement crouching if needed`.
## Agrarian Crouch And Prone Stances - 2026-05-15
Completed the roadmap item to implement crouching and prone movement stances.
Repo files updated:
- `Source/AgrarianGame/AgrarianGameCharacter.h`
- `Source/AgrarianGame/AgrarianGameCharacter.cpp`
- `Content/Input/Actions/IA_Crouch.uasset`
- `Content/Input/Actions/IA_Prone.uasset`
- `Content/Input/IMC_Default.uasset`
- `Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset`
- `Scripts/setup_stance_input.py`
- `Scripts/verify_stance_input.py`
- `Docs/MovementAndTimeScaleBaseline.md`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Behavior:
- `C` toggles crouch and gamepad Right Shoulder maps to crouch.
- `Z` toggles prone and gamepad Left Shoulder maps to prone.
- Crouch uses a `0.55` movement multiplier.
- Prone uses a `0.25` movement multiplier.
- Sprint cannot start while crouched or prone.
- Entering prone exits crouch so only one low stance is active.
- Prone is replicated and uses the same movement modifier pipeline as hunger,
thirst, injury, carried weight, terrain, and traits.
Verification:
- `python3 -m py_compile` passed for the stance setup and verify scripts.
- `git diff --check` passed for the touched text files.
- Windows editor build completed successfully with
`Scripts\BuildEditor-Windows.bat`.
- Unreal Python stance setup and verification completed successfully with
`Scripts\setup_stance_input.py` and `Scripts\verify_stance_input.py`.
Roadmap update:
- Marked `Implement crouching and prone movement stances` complete.
- Immediate next roadmap item is `Implement interact prompt`.
## Agrarian Interaction Prompt - 2026-05-15
Completed the roadmap item to implement an interaction prompt.
Repo files updated:
- `Source/AgrarianGame/AgrarianGameCharacter.h`
- `Source/AgrarianGame/AgrarianGameCharacter.cpp`
- `Source/AgrarianGame/AgrarianDebugHUD.h`
- `Source/AgrarianGame/AgrarianDebugHUD.cpp`
- `Source/AgrarianGame/AgrarianGameGameMode.cpp`
- `Scripts/setup_interaction_prompt.py`
- `Scripts/verify_interaction_prompt.py`
- `AGRARIAN_DEVELOPMENT_ROADMAP.md`
Behavior:
- The local character now refreshes interactable focus each tick using the same
visibility trace used by interaction.
- Focused interactables must implement `AgrarianInteractable` and pass
`CanInteract`.
- Prompt text comes from `GetInteractionText` on the focused actor.
- The HUD draws `[E] <prompt>` near the center/lower-center of the screen.
- The prompt is independent of the dev HUD toggle so it can remain visible even
when debug stats are hidden.
- `BP_ThirdPersonGameMode` is configured to use `AgrarianDebugHUD`.
Verification:
- `git diff --check` passed for touched text files.
- `python3 -m py_compile` passed for the setup and verify scripts.
- Windows editor build completed successfully with
`Scripts\BuildEditor-Windows.bat`.
- Unreal Python setup and verification completed successfully with
`Scripts\setup_interaction_prompt.py` and
`Scripts\verify_interaction_prompt.py`.
Roadmap update:
- Marked `Implement interact prompt` complete.
- Immediate next roadmap item is `Implement basic animation blueprint`.
## Agrarian 0.1.C Time, Weather, And Environment Pressure - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `dddac97 Add first pass sky lighting`
Completed recent roadmap items:
- `Store weather source, provider timestamp, tile coordinate, and applied
in-game weather state for debugging and persistence`
- Commit: `26ddf8e Persist applied weather debug state`
- Added tile ID/coordinate fields to mapped weather inputs.
- Added replicated `FAgrarianWeatherDebugSnapshot`.
- Save files now hold mapped weather inputs and applied weather debug state.
- `Add weather save/load support`
- Commit: `8625583 Add weather save load support`
- Added `LoadCurrentWorld` as the unified load path.
- Weather/time restores before players and persistent world actors.
- Admin load command now uses the combined load path.
- Persistence smoke test verifies provider-backed weather metadata survives
save/load.
- `Connect shelter to weather protection`
- Commit: `0650806 Connect shelter to weather protection`
- Survival detects overlapping `AAgrarianShelterActor` protection volumes.
- `CurrentWeatherProtection` replicates on the survival component.
- Shelter protection reduces ambient exposure and cold damage.
- Care-history `ShelterQuality` trends toward active protection.
- Dev HUD shows shelter protection.
- `Add first-pass sky and lighting`
- Commit: `dddac97 Add first pass sky lighting`
- Added `AAgrarianSkyLightingController`.
- Controller owns movable sun, skylight, and fog components.
- Lighting reads replicated game time, active tile sunrise/sunset, weather
state, and provider cloud cover.
- Ground Zero map setup now places `AGR_DemoSkyLightingController` and removes
legacy static demo sun/skylight/fog actors.
- `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap` was regenerated and
saved with the new controller.
Verification:
- Windows editor build passed after each completed item.
- Unreal Python map setup passed for `Scripts/setup_ground_zero_demo_map.py`
after adding the sky lighting controller.
- Relevant static verifiers and `git diff --check` passed:
- `Scripts/verify_weather_debug_persistence.py`
- `Scripts/verify_weather_save_load_support.py`
- `Scripts/verify_shelter_weather_protection.py`
- `Scripts/verify_sky_lighting_controller.py`
Roadmap state:
- Current version section: `0.1.C Time, Weather, And Environment Pressure`
- Items remaining in `0.1.C`: `1`
- Immediate next roadmap item: `Add audio cues for weather`.
## Agrarian Weather Audio Cues - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `08a1df6 Add weather audio cues`
Completed roadmap item:
- `Add audio cues for weather`
- Added `AAgrarianWeatherAudioController`.
- Controller owns ambient, rain, wind, and storm audio components.
- It reads replicated weather state, provider wind speed, and day/night state
from `AAgrarianGameState`.
- It fades component volumes for clear, rain, cold wind, and storm states.
- Sound assets are intentionally assignable slots; runtime is silent until
placeholder or final audio loops are assigned.
- Ground Zero setup now places `AGR_DemoWeatherAudioController`.
- `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap` was regenerated and
saved with the controller.
Verification:
- `python3 Scripts/verify_weather_audio_controller.py` passed.
- `python3 Scripts/verify_sky_lighting_controller.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
- Unreal Python Ground Zero map setup passed through
`Scripts/setup_ground_zero_demo_map.py`.
Roadmap state:
- Completed section: `0.1.C Time, Weather, And Environment Pressure`
- Items remaining in `0.1.C`: `0`
- Next version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `11`
- Immediate next roadmap item: `Link Ground Zero tile coordinates to real-world weather lookup coordinates`.
## Agrarian Ground Zero Weather Lookup Coordinates - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `a7292bb Link Ground Zero weather lookup coordinates`
Completed roadmap item:
- `Link Ground Zero tile coordinates to real-world weather lookup coordinates`
- Added explicit `weather_lookup_metadata` to the Ground Zero tile registry
entry.
- Ground Zero weather lookup uses tile-center latitude `37.5925` and
longitude `-122.4995`.
- Weather lookup metadata records Open-Meteo primary routing, NOAA/NWS
fallback eligibility, coordinate source, and lookup rule.
- Updated the tile registry JSON schema and SQL prototype.
- Updated `Scripts/generate_tile_weather_manifest.py` to read declared
weather lookup metadata for future source-backed tiles.
- Regenerated `Data/Tiles/tile_weather_manifest.json`.
- Added `Scripts/verify_ground_zero_weather_lookup_coordinates.py`.
- Updated docs and roadmap.
Verification:
- `python3 Scripts/generate_tile_weather_manifest.py` passed.
- `python3 Scripts/verify_ground_zero_weather_lookup_coordinates.py` passed.
- `python3 Scripts/verify_weather_provider_adapter.py` passed.
- `AGRARIAN_SKIP_LIVE_WEATHER_CHECK=1 python3 Scripts/verify_open_meteo_mvp_source.py` passed.
- `AGRARIAN_SKIP_LIVE_WEATHER_CHECK=1 python3 Scripts/verify_noaa_nws_us_fallback.py` passed.
- `python3 -m py_compile Scripts/generate_tile_weather_manifest.py Scripts/verify_ground_zero_weather_lookup_coordinates.py Scripts/verify_weather_provider_adapter.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `10`
- Immediate next roadmap item: `Replace grey-box environment presentation with an MVP natural environment pass: terrain material, grass, shrubs, bushes, trees, water-source visuals, and clearer Ground Zero biome dressing`.
## Agrarian Ground Zero Natural Environment Pass - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `25ffbfc Add Ground Zero natural environment pass`
Completed roadmap item:
- `Replace grey-box environment presentation with an MVP natural environment pass`
- Added repeatable material generation in `Scripts/setup_ground_zero_demo_map.py`.
- Created 8 Ground Zero material assets under `Content/Agrarian/Materials/`.
- Applied the terrain material to the landscape.
- Applied distinct tree, shrub, and dry grass materials to the foliage patch.
- Applied wood, fiber, stone, and freshwater materials to placed resource/water
actors.
- Regenerated/saved `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- Added `Docs/Terrain/GroundZeroNaturalEnvironmentPass.md`.
- Added `Scripts/verify_ground_zero_natural_environment_pass.py`.
Verification:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_ground_zero_natural_environment_pass.py` passed.
- `git diff --check` passed.
- Unreal Python Ground Zero setup passed.
- Unreal Python natural environment verifier passed: 8 materials, 1 landscape,
14 dressed resource/water actors.
- Unreal Python foliage verifier passed: 42 trees, 96 shrubs, 180 grass clumps.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `9`
- Immediate next roadmap item: `Add first-pass environment asset variation so trees, bushes, grass, resource nodes, and water do not read as repeated placeholders`.
## Agrarian Ground Zero Environment Asset Variation - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `f78c552 Add Ground Zero environment asset variation`
Completed roadmap item:
- `Add first-pass environment asset variation so trees, bushes, grass, resource nodes, and water do not read as repeated placeholders`
- Added 11 repeatable labeled variation actors through
`Scripts/setup_ground_zero_demo_map.py`.
- Covered tree canopy/trunk pairs, rounded bushes, grass mats, rock slabs, and
a visible freshwater surface.
- Used multiple prototype mesh silhouettes, unique scale profiles, rotations,
and the existing Ground Zero material families.
- Regenerated/saved `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- Updated the Ground Zero natural environment and foliage docs.
- Extended the natural environment verifier to require actor count, mesh
variety, unique scales, and material-family coverage.
Verification:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_ground_zero_natural_environment_pass.py` passed.
- `git diff --check` passed.
- Unreal Python Ground Zero setup passed.
- Unreal Python natural environment verifier passed: 8 materials, 1 landscape,
14 dressed resource/water actors, 11 variation actors.
- Unreal Python foliage verifier passed: 42 trees, 96 shrubs, 180 grass clumps.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `8`
- Immediate next roadmap item: `Replace LevelPrototyping cube/cylinder mesh dependencies in Agrarian setup scripts and prototype Blueprints with Agrarian-native placeholder environment meshes`.
## Agrarian Native Placeholder Meshes - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `b5d1359 Replace template meshes with native placeholders`
Completed roadmap item:
- `Replace LevelPrototyping cube/cylinder mesh dependencies in Agrarian setup scripts and prototype Blueprints with Agrarian-native placeholder environment meshes`
- Added five native placeholder static mesh assets under
`/Game/Agrarian/Environment/PlaceholderMeshes`.
- Updated playable Blueprint setup and Ground Zero setup scripts so active
outputs use native Agrarian mesh paths.
- Left template mesh references only as copy-source paths inside repeatable
setup helpers.
- Regenerated/saved the affected resource, structure, and water Blueprints.
- Regenerated/saved `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- Added `Scripts/verify_native_placeholder_meshes.py`.
- Updated the template decision doc, natural environment doc, and roadmap.
Verification:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/setup_playable_blueprints.py Scripts/verify_native_placeholder_meshes.py` passed.
- `git diff --check` passed.
- Unreal Python playable Blueprint setup passed.
- Unreal Python Ground Zero setup passed.
- Unreal Python native placeholder verifier passed: 5 native mesh assets, 6
Blueprint meshes, foliage meshes, and environment variation meshes use native
paths.
- Unreal Python natural environment verifier passed: 8 materials, 1 landscape,
14 dressed resource/water actors, 11 variation actors.
- Unreal Python foliage verifier passed: 42 trees, 96 shrubs, 180 grass clumps.
- Unreal Python player Blueprint verifier passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `7`
- Immediate next roadmap item: `Add weather exposure zones if needed`.
## Agrarian Ground Zero Weather Exposure Zones - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `8b0b5ff Add Ground Zero weather exposure zones`
Completed roadmap item:
- `Add weather exposure zones if needed`
- Added native replicated `AAgrarianWeatherExposureZone` actor with a box
overlap volume, exposure multiplier, temperature offset, and stable zone id.
- Updated `UAgrarianSurvivalComponent` so overlapping weather zones adjust
ambient temperature exposure and cold damage after shelter/weather
protection.
- Updated the debug HUD to show current exposure multiplier and temperature
offset.
- Added three repeatable Ground Zero zones through
`Scripts/setup_ground_zero_demo_map.py`: ridge exposure, coastal wind, and
drainage cooling.
- Regenerated/saved `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- Added `Scripts/verify_weather_exposure_zones.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_weather_exposure_zones.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
- Unreal Python Ground Zero setup passed.
- Unreal Python weather exposure verifier passed: 3 zones with exposure
multipliers and temperature offsets.
- Unreal Python natural environment verifier passed: 8 materials, 1 landscape,
14 dressed resource/water actors, 11 variation actors.
- Unreal Python foliage verifier passed: 42 trees, 96 shrubs, 180 grass clumps.
- Final Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `6`
- Immediate next roadmap item: `Add landmark or ruin placeholder`.
## Agrarian Ground Zero Ruin Landmark Placeholder - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `56f8ef9 Add Ground Zero ruin landmark placeholder`
Completed roadmap item:
- `Add landmark or ruin placeholder`
- Added a repeatable five-piece Ground Zero ruin cluster through
`Scripts/setup_ground_zero_demo_map.py`.
- The cluster includes a foundation slab, two wall fragments, a cairn marker,
and a threshold/lintel piece.
- The ruin uses Agrarian-native placeholder meshes and the Ground Zero stone
material so it is visible in the MVP but easy to replace later.
- Regenerated/saved `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- Added `Scripts/verify_ground_zero_landmark_placeholder.py`.
- Updated the Ground Zero natural environment doc and roadmap.
Verification:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_ground_zero_landmark_placeholder.py` passed.
- `git diff --check` passed.
- Unreal Python Ground Zero setup passed.
- Unreal Python landmark placeholder verifier passed: 5 ruin actors, 3 mesh
silhouettes.
- Unreal Python natural environment verifier passed: 8 materials, 1 landscape,
14 dressed resource/water actors, 11 variation actors.
- Unreal Python foliage verifier passed: 42 trees, 96 shrubs, 180 grass clumps.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `5`
- Immediate next roadmap item: `Add spawn area with validation that the player spawns above sea level, above terrain by a safe offset, away from water, away from steep slopes, away from dense resource clusters, and with a known safe fallback coordinate`.
## Agrarian Ground Zero Safe Spawn Area - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `e50745d Validate Ground Zero safe spawn area`
Completed roadmap item:
- `Add spawn area with validation that the player spawns above sea level, above terrain by a safe offset, away from water, away from steep slopes, away from dense resource clusters, and with a known safe fallback coordinate`
- Added safe spawn candidate/fallback selection to
`Scripts/setup_ground_zero_demo_map.py`.
- Setup validates minimum elevation above sea level, maximum sampled terrain
slope, minimum above-terrain Z offset, freshwater spacing, and
resource-cluster spacing before saving the map.
- `AGR_DemoPlayerStart` now uses the known safe fallback coordinate
`(-22000, -3500)`.
- Added `Scripts/verify_ground_zero_safe_spawn.py`.
- Regenerated/saved `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_ground_zero_safe_spawn.py` passed.
- `git diff --check` passed.
- Unreal Python Ground Zero setup passed.
- Unreal Python safe-spawn verifier passed: location `(-22000, -3500, 1148)`,
terrain `9.28m`, slope `1.94deg`, above-terrain offset `220cm`.
- Unreal Python natural environment verifier passed.
- Unreal Python foliage verifier passed.
- Unreal Python landmark placeholder verifier passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
- Note: parallel Unreal verifier runs logged intermediate asset-registry cache
write warnings because multiple editor processes started together; all
verifiers completed successfully and the final editor build passed.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `4`
- Immediate next roadmap item: `Add performance profiling markers`.
## Agrarian Performance Profiling Markers - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `82463f3 Add Agrarian performance profiling markers`
Completed roadmap item:
- `Add performance profiling markers`
- Added `Source/AgrarianGame/AgrarianPerformanceStats.h` and
`Source/AgrarianGame/AgrarianPerformanceStats.cpp` with
`STATGROUP_Agrarian`.
- Added `stat Agrarian` cycle counters and Unreal Insights CPU scopes for
authoritative game-state time/weather ticking, survival ticking,
sky-light refresh, weather-audio refresh, foliage instance mutation, and
weather-provider request/parse/fallback work.
- Added `Scripts/verify_performance_profiling_markers.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_performance_profiling_markers.py` passed.
- `python3 Scripts/verify_performance_profiling_markers.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `3`
- Immediate next roadmap item: `Add navigation support for wildlife`.
## Agrarian Wildlife Navigation Support - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `578220c Add wildlife navigation support`
Completed roadmap item:
- `Add navigation support for wildlife`
- Added `NavigationSystem` to the Agrarian module dependencies.
- Wildlife now auto-possesses an AI controller when placed or spawned.
- Wander targets are sampled from reachable nav points when nav data exists.
- Chase and flee targets are projected onto navmesh.
- Server-authoritative wildlife movement uses `MoveToLocation`.
- Direct movement input remains as a fallback for early maps/tiles without
nav data.
- AI movement stops cleanly when wildlife dies.
- Updated the wildlife loop verifier to find the current Ground Zero rabbit
label.
- Added `Scripts/verify_wildlife_navigation_support.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_wildlife_navigation_support.py Scripts/verify_wildlife_loop.py` passed.
- `python3 Scripts/verify_wildlife_navigation_support.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
- Unreal Python wildlife loop verifier passed through
`Scripts/verify_wildlife_loop.py`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `2`
- Immediate next roadmap item: `Add map boundaries or soft limits`.
## Agrarian Ground Zero Map Boundary - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `65bcdf6 Add Ground Zero map boundary`
Completed roadmap item:
- `Add map boundaries or soft limits`
- Added native `AAgrarianMapBoundaryVolume` with a box volume, boundary ID,
warning-zone test, clamp helper, and server-authoritative player clamp.
- Placed `AGR_GroundZeroMapBoundary` around the loaded 1 km Ground Zero MVP
tile in `Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap`.
- Updated `Scripts/setup_ground_zero_demo_map.py` so regenerated Ground Zero
maps automatically recreate the boundary volume.
- Added `Scripts/verify_map_boundary_source.py`.
- Added `Scripts/verify_ground_zero_map_boundary.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_map_boundary_source.py Scripts/verify_ground_zero_map_boundary.py` passed.
- `python3 Scripts/verify_map_boundary_source.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
- Unreal Python Ground Zero setup passed through
`Scripts/setup_ground_zero_demo_map.py`.
- Unreal Python boundary verifier passed through
`Scripts/verify_ground_zero_map_boundary.py`.
Roadmap state:
- Current version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `1`
- Immediate next roadmap item: `Add developer travel command`.
## Agrarian Developer Travel Command - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `e436455 Add developer travel command`
Completed roadmap item:
- `Add developer travel command`
- Added server-authoritative `AgrarianTravel X Y Z` and
`AgrarianTravelHome` exec commands on `AAgrarianGamePlayerController`.
- `AgrarianTravel` teleports the controlled pawn to explicit Unreal world
coordinates, rejects invalid NaN destinations, stops active character
movement after teleport, and reports the destination to the issuing player.
- `AgrarianTravelHome` returns the player to the validated Ground Zero safe
spawn fallback near `AGR_DemoPlayerStart` at `(-22000, -3500, 1148)`.
- Added `Scripts/verify_developer_travel_command.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_developer_travel_command.py` passed.
- `python3 Scripts/verify_developer_travel_command.py` passed.
- `git diff --check` passed.
- Windows editor build through `/home/nathan/bin/agrarian-build-editor`
initially failed on a `Character` local-variable shadow warning; after
renaming it to `ControlledCharacter`, the editor build passed.
Roadmap state:
- Completed version section: `0.1.D Single Biome MVP Map`
- Items remaining in `0.1.D`: `0`
- Current/next version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `9`
- Immediate next roadmap item: `Design inventory data model`.
## Agrarian Inventory Data Model - 2026-05-16
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `c511ae9 Design inventory data model`
Completed roadmap item:
- `Design inventory data model`
- Added `Docs/InventoryDataModel.md` defining the MVP contract for stable
item definitions, runtime/save-game item stacks, server-authoritative
replicated inventory components, persistence, carry weight, and the
pickup/drop/split/use equipment/UI operations that build on the current
code.
- Updated the technical design document to point future inventory work at the
new model instead of parallel state.
- Added `Scripts/verify_inventory_data_model.py`.
- Updated the roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_inventory_data_model.py` passed.
- `python3 Scripts/verify_inventory_data_model.py` passed.
- `git diff --check` passed.
- No Windows editor build was run for this item because it only changed docs and
Python verification.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `8`
- Immediate next roadmap item: `Add item pickup`.
## Agrarian Item Pickup - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `03d856e Add item pickup actor`
Completed roadmap item:
- `Add item pickup`
- Added native `AAgrarianItemPickup`, a replicated interactable world actor
with a static mesh, definition-backed or inline `FAgrarianItemStack` data,
quantity, prompt text, and server-authoritative pickup behavior.
- Pickup interaction validates authority and stack validity, adds the stack to
the player's `UAgrarianInventoryComponent`, and destroys the world pickup
only after `Inventory->AddItem` succeeds so failed pickups remain available.
- Added `Scripts/verify_item_pickup.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_item_pickup.py` passed.
- `python3 Scripts/verify_item_pickup.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `7`
- Immediate next roadmap item: `Add item drop`.
## Agrarian Item Drop - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `b48595f Add item drop command`
Completed roadmap item:
- `Add item drop`
- Added `UAgrarianInventoryComponent::ExtractItem` so item removal can return
dropped stack metadata for world pickups while preserving existing
`RemoveItem` behavior.
- Added server-authoritative `AgrarianDropItem ItemId Quantity` on
`AAgrarianGamePlayerController`.
- Drop command extracts inventory stack data, spawns an
`AAgrarianItemPickup` in front of the player, and restores the removed stack
if pickup spawning fails.
- Added `Scripts/verify_item_drop.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_item_drop.py` passed.
- `python3 Scripts/verify_item_drop.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `6`
- Immediate next roadmap item: `Add stack splitting`.
## Agrarian Stack Splitting - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `555ad6d Add stack splitting`
Completed roadmap item:
- `Add stack splitting`
- Added server-authoritative `UAgrarianInventoryComponent::SplitStackByIndex`.
- Added `ServerSplitStackByIndex` RPC for future UI use.
- Added `AgrarianSplitStack StackIndex SplitQuantity` debug command on
`AAgrarianGamePlayerController`.
- Split operation validates source slot, split quantity, and free slot
capacity, copies source stack metadata, reduces the source quantity, creates
a separate stack slot, and intentionally avoids re-merging through `AddItem`.
- Added `Scripts/verify_stack_splitting.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_stack_splitting.py` passed.
- `python3 Scripts/verify_stack_splitting.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `5`
- Immediate next roadmap item: `Add item use`.
## Agrarian Item Use - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `712a854 Add item use command`
Completed roadmap item:
- `Add item use`
- Added server-authoritative `AgrarianUseItem ItemId Quantity`.
- Added `ApplyAgrarianItemUseEffect` MVP rules:
- `food` restores hunger.
- `meat` restores more hunger but adds raw-meat sickness risk.
- `bandage` reduces injury severity and restores a small amount of health.
- Added `UAgrarianSurvivalComponent::ReduceInjury`.
- Unsupported items are restored to inventory instead of consumed.
- Added `Scripts/verify_item_use.py`.
- Updated the technical design document and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_item_use.py` passed.
- `python3 Scripts/verify_item_use.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `4`
- Immediate next roadmap item: `Add equipment slots if needed`.
## Agrarian Equipment Slot Decision - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `edd4050 Document equipment slot decision`
Completed roadmap item:
- `Add equipment slots if needed`
- Decision: dedicated equipment slots are deferred for the 0.1.E MVP.
- Reason: current tools, including `basic_tool`, do not yet drive active hand,
worn, backpack, armor, weapon, durability, animation, or mesh-attachment
rules; adding slots now would create replicated/UI/save state with no
gameplay consumer.
- Documented the future trigger: add server-authoritative, replicated,
persisted equipment slot state when an implemented system actually needs
equipped state.
- Added `Scripts/verify_equipment_slot_decision.py`.
- Updated the inventory data model, technical design document, and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_equipment_slot_decision.py` passed.
- `python3 Scripts/verify_equipment_slot_decision.py` passed.
- `git diff --check` passed.
- No Windows editor build was run because this item only changed docs and Python
verification.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `3`
- Immediate next roadmap item: `Add weight or carry capacity placeholder`.
## Agrarian Carry Capacity Placeholder - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `cb663fb Document carry capacity placeholder`
Completed roadmap item:
- `Add weight or carry capacity placeholder`
- Confirmed the existing carry-capacity placeholder is weight-first.
- Item stacks carry `UnitWeight`.
- `UAgrarianInventoryComponent::GetTotalWeight` sums `Quantity * UnitWeight`.
- `AAgrarianGameCharacter::GetCurrentCarryWeight` reads inventory total.
- Movement uses comfort/heavy thresholds of `25.0` and `60.0`.
- `StrengthMultiplier` scales effective carry thresholds.
- Heavy loads reduce carry movement multiplier down to `45%`.
- The debug HUD shows current carried weight for tuning.
- Documented that later volume, backpack, awkward-object, injury/fatigue, and
hard overload systems should extend this total-weight hook.
- Added `Scripts/verify_carry_capacity_placeholder.py`.
- Updated the inventory data model, technical design document, and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_carry_capacity_placeholder.py` passed.
- `python3 Scripts/verify_carry_capacity_placeholder.py` passed.
- `git diff --check` passed.
- No Windows editor build was run because this item only changed docs and
Python verification around existing C++ behavior.
Automation notes:
- AWS SES in `us-west-2` is available.
- `pacificao.com` is a verified SES identity.
- Per-item summaries can be sent to `nathan@pacificao.com` from a
`pacificao.com` sender.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `2`
- Immediate next roadmap item: `Add inventory UI`.
## Agrarian Inventory UI - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `09eed7c Add MVP inventory HUD panel`
Completed roadmap item:
- `Add inventory UI`
- Added a compact MVP inventory panel to `AAgrarianDebugHUD`.
- The panel is controlled separately from the full developer HUD by
`bShowInventoryHUD`.
- It reads the replicated inventory component and shows occupied slots, max
slots, total carried weight, visible item stacks, stack quantity, and total
stack weight.
- Kept mutation flows on existing server-authoritative commands/RPCs until a
full UMG inventory screen is introduced.
- Added `Scripts/verify_inventory_ui.py`.
- Updated the inventory data model, technical design document, and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_inventory_ui.py` passed.
- `python3 Scripts/verify_inventory_ui.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Automation:
- Email summary sent to `nathan@pacificao.com` through AWS SES.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `1`
- Immediate next roadmap item: `Add persistence for inventory`.
## Agrarian Inventory Persistence - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed commit: `ac9fee4 Add inventory persistence restore hook`
Completed roadmap item:
- `Add persistence for inventory`
- `FAgrarianSavedPlayer::Inventory` stores the player stack array.
- Player capture writes `InventoryComponent->Items`.
- Added `UAgrarianInventoryComponent::RestoreSavedItems`.
- Restore broadcasts `OnInventoryChanged`.
- `UAgrarianPersistenceSubsystem::RestorePlayers` now uses the restore helper
instead of assigning `Items` directly.
- HUD/UI listeners and future inventory UI stay synchronized after loading.
- Total carry weight remains derived from stack data.
- Added `Scripts/verify_inventory_persistence.py`.
- Updated the inventory data model, technical design document, and roadmap.
Verification:
- `python3 -m py_compile Scripts/verify_inventory_persistence.py` passed.
- `python3 Scripts/verify_inventory_persistence.py` passed.
- `git diff --check` passed.
- Windows editor build passed through `/home/nathan/bin/agrarian-build-editor`.
Automation:
- Email summary sent to `nathan@pacificao.com` through AWS SES.
Roadmap state:
- Current version section: `0.1.E Inventory System`
- Items remaining in `0.1.E`: `0`
- Immediate next action: build Windows investor demo and stop.
## Agrarian Windows Investor Demo - 2026-05-17
Stop point completed:
- Remaining `0.1.E Inventory System` items are complete.
- Investor demo version strings were bumped before packaging:
- splash/demo notice: `Investor Demo v0.1.E - Build 2026.05.17`;
- `Config/DefaultGame.ini`: `ProjectVersion=0.1.E-investor.20260517`;
- packaged README/launchers use the same demo version.
- Latest pushed game commit after the version bump:
`5fc6a61 Bump investor demo version to 0.1.E`.
Windows package:
- Package command run on Windows builder from `P:\AgrarianGameBulid`:
`Scripts\PackageWindowsDevelopment.bat`
- Result: success.
- Output folder:
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`
- Approximate size: `1.1G`
- Key files:
- `AgrarianGame.exe`
- `README-Investor-Demo.txt`
- `Install Prerequisites.cmd`
- `Start Agrarian Demo.cmd`
- `Start Agrarian Demo - DX12.cmd`
- `Start Agrarian Demo - Compatibility DX11.cmd`
Repo state after package:
- Game repo clean on `main...origin/main`.
- Handoff repo clean on `main...origin/main`.
Instruction:
- Stop here per user request. Next development item should be selected only
after review of the investor demo or a new instruction.
## Agrarian 0.1.F Stone Resource - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `d693113 Document stone resource support`
Completed roadmap item:
- `Add stone resource`
- Confirmed stone already exists as `DA_Item_Stone`.
- Confirmed `BP_StoneResourceNode` is configured through playable Blueprint
setup.
- Confirmed deterministic Ground Zero stone node placements exist.
- Confirmed playable Blueprint and Ground Zero resource verifiers cover
stone.
- Documented the gatherable resource baseline in the technical design doc.
- Marked the roadmap item complete.
- Added `Scripts/verify_stone_resource.py`.
Verification:
- `python3 -m py_compile Scripts/verify_stone_resource.py` passed.
- `python3 Scripts/verify_stone_resource.py` passed.
- `git diff --check` passed.
- No Windows editor build was run because this item closed existing content via
docs and Python verification only.
Roadmap state:
- Current version section: `0.1.F Gathering And Resources`
- Items remaining in `0.1.F`: `5`
- Immediate next roadmap item: `Add edible plant resource`.
## Agrarian 0.1.F Edible Plant Resource - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `0545522 Add edible plant resource nodes`
Completed roadmap item:
- `Add edible plant resource`
- Added `BP_EdiblePlantResourceNode` as an Agrarian resource Blueprint.
- The edible plant node yields the MVP `food` item from forage patches.
- Added `M_AGR_GZ_EdiblePlant_Resource`.
- Added three deterministic Ground Zero edible plant resource nodes:
- `AGR_GZ_EdiblePlant_CoastalScrub_01`
- `AGR_GZ_EdiblePlant_Grassland_02`
- `AGR_GZ_EdiblePlant_DrainageCandidate_03`
- Updated the Ground Zero resource pass and technical design documentation.
- Added `Scripts/verify_edible_plant_resource.py`.
- Extended playable Blueprint and Ground Zero resource verifiers.
Verification:
- `python3 -m py_compile Scripts/setup_playable_blueprints.py Scripts/setup_ground_zero_demo_map.py Scripts/verify_playable_blueprints.py Scripts/verify_ground_zero_resources.py Scripts/verify_edible_plant_resource.py` passed.
- `python3 Scripts/verify_edible_plant_resource.py` passed.
- Windows Unreal Python setup for playable Blueprints passed.
- Windows Unreal Python setup for Ground Zero map resources passed.
- Windows Unreal Python `verify_playable_blueprints.py` passed.
- Windows Unreal Python `verify_ground_zero_resources.py` passed and reported
`4 wood, 5 fiber, 3 edible plant, 4 stone nodes`.
- `git diff --check` passed.
Roadmap state:
- Current version section: `0.1.F Gathering And Resources`
- Items remaining in `0.1.F`: `4`
- Immediate next roadmap item: `Add water gathering interaction`.
## Agrarian 0.1.F Water Gathering Interaction - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `fa9d183 Verify water gathering interaction`
Completed roadmap item:
- `Add water gathering interaction`
- Confirmed water gathering already exists through `AAgrarianWaterSource` and
`BP_FreshWaterSource`.
- Confirmed the water source uses the shared focused
`IAgrarianInteractable` path.
- Confirmed player-facing prompt text flows through
`AAgrarianGameCharacter::FindFocusedInteractable`.
- Confirmed server-authoritative `AAgrarianGameCharacter::ServerInteract`
range validation before interaction.
- Confirmed interaction restores thirst through
`UAgrarianSurvivalComponent::AddWater` with restore amount `45`.
- Added `Scripts/verify_water_gathering_interaction.py`.
- Updated the roadmap, technical design document, Ground Zero resource pass,
and Ground Zero freshwater source docs.
Verification:
- `python3 -m py_compile Scripts/verify_water_gathering_interaction.py` passed.
- `python3 Scripts/verify_water_gathering_interaction.py` passed.
- Windows Unreal Python `verify_ground_zero_water_source.py` passed and
reported `AGR_GZ_FreshWaterSource_01, restore=45.0`.
- `git diff --check` passed.
Roadmap state:
- Current version section: `0.1.F Gathering And Resources`
- Items remaining in `0.1.F`: `3`
- Immediate next roadmap item: `Add respawn rules for MVP`.
## Agrarian 0.1.F Resource Respawn Rules - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `a5ec210 Add MVP resource respawn rules`
Completed roadmap item:
- `Add respawn rules for MVP`
- Added native resource-node respawn fields:
`bRespawnsForMvp`, `RespawnDelaySeconds`, and `MaxHarvests`.
- Added server-side respawn timer logic. Renewable nodes schedule a timer
only when fully depleted.
- Respawn restores replicated `RemainingHarvests` and re-enables
visibility/collision.
- Configured MVP Blueprint defaults:
- wood respawns after `900` seconds;
- fiber respawns after `600` seconds;
- edible plants respawn after `1200` seconds;
- stone remains nonrespawning.
- Regenerated and saved resource Blueprints with the respawn defaults.
- Added `Scripts/verify_resource_respawn_rules.py`.
- Updated the roadmap, technical design document, Ground Zero resource pass,
`setup_playable_blueprints.py`, and `verify_playable_blueprints.py`.
Verification:
- `python3 -m py_compile Scripts/setup_playable_blueprints.py Scripts/verify_playable_blueprints.py Scripts/verify_resource_respawn_rules.py` passed.
- `python3 Scripts/verify_resource_respawn_rules.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
- Windows Unreal Python `setup_playable_blueprints.py` passed.
- Windows Unreal Python `verify_playable_blueprints.py` passed.
- Note: `/home/nathan/bin/agrarian-build-editor` appeared to hang silently and
was stopped; the direct Windows build command completed successfully.
Roadmap state:
- Current version section: `0.1.F Gathering And Resources`
- Items remaining in `0.1.F`: `2`
- Immediate next roadmap item: `Add tool requirement rules`.
## Agrarian 0.1.F Resource Tool Rules - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `843340e Add MVP resource tool rules`
Completed roadmap item:
- `Add tool requirement rules`
- Added inventory-based resource tool fields:
`RequiredToolItemId`, `bAllowBareHandGathering`, and
`ToolQuantityBonus`.
- Added harvest yield logic that keeps current MVP resources gatherable by
hand while granting a yield bonus when the player has the configured tool.
- Configured MVP Blueprint defaults:
- wood, fiber, and stone declare `basic_tool`, allow bare-hand gathering,
and gain `+1` yield with the tool;
- edible plants remain bare-hand gatherable without a tool bonus.
- Avoided a first-loop deadlock by not hard-requiring `basic_tool` for
stone, since the `basic_tool` recipe requires stone.
- Added `Scripts/verify_resource_tool_requirements.py`.
- Updated the roadmap, technical design document, Ground Zero resource pass,
`setup_playable_blueprints.py`, and `verify_playable_blueprints.py`.
Verification:
- `python3 -m py_compile Scripts/setup_playable_blueprints.py Scripts/verify_playable_blueprints.py Scripts/verify_resource_tool_requirements.py` passed.
- `python3 Scripts/verify_resource_tool_requirements.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
- Windows Unreal Python `setup_playable_blueprints.py` passed.
- Windows Unreal Python `verify_playable_blueprints.py` passed.
Roadmap state:
- Current version section: `0.1.F Gathering And Resources`
- Items remaining in `0.1.F`: `1`
- Immediate next roadmap item: `Add resource node persistence`.
## Agrarian 0.1.F Resource Node Persistence - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `5da545e Add resource node persistence`
Completed roadmap item:
- `Add resource node persistence`
- Added `FAgrarianSavedResourceNode` to `UAgrarianSaveGame`.
- Added `AAgrarianResourceNode::PersistenceNodeId`, capture, and restore
methods so resource depletion persists by stable map/tile node id.
- Added persistence subsystem capture/restore paths for resource nodes.
- The subsystem only captures nodes that exist in the loaded world and
restores matching existing nodes by id; it does not spawn resource nodes
from saves.
- Updated Ground Zero placement to assign `PersistenceNodeId` values matching
actor labels.
- Extended the Ground Zero resource verifier to require stable persistence
ids.
- Updated persistence/resource documentation and closed the roadmap item.
- Added `Scripts/verify_resource_node_persistence.py`.
Verification:
- `python3 -m py_compile Scripts/setup_ground_zero_demo_map.py Scripts/verify_ground_zero_resources.py Scripts/verify_resource_node_persistence.py` passed.
- `python3 Scripts/verify_resource_node_persistence.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
- Windows Unreal Python `setup_ground_zero_demo_map.py` passed.
- Windows Unreal Python `verify_ground_zero_resources.py` passed.
Roadmap state:
- Current version section: `0.1.F Gathering And Resources`
- Items remaining in `0.1.F`: `0`
- Next required action: build the Windows investor demo and stop.
## Agrarian 0.1.G Simple Container Recipe - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `ef658a3 Add simple container recipe`
Completed roadmap item:
- `Add simple container recipe`
- Added `simple_container` as an inventory item definition and generated
`/Game/Agrarian/DataAssets/Items/DA_Item_SimpleContainer`.
- Added `DA_Recipe_SimpleContainer` using wood, fiber, and hide as MVP
inputs.
- The recipe produces one simple container after 10 seconds and does not
require a campfire.
- Updated item and recipe setup/verification scripts so future asset
regeneration preserves the container item and recipe.
- Added `Scripts/verify_simple_container_recipe.py` for static roadmap/docs
coverage.
- Updated the roadmap, technical design document, and inventory data model
to clarify that the simple container is currently craftable inventory
output; placed storage, permissions, volume, and persistence remain later
system work.
Verification:
- `python3 -m py_compile Scripts/setup_item_definitions.py Scripts/verify_item_definitions.py Scripts/setup_recipe_definitions.py Scripts/verify_recipe_definitions.py Scripts/verify_simple_container_recipe.py` passed.
- `python3 Scripts/verify_simple_container_recipe.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
- Windows Unreal Python `setup_recipe_definitions.py` passed.
- Windows Unreal Python `verify_item_definitions.py` passed.
- Windows Unreal Python `verify_recipe_definitions.py` passed.
Roadmap state:
- Current version section: `0.1.G Primitive Crafting Loop`
- Items remaining in `0.1.G`: `2`
- Immediate next roadmap item: `Add crafting UI`.
## Agrarian 0.1.G Crafting UI - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `3509641 Add MVP crafting HUD`
Completed roadmap item:
- `Add crafting UI`
- Added `UAgrarianCraftingComponent::GetKnownRecipes` so UI and Blueprint
code can read a merged list of recipe data assets and runtime recipes.
- Added a compact `AAgrarianDebugHUD` crafting panel beside the inventory
HUD.
- The panel lists known MVP recipes, shows current inventory counts against
required ingredients, and color-codes craftable versus blocked rows.
- Updated `BP_AgrarianPlayerCharacter` and
`Scripts/setup_agrarian_player_blueprints.py` so the player starts with
primitive recipe data assets loaded in `KnownRecipeAssets`.
- Extended `Scripts/verify_agrarian_player_blueprints.py` to verify the exact
MVP recipe list, including `simple_container` and `bandage`.
- Added `Scripts/verify_crafting_ui.py`.
- Updated the roadmap and technical design document with the MVP HUD approach
and deferred full UMG crafting controls.
Verification:
- `python3 -m py_compile Scripts/setup_agrarian_player_blueprints.py Scripts/verify_agrarian_player_blueprints.py Scripts/verify_crafting_ui.py` passed.
- `python3 Scripts/verify_crafting_ui.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
- Windows Unreal Python `setup_agrarian_player_blueprints.py` passed.
- Windows Unreal Python `verify_agrarian_player_blueprints.py` passed.
Roadmap state:
- Current version section: `0.1.G Primitive Crafting Loop`
- Items remaining in `0.1.G`: `1`
- Immediate next roadmap item: `Add crafting debug tools`.
## Agrarian 0.1.G Crafting Debug Tools - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `70eb22d Add crafting debug exec tools`
Completed roadmap item:
- `Add crafting debug tools`
- Added player-controller exec command `AgrarianCraftStatus` to list known
recipes and current craftability.
- Added player-controller exec command `AgrarianCraft <RecipeId>` to request
a server-authoritative craft through `UAgrarianCraftingComponent`.
- Kept crafting mutations on the server-authoritative component path instead
of adding a separate debug-only inventory mutation.
- Added `Scripts/verify_crafting_debug_tools.py`.
- Updated the roadmap and technical design document with the debug tool
commands and demo-rehearsal intent.
Verification:
- `python3 -m py_compile Scripts/verify_crafting_debug_tools.py` passed.
- `python3 Scripts/verify_crafting_debug_tools.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
- Windows Unreal Python `verify_agrarian_player_blueprints.py` passed.
Roadmap state:
- Current version section: `0.1.G Primitive Crafting Loop`
- Items remaining in `0.1.G`: `0`
- Next required action: build the Windows investor demo and stop.
## Agrarian 0.1.H Campfire Extinguish Logic - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `c61b226 Add campfire extinguish logic`
Completed roadmap item:
- `Add extinguish logic`
- Added `AAgrarianCampfire::Extinguish()` as a native Blueprint-callable
authority path.
- Extinguish clears remaining fuel, turns off replicated `bLit`, and reuses
the same visual update path as natural fuel depletion.
- Added `SetLit` helper so fuel depletion, fuel addition, and extinguish all
update replicated state consistently.
- Added `Scripts/verify_fire_extinguish_logic.py`.
- Updated the roadmap and technical design document.
Verification:
- `python3 -m py_compile Scripts/verify_fire_extinguish_logic.py` passed.
- `python3 Scripts/verify_fire_extinguish_logic.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.H Fire System`
- Items remaining in `0.1.H`: `4`
- Immediate next roadmap item: `Add cooking placeholder if needed`.
## Agrarian 0.1.H Campfire Cooking Placeholder - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `0ac4bec Add campfire cooking placeholder`
Completed roadmap item:
- `Add cooking placeholder if needed`
- Added native replicated campfire cooking placeholder state on `AAgrarianCampfire`: `bCookingPlaceholderEnabled`, `CookingSecondsRequired`, and `CookingProgressSeconds`.
- Lit campfires now advance cooking progress server-side while the placeholder is enabled.
- Added Blueprint-callable `CanCook()` and `GetCookingProgressRatio()` helpers for future recipe UI, food transformation, and interaction hooks.
- Kept the playable Blueprint setup repeatable by leaving the new cooking defaults native; Unreal Python did not expose these freshly-added native fields on the existing BP_Campfire CDO during this pass.
- Added `Scripts/verify_fire_cooking_placeholder.py`.
- Updated the roadmap and technical design document.
Verification:
- `python3 -m py_compile Scripts/setup_playable_blueprints.py Scripts/verify_playable_blueprints.py Scripts/verify_fire_cooking_placeholder.py` passed.
- `python3 Scripts/verify_fire_cooking_placeholder.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
- Windows Unreal Python `setup_playable_blueprints.py` passed.
- Windows Unreal Python `verify_playable_blueprints.py` passed.
Roadmap state:
- Current version section: `0.1.H Fire System`
- Items remaining in `0.1.H`: `3`
- Immediate next roadmap item: `Add smoke/visual effect placeholder`.
## Agrarian 0.1.H Campfire Smoke Placeholder - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `c60b975 Add campfire smoke placeholder`
Completed roadmap item:
- `Add smoke/visual effect placeholder`
- Added a native assetless `SmokeEffect` `UParticleSystemComponent` to `AAgrarianCampfire`.
- Smoke starts inactive, is attached above the fire mesh, and activates/deactivates through the same replicated visual-state path as fire light intensity.
- Final smoke/ember assets can now be assigned later without changing gameplay code.
- Added `Scripts/verify_fire_smoke_placeholder.py`.
- Updated the roadmap and technical design document.
Verification:
- `python3 -m py_compile Scripts/verify_fire_smoke_placeholder.py` passed.
- `python3 Scripts/verify_fire_smoke_placeholder.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.H Fire System`
- Items remaining in `0.1.H`: `2`
- Immediate next roadmap item: `Add persistence`.
## Agrarian 0.1.H Campfire Persistence - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `7291c48 Add campfire persistence state`
Completed roadmap item:
- `Add persistence`
- Added `IAgrarianPersistentStateProvider` so persistent actors can capture/apply custom save fields through the existing `UAgrarianPersistentActorComponent` path.
- Campfires now have a persistent actor component with actor type `campfire`.
- Campfire save state captures transform plus lit state, fuel seconds, cooking placeholder enabled state, required cooking seconds, and cooking progress seconds.
- Campfire load state restores those values and reapplies the replicated visual state.
- The admin/world load path now registers the `campfire` actor type along with shelters.
- Added `Scripts/verify_fire_persistence.py`.
- Updated the roadmap and technical design document.
Verification:
- `python3 -m py_compile Scripts/verify_fire_persistence.py` passed.
- `python3 Scripts/verify_fire_persistence.py` passed.
- `git diff --check` passed.
- Windows editor build passed through direct `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.H Fire System`
- Items remaining in `0.1.H`: `1`
- Immediate next roadmap item: `Connect rain/weather to fire behavior`.
## Agrarian 0.1.H Cinematic Startup Credits And Demo Package - 2026-05-17
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `7472b0e Fix startup credits packaging warning`
Completed request:
- Added a native cinematic startup credits sequence to the existing demo notice
widget.
- Nathan Slaven - Lead Developer
- Hunter Slaven - Junior Developer
- Lisa Reiley - Quality Control
- River Slaven - Alpha Game Tester
- Fisher Slaven - Beta Game Tester
- Funding by cherished individuals, Pacificao seed funding, and Lina Family
Investment Funds
- Each credit card slams into frame, holds briefly, shows a stylized native
Slate illustration panel, then slides out.
- Updated investor demo labels to `Investor Demo v0.1.H - Build 2026.05.17`.
- Added `Scripts/verify_startup_credits_sequence.py`.
- Added the requested forest-fire ignition/spread concept to the roadmap as a
future server-authoritative fire risk/spread system.
- Fixed the Windows packaging warning-as-error by renaming a local timeline
accumulator from `Cursor` to `TimelineCursor`.
Verification:
- `python3 Scripts/verify_startup_credits_sequence.py` passed.
- `git diff --check` passed.
- Windows editor build passed earlier via `Scripts\BuildEditor-Windows.bat`.
- Windows investor demo package passed via `Scripts\PackageWindowsDevelopment.bat`.
- Package log ended with `BUILD SUCCESSFUL` and
`AutomationTool exiting with ExitCode=0 (Success)`.
Investor demo output:
- Path: `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`
- Main launcher: `Builds/WindowsDevelopment/Start Agrarian Demo.cmd`
- README version: `Investor Demo v0.1.H - Build 2026.05.17`
- Fresh archive timestamps:
- `AgrarianGame.exe`: 2026-05-17 20:52
- pak/container files: 2026-05-17 20:52
- launchers and README: 2026-05-17 20:53
- Package size: approximately `1.1G`.
## Agrarian 0.1.I Shelter Building Style - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `27be644 Decide MVP shelter building style`
Completed roadmap item:
- `Decide MVP building style`
- Version 0.1 shelter construction is crafted-kit based.
- Players gather natural materials, craft primitive frame/wall/roof panel
inventory parts, combine those parts into one placeable primitive shelter,
then place it through the server-authoritative placement component.
- Fully modular wall-by-wall building remains deferred to `0.2.E Permanent
Structures`.
- Added `Scripts/verify_shelter_building_style_decision.py`.
Verification:
- `python3 -m py_compile Scripts/verify_shelter_building_style_decision.py`
passed.
- `python3 Scripts/verify_shelter_building_style_decision.py` passed.
- `git diff --check` passed.
Roadmap state:
- Current version section: `0.1.I Shelter Building`
- Immediate next roadmap item: `Add ghost preview`.
## Agrarian 0.1.I Building Ghost Preview - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `6baeca2 Add building ghost preview`
Completed roadmap item:
- `Add ghost preview`
- Added native placement preview state on
`UAgrarianBuildingPlacementComponent`.
- The component now broadcasts `OnBuildPreviewUpdated` with placement
validity, snapped transform, and failure reason for Blueprint/UI use.
- Added an assetless green/red wireframe ghost footprint via `DrawDebugBox`
for development/investor builds before final mesh/material ghost assets
exist.
- Added `Scripts/verify_building_ghost_preview.py`.
Verification:
- `python3 -m py_compile Scripts/verify_building_ghost_preview.py Scripts/verify_shelter_building_style_decision.py`
passed.
- `python3 Scripts/verify_building_ghost_preview.py` passed.
- `python3 Scripts/verify_shelter_building_style_decision.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.I Shelter Building`
- Immediate next roadmap item: `Add wall piece if needed`.
## Agrarian 0.1.I Shelter Wall Piece - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `8c6aa7c Document MVP shelter wall piece`
Completed roadmap item:
- `Add wall piece if needed`
- Confirmed the MVP wall piece is the existing craftable
`primitive_wall_panel` inventory construction part consumed by the
primitive shelter recipe.
- Documented that separately placeable modular wall actors remain deferred to
`0.2.E Permanent Structures`.
- Added `Scripts/verify_shelter_wall_piece.py`.
Verification:
- `python3 -m py_compile Scripts/verify_shelter_wall_piece.py` passed.
- `python3 Scripts/verify_shelter_wall_piece.py` passed.
- `git diff --check` passed.
Roadmap state:
- Current version section: `0.1.I Shelter Building`
- Immediate next roadmap item: `Add roof piece if needed`.
## Agrarian 0.1.I Shelter Roof Piece - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `e57a77d Document MVP shelter roof piece`
Completed roadmap item:
- `Add roof piece if needed`
- Confirmed the MVP roof piece is the existing craftable
`primitive_roof_panel` inventory construction part consumed by the
primitive shelter recipe.
- Documented that separately placeable modular roof actors remain deferred to
`0.2.E Permanent Structures`.
- Added `Scripts/verify_shelter_roof_piece.py`.
Verification:
- `python3 -m py_compile Scripts/verify_shelter_roof_piece.py` passed.
- `python3 Scripts/verify_shelter_roof_piece.py` passed.
- `git diff --check` passed.
Roadmap state:
- Current version section: `0.1.I Shelter Building`
- Immediate next roadmap item: `Add door/opening if needed`.
## Agrarian 0.1.I Shelter Door/Opening Scope - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `01d439c Decide MVP shelter opening scope`
Completed roadmap item:
- `Add door/opening if needed`
- MVP primitive shelters use an open entrance and do not include an
interactive door.
- Door actors, locks, ownership permissions, and modular openings are
deferred to `0.2.E Permanent Structures`.
- Added `Scripts/verify_shelter_door_opening_decision.py`.
Verification:
- `python3 -m py_compile Scripts/verify_shelter_door_opening_decision.py`
passed.
- `python3 Scripts/verify_shelter_door_opening_decision.py` passed.
- `git diff --check` passed.
Roadmap state:
- Current version section: `0.1.I Shelter Building`
- Immediate next roadmap item: `Add deconstruction or damage placeholder`.
## Agrarian 0.1.I Shelter Damage/Deconstruction Placeholder - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `e75ee71 Add shelter damage placeholder`
Completed roadmap item:
- `Add deconstruction or damage placeholder`
- Primitive shelters now have replicated `MaxStructureHealth` and
`CurrentStructureHealth`.
- Added authority-only `ApplyStructureDamage`, `RepairStructure`, and
`Deconstruct` hooks.
- Integrated `TakeDamage`, depletion destruction, health ratio/damaged
helpers, and save/load support for current/max structure health through the
persistent actor component.
- Added `Scripts/verify_shelter_damage_placeholder.py`.
Verification:
- `python3 -m py_compile Scripts/verify_shelter_damage_placeholder.py` passed.
- `python3 Scripts/verify_shelter_damage_placeholder.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.I Shelter Building`
- Items remaining in `0.1.I`: `0`
- Next required action: build the Windows investor demo and stop.
## Agrarian 0.1.I Investor Demo Metadata - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `0ea9af1 Update investor demo to 0.1.I`
Completed follow-up:
- Corrected the investor demo build label from `0.1.H` to `0.1.I` for package
launchers, packaged README generation, project version, startup demo notice
actor/widget defaults, startup-credits verification, and investor roadmap
HTML.
Verification:
- `python3 Scripts/verify_startup_credits_sequence.py` passed.
- `python3 Scripts/verify_shelter_damage_placeholder.py` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- `0.1.I Shelter Building` is complete.
- Next required action: rebuild the Windows investor demo package and stop.
## Agrarian 0.1.I Windows Investor Demo Package - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `0ea9af1 Update investor demo to 0.1.I`
Completed final package:
- Rebuilt the Windows Development investor demo package successfully after the
0.1.I metadata correction.
- Package path: `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`.
- Packaged README now reports:
`Investor Demo v0.1.I - Build 2026.05.18`.
- Fresh archive timestamps confirmed at 2026-05-18 11:43-11:44 for the
executable, pak/iostore files, launchers, manifests, and README.
- Package size: `1.1G`.
Verification:
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
- Windows package passed via `Scripts\PackageWindowsDevelopment.bat`.
- AutomationTool reported `BUILD SUCCESSFUL`, ExitCode=0.
- Game repo was clean after commit/push and package verification.
Roadmap state:
- `0.1.I Shelter Building` is complete.
- Stop point reached as requested: Windows investor demo rebuilt.
## Agrarian Long-Term Family/NPC Intelligence Roadmap - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit:
`f3316b3 Add long-term family NPC intelligence roadmap`
Completed design/roadmap update:
- Added a phased roadmap for family members, community NPCs, and offline player
stewardship so future NPCs behave like living contributors instead of static
quest characters.
- Updated `AGRARIAN_DEVELOPMENT_ROADMAP.md` with:
- core commitments for living family/community characters and
proprietary-first NPC intelligence;
- `0.2.H Household Task And Helper Foundations`;
- `0.3.G Community NPC Behavior Foundation`;
- `0.4.F Family Agency And Emotional Life`;
- `0.4.G Offline Character Stewardship`;
- `0.5.G Settlement Labor, Care, And Community Schedules`;
- `0.6.F NPC Hardship, Adaptation, And Recovery`;
- `0.8.E Proprietary AI Simulation Research`;
- cross-cutting `N. NPC, Family, And Offline Simulation Intelligence`.
- Updated `Docs/TechnicalDesignDocument.md` with server-authoritative,
deterministic-first NPC intelligence rules, local/self-hosted AI boundaries,
and offline character stewardship constraints.
Verification:
- Roadmap/design section search passed.
- `git diff --check` passed.
## Agrarian 0.1.J Bleeding Placeholder - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `c796a99 Add bleeding survival placeholder`
Completed roadmap item:
- `Add bleeding placeholder`
- Survival now tracks replicated `BleedingSeverity` inside
`FAgrarianSurvivalSnapshot`.
- Added `BleedingDamagePerMinute`, `BleedingExhaustionPerSecond`,
`AddBleeding`, and `ReduceBleeding` to `UAgrarianSurvivalComponent`.
- Generic injuries now seed bleeding at a light placeholder ratio.
- Active bleeding applies small health and exhaustion pressure and contributes
to care-history injury burden.
- Debug HUD and `AgrarianSurvival` console output now display bleeding.
- Added `Scripts/verify_bleeding_placeholder.py`.
Verification:
- `python3 -m py_compile Scripts/verify_bleeding_placeholder.py` passed.
- `python3 Scripts/verify_bleeding_placeholder.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.J Injury And Basic Survival Consequences`
- Immediate next roadmap item: `Add sprain or movement penalty placeholder`.
## Agrarian 0.1.J Sprain/Movement Placeholder - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `559a5b2 Add sprain movement placeholder`
Completed roadmap item:
- `Add sprain or movement penalty placeholder`
- Survival now tracks replicated `SprainSeverity` inside
`FAgrarianSurvivalSnapshot`.
- Added `SprainExhaustionPerSecond`, `AddSprain`, and `ReduceSprain` to
`UAgrarianSurvivalComponent`.
- Generic injuries now seed sprain severity at a light placeholder ratio.
- Active sprains add light exhaustion pressure and contribute to care-history
injury burden.
- `AAgrarianGameCharacter::CalculateSurvivalMovementMultiplier` now includes
an explicit sprain movement multiplier.
- Debug HUD and `AgrarianSurvival` console output now display sprain state.
- Added `Scripts/verify_sprain_movement_placeholder.py`.
Verification:
- `python3 -m py_compile Scripts/verify_sprain_movement_placeholder.py`
passed.
- `python3 Scripts/verify_sprain_movement_placeholder.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.J Injury And Basic Survival Consequences`
- Immediate next roadmap item: `Add treatment item`.
## Agrarian 0.1.J Treatment Item - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `164169f Expand bandage treatment effects`
Completed roadmap item:
- `Add treatment item`
- The existing craftable `bandage` medicine item is now the MVP treatment
item.
- Server-authoritative `AgrarianUseItem bandage Quantity` now reduces injury,
bleeding, and sprain severity with a small health bump.
- Updated item-use verification and technical design documentation.
- Added `Scripts/verify_treatment_item.py`.
Verification:
- `python3 -m py_compile Scripts/verify_treatment_item.py Scripts/verify_item_use.py`
passed.
- `python3 Scripts/verify_treatment_item.py` passed.
- `python3 Scripts/verify_item_use.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.J Injury And Basic Survival Consequences`
- Immediate next roadmap item: `Add death state`.
## Agrarian 0.1.J Death State - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `d318e97 Add survival death state`
Completed roadmap item:
- `Add death state`
- Survival now has replicated `bIsDead` and `LastDeathReason` fields in
`FAgrarianSurvivalSnapshot`.
- Health depletion latches death, zeros stamina, and records
`health_depleted` when no other death reason is set.
- Ordinary `RestoreHealth` no longer revives dead characters.
- Added explicit `MarkDead` and `Revive` hooks for future respawn/admin flows.
- Updated `AgrarianHeal` to use `Revive`.
- Debug HUD and `AgrarianSurvival` console output now show alive/dead state.
- Added `Scripts/verify_death_state.py`.
Verification:
- `python3 -m py_compile Scripts/verify_death_state.py` passed.
- `python3 Scripts/verify_death_state.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.J Injury And Basic Survival Consequences`
- Immediate next roadmap item: `Add respawn rules for MVP`.
## Agrarian 0.1.J MVP Respawn Rules - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `11f051c Add MVP respawn command`
Completed roadmap item:
- `Add respawn rules for MVP`
- Added server-authoritative `AgrarianRespawn` exec command and
`ServerAgrarianRespawn` RPC.
- Respawn is only available after death; living characters are told to use
`AgrarianHeal` for admin recovery.
- MVP respawn stops movement, returns the character to the Ground Zero
spawn/home location, revives at partial health, stabilizes
hunger/thirst/body temperature, and clears acute injury, bleeding, sprain,
sickness, and exhaustion.
- Family/inheritance respawn remains deferred to later generational
milestones.
- Added `Scripts/verify_mvp_respawn_rules.py`.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_respawn_rules.py` passed.
- `python3 Scripts/verify_mvp_respawn_rules.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.J Injury And Basic Survival Consequences`
- Immediate next roadmap item: `Add corpse/backpack placeholder if needed`.
## Agrarian 0.1.J Corpse/Backpack Decision - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `e8f4acb Document corpse backpack MVP decision`
Completed roadmap item:
- `Add corpse/backpack placeholder if needed`
- Decision: no physical corpse/backpack actor is needed for the 0.1.J MVP
respawn loop because death inventory loss is not active yet.
- Reserved future corpse/backpack recovery as a persistent, server-owned,
interaction-gated death-recovery record once inventory loss and decay rules
exist.
- Updated persistence and multiplayer networking design docs with the
decision.
- Added `Scripts/verify_corpse_backpack_decision.py`.
Verification:
- `python3 -m py_compile Scripts/verify_corpse_backpack_decision.py` passed.
- `python3 Scripts/verify_corpse_backpack_decision.py` passed.
- `git diff --check` passed.
- No Windows editor build was run because this item only changed docs and
Python verification.
Roadmap state:
- Current version section: `0.1.J Injury And Basic Survival Consequences`
- Immediate next roadmap item: `Add replicated death feedback`.
## Agrarian 0.1.J Replicated Death Feedback - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `dce4f77 Add replicated death feedback`
Completed roadmap item:
- `Add replicated death feedback`
- Survival now exposes Blueprint-assignable `OnDeathStateChanged` with
replicated alive/dead state and death reason.
- `BroadcastSurvivalChanged` now emits death-state feedback when replicated
death state or death reason changes.
- Debug HUD shows replicated death reason while dead.
- Added `Scripts/verify_replicated_death_feedback.py`.
Verification:
- `python3 -m py_compile Scripts/verify_replicated_death_feedback.py` passed.
- `python3 Scripts/verify_replicated_death_feedback.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- `0.1.J Injury And Basic Survival Consequences` items remaining: `0`
- Next required action: build the Windows investor demo and stop.
## Agrarian 0.1.J Investor Demo Metadata - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `f0d8e3e Update investor demo to 0.1.J`
Completed follow-up:
- Corrected the investor demo build label from `0.1.I` to `0.1.J`.
- Updated project version, package launcher README generation, startup notice
actor/widget defaults, startup credits verifier, and investor roadmap HTML.
- Investor roadmap HTML now describes 0.1.J injury/basic survival consequences
as completed.
Verification:
- `python3 Scripts/verify_startup_credits_sequence.py` passed.
- Stale `0.1.I` demo-label search passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- `0.1.J Injury And Basic Survival Consequences` is complete.
- Next required action: build the Windows investor demo and stop.
## Agrarian 0.1.J Windows Investor Demo Package - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `f0d8e3e Update investor demo to 0.1.J`
Completed final package step:
- Built the Windows investor demo for `0.1.J Injury And Basic Survival
Consequences`.
- Output path: `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`
- README label verified:
`Investor Demo v0.1.J - Build 2026.05.18`.
- Packaged folder size: `1.1G`.
- Fresh package artifacts were written at `2026-05-18 13:50`, including
`Builds/WindowsDevelopment/AgrarianGame.exe`, launcher command files, README,
and `AgrarianGame/Content/Paks` files.
Verification:
- Windows package command passed via `Scripts\PackageWindowsDevelopment.bat`.
- AutomationTool reported `BUILD SUCCESSFUL`.
- AutomationTool exited with `ExitCode=0`.
- README and package artifacts were verified from Linux side.
- Game repo status is clean after package verification.
Roadmap state:
- `0.1.J Injury And Basic Survival Consequences` is complete.
- Windows investor demo has been rebuilt and is ready at the package path.
- Stop here per user instruction.
## Agrarian 0.1.L Dedicated Server Target/Bootstrap - 2026-05-18
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `1367f59 Add dedicated server bootstrap target`
Completed roadmap item:
- `Create dedicated server build target if needed`
- Confirmed `Source/AgrarianGameServer.Target.cs` already defines the
`AgrarianGameServer` Linux dedicated server target.
- Confirmed `Scripts/BuildLinuxDedicatedServer-Windows.bat` already exists
for Windows-Builder Linux server cross-compile/package output at
`Builds/LinuxServerDevelopment`.
- Added reusable Ubuntu gameplay host bootstrap script:
`Operations/cloud-game-server/bootstrap_ubuntu_game_server.sh`.
- Standardized first MVP gameplay DNS/port convention:
`play.agrariangame.com`, `7777/udp`.
- Updated `Docs/Ops/DedicatedServerBuildRunbook.md` with Ubuntu/DigitalOcean
deploy steps, DNS, port, systemd service, and separation from the tile
server.
- Added `Scripts/verify_dedicated_server_target.py`.
Verification:
- `python3 -m py_compile Scripts/verify_dedicated_server_target.py` passed.
- `python3 Scripts/verify_dedicated_server_target.py` passed.
- `git diff --check` passed.
- Attempted Windows-Builder dedicated server package verification, but Unraid
libvirt/VM Manager is currently down:
`/etc/rc.d/rc.libvirt status` reports the libvirt daemon is not running, and
starting it fails because `/etc/libvirt/virtlockd.conf` and
`/etc/libvirt/virtlogd.conf` are missing.
Roadmap state:
- Current version section: `0.1.L Basic Multiplayer`
- Immediate next roadmap item: `Add server travel flow`.
- Windows/Linux build verification and any new VM startup are blocked until
Unraid libvirt/VM Manager is repaired.
## Agrarian 0.1.L Server Travel Flow - 2026-05-18
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `ebc7aa1 Add MVP server travel flow`
Completed roadmap item:
- `Add server travel flow`
- Added allowlisted `AgrarianServerTravel GroundZero` admin/dev console
command on `AAgrarianGamePlayerController`.
- Command routes through `ServerAgrarianServerTravel`, validates server
authority, resolves only the Ground Zero MVP map, and calls
`World->ServerTravel("/Game/Agrarian/Maps/L_GroundZeroTerrain_Test?listen")`.
- Updated multiplayer networking design and dedicated server runbook with the
MVP travel flow.
- Added `Scripts/verify_server_travel_flow.py`.
Verification:
- `python3 -m py_compile Scripts/verify_server_travel_flow.py` passed.
- `python3 Scripts/verify_server_travel_flow.py` passed.
- `git diff --check` passed.
- C++ compile/package verification is blocked because Unraid libvirt/VM Manager
is still down; see previous handoff entry for the missing libvirt config
files.
Roadmap state:
- Current version section: `0.1.L Basic Multiplayer`
- Immediate next roadmap item: `Add network relevancy rules`.
## Agrarian 0.1.L Network Relevancy Rules - 2026-05-18
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `d4ea10c Add MVP network relevancy rules`
Completed roadmap item:
- `Add network relevancy rules`
- Added explicit MVP `NetCullDistanceSquared` values for replicated gameplay
actors:
- item pickups: 30m
- resource nodes: 45m
- campfires, shelters, wildlife: 60m
- water sources and weather exposure zones: 65m
- wildlife spawn managers: 80m
- Updated multiplayer networking design with the Ground Zero relevancy
strategy.
- Added `Scripts/verify_network_relevancy_rules.py`.
Verification:
- `python3 -m py_compile Scripts/verify_network_relevancy_rules.py` passed.
- `python3 Scripts/verify_network_relevancy_rules.py` passed.
- `git diff --check` passed.
- C++ compile/package verification is blocked because Unraid libvirt/VM Manager
is still down.
Roadmap state:
- Current version section: `0.1.L Basic Multiplayer`
- Immediate next roadmap item: `Add basic latency testing`.
## Agrarian 0.1.L Basic Latency Testing - 2026-05-18
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `3b772da Add multiplayer latency test plan`
Completed roadmap item:
- `Add basic latency testing`
- Added `Docs/Ops/MultiplayerLatencyTestPlan.md` with clean LAN, mild WAN,
and rough WAN Unreal packet-simulation profiles.
- Added `Scripts/LatencyTestProfiles-Windows.bat` to print the test console
commands and reset commands.
- Updated multiplayer networking design with the 0.1.L latency gate.
- Added `Scripts/verify_basic_latency_testing.py`.
Verification:
- `python3 -m py_compile Scripts/verify_basic_latency_testing.py` passed.
- `python3 Scripts/verify_basic_latency_testing.py` passed.
- `git diff --check` passed.
- Interactive latency playthrough is blocked until a playable server/client test
host is available; VM-based builds remain blocked by Unraid libvirt.
Roadmap state:
- Current version section: `0.1.L Basic Multiplayer`
- Immediate next roadmap item: `Add disconnect/reconnect handling`.
## Agrarian 0.1.L Disconnect/Reconnect Handling - 2026-05-18
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `0b9a8b7 Add MVP reconnect snapshots`
Completed roadmap item:
- `Add disconnect/reconnect handling`
- Added MVP player reconnect snapshots in `UAgrarianPersistenceSubsystem`.
- `SavePlayerSnapshot` updates the matching saved player record with
transform, survival, care history, and inventory.
- `RestorePlayerSnapshot` restores a matching saved player after spawn.
- `AAgrarianGameGameMode::Logout` saves the reconnect snapshot before logout
completes.
- `AAgrarianGameGameMode::RestartPlayer` restores the snapshot after normal
MVP spawn when a matching record exists.
- Updated multiplayer networking design and roadmap.
- Added `Scripts/verify_disconnect_reconnect_handling.py`.
Verification:
- `python3 -m py_compile Scripts/verify_disconnect_reconnect_handling.py`
passed.
- `python3 Scripts/verify_disconnect_reconnect_handling.py` passed.
- `git diff --check` passed.
- C++ compile/package verification is blocked because Unraid libvirt/VM Manager
is still down.
Roadmap state:
- `0.1.L Basic Multiplayer` items remaining: `0`.
- Next required action: update investor demo metadata to 0.1.L, build the
Windows investor demo, and stop, but this is blocked until Unraid libvirt/VM
Manager is repaired.
## Agrarian 0.1.L Investor Demo Metadata - 2026-05-18
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `9c808f4 Update investor demo to 0.1.L`
Completed follow-up:
- Updated the investor demo metadata baseline from `0.1.K` to `0.1.L`.
- Updated project version, Windows launcher README generation, startup notice
actor/widget defaults, startup credits verifier, and investor roadmap HTML.
- Investor roadmap HTML now describes 0.1.L Basic Multiplayer as completed:
dedicated server target/bootstrap, server travel flow, replicated session
foundations, network relevancy rules, latency test plan, and
disconnect/reconnect snapshots.
Verification:
- `python3 -m py_compile Scripts/verify_startup_credits_sequence.py` passed.
- `python3 Scripts/verify_startup_credits_sequence.py` passed.
- Stale 0.1.K demo-label search passed.
- `git diff --check` passed.
Roadmap state:
- `0.1.L Basic Multiplayer` is complete.
- Windows investor demo metadata is ready for `Investor Demo v0.1.L - Build
2026.05.18`.
- Final Windows investor demo packaging remains blocked because Unraid
libvirt/VM Manager is still down/missing `/etc/libvirt/virtlockd.conf` and
`/etc/libvirt/virtlogd.conf`.
- Gameplay server DNS/firewall plan:
- Point `play.agrariangame.com` to the future Ubuntu gameplay server public
IP.
- Open `7777/udp` for Unreal gameplay traffic.
- Keep SSH restricted to admin IPs.
## Agrarian 0.1.L Windows Investor Demo Package - 2026-05-18
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Build-share checkout: `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `9c808f4 Update investor demo to 0.1.L`
Completed final package step:
- Refreshed the restored Windows builder `P:` mapping to
`\\192.168.5.8\projects`.
- Fast-forwarded the build-share checkout from `6178e77` to `9c808f4`.
- Built the Windows investor demo for `0.1.L Basic Multiplayer`.
- Output path: `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`.
- README label verified:
`Investor Demo v0.1.L - Build 2026.05.18`.
- Packaged folder size: `1.1G`.
- Fresh top-level package artifacts were written at `2026-05-18 15:43`,
including `AgrarianGame.exe`, launcher command files, manifests, and README.
Verification:
- Windows package command passed via `Scripts\PackageWindowsDevelopment.bat`.
- AutomationTool reported `BUILD SUCCESSFUL`.
- AutomationTool exited with `ExitCode=0`.
- `AgrarianGame.exe` exists and is a PE32+ x86-64 Windows GUI executable.
- `/home/nathan/AgrarianGameBuild` and `/mnt/projects/AgrarianGameBulid` were
clean after package verification.
Notes:
- Windows build VM reported 10 logical cores and 32 GB RAM during packaging.
- UE 5.7 emitted deprecation warnings for direct public access to
`AActor::NetCullDistanceSquared`; future cleanup should move those MVP
relevancy assignments to `SetNetCullDistanceSquared()`.
Roadmap state:
- `0.1.L Basic Multiplayer` is complete.
- Windows investor demo has been rebuilt and is ready at the package path.
- Stop here per user instruction.
## Agrarian MVP Gameplay Server VM - 2026-05-18
Created Unraid VM:
- VM name: `Agrarian-PlayServer`
- Hostname/FQDN: `play.agrariangame.com`
- LAN IP: `192.168.5.15/22`
- Gateway: `192.168.4.1`
- MAC: `52:54:00:7a:77:15`
- vCPU/RAM: 2 vCPU, 4 GB RAM
- Disk: 40 GB qcow2 backed by Ubuntu 24.04 cloud image
- Autostart: enabled
Access:
- User: `nathan`
- Password uses the usual MVP account password requested by Nathan.
- SSH password login is enabled for MVP convenience.
Server setup:
- `ufw` active.
- OpenSSH allowed.
- `7777/udp` allowed.
- Deployment directory exists and is owned by `nathan:nathan`:
`/opt/agrarian/server`.
- Systemd service installed:
`agrarian-game-server.service`.
- Service is enabled but inactive until the expected dedicated-server wrapper
exists:
`/opt/agrarian/server/AgrarianGameServer.sh`.
DNS/network:
- `play.agrariangame.com` resolves to public IP `208.79.250.18`.
- Router/NAT follow-up: forward public `7777/udp` to `192.168.5.15`.
- No Unreal Linux dedicated server package has been deployed yet, so nothing is
currently listening on `7777/udp`.
Follow-up:
- Nathan reported Unraid UI showed the VM requires guest agent installed.
- Verified guest agent is actually installed and active inside
`Agrarian-PlayServer`.
- Libvirt backend confirms agent health:
`virsh qemu-agent-command Agrarian-PlayServer --cmd '{"execute":"guest-ping"}'`
succeeds.
- `virsh domifaddr Agrarian-PlayServer --source agent` returns
`192.168.5.15/22`.
- Rebooted `Agrarian-PlayServer` once so Unraid UI can refresh with the agent
present from boot.
- Post-reboot checks:
- `qemu-guest-agent`: active
- `ssh`: active
- `ufw`: active
- `7777/udp`: allowed
- `agrarian-game-server.service`: inactive because
`/opt/agrarian/server/AgrarianGameServer.sh` does not exist yet.
Dedicated server deployment attempt:
- Ran `Scripts\BuildLinuxDedicatedServer-Windows.bat` from Windows-Builder.
- Build failed immediately with UnrealBuildTool:
`Missing files required to build Linux targets. Enable Linux as an optional
download component in the Epic Games Launcher.`
- Windows-Builder UE 5.7 has installed target platform folders for Android,
IOS, VisionOS, and Windows, but not Linux under `Engine\Platforms`.
- No existing Linux dedicated server package was found in
`Builds/LinuxServerDevelopment`.
Required next step:
- Install the UE 5.7 Linux target platform/toolchain on Windows-Builder through
Epic Games Launcher options.
- Rerun `Scripts\BuildLinuxDedicatedServer-Windows.bat`.
- Copy the produced Linux server package to
`nathan@192.168.5.15:/opt/agrarian/server`.
- Start `agrarian-game-server.service` and verify `ss -lunp` shows `7777/udp`.
## Agrarian PlayServer Linux Package Deployment - 2026-05-18
Windows-Builder Linux toolchain:
- Installed official UE 5.7 Linux cross-toolchain:
`v26_clang-20.1.8-rockylinux8`.
- Toolchain path:
`C:\UnrealToolchains\v26_clang-20.1.8-rockylinux8`.
- Machine environment variable set:
`LINUX_MULTIARCH_ROOT=C:\UnrealToolchains\v26_clang-20.1.8-rockylinux8`.
- Turnkey verifies Linux SDK as valid.
Dedicated server target status:
- `Scripts\BuildLinuxDedicatedServer-Windows.bat` still cannot produce the true
server target because Epic's installed binary engine reports:
`Server targets are not currently supported from this engine distribution.`
- Production-quality follow-up: use a source-built/server-capable Unreal engine
distribution for the real `AgrarianGameServer` dedicated target.
MVP fallback deployed:
- Built Linux game package via UAT `BuildCookRun` for platform `Linux`.
- Output path on build share:
`/mnt/projects/AgrarianGameBulid/Builds/LinuxGameDevelopment`.
- First Linux cook took about 1h 16m and generated the initial Vulkan shader
cache.
- Package size: `1.1G`.
- Deployed to:
`nathan@192.168.5.15:/opt/agrarian/server`.
- Created wrapper:
`/opt/agrarian/server/AgrarianGameServer.sh`.
- Wrapper runs:
`/Game/Agrarian/Maps/L_GroundZeroTerrain_Test?listen -server -port=7777 -log
-unattended -NullRHI -nosound`.
Verification:
- `agrarian-game-server.service` is active after stability check.
- `ss -lunp` shows `AgrarianGame` listening on `0.0.0.0:7777/udp`.
- `nc -zvu -w 2 192.168.5.15 7777` succeeds from LAN.
- Runtime log reports ProjectVersion `0.1.L-investor.20260518`.
- Runtime log reports browse started for:
`/Game/Agrarian/Maps/L_GroundZeroTerrain_Test?Name=Player?listen`.
## Agrarian 0.1.K Wildlife Spawn Manager - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `494fe6f Add wildlife spawn manager`
Completed roadmap item:
- `Add spawn manager`
- Added `AAgrarianWildlifeSpawnManager`, a replicated,
server-authoritative spawn manager actor for MVP wildlife population seeding.
- Designers can configure wildlife class, initial spawn count, max active
population, spawn radius, respawn interval, spawn-on-begin-play, and
optional navigation projection.
- Spawned wildlife actors remain authoritative server spawns and are tracked
by the manager for active population limits.
- Updated roadmap and technical design documentation.
- Added `Scripts/verify_wildlife_spawn_manager.py`.
Verification:
- `python3 -m py_compile Scripts/verify_wildlife_spawn_manager.py` passed.
- `python3 Scripts/verify_wildlife_spawn_manager.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- Current version section: `0.1.K Wildlife Prototype`
- Immediate next roadmap item: `Add performance limits`.
## Agrarian 0.1.K Wildlife Performance Limits - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `a834eb7 Add wildlife performance limits`
Completed roadmap item:
- `Add performance limits`
- Wildlife now has MVP server-side performance throttling.
- Nearby wildlife inside `FullUpdateRadius` updates normally for responsive
flee/chase behavior.
- Far wildlife batches server thinking on `FarUpdateIntervalSeconds`.
- Dead wildlife disables ticking after entering the dead state.
- Spawn-manager `MaxActiveWildlife` remains the MVP population cap.
- Updated roadmap and technical design documentation.
- Added `Scripts/verify_wildlife_performance_limits.py`.
Verification:
- `python3 -m py_compile Scripts/verify_wildlife_performance_limits.py
Scripts/verify_wildlife_spawn_manager.py` passed.
- `python3 Scripts/verify_wildlife_performance_limits.py` passed.
- `python3 Scripts/verify_wildlife_spawn_manager.py` passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- `0.1.K Wildlife Prototype` items remaining: `0`.
- Next required action: update investor demo metadata to 0.1.K, build the
Windows investor demo, and stop.
## Agrarian 0.1.K Investor Demo Metadata - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `6178e77 Update investor demo to 0.1.K`
Completed follow-up:
- Corrected the investor demo build label from `0.1.J` to `0.1.K`.
- Updated project version, package launcher README generation, startup notice
actor/widget defaults, startup credits verifier, and investor roadmap HTML.
- Investor roadmap HTML now describes 0.1.K wildlife prototype as completed.
Verification:
- `python3 Scripts/verify_startup_credits_sequence.py` passed.
- Stale `0.1.J` demo-label search passed.
- `git diff --check` passed.
- Windows editor build passed via `Scripts\BuildEditor-Windows.bat`.
Roadmap state:
- `0.1.K Wildlife Prototype` is complete.
- Next required action: build the Windows investor demo and stop.
## Agrarian 0.1.K Windows Investor Demo Package - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `6178e77 Update investor demo to 0.1.K`
Completed final package step:
- Built the Windows investor demo for `0.1.K Wildlife Prototype`.
- Output path: `/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`
- README label verified:
`Investor Demo v0.1.K - Build 2026.05.18`.
- Packaged folder size: `1.1G`.
- Fresh package artifacts were written at `2026-05-18 14:33`, including
`Builds/WindowsDevelopment/AgrarianGame.exe`, launcher command files, README,
and `AgrarianGame/Content/Paks` files.
Verification:
- Windows package command passed via `Scripts\PackageWindowsDevelopment.bat`.
- AutomationTool reported `BUILD SUCCESSFUL`.
- AutomationTool exited with `ExitCode=0`.
- README and package artifacts were verified from Linux side.
- Game repo status is clean after package verification.
Roadmap state:
- `0.1.K Wildlife Prototype` is complete.
- Windows investor demo has been rebuilt and is ready at the package path.
- Stop here per user instruction.
## Agrarian 0.1.M Player Identity Persistence - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `1e0d326 Save MVP player identity metadata`
Completed roadmap item:
- `Save player identity`
- Added `FAgrarianSavedPlayerIdentity` to player save records.
- Kept the existing backwards-compatible `PlayerId` string.
- Player persistence now prefers a valid `APlayerState` network unique ID,
then falls back to player name, then pawn name for local prototype sessions.
- The save record keeps safe identity metadata: stable ID, player name,
network ID, whether the network ID was used, and last known pawn name.
- Persistence documentation now explicitly states that saved player identity
does not store credentials, emails, passwords, or tokens.
- Added `Scripts/verify_player_identity_persistence.py`.
Verification:
- `python3 -m py_compile Scripts/verify_player_identity_persistence.py` passed.
- `python3 Scripts/verify_player_identity_persistence.py` passed.
- `git diff --check` passed.
- Windows editor compile gate was attempted but blocked because
`UNRAID_PASSWORD` was not present in the shell environment.
Deployment classification:
- `Server deploy required` at milestone packaging time because this changes
server-authoritative persistence/save code shared by the multiplayer host.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `13`
- Immediate next roadmap item: `Save player stats`.
## Agrarian 0.1.M Player Stats Persistence - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `82f60f4 Document player stats persistence`
Completed roadmap item:
- `Save player stats`
- Confirmed player stats already persist through
`FAgrarianSavedPlayer::Survival`.
- The saved survival snapshot covers health, stamina, exhaustion, hunger,
thirst, body temperature, injury, bleeding, sprain, sickness, death state,
and death reason.
- Restore continues through `UAgrarianSurvivalComponent::ApplySavedState`.
- Updated persistence documentation and roadmap wording to make the save
contract explicit.
- Added `Scripts/verify_player_stats_persistence.py`.
Verification:
- `python3 -m py_compile Scripts/verify_player_stats_persistence.py` passed.
- `python3 Scripts/verify_player_stats_persistence.py` passed.
- `git diff --check` passed.
- No Windows editor compile was run for this item because it only documented
and verified an existing C++ persistence path.
Deployment classification:
- `Docs/email only` for this item.
- Milestone still has `Server deploy required` pending because earlier 0.1.M
persistence runtime changes affect the multiplayer host.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `12`
- Immediate next roadmap item: `Save long-term character care history placeholders without applying aging gameplay yet`.
## Agrarian 0.1.M Care History Persistence - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `1d2ac1e Document care history persistence`
Completed roadmap item:
- `Save long-term character care history placeholders without applying aging gameplay yet`
- Confirmed player care history already persists through
`FAgrarianSavedPlayer::CareHistory`.
- The saved `FAgrarianCareHistorySnapshot` reserves nutrition, illness,
injury, sleep, shelter, stress, workload, and treatment quality.
- Documented that 0.1.M only persists/restores these placeholders and does
not apply aging, lifespan, inheritance, or generational outcomes.
- Added `Scripts/verify_care_history_persistence.py`.
Verification:
- `python3 -m py_compile Scripts/verify_care_history_persistence.py` passed.
- `python3 Scripts/verify_care_history_persistence.py` passed.
- `git diff --check` passed.
- No Windows editor compile was run for this item because it only documented
and verified an existing C++ persistence path.
Deployment classification:
- `Docs/email only` for this item.
- Milestone still has `Server deploy required` pending because earlier 0.1.M
persistence runtime changes affect the multiplayer host.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `11`
- Immediate next roadmap item: `Save player inventory`.
## Agrarian 0.1.M Player Inventory Persistence - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `188ef7b Document player inventory persistence`
Completed roadmap item:
- `Save player inventory`
- Confirmed player inventory already persists through
`FAgrarianSavedPlayer::Inventory`.
- Inventory is copied from `UAgrarianInventoryComponent::Items` and restored
through `UAgrarianInventoryComponent::RestoreSavedItems`.
- Restore recomputes derived values and broadcasts inventory changes so HUD
and debug listeners see loaded item state.
- Updated persistence documentation, roadmap wording, and the existing
inventory persistence verifier for the 0.1.M item.
Verification:
- `python3 -m py_compile Scripts/verify_inventory_persistence.py` passed.
- `python3 Scripts/verify_inventory_persistence.py` passed.
- `git diff --check` passed.
- No Windows editor compile was run for this item because it only documented
and verified an existing C++ persistence path.
Deployment classification:
- `Docs/email only` for this item.
- Milestone still has `Server deploy required` pending because earlier 0.1.M
persistence runtime changes affect the multiplayer host.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `10`
- Immediate next roadmap item: `Save resource depletion state if needed`.
## Agrarian 0.1.M Resource Depletion Persistence - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `66f523b Document resource depletion persistence`
Completed roadmap item:
- `Save resource depletion state if needed`
- Confirmed active loaded resource nodes persist stable `ResourceNodeId`,
remaining harvest count, and MVP respawn flag through
`FAgrarianSavedResourceNode`.
- Restore applies depletion only to matching map-authored resource nodes,
leaving tile-authored placement owned by map/tile content.
- Updated persistence documentation, roadmap wording, and the resource-node
persistence verifier for the 0.1.M item.
Verification:
- `python3 -m py_compile Scripts/verify_resource_node_persistence.py` passed.
- `python3 Scripts/verify_resource_node_persistence.py` passed.
- `git diff --check` passed.
- No Windows editor compile was run for this item because it only documented
and verified an existing C++ persistence path.
Deployment classification:
- `Docs/email only` for this item.
- Milestone still has `Server deploy required` pending because earlier 0.1.M
persistence runtime changes affect the multiplayer host.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `9`
- Immediate next roadmap item: `Save world time`.
## Agrarian 0.1.M World Time Persistence - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `fdc919c Document world time persistence`
Completed roadmap item:
- `Save world time`
- Confirmed world saves persist `UAgrarianSaveGame::WorldHours`.
- The persistence subsystem captures from `AAgrarianGameState::WorldHours`.
- Restore applies world time only on server authority during world load.
- Added `Scripts/verify_world_time_persistence.py`.
Verification:
- `python3 -m py_compile Scripts/verify_world_time_persistence.py` passed.
- `python3 Scripts/verify_world_time_persistence.py` passed.
- `git diff --check` passed.
- No Windows editor compile was run for this item because it only documented
and verified an existing C++ persistence path.
Deployment classification:
- `Docs/email only` for this item.
- Milestone still has `Server deploy required` pending because earlier 0.1.M
persistence runtime changes affect the multiplayer host.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `8`
- Immediate next roadmap item: `Save weather seed/state`.
## Agrarian 0.1.M Weather State Persistence - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `f6ed45d Document weather state persistence`
Completed roadmap item:
- `Save weather seed/state`
- Confirmed world saves persist fallback `UAgrarianSaveGame::Weather`.
- Confirmed saves also retain provider `WeatherInputs` and `WeatherDebug`.
- Load reapplies mapped provider inputs when present or falls back to saved
enum weather state.
- Added `Scripts/verify_weather_state_persistence.py`.
Verification:
- `python3 -m py_compile Scripts/verify_weather_state_persistence.py` passed.
- `python3 Scripts/verify_weather_state_persistence.py` passed.
- `git diff --check` passed.
- No Windows editor compile was run for this item because it only documented
and verified an existing C++ persistence path.
Deployment classification:
- `Docs/email only` for this item.
- Milestone still has `Server deploy required` pending because earlier 0.1.M
persistence runtime changes affect the multiplayer host.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `7`
- Immediate next roadmap item: `Save containers`.
## Agrarian 0.1.M Container Persistence Schema - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `06666b1 Reserve container persistence schema`
Completed roadmap item:
- `Save containers`
- Added `FAgrarianSavedContainer` to the save schema.
- Reserved stable container ID, container type ID, transform, item stacks,
and owner player ID.
- Documented that 0.1.M does not yet have a placed container actor to
capture; the current craftable `simple_container` remains an inventory item
covered by player inventory persistence.
- Added `Scripts/verify_container_persistence_schema.py`.
Verification:
- `python3 -m py_compile Scripts/verify_container_persistence_schema.py` passed.
- `python3 Scripts/verify_container_persistence_schema.py` passed.
- `git diff --check` passed.
- Windows editor compile gate was attempted but blocked because
`UNRAID_PASSWORD` was not present in the shell environment.
Deployment classification:
- `Server deploy required` at milestone packaging time because this changes the
shared save-game schema used by server-side persistence.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `6`
- Immediate next roadmap item: `Add server-side save interval`.
## Agrarian 0.1.M Server Autosave Interval - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `a7ca8d1 Add server autosave interval`
Completed roadmap item:
- `Add server-side save interval`
- Added `ServerAutoSaveIntervalSeconds` to `AAgrarianGameGameMode`, defaulting
to five minutes.
- On authority, `BeginPlay` starts a repeating timer that calls
`RunServerAutoSave`.
- Autosave uses `UAgrarianPersistenceSubsystem::SaveCurrentWorld`.
- Setting the interval to `0` disables the MVP autosave timer.
- Added `Scripts/verify_server_save_interval.py`.
Verification:
- `python3 -m py_compile Scripts/verify_server_save_interval.py` passed.
- `python3 Scripts/verify_server_save_interval.py` passed.
- `git diff --check` passed, with Git line-ending normalization warnings for
the touched Unreal template GameMode files.
- Windows editor compile gate was attempted but blocked because
`UNRAID_PASSWORD` was not present in the shell environment.
Deployment classification:
- `Server deploy required` at milestone packaging time because this changes
authoritative server autosave behavior.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `5`
- Immediate next roadmap item: `Add load-on-server-start`.
## Agrarian 0.1.M Load On Server Start - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `9aa2f8b Load world state on server start`
Completed roadmap item:
- `Add load-on-server-start`
- Added `bLoadWorldOnServerStart` to `AAgrarianGameGameMode`, enabled by
default.
- On authoritative `BeginPlay`, GameMode registers the MVP persistent actor
classes and loads the current world if a save exists.
- Startup load uses `LoadCurrentWorld` without clearing existing map actors,
so map-authored resources and startup content remain map-owned.
- Added `Scripts/verify_load_on_server_start.py`.
Verification:
- `python3 -m py_compile Scripts/verify_load_on_server_start.py` passed.
- `python3 Scripts/verify_load_on_server_start.py` passed.
- `git diff --check` passed, with Git line-ending normalization warnings for
the touched Unreal template GameMode files.
- Windows editor compile gate was attempted but blocked because
`UNRAID_PASSWORD` was not present in the shell environment.
Deployment classification:
- `Server deploy required` at milestone packaging time because this changes
authoritative server startup load behavior.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `4`
- Immediate next roadmap item: `Add initial tile registry persistence for Ground Zero`.
## Agrarian 0.1.M Ground Zero Tile Registry Persistence - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `65599b9 Persist Ground Zero tile registry baseline`
Completed roadmap item:
- `Add initial tile registry persistence for Ground Zero`
- Added `FAgrarianSavedTileRegistryState` to the save schema.
- Save metadata now records active tile
`gz_us_ca_pacifica_utm10n_e544_n4160`, registry path
`Data/Tiles/ground_zero_tiles.json`, schema version, generation version,
and package version.
- The external JSON registry remains authoritative.
- Added `Scripts/verify_ground_zero_tile_registry_persistence.py`.
Verification:
- `python3 -m py_compile Scripts/verify_ground_zero_tile_registry_persistence.py` passed.
- `python3 Scripts/verify_ground_zero_tile_registry_persistence.py` passed.
- `git diff --check` passed.
- Windows editor compile gate was attempted but blocked because
`UNRAID_PASSWORD` was not present in the shell environment.
Deployment classification:
- `Server deploy required` at milestone packaging time because this changes the
shared save-game schema used by server-side persistence.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `3`
- Immediate next roadmap item: `Add backup-before-save option`.
## Agrarian 0.1.M Backup Before Save - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `dfad880 Back up save before overwrite`
Completed roadmap item:
- `Add backup-before-save option`
- Added `bBackupBeforeSave` to `UAgrarianPersistenceSubsystem`, enabled by
default.
- Before overwriting an existing save slot, `WriteSave` copies the current
`.sav` file from `Saved/SaveGames` into `Saved/SaveGames/Backups`.
- Backups use UTC timestamped filenames.
- Missing first-save files skip backup creation.
- Added `Scripts/verify_backup_before_save.py`.
Verification:
- `python3 -m py_compile Scripts/verify_backup_before_save.py` passed.
- `python3 Scripts/verify_backup_before_save.py` passed.
- `git diff --check` passed.
- Windows editor compile gate was attempted but blocked because
`UNRAID_PASSWORD` was not present in the shell environment.
Deployment classification:
- `Server deploy required` at milestone packaging time because this changes
persistence runtime behavior.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `2`
- Immediate next roadmap item: `Add recovery plan for corrupted save`.
## Agrarian 0.1.M Corrupted Save Recovery Plan - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `31e781d Document save recovery plan`
Completed roadmap item:
- `Add recovery plan for corrupted save`
- Added `Docs/Ops/PersistenceSaveRecoveryPlan.md`.
- Documented suspect-save symptoms, immediate response, restoring the newest
timestamped backup, fallback when all backups fail, and MVP limitations.
- Linked the plan from the persistence design document.
- Added `Scripts/verify_save_recovery_plan.py`.
Verification:
- `python3 -m py_compile Scripts/verify_save_recovery_plan.py` passed.
- `python3 Scripts/verify_save_recovery_plan.py` passed.
- `git diff --check` passed.
- No Windows editor compile was run because this is docs/verifier only.
Deployment classification:
- `Docs/email only`.
Roadmap state:
- Current version section: `0.1.M Persistence MVP`
- Items remaining in `0.1.M`: `1`
- Immediate next roadmap item: `Document persistence limitations`.
## Agrarian 0.1.M Persistence Limitations - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `5a381ad Document MVP persistence limitations`
Completed roadmap item:
- `Document persistence limitations`
- Added `## MVP Persistence Limitations` to
`Docs/PersistenceDesignDocument.md`.
- Documented current limits around file-based saves, missing database/account
binding, migration tooling, corrupted-save validation, placed-container
actor capture, offline/family simulation, cross-server persistence,
external backup replication, player-facing UI, and pre-MVP save
compatibility.
- Added `Scripts/verify_persistence_limitations.py`.
Verification:
- `python3 -m py_compile Scripts/verify_persistence_limitations.py` passed.
- `python3 Scripts/verify_persistence_limitations.py` passed.
- `git diff --check` passed.
- No Windows editor compile was run because this is docs/verifier only.
Deployment classification:
- `Docs/email only`.
Roadmap state:
- `0.1.M Persistence MVP` roadmap items are complete.
- Next required action: build the Windows investor demo; deploy the multiplayer
server package only if the build environment is available because 0.1.M
included server-relevant persistence runtime changes.
## Agrarian 0.1.M Milestone Complete / Build Blocked - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `63c6adc Update investor demo metadata to 0.1.M`
Milestone status:
- `0.1.M Persistence MVP` is complete in the roadmap.
- Investor demo metadata was updated to
`Investor Demo v0.1.M - Build 2026.05.18`.
- `ProjectVersion` was updated to `0.1.M-investor.20260518`.
- Startup credits verification passed against the new metadata.
Verification:
- `python3 -m py_compile Scripts/verify_startup_credits_sequence.py` passed.
- `python3 Scripts/verify_startup_credits_sequence.py` passed.
- `git diff --check` passed.
- Game repo status was clean after the metadata commit.
Build/deploy status:
- Windows investor demo package was attempted with:
`/home/nathan/bin/winbuilder cmd 'set AGRARIAN_NO_PAUSE=1 && pushd \\DevBox\projects\AgrarianGameBulid && Scripts\PackageWindowsDevelopment.bat'`
- Packaging is blocked because `UNRAID_PASSWORD` is not present in the shell
environment.
- Multiplayer server deploy is also blocked until a current package can be
built. Server deploy is required for this milestone once build access is
restored because 0.1.M included persistence runtime/server behavior changes.
Next required action:
- Restore `UNRAID_PASSWORD` in the Codex shell environment or provide another
approved Windows-Builder access path.
- Rerun the Windows investor demo package.
- Build/deploy the server package to `play.agrariangame.com:7777` and verify it
if packaging succeeds.
## Agrarian 0.1.N Main Menu Placeholder - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `4aec203 Add MVP main menu placeholder`
Completed roadmap item:
- `Add main menu placeholder`
- Added native `UAgrarianMvpFrontendWidget` and `EAgrarianMvpFrontendScreen`.
- Added a scalable painted main menu placeholder with title, subtitle, primary action, and MVP flow note.
- Wired `AAgrarianGamePlayerController` to create the MVP frontend widget for local player controllers.
- Marked the roadmap item complete.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_main_menu_placeholder.py` passed.
- `python3 Scripts/verify_mvp_main_menu_placeholder.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item because this is a focused client UI placeholder; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `12`
- Immediate next roadmap item: `After splash/startup screens, land on an MVP character selection landing page`.
## Agrarian 0.1.N Character Selection Landing - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `5efd81c Add MVP character selection landing`
Completed roadmap item:
- `After splash/startup screens, land on an MVP character selection landing page`
- Extended `UAgrarianMvpFrontendWidget` with a `CharacterSelection` screen.
- Added a scalable native character-selection landing page with two MVP
placeholder character cards.
- Updated `AAgrarianGamePlayerController` so local player controllers open
the MVP frontend directly on `CharacterSelection` after startup.
- Marked the roadmap item complete.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_character_selection_landing.py` passed.
- `python3 Scripts/verify_mvp_character_selection_landing.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `11`
- Immediate next roadmap item: `Let players choose a realistic young adult male or female character with average proportions for the MVP`.
## Agrarian 0.1.N Character Archetype Choice - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `c855924 Add MVP character archetype choice`
Completed roadmap item:
- `Let players choose a realistic young adult male or female character with average proportions for the MVP`
- Added `EAgrarianMvpCharacterArchetype` with young adult male/female MVP choices.
- Added selected-state rendering to the native character-selection cards.
- Added keyboard selection with Left/Right or A/D while on the character-selection screen.
- Added `AgrarianSelectCharacter male|female` dev command for headless/manual verification.
- Kept both choices on the same MVP survival baseline until real character art and stats differentiation arrive.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_character_archetype_choice.py` passed.
- `python3 Scripts/verify_mvp_character_archetype_choice.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `10`
- Immediate next roadmap item: `Add join server screen`.
## Agrarian 0.1.N Join Server Screen - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `2009295 Add MVP join server screen`
Completed roadmap item:
- `Add join server screen`
- Added a native `JoinServer` screen to `UAgrarianMvpFrontendWidget`.
- The screen shows the selected MVP character archetype and the target
`play.agrariangame.com:7777` address.
- Enter/Space from character selection advances to the join screen.
- Backspace/Escape returns to character selection.
- Added `AgrarianShowMvpScreen main|character|join` for direct manual/headless verification.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_join_server_screen.py` passed.
- `python3 Scripts/verify_mvp_join_server_screen.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `9`
- Immediate next roadmap item: `Add loading screen`.
## Agrarian 0.1.N Loading Screen - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `e8d46c8 Add MVP loading screen`
Completed roadmap item:
- `Add loading screen`
- Added a native `Loading` screen to `UAgrarianMvpFrontendWidget`.
- The screen shows Ground Zero preparation copy, selected character context,
server address context, and a deterministic placeholder progress bar.
- Enter/Space from the join-server screen advances to loading.
- `AgrarianShowMvpScreen main|character|join|loading` can display it directly.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_loading_screen.py` passed.
- `python3 Scripts/verify_mvp_loading_screen.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `8`
- Immediate next roadmap item: `Add HUD`.
## Agrarian 0.1.N MVP HUD Frame - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `df8bc6c Complete MVP HUD frame`
Completed roadmap item:
- `Add HUD`
- Completed the partial HUD item by adding `bShowMvpHudFrame`.
- Added a top MVP status frame showing Ground Zero context, alive/dead state,
health, food, water, and body temperature.
- Kept the existing deeper developer overlay separately controlled by
`bShowDebugHUD`.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_hud_frame.py` passed.
- `python3 Scripts/verify_mvp_hud_frame.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `7`
- Immediate next roadmap item: `Add inventory UI`.
## Agrarian 0.1.N Inventory UI Toggle - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `0fb7f1e Add MVP inventory UI toggle`
Completed roadmap item:
- `Add inventory UI`
- Promoted the existing compact replicated-inventory HUD panel into the
0.1.N UI pass.
- Added `AgrarianToggleInventoryUI` to show/hide the MVP inventory panel.
- Kept the MVP inventory surface lightweight; full drag/drop inventory remains
later work.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_inventory_ui_toggle.py` passed.
- `python3 Scripts/verify_mvp_inventory_ui_toggle.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `6`
- Immediate next roadmap item: `Add crafting UI`.
## Agrarian 0.1.N Crafting UI Toggle - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `08c036f Add MVP crafting UI toggle`
Completed roadmap item:
- `Add crafting UI`
- Promoted the existing compact crafting HUD panel into the 0.1.N UI pass.
- Added `AgrarianToggleCraftingUI` to show/hide known recipes and ingredient
readiness.
- Kept full crafting menus for later UX expansion.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_crafting_ui_toggle.py` passed.
- `python3 Scripts/verify_mvp_crafting_ui_toggle.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `5`
- Immediate next roadmap item: `Add interaction prompts`.
## Agrarian 0.1.N Interaction Prompt Toggle - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `0be6e0b Add MVP interaction prompt toggle`
Completed roadmap item:
- `Add interaction prompts`
- Promoted the existing centered interaction prompt renderer into the 0.1.N UI pass.
- Added `AgrarianToggleInteractionPrompts` to show/hide prompts.
- Prompt text remains driven by the currently focused interactable actor.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_interaction_prompt_toggle.py` passed.
- `python3 Scripts/verify_mvp_interaction_prompt_toggle.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `4`
- Immediate next roadmap item: `Add death/respawn UI`.
## Agrarian 0.1.N Death Respawn UI - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `7c98bb7 Add MVP death respawn UI`
Completed roadmap item:
- `Add death/respawn UI`
- Added `bShowDeathRespawnUI` and a dedicated dead-state panel in `AAgrarianDebugHUD`.
- The panel appears when replicated survival state is dead, shows the last
death reason, and explains the Ground Zero respawn context.
- Added `AgrarianToggleDeathRespawnUI`.
- Existing server-authoritative `AgrarianRespawn` behavior remains unchanged.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_death_respawn_ui.py` passed.
- `python3 Scripts/verify_mvp_death_respawn_ui.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `3`
- Immediate next roadmap item: `Add debug/dev menu`.
## Agrarian 0.1.N Debug Dev Menu - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `1cc91b5 Add MVP debug dev menu`
Completed roadmap item:
- `Add debug/dev menu`
- Added `bShowDebugDevMenu` and a compact HUD panel listing core MVP
frontend, UI, persistence, and recovery commands.
- Added `AgrarianToggleDebugDevMenu`.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_debug_dev_menu.py` passed.
- `python3 Scripts/verify_mvp_debug_dev_menu.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `2`
- Immediate next roadmap item: `Add accessibility basics`.
## Agrarian 0.1.N Accessibility Basics - 2026-05-18
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `2adc683 Add MVP accessibility basics`
Completed roadmap item:
- `Add accessibility basics`
- Added runtime MVP UI scale control with `AgrarianSetUiScale 0.75-1.5`.
- Scale applies to the native MVP frontend and HUD text surfaces.
- Added frontend high-contrast mode with `AgrarianToggleHighContrastUI`.
- Added the accessibility commands to the debug/dev menu.
Verification:
- `python3 -m py_compile Scripts/verify_mvp_accessibility_basics.py` passed.
- `python3 Scripts/verify_mvp_accessibility_basics.py` passed.
- `git diff --check` passed.
- No full Windows package was run for this item; final milestone packaging is still required.
Deployment classification:
- `Client UI only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through `pacificao-mail`
using local Dovecot delivery, not AWS SES.
Roadmap state:
- Current version section: `0.1.N MVP UI And UX`
- Items remaining in `0.1.N`: `1`
- Immediate next roadmap item: `Ensure UI scales on common resolutions`.
## Agrarian 0.1.Q Full Day/Night Survival Gate - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `4370924 Add full day night survival QA gate`
Completed roadmap item:
- `Can survive one full day/night cycle`
- Added a repeatable MVP QA gate for surviving one compressed Agrarian day.
- Anchored the pass condition to `4 real hours = 1 in-game day`, replicated
world time/solar phase, authoritative hunger/thirst/stamina/body
temperature/health pressure, fire and shelter mitigation, critical survival
HUD visibility, and save/load persistence coverage.
- Refreshed the stat save/load verifier to match the current
`RestoreSavedItems` inventory restore path.
Verification:
- `python3 Scripts/verify_full_day_night_survival_qa_gate.py` passed.
- `python3 Scripts/verify_agrarian_calendar_helpers.py` passed.
- `python3 Scripts/verify_world_time_persistence.py` passed.
- `python3 Scripts/verify_stat_save_load_support.py` passed.
- `python3 Scripts/verify_shelter_weather_protection.py` passed.
- `python3 -m py_compile Scripts/verify_full_day_night_survival_qa_gate.py Scripts/verify_stat_save_load_support.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Gameplay/server-relevant QA gate`.
- No immediate multiplayer server deploy for this item alone; include it in the
final 0.1.Q package/deploy decision.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local
project mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.Q MVP QA Gates`
- Items remaining in `0.1.Q`: `6`
- Immediate next roadmap item: `Can die from survival pressure`.
## Agrarian 0.1.Q Survival Pressure Death Gate - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `428918b Add survival pressure death QA gate`
Completed roadmap item:
- `Can die from survival pressure`
- Added a repeatable MVP QA gate requiring starvation, dehydration, cold
exposure, sickness, and bleeding to reduce health on server authority.
- Tied the gate to `UpdateDeathState`, replicated `bIsDead` and
`LastDeathReason`, the critical survival HUD, the MVP death/respawn panel,
server-side respawn, and player stat persistence.
- Refreshed stale sickness/exhaustion verifiers so they recognize the current
sprain-aware survival movement multiplier chain.
Verification:
- `python3 Scripts/verify_survival_pressure_death_qa_gate.py` passed.
- `python3 Scripts/verify_death_state.py` passed.
- `python3 Scripts/verify_replicated_death_feedback.py` passed.
- `python3 Scripts/verify_mvp_death_respawn_ui.py` passed.
- `python3 Scripts/verify_bleeding_placeholder.py` passed.
- `python3 Scripts/verify_sickness_placeholder.py` passed.
- `python3 Scripts/verify_exhaustion_stat.py` passed.
- `python3 -m py_compile Scripts/verify_survival_pressure_death_qa_gate.py Scripts/verify_sickness_placeholder.py Scripts/verify_exhaustion_stat.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Gameplay/server-relevant QA gate`.
- No immediate multiplayer server deploy for this item alone; include it in the
final 0.1.Q package/deploy decision.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local
project mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.Q MVP QA Gates`
- Items remaining in `0.1.Q`: `5`
- Immediate next roadmap item: `Can reconnect and retain state`.
## Agrarian 0.1.Q Reconnect State Retention Gate - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `74c670a Add reconnect state retention QA gate`
Completed roadmap item:
- `Can reconnect and retain state`
- Added a repeatable MVP QA gate for disconnect/reconnect state retention.
- Tied the gate to `AAgrarianGameGameMode::Logout`,
`AAgrarianGameGameMode::RestartPlayer`, `SavePlayerSnapshot`,
`RestorePlayerSnapshot`, safe identity, transform, survival, care history,
inventory restore, and normal MVP spawn fallback.
- Connected the gate to the two-client manual reconnect evidence path.
Verification:
- `python3 Scripts/verify_reconnect_state_retention_qa_gate.py` passed.
- `python3 Scripts/verify_disconnect_reconnect_handling.py` passed.
- `python3 Scripts/verify_player_identity_persistence.py` passed.
- `python3 Scripts/verify_player_stats_persistence.py` passed.
- `python3 Scripts/verify_inventory_persistence.py` passed.
- `python3 Scripts/verify_two_client_connection_gate.py` passed.
- `python3 -m py_compile Scripts/verify_reconnect_state_retention_qa_gate.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Server-relevant QA gate`.
- No immediate multiplayer server deploy for this item alone; recheck after the
final 0.1.Q package/deploy.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local
project mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.Q MVP QA Gates`
- Items remaining in `0.1.Q`: `4`
- Immediate next roadmap item: `Can restart server and retain placed shelter`.
## Agrarian 0.1.Q Server Restart Shelter Persistence Gate - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `d82d6bc Add server restart shelter persistence QA gate`
Completed roadmap item:
- `Can restart server and retain placed shelter`
- Added a repeatable MVP QA gate proving primitive shelters are persistent
world actors, not runtime-only placements.
- Tied the gate to `primitive_shelter` actor type registration,
`SaveCurrentWorld`, `LoadCurrentWorld`, load-on-server-start behavior, and
restored shelter weather protection.
- Added a release smoke requirement to place a shelter, save, restart the
server, and confirm the shelter remains at the same transform.
Verification:
- `python3 Scripts/verify_server_restart_shelter_persistence_qa_gate.py` passed.
- `python3 Scripts/verify_load_on_server_start.py` passed.
- `python3 Scripts/verify_shelter_weather_protection.py` passed.
- `python3 Scripts/verify_craft_shelter_qa_gate.py` passed.
- `python3 -m py_compile Scripts/verify_server_restart_shelter_persistence_qa_gate.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Server-relevant QA gate`.
- Recheck after final 0.1.Q package/deploy if server code or package contents
changed.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local
project mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.Q MVP QA Gates`
- Items remaining in `0.1.Q`: `3`
- Immediate next roadmap item: `No critical log spam during 30-minute test`.
## Agrarian 0.1.Q Critical Log Soak Gate - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `19d2d32 Add critical log soak QA gate`
Completed roadmap item:
- `No critical log spam during 30-minute test`
- Added a repeatable 30-minute critical log soak QA gate.
- Added `Scripts/scan_critical_log_spam.py` to scan client/server/release
logs for fatal, crash, assertion, ensure, access-violation, callstack, and
critical-error patterns.
- Documented the expected 30-minute exercise path: join, gather, craft/use
fire, craft/place shelter, wait through time/weather pressure, disconnect,
and reconnect where possible.
Verification:
- `python3 Scripts/verify_critical_log_spam_qa_gate.py` passed.
- `python3 Scripts/scan_critical_log_spam.py /tmp/agrarian-log-scan-smoke` passed.
- `python3 -m py_compile Scripts/verify_critical_log_spam_qa_gate.py Scripts/scan_critical_log_spam.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Client and server QA gate`.
- Must be run against final milestone client/server logs before sending an
investor demo as stable.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local
project mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.Q MVP QA Gates`
- Items remaining in `0.1.Q`: `2`
- Immediate next roadmap item: `Clean up Unreal API deprecation warnings from packaged builds`.
## Agrarian 0.1.Q Net Cull Deprecation Cleanup - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `5364f4d Clean up net cull deprecation warnings`
Completed roadmap item:
- `Clean up Unreal API deprecation warnings from packaged builds`
- Replaced direct `NetCullDistanceSquared = FMath::Square(...)` assignments
with `SetNetCullDistanceSquared(FMath::Square(...))` on item pickups,
resource nodes, campfires, shelters, wildlife, water sources, weather
exposure zones, and wildlife spawn managers.
- Updated network relevancy verification to expect the setter path.
- Added `verify_net_cull_deprecation_cleanup.py` to prevent deprecated direct
assignment from returning.
Verification:
- `python3 Scripts/verify_net_cull_deprecation_cleanup.py` passed.
- `python3 Scripts/verify_network_relevancy_rules.py` passed.
- `python3 -m py_compile Scripts/verify_net_cull_deprecation_cleanup.py Scripts/verify_network_relevancy_rules.py` passed.
- `rg -n "NetCullDistanceSquared\\s*=" Source/AgrarianGame Scripts` found no
runtime source assignments; only the guard text in the verifier remains.
- `git diff --check` passed.
Deployment classification:
- `Shared client/server C++ cleanup`.
- Include in final 0.1.Q Windows package and server deploy decision.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local
project mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.Q MVP QA Gates`
- Items remaining in `0.1.Q`: `1`
- Immediate next roadmap item: `Server remains stable with target test player count`.
## Agrarian 0.1.Q Target Player Count Stability Gate - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `5de5c11 Add target player count stability QA gate`
Completed roadmap item:
- `Server remains stable with target test player count`
- Added a target player count server-stability QA gate using the MVP audience
definition: 2-player minimum proof, 4-player closed-test smoke target, and
8-player stretch test only after the server path is stable.
- Tied the gate to server launch, two-client connection, reconnect retention,
critical log scanning, active service state, and UDP `7777` listener checks.
- Confirmed the current live multiplayer host is active and listening on UDP
`7777`.
Verification:
- `python3 Scripts/verify_server_stability_player_count_qa_gate.py` passed.
- `python3 Scripts/verify_server_launch_gate.py` passed.
- `python3 Scripts/verify_two_client_connection_gate.py` passed.
- `python3 Scripts/verify_reconnect_state_retention_qa_gate.py` passed.
- `python3 Scripts/verify_critical_log_spam_qa_gate.py` passed.
- `python3 -m py_compile Scripts/verify_server_stability_player_count_qa_gate.py` passed.
- `git diff --check` passed.
- Live host check passed: `agrarian-game-server.service` active and
`AgrarianGame` listening on `0.0.0.0:7777/udp`.
Deployment classification:
- `Server QA gate`.
- Re-run after every server package deployment that changes gameplay,
persistence, networking, map content, or server startup behavior.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local
project mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.Q MVP QA Gates`
- Items remaining in `0.1.Q`: `0`
- Immediate next step: run full 0.1.Q verifier set, build Windows investor demo,
deploy the multiplayer server only if server-relevant changes require it, and
send final summary.
## Agrarian 0.1.Q Final Build And Deployment - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `4560a00 Allow benign Unreal crash help log lines`
- Runtime package commit: `5de5c11 Add target player count stability QA gate`
- `4560a00` only narrows the QA log scanner allowlist for benign Unreal
startup help text containing the word `crash`.
0.1.Q status:
- All `0.1.Q MVP QA Gates` roadmap items are complete.
- Full 0.1.Q verifier chain passed:
packaged client, server launch, two-client connection, resource gathering,
craft fire, craft shelter, full day/night survival, survival pressure death,
reconnect state retention, server restart shelter persistence, critical log
soak, net cull deprecation cleanup, and target player count stability.
Windows investor demo:
- Built from updated package workspace:
`/mnt/projects/AgrarianGameBuild_0_1_P_Package`
- Windows package path:
`/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/WindowsDevelopment`
- Executables verified:
- `/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/WindowsDevelopment/AgrarianGame.exe`
- `/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/WindowsDevelopment/AgrarianGame/Binaries/Win64/AgrarianGame.exe`
- Package size: about `1.1G`.
- `Scripts\RunWindowsInvestorVisualQACheck.bat --check-tools` passed and
confirmed `SunshineService` is running.
Build note:
- A fresh `/mnt/projects/AgrarianGameBuild_0_1_Q_Package` clone stalled on the
SMB share and was killed before becoming a valid Git checkout.
- The existing `0_1_P` package checkout was clean, fast-forwarded to 0.1.Q, and
used as the build workspace to avoid another full share copy.
Multiplayer server deployment:
- Deployment was required because 0.1.Q included shared client/server C++ cleanup
on replicated actor net cull settings.
- Linux fallback package path:
`/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/LinuxGameDevelopment`
- Linux fallback package size: about `1.1G`.
- Uploaded to play server release:
`/opt/agrarian/releases/0_1_Q_5de5c11`, then promoted to
`/opt/agrarian/server`.
- Restored `AgrarianGameServer.sh` wrapper from the prior server backup because
the fallback package archives `AgrarianGame.sh` but the systemd unit expects
the wrapper.
- Verified `agrarian-game-server.service` is `active`.
- Verified `AgrarianGame` is listening on `0.0.0.0:7777/udp`.
- Recent server journal contains Ground Zero browse startup evidence.
- `scan_critical_log_spam.py` passed against recent server journal after
allowlisting benign Unreal command-line help lines.
Operational notes:
- The previous server directory is preserved as `/opt/agrarian/server.backup.`
on the play server. The timestamp suffix was empty because the remote shell
command passed through without the intended timestamp expansion.
- The current deployed package is healthy despite that backup-name issue.
Automation:
- Final summary email sent to `nathan@pacificao.com` through the current local
project mail helper, not AWS SES.
Next roadmap:
- `0.1.R Knowledge And Skill Foundation` is the next version section.
## Agrarian 0.1.R Knowledge Skill Separation Model - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `26db07d Define knowledge skill separation model`
Completed roadmap item:
- `Define the MVP separation between knowledge, practical experience, physical stats, tools, and infrastructure`
- Added `Docs/KnowledgeAndSkillFoundation.md`.
- Defined knowledge, practical experience, physical stats, tools, and
infrastructure as separate MVP progress drivers.
- Set the MVP rule that basic survival remains possible with low knowledge and
poor tools, while outcomes become safer, faster, higher quality, or less
wasteful as understanding, practice, equipment, and infrastructure improve.
Verification:
- `python3 Scripts/verify_knowledge_skill_separation_model.py` passed.
- `python3 -m py_compile Scripts/verify_knowledge_skill_separation_model.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
- No Windows investor demo rebuild or multiplayer server deploy required for
this item by itself.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local project
mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `13`
- Immediate next roadmap item: `Add a first-pass skill taxonomy for survival, gathering, tool use, crafting, fire, shelter, navigation, first aid, food safety, and weather awareness`.
## Agrarian 0.1.R MVP Skill Taxonomy - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `0c48022 Add MVP skill taxonomy`
Completed roadmap item:
- `Add a first-pass skill taxonomy for survival, gathering, tool use, crafting, fire, shelter, navigation, first aid, food safety, and weather awareness`
- Added the first taxonomy to `Docs/KnowledgeAndSkillFoundation.md`.
- Covered survival, gathering, tool use, crafting, fire, shelter, navigation,
first aid, food safety, and weather awareness.
- Defined these as non-lockout skill domains that modify risk, quality, speed,
yield, readability, and confidence.
Verification:
- `python3 Scripts/verify_skill_taxonomy.py` passed.
- `python3 -m py_compile Scripts/verify_skill_taxonomy.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local project
mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `12`
- Immediate next roadmap item: `Define how knowledge affects survival actions: fewer mistakes, safer attempts, better yields, lower injury risk, and more reliable outcomes`.
## Agrarian 0.1.R Knowledge Action Effects - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `4e72a76 Define knowledge action effects`
Completed roadmap item:
- `Define how knowledge affects survival actions`
- Added the knowledge action-effects model to
`Docs/KnowledgeAndSkillFoundation.md`.
- Defined fewer mistakes, safer attempts, better yields, lower injury risk,
and more reliable outcomes as legible gameplay effects.
- Set the rule that knowledge adjusts warnings, probabilities, quality, waste,
and explanations without silently guaranteeing success or replacing
practical experience.
Verification:
- `python3 Scripts/verify_knowledge_action_effects.py` passed.
- `python3 -m py_compile Scripts/verify_knowledge_action_effects.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local project
mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `11`
- Immediate next roadmap item: `Define how practical experience grows through use, repetition, mistakes, and recovery from failure`.
## Agrarian 0.1.R Practical Experience Growth - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `cfb02a6 Define practical experience growth`
Completed roadmap item:
- `Define how practical experience grows through use, repetition, mistakes, and recovery from failure`
- Added practical experience growth rules to
`Docs/KnowledgeAndSkillFoundation.md`.
- Defined meaningful use, repetition with diminishing returns, readable
mistakes, and recovery from failure as the main experience sources.
- Set the gain rule: award experience for meaningful action plus context,
reduce rote farming, and credit good recovery after mistakes.
Verification:
- `python3 Scripts/verify_practical_experience_growth.py` passed.
- `python3 -m py_compile Scripts/verify_practical_experience_growth.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local project
mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `10`
- Immediate next roadmap item: `Add first contextual learning prompts for fire safety, potable water, exposure, shelter placement, injury care, and resource identification`.
## Agrarian 0.1.R Contextual Learning Prompts - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- GitHub remote: `pacificao/AgrarianGameBuild`
- Current branch: `main`
- Latest pushed game commit: `f92e34c Add contextual learning prompt specs`
Completed roadmap item:
- `Add first contextual learning prompts for fire safety, potable water, exposure, shelter placement, injury care, and resource identification`
- Added prompt specs to `Docs/KnowledgeAndSkillFoundation.md`.
- Covered fire safety, potable water, exposure, shelter placement, injury care,
and resource identification.
- Included trigger examples, prompt intent, sample wording, and the rule that
prompts explain immediate risk or opportunity without pausing the game or
forcing a quiz.
Verification:
- `python3 Scripts/verify_contextual_learning_prompts.py` passed.
- `python3 -m py_compile Scripts/verify_contextual_learning_prompts.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
- No multiplayer server deploy required for this item.
Automation:
- Email summary sent to `nathan@pacificao.com` through the current local project
mail helper, not AWS SES.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `9`
- Immediate next roadmap item: `Design optional knowledge checks that appear when relevant to the action instead of interrupting basic play`.
## Agrarian 0.1.R Optional Knowledge Checks - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `51eb9d1 Design optional knowledge checks`
Completed roadmap item:
- `Design optional knowledge checks that appear when relevant to the action instead of interrupting basic play`
- Added optional knowledge-check rules to
`Docs/KnowledgeAndSkillFoundation.md`.
- Defined inline/skippable presentation, action-relevant timing, calm review
moments, non-punitive wrong answers, and no hard gate on the first survival
loop.
Verification:
- `python3 Scripts/verify_optional_knowledge_checks.py` passed.
- `python3 -m py_compile Scripts/verify_optional_knowledge_checks.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `8`
- Immediate next roadmap item: `Add player-facing feedback that explains why an action failed or produced poor results`.
## Agrarian 0.1.R Failed Action Feedback - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `bab49f8 Add failed action feedback rules`
Completed roadmap item:
- `Add player-facing feedback that explains why an action failed or produced poor results`
- Added failed-action and poor-result feedback rules to
`Docs/KnowledgeAndSkillFoundation.md`.
- Required short messages that say what happened, name one likely cause, offer
one useful next step, avoid blame, and avoid exposing hidden formulas.
Verification:
- `python3 Scripts/verify_failed_action_feedback_rules.py` passed.
- `python3 -m py_compile Scripts/verify_failed_action_feedback_rules.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `7`
- Immediate next roadmap item: `Define accessibility rules for the learning system: hints, retries, readable wording, no hard lockout from basic survival, and non-punitive practice paths`.
## Agrarian 0.1.R Learning Accessibility Rules - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `8e33068 Define learning accessibility rules`
Completed roadmap item:
- `Define accessibility rules for the learning system`
- Added learning accessibility rules to `Docs/KnowledgeAndSkillFoundation.md`.
- Covered reusable hints, retries, readable wording, non-color-only warnings,
no hard lockout from basic survival, safer practice paths, and diminishing
returns to prevent exploit loops.
Verification:
- `python3 Scripts/verify_learning_accessibility_rules.py` passed.
- `python3 -m py_compile Scripts/verify_learning_accessibility_rules.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `6`
- Immediate next roadmap item: `Define the first subject content format: topic, concepts, difficulty tier, prerequisite concepts, in-game effect, practice action, and source note`.
## Agrarian 0.1.R Subject Content Format - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `7b1f9b8 Define subject content format`
Completed roadmap item:
- `Define the first subject content format`
- Added a compact content schema to `Docs/KnowledgeAndSkillFoundation.md`.
- Fields: `topic`, `concepts`, `difficulty_tier`,
`prerequisite_concepts`, `in_game_effect`, `practice_action`, and
`source_note`.
- Added a fire-clearance example suitable for later data assets.
Verification:
- `python3 Scripts/verify_subject_content_format.py` passed.
- `python3 -m py_compile Scripts/verify_subject_content_format.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `5`
- Immediate next roadmap item: `Add a small MVP question bank for elementary survival knowledge`.
## Agrarian 0.1.R Elementary Survival Question Bank - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `b5416e0 Add elementary survival question bank`
Completed roadmap item:
- `Add a small MVP question bank for elementary survival knowledge`
- Added six elementary question records to
`Docs/KnowledgeAndSkillFoundation.md`.
- Covered fire clearance, potable water, cold exposure, shelter drainage,
bleeding care, and fiber identification.
- Each record includes answer options, correct answer, and practical feedback.
Verification:
- `python3 Scripts/verify_elementary_survival_question_bank.py` passed.
- `python3 -m py_compile Scripts/verify_elementary_survival_question_bank.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `4`
- Immediate next roadmap item: `Define when deeper questions should matter: quality improvements, safer work, complex crafting, teaching others, and advanced branches`.
## Agrarian 0.1.R Deeper Question Timing - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `766ceac Define deeper question timing`
Completed roadmap item:
- `Define when deeper questions should matter`
- Added deeper-question timing rules to
`Docs/KnowledgeAndSkillFoundation.md`.
- Kept deeper checks out of the first survival loop.
- Tied deeper questions to quality improvements, safer work, complex crafting,
teaching others, and advanced branches.
Verification:
- `python3 Scripts/verify_deeper_question_timing.py` passed.
- `python3 -m py_compile Scripts/verify_deeper_question_timing.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `3`
- Immediate next roadmap item: `Add design notes for avoiding exploit farming and rote memorization`.
## Agrarian Investor Visual Smoke Stabilization - 2026-05-19
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- Latest pushed game commit: `4e17ced Stabilize investor visual smoke build`
Completed work:
- Added `AgrarianInvestorSmokeTest` and `Scripts/RunPackagedInvestorSmoke.cmd`
so the packaged demo can enter Ground Zero, capture evidence, and quit.
- Removed the broken blockout character accessory geometry that created the
vertical pole/box silhouette in investor screenshots.
- Added sky-atmosphere support to `AAgrarianSkyLightingController`.
- Hid the map-boundary volume in game.
- Regenerated Ground Zero with updated material colors and less pole-like
foliage proxy meshes.
- Rebuilt the Windows investor package at
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment`.
Verification:
- `python3 Scripts/verify_mvp_frontend_umg_flow.py` passed.
- `python3 Scripts/verify_investor_demo_acceptance_gate.py` passed.
- Windows package build completed successfully.
- Packaged smoke run created:
`Builds/WindowsDevelopment/AgrarianGame/Saved/Screenshots/Windows/HighresScreenshot00000.png`.
- Packaged log showed no `Fatal error`, `Unhandled Exception`,
`Ensure condition failed`, or `Error:` matches.
Deployment classification:
- `Client visual/runtime packaging only`.
- No multiplayer server deployment required.
Important residual risk:
- The demo is more stable and cleaner, but it is still not visually stunning.
It still relies on mannequin/simple proxy art and needs real character,
vegetation, terrain surface, and water assets before it should be described
as an investor visual MVP.
Automation:
- Email summary sent to `nathan@pacificao.com`.
## Agrarian 0.1.R Learning Exploit Guardrails - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `66c6052 Add learning exploit guardrails`
Completed roadmap item:
- `Add design notes for avoiding exploit farming and rote memorization`
- Added exploit-farming and rote-memorization guardrails to
`Docs/KnowledgeAndSkillFoundation.md`.
- Covered diminishing returns, meaningful action context, prompt/question
exposure tracking, corrective recovery credit, learned-concept separation,
and varied wording.
- Defined the rule that rewards should come from meaningful decisions,
varied practice, and useful recovery rather than low-cost repetition.
Verification:
- `python3 Scripts/verify_learning_exploit_guardrails.py` passed.
- `python3 -m py_compile Scripts/verify_learning_exploit_guardrails.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `2`
- Immediate next roadmap item: `Add persistence requirements for knowledge, skill experience, learned concepts, failed attempts, and tutorial state`.
## Agrarian 0.1.R Knowledge Persistence Requirements - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `0aa1802 Define knowledge persistence requirements`
Completed roadmap item:
- `Add persistence requirements for knowledge, skill experience, learned concepts, failed attempts, and tutorial state`
- Added knowledge persistence requirements to
`Docs/KnowledgeAndSkillFoundation.md`.
- Defined saved profile IDs, learned concepts, practical skill experience,
mastery tiers, failed-attempt feedback history, tutorial/prompt state,
question cooldowns, teaching/observation events, and schema versioning.
- Documented server-authoritative multiplayer writes, stable concept IDs, and
reset-farming prevention rules.
Verification:
- `python3 Scripts/verify_knowledge_persistence_requirements.py` passed.
- `python3 -m py_compile Scripts/verify_knowledge_persistence_requirements.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `1`
- Immediate next roadmap item: `Add multiplayer rules for teaching, observation, shared work, and group skill benefits`.
## Agrarian 0.1.R Multiplayer Learning Rules - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `64d0603 Define multiplayer learning rules`
Completed roadmap item:
- `Add multiplayer rules for teaching, observation, shared work, and group skill benefits`
- Added multiplayer learning rules to
`Docs/KnowledgeAndSkillFoundation.md`.
- Covered server-validated teaching, bounded learner credit, observation
limits, role-specific shared-work experience, capped group benefits, no
global skill aura, and active contribution requirements.
- Documented network authority checks for distance, visibility,
participation, cooldowns, tools, environmental context, and outcome before
learning credit is granted.
Verification:
- `python3 Scripts/verify_multiplayer_learning_rules.py` passed.
- `python3 -m py_compile Scripts/verify_multiplayer_learning_rules.py` passed.
- `git diff --check` passed.
Deployment classification:
- `Design/documentation and verifier only`.
Automation:
- Email summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation`
- Items remaining in `0.1.R`: `0`
- Immediate next roadmap item: `0.2.A Land And Claiming`.
## Agrarian 0.1.R Complete And Windows Investor Demo Built - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `64d0603 Define multiplayer learning rules`
- Package workspace: `/mnt/projects/AgrarianGameBuild_0_1_P_Package`
- Package workspace commit: `64d0603`
Milestone result:
- Completed all remaining `0.1.R Knowledge And Skill Foundation` items.
- Added the knowledge/skill foundation document, MVP taxonomy, contextual
prompts, optional checks, failed-action feedback rules, accessibility rules,
subject content format, elementary question bank, deeper-question timing,
exploit guardrails, persistence requirements, and multiplayer learning rules.
Verification:
- Full `0.1.R` verifier chain passed:
- `verify_knowledge_skill_separation_model.py`
- `verify_skill_taxonomy.py`
- `verify_knowledge_action_effects.py`
- `verify_practical_experience_growth.py`
- `verify_contextual_learning_prompts.py`
- `verify_optional_knowledge_checks.py`
- `verify_failed_action_feedback_rules.py`
- `verify_learning_accessibility_rules.py`
- `verify_subject_content_format.py`
- `verify_elementary_survival_question_bank.py`
- `verify_deeper_question_timing.py`
- `verify_learning_exploit_guardrails.py`
- `verify_knowledge_persistence_requirements.py`
- `verify_multiplayer_learning_rules.py`
- `python3 -m py_compile` passed for the full `0.1.R` verifier set.
- `git diff --check` passed.
- Main game repo and handoff repo were clean before final handoff update.
Windows investor demo:
- `Scripts\BuildEditor-Windows.bat` passed.
- `Scripts\PackageWindowsDevelopment.bat` passed.
- `Scripts\RunWindowsInvestorVisualQACheck.bat --check-tools` passed.
- Package path:
`/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/WindowsDevelopment`
- Executables:
- `/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/WindowsDevelopment/AgrarianGame.exe`
- `/mnt/projects/AgrarianGameBuild_0_1_P_Package/Builds/WindowsDevelopment/AgrarianGame/Binaries/Win64/AgrarianGame.exe`
- Package size: `1.1G`
Deployment classification:
- `Design/documentation and verifier only`.
- Multiplayer server deploy was not required for `0.1.R` because no runtime or
server package code changed.
- Health check verified existing multiplayer host:
- Host: `agrarian-playserver`
- Service: `agrarian-game-server.service` active
- UDP `7777` listening on `0.0.0.0:7777`
Automation:
- Per-item email summaries sent to `nathan@pacificao.com`.
- Final milestone summary sent to `nathan@pacificao.com`.
Roadmap state:
- Current version section: `0.1.R Knowledge And Skill Foundation` complete.
- Immediate next roadmap item: `0.2.A Land And Claiming`.
## Agrarian 0.1 Completion Audit And 0.2 Roadmap Prep - 2026-05-19
Current repo:
- `/home/nathan/AgrarianGameBuild`
- Latest pushed game commit: `c742a17 Prepare roadmap for 0.2 homesteading`
Completed request:
- Verified every checkbox inside `0.1.A` through `0.1.R` is complete.
- Confirmed unchecked roadmap items before `Version 0.2` are North Star /
philosophy statements, not unfinished `0.1` implementation tasks.
- Reviewed source, scripts, config, and roadmap for obvious patch-over-patch
risks before starting 0.2.
- Added `Docs/CodebaseReadinessReview.md` with current strengths, cleanup
findings, and 0.2 engineering priorities.
- Removed duplicate `SavingAndQuit` branch logic in
`AgrarianMvpFrontendWidget.cpp`.
- Expanded `Version 0.2 - Persistent Homesteading` with concrete schema,
authority, persistence, verifier, technical debt, and visual realism items.
- Added `Scripts/verify_0_1_completion_and_0_2_readiness.py`.
Verification:
- `python3 Scripts/verify_0_1_completion_and_0_2_readiness.py` passed.
- `python3 -m py_compile Scripts/verify_0_1_completion_and_0_2_readiness.py`
passed.
- `git diff --check` passed.
- Windows compile passed:
`Scripts\BuildEditor-Windows.bat` in
`P:\AgrarianGameBuild_0_1_P_Package`.
Deployment classification:
- Roadmap/documentation plus one low-risk frontend C++ cleanup.
- Windows investor package rebuild was not required; editor compile verified the
source change.
- Multiplayer server deploy was not required.
Roadmap state:
- `0.1` implementation roadmap is complete through `0.1.R`.
- Next implementation section: `0.2.A Land And Claiming`.
- New preparation sections added under 0.2:
- `0.2.I 0.1 Hardening And Technical Debt`
- `0.2.J Homesteading Visual And Biome Realism Pass`
## Agrarian Investor Readiness Stabilization - 2026-05-19
Current repo:
- `/mnt/projects/AgrarianGameBulid`
- Latest pushed game commit: `4e17ced Stabilize investor visual smoke build`
Completed request:
- Stabilized the packaged investor smoke path so the frontend can auto-select
an archetype, complete the intro flow, capture a screenshot, and exit.
- Added `Scripts/RunPackagedInvestorSmoke.cmd` for repeatable packaged demo
smoke testing.
- Suppressed debug HUD panels during the smoke capture.
- Removed the MVP blockout character accessory geometry that produced the large
pole/box silhouette in screenshots.
- Added sky atmosphere lighting so the packaged world no longer renders with a
black sky.
- Hid the Ground Zero map boundary wire in game.
- Regenerated the Ground Zero demo map and materials with a darker/greener
terrain and foliage color pass plus less severe primitive foliage shapes.
- Updated the roadmap investor-demo acceptance gate checkbox.
Verification:
- `python3 Scripts/verify_mvp_frontend_umg_flow.py` passed.
- `python3 Scripts/verify_investor_demo_acceptance_gate.py` passed.
- `Scripts\RunUnrealPython-Windows.bat Scripts\setup_ground_zero_demo_map.py`
completed and saved the map.
- `Scripts\PackageWindowsDevelopment.bat` completed successfully.
- `schtasks /Run /TN AgrarianSmoke` generated the packaged smoke screenshot and
log.
- No fatal, unhandled exception, ensure, or error markers were found in the
smoke log after the final packaged run.
Current investor demo:
- Package executable:
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment/AgrarianGame/Binaries/Win64/AgrarianGame.exe`
- Latest smoke screenshot:
`/mnt/projects/AgrarianGameBulid/Builds/WindowsDevelopment/AgrarianGame/Saved/Screenshots/Windows/HighresScreenshot00000.png`
Deployment classification:
- Client packaged demo only.
- Multiplayer server deploy was not required because the changes were visual,
frontend smoke, and local client packaging related.
Residual risk:
- This pass makes the demo materially more stable and less visually broken, but
it is still not final investor visual quality. Realistic terrain layers,
vegetation assets, water presentation, and production character art remain
the next critical investor-confidence work.
## Agrarian Development Workspace Change - 2026-05-19
New active Windows Unreal workspace:
- `C:\Users\nathan\Documents\Unreal Projects\AgrarianGame`
Process change:
- Going forward, game editing and file creation should happen in the local
Windows builder project folder instead of a mapped network drive.
- Rationale: Unreal Engine is sensitive to mapped/network project paths, and
the previous `P:`-drive workflow may have contributed to project instability,
slow builds, stale artifacts, path confusion, and mixed-folder development.
- The old `/mnt/projects/AgrarianGameBulid` network-share project should be
treated as legacy/reference until the upcoming full audit reconciles the new
local Windows project against git, build scripts, packaged demo output, and
handoff automation.
Pending user action:
- Nathan is adding Fab library assets and modules directly into the new local
Windows project folder.
Next required Codex action:
- Stand by until the user says the assets/modules are in place.
- Then run a serious audit from the new Windows-local project:
- verify git/root/source-of-truth layout,
- identify untracked or non-versioned Fab content,
- update build/package scripts to target the local Windows project,
- verify Unreal opens/builds from the local path,
- reconcile any useful files from the previous network workflow,
- document the corrected development workflow before resuming roadmap work.
Investor-demo note:
- The project is behind the intended investor visual bar. The upcoming audit
should prioritize getting real terrain, foliage, water, character, and menu
presentation assets into the playable packaged demo without destabilizing the
core survival systems.
## Agrarian Local Project Compile Check - 2026-05-19
Issue reported:
- Unreal showed the local project needed to be rebuilt, then failed with the
generic message that it could not be compiled and should be rebuilt manually.
Findings:
- The local Windows project exists at:
`C:\Users\nathan\Documents\Unreal Projects\AgrarianGame`
- The latest editor log showed the project opened, saved
`/Game/Agrarian/Maps/L_GroundZeroTerrain_Test`, and shut down cleanly.
- Manual local editor build succeeded from:
`C:\Users\nathan\Documents\Unreal Projects\AgrarianGame\Scripts\BuildEditor-Windows.bat`
- Build result:
`AgrarianGameEditor Win64 Development` was up to date and succeeded.
- The project is not currently considered lost or fundamentally corrupted based
on this compile check.
Cleanup performed:
- Removed the stale Unreal recent-project entry for:
`P:/AgrarianGame.uproject`
- The remaining Unreal recent-project entry points to the new local project:
`C:/Users/nathan/Documents/Unreal Projects/AgrarianGame/AgrarianGame.uproject`
Next operator guidance:
- Open the project from the exact local `.uproject` path above, not from any
old recent project entry or network/mapped path.
- If Unreal shows the compile warning again, run the local
`Scripts\BuildEditor-Windows.bat` first and inspect
`Saved\BuildLogs\BuildEditor-Windows.log`.
## Agrarian UE 5.7.4 Forced Rebuild Check - 2026-05-19
Issue reported:
- User confirmed the installed engine is Unreal Engine `5.7.4`.
- The editor still warned that the project needed to be rebuilt with the new
version before opening, then the editor-side rebuild failed.
Findings:
- Installed engine build:
- Version: `5.7.4`
- Changelist: `51494982`
- Compatible changelist: `47537391`
- Install path: `C:\Program Files\Epic Games\UE_5.7`
- The `.uproject` `EngineAssociation` value of `"5.7"` is not by itself wrong
for the installed `5.7.4` launcher engine.
- The project module metadata still showed build id `47537391`, which matches
the engine compatible changelist but can still cause confusing rebuild prompts
after engine/package/workspace moves.
Recovery performed:
- Ran a forced local rebuild using Epic's `Rebuild.bat`, not the normal
up-to-date check:
`Rebuild.bat AgrarianGameEditor Win64 Development -Project="C:\Users\nathan\Documents\Unreal Projects\AgrarianGame\AgrarianGame.uproject" -WaitMutex -architecture=x64 -NoUBA`
- Result:
- Cleaned `AgrarianGameEditor` binaries.
- Rebuilt 11 actions.
- Linked `UnrealEditor-AgrarianGame.dll`.
- Wrote `AgrarianGameEditor.target`.
- `Result: Succeeded`.
- Verified the local project can load under UE `5.7.4` with a commandlet:
`UnrealEditor-Cmd.exe ... -run=ResavePackages -Package=/Game/Agrarian/Maps/L_GroundZeroTerrain_Test -NullRHI`
- Commandlet result:
- Loaded and resaved `L_GroundZeroTerrain_Test.umap`.
- `Success - 0 error(s), 0 warning(s)`.
Conclusion:
- The project is not considered lost or fundamentally corrupted based on the
forced UE `5.7.4` rebuild and map-load smoke check.
- If the GUI still reports a rebuild failure, inspect the newest GUI-side
`Saved\Logs\AgrarianGame.log` and the user-profile UnrealBuildTool log, but
treat it as an environment/stale-binary issue first.
## Agrarian Fab Character Asset Integration Pass - 2026-05-20
Active project:
- `C:\Users\nathan\Documents\Unreal Projects\AgrarianGame`
User action:
- Nathan added Fab character assets into the local Windows project.
Assets found:
- New character pack under `Content\Man`.
- Full-body skeletal meshes:
- `/Game/Man/Mesh/Full/SK_Man_Full_01`
- `/Game/Man/Mesh/Full/SK_Man_Full_02`
- `/Game/Man/Mesh/Full/SK_Man_Full_03`
- `/Game/Man/Mesh/Full/SK_Man_Full_04`
- Modular character/clothing parts also exist under `Content\Man\Mesh\Parts`.
- Demo animations exist under `Content\Man\Demo\Animations`.
Implementation performed:
- Updated `Source/AgrarianGame/AgrarianGamePlayerController.cpp` in the local
Windows project so the MVP character selection no longer loads Manny/Quinn
mannequin meshes.
- Current mapping:
- `female` archetype -> `/Game/Man/Mesh/Full/SK_Man_Full_02`
- `male` archetype -> `/Game/Man/Mesh/Full/SK_Man_Full_04`
- Disabled the old proxy material override by returning `nullptr` from
`GetMvpCharacterProxyMaterialPath`, so the imported Fab mesh materials remain
intact instead of being replaced with flat placeholder workwear materials.
- Added `Scripts/verify_investor_character_assets.py` to verify the expected
imported skeletal meshes load in Unreal.
- Added `/Game/Man` to `+DirectoriesToAlwaysCook` in `Config/DefaultGame.ini`
after the first package smoke showed dynamically loaded meshes were not being
cooked.
- Updated the `AgrarianSmoke` Windows scheduled task to point at the local
project smoke launcher:
`C:\Users\nathan\Documents\Unreal Projects\AgrarianGame\Scripts\RunPackagedInvestorSmoke.cmd`
instead of the legacy `P:\AgrarianGameBulid` path.
Verification:
- `Scripts\BuildEditor-Windows.bat` passed after the C++ character swap.
- Unreal Python asset verifier passed with:
`OK: investor character skeletal meshes are present and loadable.`
- Windows Development package passed from the local project.
- Initial packaged smoke exposed missing `SK_Man` assets because dynamic
`LoadObject` references were not cooked.
- After adding `/Game/Man` to always-cook directories:
- Windows Development package passed again.
- `AgrarianSmoke` scheduled task completed with `Last Result: 0`.
- Fresh screenshot generated:
`C:\Users\nathan\Documents\Unreal Projects\AgrarianGame\Builds\WindowsDevelopment\AgrarianGame\Saved\Screenshots\Windows\HighresScreenshot00002.png`
- Fresh packaged log had no `Fatal error`, `Unhandled Exception`,
`Ensure condition failed`, `Error:`, `Failed to find object`, or
`SkipPackage` entries for `SK_Man`.
Important source-control note:
- Windows has Git available only through the Visual Studio 2026 Team Explorer
bundled path, not normal `PATH`.
- `git-lfs` is not installed on the Windows builder. Normal `git status`
failed with `git-lfs filter-process: line 1: git-lfs: command not found`.
- Git status with LFS filters disabled showed many modified binary assets from
the local migration/import plus untracked `Content\Man`.
- Do not commit from the Windows project until Git LFS is installed and the
working tree is audited. Otherwise there is a risk of committing Unreal
binary assets incorrectly or mixing intentional Fab content with migration
noise.
Current risk:
- Character visuals are now wired to real imported full-body meshes and packaged
successfully, but the meshes may still need animation/retarget polish because
the imported pack appears to use its own UE4-style skeleton/demo animations
while the current character blueprint was originally based on the UE template.
## Agrarian Ubuntu Unreal VM Created - 2026-05-20
Unraid host:
- `192.168.5.8`
VM created:
- Name: `unreal-engine`
- Static IP: `192.168.5.20/22`
- Gateway: `192.168.4.1`
- Bridge: `br0`
- User: `nathan`
- SSH: enabled
- Sudo: passwordless sudo enabled for `nathan`
- Autostart: enabled in libvirt/Unraid
VM resources:
- vCPU: `8`
- RAM: `32 GiB`
- Disk: standalone qcow2, `500 GiB` virtual
- Disk path:
`/mnt/user/domains/unreal-engine/vdisk1.qcow2`
- VM XML:
`/mnt/user/domains/unreal-engine/unreal-engine.xml`
Installed base packages:
- `openssh-server`
- `qemu-guest-agent`
- `git`
- `git-lfs`
- `build-essential`
- `clang`
- `cmake`
- `ninja-build`
- `python3`
- `python3-pip`
- `tmux`
- `htop`
- `rsync`
- `curl`
- `unzip`
- `ca-certificates`
- `mono-complete`
- `dotnet-sdk-8.0`
Stability repair:
- On 2026-05-20, the VM kernel-panicked during package installation because the
libvirt XML assigned `32 GiB` max memory but only about `1 GiB`
`currentMemory`, with virtio ballooning enabled.
- Fixed the VM definition by setting `currentMemory` to `33554432 KiB` and
disabling the virtio memory balloon (`<memballoon model='none'/>`).
- Backed up the pre-fix libvirt XML at:
`/mnt/user/domains/unreal-engine/unreal-engine.before-fixed-memory.xml`
Verification:
- SSH login to `nathan@192.168.5.20` succeeded.
- Hostname: `unreal-engine`
- `nproc`: `8`
- Memory: about `31 GiB`
- Root filesystem: about `484 GiB` available after resize.
- `git lfs version` succeeded.
- `gcc`: `13.3.0`
- `clang`: `18.1.3`
- `cmake`: `3.28.3`
- `ninja`: `1.11.1`
- `python3`: `3.12.3`
- `mono`: `6.8.0.105`
- `.NET SDK`: `8.0.126`
- `ssh` service active.
- `qemu-guest-agent` service active.
- `virsh domifaddr unreal-engine --source agent` reports `192.168.5.20/22`.
Notes:
- The VM was initially created from the Ubuntu 24.04 cloud image as a qcow2
overlay, then converted to a standalone qcow2 so it no longer depends on the
base cloud image remaining in `/mnt/user/isos`.
- Unreal Engine itself is not installed yet. Next step is to install or build
UE `5.7.4` on this VM, then set up the local source checkout from the chosen
Git remote.
Game source checkout:
- On 2026-05-20, cloned the self-hosted Gitea game repo onto the VM:
`/home/nathan/UnrealProjects/AgrarianGame`
- Remote:
`http://192.168.5.21:3000/nathan/agrarian-game.git`
- Configured Git identity for `Nathan Slaven <nathan@pacificao.com>`.
- Configured Git credential storage for Gitea HTTP access so unattended pull
and push operations from the VM do not prompt.
- Verification:
- `git lfs pull`
- `git lfs fsck`
- `git push --dry-run origin main`
- confirmed `AgrarianGame.uproject` exists.
- confirmed large LFS assets checkout as real files, including
`Content/Agrarian/Maps/L_GroundZeroTerrain_Test.umap` and
`Content/Splash/Splash.bmp`.
Unreal Engine install status:
- Target install path prepared:
`/opt/UnrealEngine-5.7`
- Source/build workspace prepared:
`/opt/src`
- Both paths are owned by `nathan:nathan`.
- Epic GitHub entitlement was accepted after initial setup; `pacificao` can now
access `EpicGames/UnrealEngine`.
- Cloned Epic source tag `5.7.4-release` into `/opt/UnrealEngine-5.7`.
- `git describe --tags --exact-match`: `5.7.4-release`
- short commit: `260bb2e1c`
- `Setup.sh` completed successfully.
- log: `/home/nathan/logs/ue57-setup.log`
- `GenerateProjectFiles.sh` completed successfully.
- log: `/home/nathan/logs/ue57-generate-project-files.log`
- Full Linux `UnrealEditor` source build completed successfully.
- command:
`./Engine/Build/BatchFiles/Linux/Build.sh UnrealEditor Linux Development`
- log: `/home/nathan/logs/ue57-build-editor.log`
- output binary:
`/opt/UnrealEngine-5.7/Engine/Binaries/Linux/UnrealEditor`
- Installed the missing Linux runtime libraries needed for headless editor
commandlets, including GTK/ATK/NSS/XCB/GBM/X11 audio/display support
packages.
- Built the Agrarian project editor module on Linux successfully.
- command:
`./Engine/Build/BatchFiles/Linux/Build.sh AgrarianGameEditor Linux Development -Project=/home/nathan/UnrealProjects/AgrarianGame/AgrarianGame.uproject`
- log: `/home/nathan/logs/agrarian-linux-editor-build.log`
- output target:
`/home/nathan/UnrealProjects/AgrarianGame/Binaries/Linux/AgrarianGameEditor.target`
- Verified the project can load through the Linux source-built editor in
unattended `NullRHI` mode.
- command:
`./Engine/Binaries/Linux/UnrealEditor /home/nathan/UnrealProjects/AgrarianGame/AgrarianGame.uproject -run=ResavePackages -help -unattended -nop4 -nosplash -NoSound -NullRHI`
- result:
`Success - 0 error(s), 7613 warning(s)`
- warning note:
the warnings are engine/plugin package resave skips caused by the source
build reporting editor changelist `0`; they did not block the headless load.
## Agrarian Game Repo Restart Audit - 2026-05-21
- Active game repo is now the Gitea checkout on the Ubuntu Unreal VM:
`/home/nathan/UnrealProjects/AgrarianGame`.
- Active remote:
`http://192.168.5.21:3000/nathan/agrarian-game.git`.
- Working tree was clean before the audit.
- Repository inventory:
- 723 tracked files.
- 300 Git LFS assets.
- `git lfs fsck` passed.
- Ignored local Unreal-generated folders are present from verification builds:
`Binaries/`, `Intermediate/`, `Saved/`, and `DerivedDataCache`.
They remain ignored and are not part of the committed repo state.
- Incremental Linux editor build check passed:
- command:
`./Engine/Build/BatchFiles/Linux/Build.sh AgrarianGameEditor Linux Development -Project=/home/nathan/UnrealProjects/AgrarianGame/AgrarianGame.uproject`
- result:
`Target is up to date` and `Result: Succeeded`.
- Roadmap reset:
- `AGRARIAN_DEVELOPMENT_ROADMAP.md` now treats the active milestone as
`0.2.A Land And Claiming`.
- Old GitHub/network-share workflow references are now historical/secondary.
- Ubuntu Unreal VM plus Gitea are the canonical development path.
- Readiness review updated:
- `Docs/CodebaseReadinessReview.md` now reflects completion through `0.1.S`
and the Ubuntu Unreal source-build baseline.
- Next coding instruction should start with exactly `0.2.A Land And Claiming`,
one item at a time.
## Agrarian Visual Credibility Priority - 2026-05-21
- User clarified that investor confidence now depends on visual credibility
before deeper 0.2 homesteading work.
- Updated the game roadmap on the Ubuntu Unreal VM to add active milestone
`0.2.0 Investor Visual Credibility Baseline`.
- `0.2.0` now comes before `0.2.A Land And Claiming`.
- Required visual upgrade order:
terrain material, grasses/shrubs/trees, water, character bodies/clothing,
resource objects, fire/smoke, shelter pieces, wildlife.
- The roadmap now explicitly says not to start `0.2.A Land And Claiming` until
the visual baseline is good enough to show without explaining that the world
is still placeholder-heavy.
- Game repo commit:
`13e931e Prioritize investor visual credibility`.