Update roadmap and build workflow

This commit is contained in:
2026-05-13 22:25:43 +00:00
parent 474b92b1ee
commit 7c85a6f91d
6 changed files with 89 additions and 28 deletions
+79 -15
View File
@@ -36,19 +36,31 @@ git@github.com:pacificao/AgrarianGameBuild.git
Primary local Codex/server checkout: Primary local Codex/server checkout:
```text ```text
/home/nathan/AgrarianGameBuild /mnt/projects/AgrarianGameBulid
``` ```
Recommended Windows checkout path: Ubuntu-Codex host:
```text ```text
D:\AgrarianGameBuild 192.168.5.10
``` ```
Original NAS project path: Unraid project share:
```text ```text
//linastorage.local/shared_drive/Unreal Game Projects/agrarian_game/AgrarianGame \\DevBox\projects\AgrarianGameBulid
```
Windows build VM:
```text
Windows-Builder / 192.168.5.12
```
Codex headless editor build command:
```text
UNRAID_PASSWORD=<set in environment> /home/nathan/bin/agrarian-build-editor
``` ```
Important tracked project root files/folders: Important tracked project root files/folders:
@@ -111,6 +123,10 @@ Completed in version .01:
- [x] Added persistent actor component and placed actor save/restore foundation. - [x] Added persistent actor component and placed actor save/restore foundation.
- [x] Added admin/dev console commands. - [x] Added admin/dev console commands.
- [x] Added replicated wildlife base actor. - [x] Added replicated wildlife base actor.
- [x] Built `AgrarianGameEditor Win64 Development` successfully on Windows-Builder.
- [x] Added a Codex headless Windows build lane through `/home/nathan/bin/agrarian-build-editor`.
- [x] Installed VS 2022 Build Tools MSVC `14.44.35207` for Unreal 5.7 compatibility.
- [x] Fixed `AAgrarianDebugHUD` compile issue caused by `const` HUD helper methods calling non-const `AHUD::DrawText`.
Open version .01 tasks: Open version .01 tasks:
@@ -122,7 +138,7 @@ Open version .01 tasks:
- [ ] Create recipe data assets for campfire, primitive shelter, basic tool, and bandage. - [ ] Create recipe data assets for campfire, primitive shelter, basic tool, and bandage.
- [ ] Create Blueprint child actors for wood resource, campfire, primitive shelter, and first wildlife species. - [ ] Create Blueprint child actors for wood resource, campfire, primitive shelter, and first wildlife species.
- [ ] Place resource nodes, campfire, shelter, and wildlife in the test map. - [ ] Place resource nodes, campfire, shelter, and wildlife in the test map.
- [x] Add a simple HUD/debug display for survival and inventory. - [~] Add a simple HUD/debug display for survival and inventory.
- [ ] Test gather -> inventory -> craft -> place shelter -> save/load loop. - [ ] Test gather -> inventory -> craft -> place shelter -> save/load loop.
- [ ] Test wildlife damage/death/harvest loop. - [ ] Test wildlife damage/death/harvest loop.
- [ ] Decide whether to keep the current template variants or remove unused starter variants. - [ ] Decide whether to keep the current template variants or remove unused starter variants.
@@ -153,7 +169,7 @@ Goal: Prepare the project so all future development is controlled, recoverable,
- [x] Decide Blueprint-first, C++-first, or hybrid approach. - [x] Decide Blueprint-first, C++-first, or hybrid approach.
- [?] Decide whether Gameplay Ability System is needed now or later. - [?] Decide whether Gameplay Ability System is needed now or later.
- [x] Decide networking model for MVP. - [x] Decide networking model for MVP.
- [ ] Decide dedicated server target platform. - [x] Decide dedicated server target platform.
- [x] Decide local development platforms. - [x] Decide local development platforms.
- [x] Decide build machine strategy. - [x] Decide build machine strategy.
- [x] Create repeatable local build instructions. - [x] Create repeatable local build instructions.
@@ -164,6 +180,17 @@ Goal: Prepare the project so all future development is controlled, recoverable,
- [x] Confirm project compiles from a clean checkout. - [x] Confirm project compiles from a clean checkout.
- [ ] Confirm project opens from a clean checkout. - [ ] Confirm project opens from a clean checkout.
Current tooling decisions:
- Unreal Engine version: `5.7`.
- Development approach: hybrid C++ foundation with Blueprint/content assembly in the editor.
- Source control and daily coding: Ubuntu-Codex working against the Unraid `projects` share.
- Editor/build host: Windows-Builder VM with GPU passthrough.
- Headless build path for Codex: Unraid QEMU guest agent into Windows-Builder.
- Preferred interactive editor/gameplay connection: Parsec or similar real-GPU remote desktop, not RDP.
- Dedicated server target: Linux for multiplayer hosting.
- Windows compiler used by Unreal 5.7: VS 2022 Build Tools MSVC `14.44.35207`.
## 0.3 Design Documentation ## 0.3 Design Documentation
- [ ] Create game design document. - [ ] Create game design document.
@@ -211,6 +238,28 @@ Goal: Prepare the project so all future development is controlled, recoverable,
- [ ] Define first playable internal milestone. - [ ] Define first playable internal milestone.
- [ ] Define closed test readiness criteria. - [ ] Define closed test readiness criteria.
## 0.6 Operational Infrastructure
- [x] Stand up Unraid `DevBox` as shared project storage.
- [x] Create and expose the `projects` SMB share.
- [x] Add LAN name resolution for `DevBox`.
- [x] Mount `\\DevBox\projects` on Ubuntu-Codex at `/mnt/projects`.
- [x] Clone `pacificao/AgrarianGameBuild` to `/mnt/projects/AgrarianGameBulid`.
- [x] Configure GitHub SSH access on Ubuntu-Codex for clone, pull, and push.
- [x] Set up Windows-Builder as the Unreal/Visual Studio build VM.
- [x] Install Unreal Engine 5.7 on Windows-Builder.
- [x] Install Visual Studio 2026 for interactive development tools.
- [x] Install VS 2022 Build Tools for Unreal 5.7 compiler compatibility.
- [x] Confirm Codex can launch Windows headless build commands without RDP.
- [x] Confirm headless editor target build succeeds.
- [ ] Set up Parsec or equivalent real-GPU remote access for occasional Codex visual inspection.
- [ ] Stabilize Windows-Builder network/RDP behavior under GPU passthrough.
- [ ] Decide and document VM snapshot cadence before major engine/tool changes.
- [ ] Define Unraid share backup policy.
- [ ] Define GitHub branch protection and review rules.
- [ ] Add a build log retention policy.
- [ ] Add a simple operational runbook for rebooting/recovering Windows-Builder, Ubuntu-Codex, and DevBox.
--- ---
# Phase 1 - Foundational Survival MVP # Phase 1 - Foundational Survival MVP
@@ -252,7 +301,7 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
- [x] Add stat replication. - [x] Add stat replication.
- [ ] Add stat save/load support. - [ ] Add stat save/load support.
- [x] Add debug commands for modifying stats. - [x] Add debug commands for modifying stats.
- [x] Add HUD display for critical stats. - [~] Add HUD display for critical stats.
## 1.3 Time, Weather, And Environment Pressure ## 1.3 Time, Weather, And Environment Pressure
@@ -437,7 +486,7 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
- [ ] Add main menu placeholder. - [ ] Add main menu placeholder.
- [ ] Add join server screen. - [ ] Add join server screen.
- [ ] Add loading screen. - [ ] Add loading screen.
- [x] Add HUD. - [~] Add HUD.
- [ ] Add inventory UI. - [ ] Add inventory UI.
- [ ] Add crafting UI. - [ ] Add crafting UI.
- [ ] Add interaction prompts. - [ ] Add interaction prompts.
@@ -1035,7 +1084,7 @@ These tracks run across all phases and must not be left as afterthoughts.
## K. Build And Release Pipeline ## K. Build And Release Pipeline
- [ ] Define dev build process. - [x] Define dev editor build process.
- [ ] Define internal test build process. - [ ] Define internal test build process.
- [ ] Define closed alpha build process. - [ ] Define closed alpha build process.
- [ ] Define dedicated server packaging. - [ ] Define dedicated server packaging.
@@ -1044,6 +1093,11 @@ These tracks run across all phases and must not be left as afterthoughts.
- [ ] Define changelog format. - [ ] Define changelog format.
- [ ] Define rollback process. - [ ] Define rollback process.
- [ ] Define release approval checklist. - [ ] Define release approval checklist.
- [x] Add one-command Codex build wrapper for `AgrarianGameEditor`.
- [x] Store editor build logs under `Saved/BuildLogs/BuildEditor-Windows.log`.
- [ ] Add one-command packaged client build wrapper.
- [ ] Add one-command Linux dedicated server build wrapper.
- [ ] Add smoke-test command for build artifacts.
## L. Community And Marketing ## L. Community And Marketing
@@ -1064,7 +1118,7 @@ These tracks run across all phases and must not be left as afterthoughts.
## Month 1 - Foundation ## Month 1 - Foundation
- [ ] Clean project structure. - [~] Clean project structure.
- [x] Confirm engine version. - [x] Confirm engine version.
- [x] Set source control. - [x] Set source control.
- [x] Create base character. - [x] Create base character.
@@ -1074,6 +1128,7 @@ These tracks run across all phases and must not be left as afterthoughts.
- [x] Create inventory prototype. - [x] Create inventory prototype.
- [x] Create networking baseline. - [x] Create networking baseline.
- [x] Create build instructions. - [x] Create build instructions.
- [x] Create operational build lane for Codex.
## Month 2 - Survival Loop ## Month 2 - Survival Loop
@@ -1086,7 +1141,7 @@ These tracks run across all phases and must not be left as afterthoughts.
- [~] Add gatherable resources. - [~] Add gatherable resources.
- [x] Add campfire. - [x] Add campfire.
- [x] Add basic crafting. - [x] Add basic crafting.
- [x] Add basic HUD. - [~] Add basic HUD.
## Month 3 - Shelter And Persistence ## Month 3 - Shelter And Persistence
@@ -1168,15 +1223,24 @@ The first playable MVP is not complete until:
- [x] Confirm whether it compiles cleanly. - [x] Confirm whether it compiles cleanly.
- [x] Create Phase 0 task board from this roadmap. - [x] Create Phase 0 task board from this roadmap.
- [x] Start with base character, interaction, stats, inventory, and test map. - [x] Start with base character, interaction, stats, inventory, and test map.
- [x] Set up Ubuntu-Codex source-control lane.
- [x] Set up Windows-Builder headless Unreal build lane.
- [x] Fix current C++ compile break and verify `AgrarianGameEditor` build.
Next version .01 priorities: Next version .01 priorities:
- [ ] Pull latest and confirm `66b5322` wildlife build succeeds on Windows. - [x] Confirm latest C++ build succeeds on Windows-Builder.
- [ ] Open the project in Unreal Editor from the clean Git checkout. - [ ] Open the project in Unreal Editor from the shared project path.
- [ ] Create `IA_Interact` and bind it to `E` plus a gamepad button.
- [ ] Assign `IA_Interact` to the Agrarian character Blueprint.
- [ ] Create the first editor assets needed for the playable loop. - [ ] Create the first editor assets needed for the playable loop.
- [ ] Place and test the first gatherable resource node. - [ ] Place and test the first gatherable resource node.
- [ ] Place and test the campfire. - [ ] Place and test the campfire.
- [ ] Place and test the primitive shelter. - [ ] Place and test the primitive shelter.
- [ ] Place and test the first wildlife Blueprint. - [ ] Place and test the first wildlife Blueprint.
- [x] Add simple survival/inventory HUD feedback. - [~] Add simple survival/inventory HUD feedback.
- [ ] Run the first full gather -> craft -> place -> save -> load test. - [ ] Run the first full gather -> craft -> place -> save -> load test.
Immediate next item:
- [ ] Open the project in Unreal Editor on Windows-Builder using the shared project path, then create/bind `IA_Interact` so the C++ interaction path can be tested in the editor.
+1 -2
View File
@@ -29,7 +29,6 @@
- [x] Primitive shelter actor is marked as a persistent world actor. - [x] Primitive shelter actor is marked as a persistent world actor.
- [x] Admin/dev console commands added to the Agrarian player controller. - [x] Admin/dev console commands added to the Agrarian player controller.
- [x] Wildlife base actor added with replicated health, simple movement states, and harvesting hooks. - [x] Wildlife base actor added with replicated health, simple movement states, and harvesting hooks.
- [x] Simple debug HUD added for survival and inventory feedback.
## Next Unreal Editor Tasks ## Next Unreal Editor Tasks
@@ -43,7 +42,7 @@
- [ ] Create Blueprint child `BP_AGR_PrimitiveShelter` from `AgrarianShelterActor`. - [ ] Create Blueprint child `BP_AGR_PrimitiveShelter` from `AgrarianShelterActor`.
- [ ] Assign placeholder meshes to MVP actors. - [ ] Assign placeholder meshes to MVP actors.
- [ ] Place resource nodes and campfire in the test map. - [ ] Place resource nodes and campfire in the test map.
- [x] Add simple HUD/debug display for survival and inventory. - [ ] Add simple HUD/debug display for survival and inventory.
- [ ] Test gather -> inventory -> campfire loop. - [ ] Test gather -> inventory -> campfire loop.
## Next C++ Foundation Tasks ## Next C++ Foundation Tasks
+3 -3
View File
@@ -15,7 +15,7 @@ if not exist "%BUILD_BAT%" (
echo %UE_ROOT% echo %UE_ROOT%
echo. echo.
echo Edit UE_ROOT in this script if your engine is installed somewhere else. echo Edit UE_ROOT in this script if your engine is installed somewhere else.
pause if not defined AGRARIAN_NO_PAUSE pause
exit /b 1 exit /b 1
) )
@@ -31,7 +31,7 @@ if not "%BUILD_EXIT_CODE%"=="0" (
echo Build failed with exit code %BUILD_EXIT_CODE%. echo Build failed with exit code %BUILD_EXIT_CODE%.
echo Log file: %LOG_FILE% echo Log file: %LOG_FILE%
echo. echo.
pause if not defined AGRARIAN_NO_PAUSE pause
exit /b %BUILD_EXIT_CODE% exit /b %BUILD_EXIT_CODE%
) )
@@ -39,5 +39,5 @@ echo.
echo Build completed successfully. echo Build completed successfully.
echo Log file: %LOG_FILE% echo Log file: %LOG_FILE%
echo. echo.
pause if not defined AGRARIAN_NO_PAUSE pause
exit /b 0 exit /b 0
+3 -3
View File
@@ -28,7 +28,7 @@ void AAgrarianDebugHUD::DrawHUD()
DrawInventory(AgrarianCharacter->GetInventoryComponent(), X, Y); DrawInventory(AgrarianCharacter->GetInventoryComponent(), X, Y);
} }
void AAgrarianDebugHUD::DrawSurvival(const UAgrarianSurvivalComponent* SurvivalComponent, float X, float& Y) const void AAgrarianDebugHUD::DrawSurvival(const UAgrarianSurvivalComponent* SurvivalComponent, float X, float& Y)
{ {
if (!SurvivalComponent) if (!SurvivalComponent)
{ {
@@ -46,7 +46,7 @@ void AAgrarianDebugHUD::DrawSurvival(const UAgrarianSurvivalComponent* SurvivalC
Y += 10.0f * TextScale; Y += 10.0f * TextScale;
} }
void AAgrarianDebugHUD::DrawInventory(const UAgrarianInventoryComponent* InventoryComponent, float X, float& Y) const void AAgrarianDebugHUD::DrawInventory(const UAgrarianInventoryComponent* InventoryComponent, float X, float& Y)
{ {
if (!InventoryComponent) if (!InventoryComponent)
{ {
@@ -69,7 +69,7 @@ void AAgrarianDebugHUD::DrawInventory(const UAgrarianInventoryComponent* Invento
} }
} }
void AAgrarianDebugHUD::DrawLine(const FString& Text, float X, float& Y, const FColor& Color) const void AAgrarianDebugHUD::DrawLine(const FString& Text, float X, float& Y, const FColor& Color)
{ {
DrawText(Text, Color, X, Y, nullptr, TextScale, false); DrawText(Text, Color, X, Y, nullptr, TextScale, false);
Y += 18.0f * TextScale; Y += 18.0f * TextScale;
+3 -3
View File
@@ -24,7 +24,7 @@ public:
float TextScale = 1.0f; float TextScale = 1.0f;
protected: protected:
void DrawSurvival(const UAgrarianSurvivalComponent* SurvivalComponent, float X, float& Y) const; void DrawSurvival(const UAgrarianSurvivalComponent* SurvivalComponent, float X, float& Y);
void DrawInventory(const UAgrarianInventoryComponent* InventoryComponent, float X, float& Y) const; void DrawInventory(const UAgrarianInventoryComponent* InventoryComponent, float X, float& Y);
void DrawLine(const FString& Text, float X, float& Y, const FColor& Color = FColor::White) const; void DrawLine(const FString& Text, float X, float& Y, const FColor& Color = FColor::White);
}; };
@@ -1,11 +1,9 @@
// Copyright Epic Games, Inc. All Rights Reserved. // Copyright Epic Games, Inc. All Rights Reserved.
#include "AgrarianGameGameMode.h" #include "AgrarianGameGameMode.h"
#include "AgrarianDebugHUD.h"
#include "AgrarianGameState.h" #include "AgrarianGameState.h"
AAgrarianGameGameMode::AAgrarianGameGameMode() AAgrarianGameGameMode::AAgrarianGameGameMode()
{ {
GameStateClass = AAgrarianGameState::StaticClass(); GameStateClass = AAgrarianGameState::StaticClass();
HUDClass = AAgrarianDebugHUD::StaticClass();
} }