Skip to content

Visual Direction & Concept↔Prototype Deltas

Source: PROJECT_CONTEXT.md §7, §8, §9; config.js camera, ui, map (tilt, wallH). Status: ⚠️ Partial — visual identity is implemented; this doc is largely a "watch these on the Unity port" tracker.

What it is

The game's visual identity and a register of the intentional/pending divergences between the original concept doc and the current web prototype. A designer reads this before proposing visual changes or scoping the Unity port.

How it works

Visual identity (implemented): - 2.5D render, not flat top-down. A slight isometric tilt: X maps straight across, Y is squashed by TILT to fake the downward viewing angle (iso/unproject in game.js). Walls are faux-height cubes (WALL_H). It is not a 45° iso rotation. - Camera fit for phones. Small screens zoom out proportionally so a phone still shows useful tactical context (camera.fitRef, camera.fitMin). - Cute-fantasy "Thornwood" theme (committed). Woods, wardens, goblins, a forest-brute boss — chosen over the concept's military/semi-real default as a fresh, differentiating angle. The prototype ships only this theme. - Render-only attack body-language (setLean/attackLeanOffset, a stand-in for sprite anim): the body token leans toward a melee target (ui.attackLean) and kicks back from a ranged shot (ui.shootRecoil) for ui.leanTime, while feet + shadow stay planted. Applies to the player and enemies, so a fight reads as a back-and-forth.

Tunables

Key Default Meaning
map.tilt 0.67 2.5D vertical squash (Y) — reload
map.wallH 30 Wall cube height (px) — reload
camera.fitRef 880 Viewport width (px) below which the camera starts zooming out
camera.fitMin 0.9 Floor on the small-screen zoom-out factor (the phone knob)
ui.attackLean 7 Px the body leans toward the target on a melee strike
ui.shootRecoil 3 Px the body kicks away from the target on a ranged shot
ui.leanTime 0.13 Duration (s) of the lean/recoil pop

Design intent

The 2.5D tilt + faux-height walls give cover and line-of-sight real spatial weight (you read what's behind a wall), serving Route over reflexes and the fog/vision-cone stealth loop. The lean/recoil body-language makes the melee↔ranged stance handoff legible without sprite animation, reinforcing readable, tactical combat. The cute-fantasy theme is the deliberate market-differentiation bet.

Open questions / deltas

Pending divergences to track for the Unity port (PROJECT_CONTEXT §9): 1. Camera is 2.5D, not flat top-down. Concept names pure top-down (Hunter Assassin style); prototype renders with the tilt (map.tilt, faux-height walls). Decide whether Unity keeps the 2.5D look or reverts to flat top-down. (Note: §9 prose cites TILT 0.58; the live config.js value is map.tilt = 0.67 — reconcile.) 2. "Crit Damage" (concept) vs crit (code). Concept lists Crit Damage as a core stat; prototype tracks a single crit value. Reconcile naming/semantics on the port. 3. Single-player simulated MP vs networked PvP. "Other players" are AI bots matched to your Power (Arc-style), not networked humans. Consistent with the concept's framing, but real PvP is out of scope for the prototype. 4. Settings collapsed to one. Concept lists military/semi-real as default with cute-fantasy experimental; prototype ships only the cute-fantasy theme. 5. Added systems not in the concept doc — carry forward unless deliberately cut: stamina (sprint + dodge-roll with i-frames), regenerating shield/overshield, noise propagation, portal-guarding AI, and the storm-cataclysm finale. These flesh out the "tension + readability" pillars.