QFG Remaster — Progress

How far from a working game? Refreshes every 60s. Regenerated on every push.
QFG1 PLAYABLE 20%
748
UFUNCTIONs
100
Helpers
101
DataTables
14/14
Gates GREEN
148
Commits this session
437
Commits 24h

Tasks for you (Shaun)

Click a row to expand. These are the things the autoloop physically cannot do.
T1B Fix WASD/camera: rebuild C++ plugin and re-test PIE (~3 minutes, UE5 editor) HIGH
Time: ~3 min Unblocks: G1 fully closes -- hero actually walks. This is the LAST step to G1.
The PIE log showed IMC_QFG1 rebuilt in C++ (0 entries) -- AQFGHeroCharacter::ConfigureMappingContext rebuilt the input context with zero key bindings because BP_QFGHero overrides the C++ defaults for MoveAction / LookAction / SprintAction / InteractAction / RightClickAction to None, leaving every if (MoveAction) guard short-circuited. Autoloop has shipped commit W42-T59: the IA_* actions are now defensively loaded by LoadObject in AddDefaultMappingContext -- BP overrides can't starve them anymore. Needs a one-click C++ recompile to take effect.
  1. In UE5 toolbar, click the green Live Coding button (top-right, shows a hammer icon) -- OR press Ctrl+Alt+F11.
  2. Wait for "Live Coding succeeded" toast (~10-20s).
  3. If Live Coding fails: close UE5 entirely, then re-open QFGRemaster.uproject and accept the "Build" prompt. Takes ~60s for a clean rebuild.
  4. Once the editor is back, press Play (or Alt+P).
  5. Click in the PIE viewport. Press W A S D -- the SkeletalCube hero should now walk on the floor.
  6. Check Output Log for the new line:
    QFGHero: IMC_QFG1 rebuilt in C++ (5 entries) [Move=OK Look=OK Sprint=OK Interact=OK RClick=OK]
    If any field says NULL, copy-paste the whole log line back to me.
  7. The QFG1 camera is intentionally fixed 2.5D -- it follows the hero from above but mouse-look is disabled (matches the original). When WASD moves the hero, the camera tracks.
  8. When the cube walks: press F9 to screenshot. That closes G1. T2 (place Sheriff actor) becomes the next gate.
