Skip to content

[EPIC] Ship eight games that hold 60 FPS and play like products #2312

Open
1 of 2 issues completed
Open

Description

@Noisemaker111

The 8 games are built; what is left is a handful of engine capabilities, one dev-loop cost, and adoption per game. This board replaces the 70 open boxes in #2038, which was closed as COMPLETED. Same identifiers, one line each; the original text and acceptance checks stay in #2038.

Measured state, 2026-10-22/23: six of eight games hold 60 FPS, Harbor Heat 15.1 and Drift Foundry 38.1 are the frame-cost work. Perf gate green on all eight (run 40048802446).

Loop

  • A1.19 Cheap a landing to <= 90 s idle: test (i) is 94 s (run 40048802446) behind CreatorApp.sceneIo.test.ts 44-68 s. Landing queue itself is done (land hands off; land:queue is the only waiter #2296).
  • A6.5 A failed dev runner build shows the error and a retry, never a blank world.

Engine capability

  • A2.7 One depth-normal prepass feeding GTAO and bokeh.
  • A2.8 Build-time LODs with cross-fade, tier cull distance, coarse occluder grid. Only the sim LOD scheduler exists (packages/core/src/world/lod.ts).
  • A3.1 Harbor Heat to budget: 9,463 draws / 4.04M triangles measured.
  • A3.3 Drift Foundry to budget: 4,282 draws / 1.64M triangles.
  • A3.4 Brightway Park to budget: 2,701 draws against 1,500.
  • A3.5 Ember Command to budget: 2,052 draws against 1,500.
  • A3.6 Beacon Bastion to budget: 3.39M triangles against 1.5M.
  • A4.2 Asset weight: meshopt glTF, KTX2 mips, hashed long-cache URLs.
  • A4.3 Zone streaming with no frame over 33 ms in a cell swap; createWorldStreamer is the seam, Harbor the adopter.
  • A4.4 Allocation audit to 0.5 MB/s in play.
  • A4.5 Precompile must not delay the cover: +6-8 s Harbor, +10-13 s Scrap Signal.
  • A5.1 Auto quality: drop a tier after 3 s over 20 ms, probe up after 30 s under 12 ms, dynamic resolution 0.7-1.0.
  • A5.2 Integrated-GPU pass: 30 FPS at medium.
  • A5.3 Mobile/touch pass: 30 FPS at low, touch controls, HUD fits.
  • A6.1 F3 perf overlay: FPS graph, draws, nodes, programs, costliest subsystems.
  • A6.2 Deterministic replay: input plus seed.
  • A6.3 Runtime error and context loss show a recoverable screen; no silent black frames.
  • A7.4 Instanced traffic bodies: 200 cars under 2 ms of frame cost on Harbor's graph.
  • C1.3 Material library: 40+ PBR materials, triplanar, no flat world surfaces left.
  • C1.6 Macro ground material for Brightway's turf, optional displacement role, library-to-surface bridge in @jgengine/assets.
  • C2.2 Camera kit remainder: FOV kick, lock-on, cinematic rails. Spring arm, shake and photo mode exist.
  • C2.3 Character customization seam.
  • C3.2 HUD kit gaps: hit marker, crosshair states, boss bar. Damage numbers, compass, minimap, objective tracker, toasts and the radial wheel exist.
  • C3.3 Inventory and loot UI gap: the drag grid.
  • C4.1 Feel kit gap: decals and time dilation. Event bus, hit-stop, shake and rumble exist.
  • C4.3 Adaptive music with explore, tension and combat states.
  • C4.4 CC0 sound library credited in CREDITS.md.
  • D5.8 Move Beacon's bank and relic draw onto packages/core/src/run, which now exists. Beacon still carries the local copy.
  • C2.x foot-IK proof (filed as a second C2.2 in [EPIC] 320-hour roadmap: from prototypes to shipped-quality games (perf, systems, look, depth) #2038) One sloped-ground foot shot, the 8-game rig/IK/T-pose audit, standard rig where a game shows placeholder lumps. Foot IK PR [gaps] No joints/constraints in PhysicsWorld (hinge/distance/spring/fixed) #79 is open in jgengine-games.

Game adoption

  • C5.1 Every toast expires. The self-expiring feed exists; Odd Orbit and Beacon still hold them on screen.
  • C5.2 Beacon's built tower keeps its authored material, shot per tower type.
  • C5.3 Odd Orbit's four members match their four portraits.
  • D1.5 Money buys property and upgrades; districts unlock.
  • D1.6 Harbor radio stations on the audio seam. Menu, HUD and minimap already exist.
  • D1.7 District standing replaces street cred; progression/cred.ts is still the progression.
  • D2.4 Two Scrap classes with skill trees.
  • D2.7 Level gates the map, and discovery pays XP.
  • D2.9 Talents with actives, synergies and respec.
  • D2.10 Cores from salvage; prices move with purchases.
  • D4.1 Supply cap on top of the gathering loop, which already hauls and deposits.
  • D4.2 Tech tree and unit counters. Rank upgrades exist.
  • D4.7 Research unlocks counters and armor types instead of flat damage.
  • D5.1 Upgrade branches per tower. Targeting modes already exist in combat/towerAI.ts.
  • D5.2 Beacon armor types and resistances.
  • D5.3 Beacon mazing on the navmesh.
  • D5.5 Beacon hero abilities.
  • D6.5 Drift ghosts and time trials.
  • D7.3 Odd Orbit build/buy mode. BuildPalette.tsx is the start.
  • D8.2 Deepward enemies hunt by sound.

Closed as stale

  • A1.18 Trim to eight shards and attack types - both halves measured. Eight shards cost 15-24 s on the deepest job (5f204db), so nine stand; scripts/type-shard.ts took typecheck from 59 s serial to 30 s and the types job reads 58 s. The floor is test (i), which is A1.19.
  • A7.2 Title frames are cheaper than play - written off Harbor's 2.7 FPS play against a 20.4 FPS title. A7.1 fixed that loop (Scrap Signal 11.5 -> 60.0, Harbor 9.7 -> 21.7) and Harbor now reads 15.1 FPS on a bigger scene. Harbor's remaining frame cost is A3.1.

Already done (do not redo)

A1.10 publish guard (#2289 merged) - A3.2 Scrap Signal 60.1 FPS inside draws/tris/nodes - A3.7 Odd Orbit 60.1 FPS inside - A3.8 Deepward 60.0 FPS inside - A7.3 pause stops world draws (packages/shell/src/canvasCoverDraws.test.tsx) - C2.1 character pipeline merged (ragdoll + foot IK) - C4.2 audio engine (createAudioEngine) - D1.4 Harbor vehicles, damage and garage (garage-purchase.test.ts, vehicle/damage.test.ts) - D2.2 Scrap elements and statuses (status-runtime) - D3.2 Brightway ride breakdowns and queues (rides.test.ts) - D3.4 Brightway loans and ledger (loan.test.ts) - D3.5 Brightway scenarios (scenarios.test.ts) - D3.6 Brightway coaster circuit (coaster/circuit.test.ts) - D3.8 Brightway milestones (milestones.test.ts) - D4.3 Ember formations and fog (formations.test.ts, fog.test.ts) - D6.3 Drift damage (vehicle/damage.test.ts) - D9.4 Beacon ring cost, #2074 merged and the budget re-measured to 658 draws.

Activity

  1. Noisemaker111 commented on Oct 24, 2026

    @Noisemaker111
    OwnerAuthor

    A2.8 distance + occlusion: tried a tier instance-cull policy plus a built-once occluder grid, wired into scatter batches and the visibility driver (PR #2313, closed unmerged).
    Measured on origin/beta vs the branch at 8 pinned cameras: four shots identical to the draw, the other two differing in both directions with matched draw counts and moving NPCs - no saving. The grid finds almost no occluders because it trusts only placed solids >= 6 m, while Harbor Heat's downtown is generated chunks and Brightway Park's props are smaller.
    Occlusion becomes worth building when the grid reads occluders from generated building chunks and a scene has a large occluder covering a large batch; until then A2.8 stays open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions