From 2a336fff67d4306b8336165b62ad7c2798475489 Mon Sep 17 00:00:00 2001 From: nathan Date: Tue, 19 May 2026 09:54:25 -0700 Subject: [PATCH] Classify investor demo as systems first --- AGRARIAN_DEVELOPMENT_ROADMAP.md | 2 +- Docs/Investor/InvestorDemoStatus.md | 39 +++++++++++++++ Docs/Legal/InvestorDemoNotices.md | 6 ++- Scripts/InstallWindowsDemoLaunchers.bat | 4 ++ ...rify_investor_demo_systems_first_status.py | 50 +++++++++++++++++++ Source/AgrarianGame/AgrarianDemoNoticeActor.h | 2 +- .../AgrarianGame/AgrarianDemoNoticeWidget.h | 2 +- 7 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 Docs/Investor/InvestorDemoStatus.md create mode 100644 Scripts/verify_investor_demo_systems_first_status.py diff --git a/AGRARIAN_DEVELOPMENT_ROADMAP.md b/AGRARIAN_DEVELOPMENT_ROADMAP.md index ad0a768..4bac515 100644 --- a/AGRARIAN_DEVELOPMENT_ROADMAP.md +++ b/AGRARIAN_DEVELOPMENT_ROADMAP.md @@ -816,7 +816,7 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe ## 0.1.O Investor Visual MVP And Menu Polish -- [ ] Reclassify the current investor demo as systems-first, not investor visual MVP, until the visual/menu quality gate below is complete. +- [x] Reclassify the current investor demo as systems-first, not investor visual MVP, until the visual/menu quality gate below is complete. Added an explicit investor-demo status document, legal notice wording, startup notice wording, packaged README classification, and verification so the current demo is presented as a systems-first investor prototype until 0.1.O visual/menu gates are actually complete. - [ ] 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. - [ ] 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. - [ ] 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. diff --git a/Docs/Investor/InvestorDemoStatus.md b/Docs/Investor/InvestorDemoStatus.md new file mode 100644 index 0000000..de0aa0c --- /dev/null +++ b/Docs/Investor/InvestorDemoStatus.md @@ -0,0 +1,39 @@ +# Agrarian Investor Demo Status + +Current classification: systems-first investor prototype. + +The current investor demo should not be described as an investor visual MVP. +It proves the survival, persistence, multiplayer, terrain, weather, fire, +shelter, menu-flow, and packaging foundations, but it remains visually below +the realism bar expected for investor-facing excitement. + +## Visual MVP Gate + +The build can be reclassified as investor visual MVP only after the 0.1.O +visual/menu quality gate is complete and verified: + +- menus use intentional widget-driven segments with reliable mouse, keyboard, + controller focus, back, and escape behavior; +- startup credits, character selection, server/join, loading, pause, save, and + quit read as separate presentation states instead of gameplay under overlays; +- young-adult male and female character choices no longer look like mannequin + placeholders; +- survival objects, resource pickups, water, wildlife, shelter, and fire read + as believable MVP objects rather than debug shapes; +- Ground Zero terrain, grasses, brush, shrubs, bushes, trees, rocks, water, + lighting, and color variation communicate grounded coastal-scrub realism; +- non-ray-traced default/compatibility rendering remains credible on common + investor, tester, and remote-session hardware; +- optional ray tracing is reserved for cinematic/high-end presentation and is + never required for baseline visual credibility; +- packaged-demo visual QA screenshots or clips are captured from a real GPU + desktop path before the build is called visually ready. + +## Current Demo Language + +Use this wording until the visual gate is complete: + +```text +Agrarian systems-first investor prototype - visual MVP gate pending. +Not for public distribution. +``` diff --git a/Docs/Legal/InvestorDemoNotices.md b/Docs/Legal/InvestorDemoNotices.md index d926abe..eb5077e 100644 --- a/Docs/Legal/InvestorDemoNotices.md +++ b/Docs/Legal/InvestorDemoNotices.md @@ -9,7 +9,11 @@ Agrarian Copyright (c) 2026 Agrarian Studio. All rights reserved. -Investor demo build. Not for public distribution. +Systems-first investor prototype. Visual MVP gate pending. +Not for public distribution. + +Do not describe the current build as an investor visual MVP until the 0.1.O +visual/menu quality gate is complete and verified. ## Unreal Engine Notice diff --git a/Scripts/InstallWindowsDemoLaunchers.bat b/Scripts/InstallWindowsDemoLaunchers.bat index 982c89c..7f26432 100644 --- a/Scripts/InstallWindowsDemoLaunchers.bat +++ b/Scripts/InstallWindowsDemoLaunchers.bat @@ -20,6 +20,7 @@ set "DX11_LAUNCHER=%PACKAGE_DIR%\Start Agrarian Demo - Compatibility DX11.cmd" set "PREREQ_LAUNCHER=%PACKAGE_DIR%\Install Prerequisites.cmd" set "README_FILE=%PACKAGE_DIR%\README-Investor-Demo.txt" set "DEMO_VERSION=Investor Demo v0.1.N - Build 2026.05.18" +set "DEMO_CLASSIFICATION=Systems-first investor prototype - visual MVP gate pending." > "%DEFAULT_LAUNCHER%" echo @echo off >> "%DEFAULT_LAUNCHER%" echo cd /d "%%~dp0" @@ -75,6 +76,7 @@ set "DEMO_VERSION=Investor Demo v0.1.N - Build 2026.05.18" > "%README_FILE%" echo Agrarian investor demo >> "%README_FILE%" echo. >> "%README_FILE%" echo Version: %DEMO_VERSION% +>> "%README_FILE%" echo Classification: %DEMO_CLASSIFICATION% >> "%README_FILE%" echo. >> "%README_FILE%" echo Start with: Start Agrarian Demo.cmd >> "%README_FILE%" echo. @@ -86,6 +88,8 @@ set "DEMO_VERSION=Investor Demo v0.1.N - Build 2026.05.18" >> "%README_FILE%" echo This investor build defaults to the Windows compatibility renderer so it opens reliably across more demo machines and remote sessions. >> "%README_FILE%" echo The main project remains DX12-first for future Unreal 5 rendering work. >> "%README_FILE%" echo If you specifically want to test DX12, use: Start Agrarian Demo - DX12.cmd +>> "%README_FILE%" echo. +>> "%README_FILE%" echo This build proves core systems first. Do not describe it as the investor visual MVP until the 0.1.O visual/menu quality gate is complete and visually verified. echo Installed investor demo launchers in: echo %PACKAGE_DIR% diff --git a/Scripts/verify_investor_demo_systems_first_status.py b/Scripts/verify_investor_demo_systems_first_status.py new file mode 100644 index 0000000..56f930b --- /dev/null +++ b/Scripts/verify_investor_demo_systems_first_status.py @@ -0,0 +1,50 @@ +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] + +REQUIRED = { + ROOT / "Docs" / "Investor" / "InvestorDemoStatus.md": [ + "Current classification: systems-first investor prototype.", + "should not be described as an investor visual MVP", + "visual/menu quality gate is complete", + "non-ray-traced default/compatibility rendering remains credible", + "packaged-demo visual QA screenshots or clips", + ], + ROOT / "Docs" / "Legal" / "InvestorDemoNotices.md": [ + "Systems-first investor prototype. Visual MVP gate pending.", + "Do not describe the current build as an investor visual MVP", + ], + ROOT / "Source" / "AgrarianGame" / "AgrarianDemoNoticeActor.h": [ + "Systems-first investor prototype - visual MVP gate pending", + ], + ROOT / "Source" / "AgrarianGame" / "AgrarianDemoNoticeWidget.h": [ + "Systems-first investor prototype - visual MVP gate pending", + ], + ROOT / "Scripts" / "InstallWindowsDemoLaunchers.bat": [ + "DEMO_CLASSIFICATION=Systems-first investor prototype - visual MVP gate pending.", + "Classification: %DEMO_CLASSIFICATION%", + "Do not describe it as the investor visual MVP", + ], + ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md": [ + "[x] Reclassify the current investor demo as systems-first, not investor visual MVP", + ], +} + + +def main(): + missing = [] + for path, snippets in REQUIRED.items(): + text = path.read_text(encoding="utf-8") + for snippet in snippets: + if snippet not in text: + missing.append(f"{path.relative_to(ROOT)} missing {snippet!r}") + + if missing: + raise SystemExit("Investor demo systems-first status verification failed:\n" + "\n".join(missing)) + + print("PASS: investor demo is classified as systems-first until the visual MVP gate is complete.") + + +if __name__ == "__main__": + main() diff --git a/Source/AgrarianGame/AgrarianDemoNoticeActor.h b/Source/AgrarianGame/AgrarianDemoNoticeActor.h index 913839f..fd7e82d 100644 --- a/Source/AgrarianGame/AgrarianDemoNoticeActor.h +++ b/Source/AgrarianGame/AgrarianDemoNoticeActor.h @@ -26,7 +26,7 @@ public: FText VersionLabel = FText::FromString(TEXT("Investor Demo v0.1.N - Build 2026.05.18")); UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Demo") - FText DemoNotice = FText::FromString(TEXT("Beta prototype build - not for public distribution")); + FText DemoNotice = FText::FromString(TEXT("Systems-first investor prototype - visual MVP gate pending")); protected: virtual void BeginPlay() override; diff --git a/Source/AgrarianGame/AgrarianDemoNoticeWidget.h b/Source/AgrarianGame/AgrarianDemoNoticeWidget.h index 665417d..539b19e 100644 --- a/Source/AgrarianGame/AgrarianDemoNoticeWidget.h +++ b/Source/AgrarianGame/AgrarianDemoNoticeWidget.h @@ -21,7 +21,7 @@ public: FText VersionLabel = FText::FromString(TEXT("Investor Demo v0.1.N - Build 2026.05.18")); UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Demo") - FText DemoNotice = FText::FromString(TEXT("Beta prototype build - not for public distribution")); + FText DemoNotice = FText::FromString(TEXT("Systems-first investor prototype - visual MVP gate pending")); UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Demo") FText CopyrightNotice = FText::FromString(TEXT("Copyright (c) 2026 Agrarian Studio. All rights reserved."));