T2 Unblock G2 -- place a Sheriff hotspot in the town gate (~5 minutes, UE5 editor) MEDIUM
Time: ~5 min Unblocks: G2 (verb coin on one hotspot). Do this in the SAME editor session as T1.
The verb-coin widget exists (WBP_VerbCoin) and all helpers are wired. The level just needs ONE hotspot actor for the player to right-click. The autoloop can ship the BP graph wiring next sprint, but it cannot drag an actor into a .umap.
  1. In the open editor (after T1 is done), open Content/QFG1/Maps/L_QFG1_TownGate from the Content Browser.
  2. In the Content Browser, navigate to Content/QFG1/Blueprints/NPCs/BP_NPC_Base.
  3. Drag BP_NPC_Base from the Content Browser into the level viewport, near the gate (somewhere in front of the spawn point).
  4. In the World Outliner (top-right), find the new actor (it'll be named "BP_NPC_Base_1" or similar). Click it once.
  5. In the Details panel (right side), change the Actor Label at the top to: Sheriff
  6. Press Ctrl+S (or File → Save All) to save the level.
  7. You're done. The autoloop will write the right-click → verb-coin BP wiring next sprint, and then G2 fully lights up.
T3 (Optional) Import one Sierra background -- ~30 minutes LOW
Time: ~30 min Unblocks: Visible art instead of grey floor. Doesn't gate any G-milestone but turns the demo from "box on floor" into "box on Spielburg".
DT_BackgroundIndex is wired and QFGBackgroundHelper can look up the asset path. We just need a 320×200 Sierra screenshot imported as a Texture2D for ONE room -- and there's instant visual feedback in PIE.
  1. Find or extract PIC.000 from your QFG1 install. AGD Interactive's remake is a clean source.
  2. Convert to PNG. ScummVM ships sci_companion which exports SCI views as PNG.
  3. In UE5: Content Browser → Content/QFG1/Textures/ → right-click → Import → select the PNG. Name it T_TownGate_BG.
  4. Open BP_QFGRoomManager in the Blueprints folder.
  5. In its construction script: SetMaterial on the floor plane to a new Material Instance whose BaseColor is T_TownGate_BG. (The autoloop can ship a helper for this if you tell it to.)
  6. Save, press Play, walk in front of the painted plane.
  7. Tell the autoloop "the Sierra pipeline is unblocked, queue the importer script" and it'll automate the rest of the 30+ rooms.
T0 Put this dashboard online via Cloudflare Pages ✓ DONE
Time: ~5 min Unblocks: Dashboard is now live online -- accessible from anywhere.
Completed. Cloudflare Pages is now connected to the private Tjono/QFGRemaster repo and rebuilds on every push to main. The docs/_redirects file forwards the root URL to /progress/. The GH-Pages workflow at .github/workflows/pages.yml stays harmlessly in place in case the repo ever goes public or upgrades to Pro.
  1. Done. Cloudflare Pages connected.
  2. Production branch: main · Output directory: docs.
  3. Auto-redeploys on every push to main (~30s).
  4. Bookmark your *.pages.dev URL for one-click access from anywhere.
T1 Run g1_one_shot.py to apply the .uasset fixes ✓ DONE
Time: ~10 min Unblocks: Hero spawns with a SkeletalCube mesh. GameMode points at BP_QFGHero. Saved.
Completed 2026-05-18. Log shows all four fixes ran cleanly: fix_gamemode_pawn no-op (already correct), fix_level_default_pawn no-op (none placed), fix_hero_mesh assigned SkeletalCube to CharacterMesh0, diagnose_hero confirmed BP_QFGHero_C with CharacterMesh0: mesh=SkeletalCube. PIE starts and the hero spawns. But WASD/camera don't respond -- separate input-binding bug, see T1B.
  1. Done. UE5 opened, Python console ran import g1_one_shot; g1_one_shot.run().
  2. Output Log showed all four fix steps green.
  3. PIE started. Hero spawns. Input binding bug surfaced -- handed to T1B.

Milestone gates (CEO charter)

G1 Walkable hero (WASD) ⚠ BLOCKED 85%
g1_one_shot ran cleanly. Hero spawns. Input bug fixed in W42-T59; needs a C++ recompile (T1B).
G2 Verb coin on one hotspot ⏳ QUEUED 30%
Widget exists; needs G1 first, then BP wiring.
G3 First NPC conversation ⏳ QUEUED 25%
All BPFL helpers exist; needs G2 + dialogue runner BP.
G4 Combat MVP (1 brigand winnable) ⏳ QUEUED 20%
Combat helpers + bootstrap script; needs HUD wiring.
G5 QFG1 vertical slice ⏳ QUEUED 10%
All G1-G4 first; 8-10 more rooms; save/load BP wiring.
G6 QFG1 complete (Baba Yaga end) ⏳ QUEUED 0%
Not started.
Why is the bar stuck at 20%? Source-side rails are at 100%. Editor wiring is at ~2%. The autoloop is excellent at source/CSV/tests/gates but cannot open UE5 and assign a mesh.

Path to unblock: ~30-60 min at the editor. In Window → Developer Tools → Python Console run: import g1_one_shot; g1_one_shot.run() Then press Play. That ships G1, after which the autoloop carries G2-G4 most of the way.

Latest commit on dev

a65bd960 [CIO] [W42-T61] QFGFootstepHelper -- RollPitch + audit (4 UFUNCs) 2026-05-18 11:08 UTC+02:00