← all epics

Graphics tiers — simple and detailed, and the three-part body

client

repo: land-of-lor · depends on: character-composition-poc

Where this stands (2026-10-23)

The people are a first-run download, the same way everywhere, and the title waits for them. The web fetch had failed every time on a Godot 4.7.1 bug (the engine deletes a download_file it cannot size — docs/handoff/characters.md, 2026-10-23); the pack is now taken into memory and written by the game. Start, Account and the character step wait on the title screen behind a hairline of gold along its bottom edge; a failed fetch says so and tries again rather than letting anyone in with the simple bodies. The native builds carry the bodies and pass the gate at once. A release is pinned to its pack: export-web.sh checks the pack this tree makes is on the server and stamps it into the build, so the set of people is fixed per release.

Decided (Kris, 2026-10-23), for later — zone packs. The same loader, more entries: a base set (anything a player can carry through a portal — the player bodies, the faces, Rah, the village folk) bundled in the store apps, always; zone sets (a zone’s creatures, NPCs, props) bundled while the app fits the store limits and fetched on entering the zone once it does not; each Area declaring the sets it needs (derivable from its kinds and placed things); and, once there are more zones than a browser should keep, an eviction rule for user:// — Godot has no unmount, but a mounted pack is only an index; the GLBs load per entity and go with the area. Not started; nothing to build until zones exist.

Where this stands (2026-10-20)

Phase 3, the starter set, is in — as the characters (art-direction rounds 1–2, Kris with Rah and Izzy; docs/handoff/characters.md): ten rigged bodies a player picks from on the account screen’s detailed tier (a seventh appearance group, faces.js characters, saved on the account), the witch as Esmeralda, and the bodies shipped as a separate 13 MB pack a device downloads when it turns the tier on (client/character_pack.gd, game/export-characters-pack.sh) — no body rides in any build any more, the adventurer included. The tier is still a device setting behind dev mode (Kris, 2026-10-20: keep the secret mode for now). A character change rebuilds the body in place; the tier switch itself still takes effect at the next place (#16). Verified on the emulator with game/test-device/characters-driver.mjs. #18 closed.

Where this stands (2026-10-06)

Phase 0 signed off (Kris, on his phone, the evening of 2026-10-06: “that’s fixed it… I’d like to keep this good graphics version continuing”). Deliverable 032 holds the build: the first body set, adventurer, through Meshy in four minutes for 53 credits, cut into head, torso and legs at load, in the player’s colours, with a Graphics setting on the account screen and spellgrove-v41.apk locked as the record. Three phone-found bugs fixed the same evening (an opaque shader writing ALPHA, the account box at design resolution, the cameras’ depth ranges) — docs/handoff/graphics-tiers.md. Next: Phase 1 (#16) — the tier setting rebuilding bodies in place, the shared body base. Then the parts on the wire (#17) and the starter set (#18), which waits on the vibe: workshop/epics/art-direction/. Decided (2026-10-06): the simple tier is today’s primitives, untouched · a device setting picks the tier, default simple · every creature has a head, a torso and legs, each typed (humanoid first) with its own simple drawing and detailed model · Rah’s faces are the simple tier’s · shirt and pants colours carry across both tiers · Meshy Pro is the generator, driven by API · the adventurer stays as the most normal body in the set. Decided (2026-10-20): the adventurer is a pipeline proof only — not the default body and not a starting point; the starter set (#18) follows the art-direction style sheet (workshop/brand/style.md), Kiki-like kids, not him. Supersedes “stays as the most normal body” above. Open: the hands — the rig’s open A-pose palms ride into every clip; relaxed hands in the prompt or different clips, tried on the next body. Open issues: epic:graphics-tiers — #16 Phase 1 the tier setting, #17 Phase 2 the parts on the wire, #18 Phase 3 the starter set.

What this is

Two renderings of the same creature. The simple tier is what the game draws today: a body of capsules and a ball head, Rah’s drawn faces on the ball, procedural walking, a few kilobytes each, fast on any phone and in any browser. The detailed tier is a real character: a rigged, skinned mesh with hand-painted textures and a library of animation clips, Final Fantasy-ish and a touch more cartoony, generated through Meshy from a prompt and imported into Godot. One layer in the client (graphics_tier.gd) answers which tier is in play, and nothing else knows.

Under both sits one idea Kris added when he read the first plan: a creature is a head, a torso and legs. Each part option has a type (humanoid for all the first ones; equine one day), an identifier, a simple drawing and a detailed model. The parts live in a table (game/shell/parts.js), ride the wire as three appearance keys, and are picked on the account screen. This is also where clothing and armour will bind: a shirt goes on a humanoid torso, a saddle on equine legs.

Why it exists

The reel’s lesson was that the gap between a prototype’s look and a shipped game’s look is the thing players see first. Hand-made models and Claude-Design renders have failed here twice (deliverable 030). A generative 3D service with auto-rigging and preset motions is the first path that can produce real character quality at this project’s size — and it has to arrive without breaking the simple build, which must keep running on old phones and may be the free store build.

Scope

Non-goals

Relevant docs

Deliverables (1)

Work on this epic

The granular work is GitHub Issues, one label per epic: epic:graphics-tiers (private repository — sign-in required). The dated Where this stands section above names the open ones.

Ask an agent about this epic

    Also available as raw markdown.