diff --git a/CHANGELOG.md b/CHANGELOG.md index f5ee71c0..9c5ba88d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,131 @@ per release, newest first. HTML comments like this one are stripped before rendering, so maintainer notes stay out of the user-facing window. --> +## 1.17.0 โ€” Games that look finished ๐ŸŽจ + +### ๐Ÿ–๏ธ Dragging, clicking and selecting that do what you meant + +- ๐Ÿ–๏ธ **Dragging in games no longer throws on Quest.** Every press in play logged a + `setPointerCapture` InvalidStateError (about a hundred in one Untangle session) and leaving play + could end in "Something went wrong": the editor's orbit controls stayed mounted in play and + captured the pointer under a pointer lock. They stand down while you play now, and the capture + is guarded. +- ๐Ÿ”€ **Edit and Interact.** A new cell at the end of the bottom bar (or the **I** key) switches + the editor between Edit โ€” every click selects, so every object can be moved โ€” and Interact, + where clicks and drags work the way they do in play (piano keys play, crates carry) without + starting the game. Module click handlers say which modes they run in; by default a game piece + answers in Interact and Play and an Edit click selects it. +- ๐Ÿ‘ป **Click through glass.** A see-through wall or a shell marked "Click-through in the viewport" + (Inspector โ–ธ Object) no longer steals the click from what is behind it, and clicking the same + spot again (after the double-click window) cycles down through everything under the cursor. +- ๐Ÿงฉ **Every module's content is in the object list.** A new "Module content" section lists the + pieces a module builds outside the scene (the Untangle board, a piano, a dungeon) by name; + click a row to frame it, hide it locally, or open the module's toolbox. + +### ๐ŸŽฎ Games start when you press Start + +- โ–ถ๏ธ **Test play.** A game no longer paints its menu over the editor with live buttons. A small + "Game ยท menu" chip says the scene is a game, and โ–ถ Test play resets it to its menu, enters + Play and puts the Start screen in front of you (also on the play button's right-click menu). + The HUD editor's eye still previews the screens, inert. +- ๐Ÿ” **The round resets when the last player leaves.** Alone, leaving Play returns the game to its + menu at once; with others, when the last player has been out for ten seconds. +- ๐Ÿ–ฑ๏ธ **Free-cursor games.** A scene can play with the real mouse cursor and no pointer lock + (Untangle and the Jam Room do): the cursor aims, clicks fire On Click, press-drag carries. The + editor grid no longer shows in Play. +- ๐Ÿ’พ **Games remember things.** `api.storage` for modules and the new **Store Value** / **Stored + Value** nodes keep a best score or your unlocked levels on this device (never shared, never + saved into the scene). The HUD action "Save best score" wires one up. +- ๐Ÿ”‡ **A quieter console.** The PCFSoftShadowMap deprecation, the router pushState warning and + rapier's init warning are gone. + +### ๐ŸŽจ Seven games that look finished + +- ๐Ÿ—๏ธ **Towers remembers your best height** โ€” and looks finished: a sky, a tiled floor, wooden + crates, glowing height rings, turning stars; Round over shows this round and your best. +- ๐ŸŒŒ **Stars Room is a space room** โ€” a starfield behind glass, crystal stars, a start screen + with Start round or Free play, a two-minute round, your best round saved. +- ๐ŸŽธ **Jam Room is a game** โ€” a small studio; press Start, then โ–ถ on the Transport, and keep the + band going for eight bars. Played with the mouse, your best tempo saved. +- ๐ŸŸ๏ธ **Football** is a floodlit glass stadium with a live scoreboard. +- ๐Ÿฐ **Dungeon Realms** is torch-lit stone under a vault, with glowing gems, animated portals and + a Start menu you can click. +- ๐ŸŒ… **Waves** is a sunset arena with a crystal tower that dims with your health, portals, + readable enemies and hit flashes. +- ๐Ÿชข **Untangle, finished:** a real drag (press-drag-release, or click then click), a redrawn + board, 30 levels per mode that unlock as you solve them (your progress stays on this device, + with a Reset), and a new 3D mode โ€” untangle the graph around a globe. +- Every game has a Start screen, Pause on **P**, and a restart. + +### ๐Ÿฅฝ Games in a headset + +- ๐ŸŽฎ **Play in VR puts you in Interact.** A game opens in Interact in a headset: your grips grab + and knock things instead of the world, the stick WALKS you (walls stop you, gravity holds you, + small steps climb), and there is no flying or teleporting unless the scene allows it. The left + **Y** button switches to Edit and back (a tick in your hand and a small wrist label say which), + and the game can put you on its start spot. In Edit, grips move and scale the world again โ€” + in game scenes too. +- ๐Ÿ‘๏ธ **No more light helper in one eye.** Editor helpers drew into the left eye only in a + headset. Now they are in both eyes in Edit and gone in Interact and Play โ€” together with the + grid, collider wireframes and selection outlines. +- ๐Ÿ“‹ **The game menu in VR.** A game's menu, pause and results screens float in front of you and + answer your laser and trigger (or a poke); the score and timer sit on your left wrist and, + if you like, in a strip at the top of your view. +- ๐ŸŽน **Hold the trigger and sweep.** Hold the trigger and brush across piano keys, drum steps, + pads or buttons โ€” each one you pass fires once. +- ๐ŸŒ **Module content follows the world.** Grab and turn the world and the Untangle board (and + every module's content) turns with it. + +### ๐Ÿ”Š Games that sound and feel like games + +- ๐Ÿ”” 20 built-in game sounds, 7 music loops (quiet under the sound effects, only while you + play), a big centred banner for moments like "GOAL!" or "Floor 3", sparkle / confetti / smoke / + spark bursts, and controller vibration patterns (in Interact and Play only). Settings โ–ธ Sound + has a "Game sounds" and a "Music" volume. +- ๐Ÿงฉ New Game nodes: **Announce**, **Game Sound**, **Effect Burst**, **Controller Buzz**, + **Game Music** and the **On Grab** trigger. +- ๐Ÿ—๏ธ **Towers** tells you when your tower reaches each ring (a banner, sparkles at the ring, + a chime), and the gold ring at the top is a fanfare with confetti. **Stars Room** sparkles where + you hit a star and pays a coin when it lights. **The Jam Room is a VR cockpit**: stand in the + middle and every instrument is in reach; a sweep also stomps the pedals and flips the mixer + mutes (Music FX 0.2.0). +- โšฝ **Football plays like football**: your first touch kicks a match off, 3-2-1, GOAL! with + confetti and a crowd, the conceding team kicks off, first to 5 or 3:00 with a golden goal; + swing a controller through the ball to kick it; the consoles stand outside the court. +- ๐Ÿฐ **Dungeon Realms is lit everywhere**, with real wall torches, footsteps, gem chimes, a + "Floor N" banner and dungeon music; you can no longer walk through pillars, crates or chests. +- ๐Ÿ”ซ **Waves is a VR shooter**: a gun in your hand (Blaster, Scatter, Beam), an ability on your + grip (Shield, Slow-mo, Pulse), five levels of rigged grunts, runners and tanks walking at the + crystal, a menu with How to play / Loadout / Options, and a Start board you shoot in a headset. +- ๐Ÿชข **Untangle** drags with a controller's trigger (laser or tip), lets you hold and turn the + globe in one hand, and lost its drone: one sound per event and a quiet puzzle loop. + +### ๐Ÿงฑ Kits and levels + +- ๐Ÿงฑ Four new packs in Explorer โ–ธ Packs โ€” **Modular Architecture**, **Nature & Terrain**, + **Props & Interiors** and **Sci-fi & Modern** โ€” over 120 pieces that snap to the 1 m grid (CC0, + made with Meshy.ai). +- ๐Ÿ—บ๏ธ Three walkable example levels in Templates โ–ธ General: **Castle Courtyard**, **Forest + Clearing** and **Tavern Interior**. Kit pieces are saved as references to their pack, so a + level of 150 pieces is about 25 KB. Configure Scene โ–ธ Physics โ–ธ Play mode โ–ธ Spawn point. +- โ†ฉ๏ธ Placing a kit piece is undoable (it was "too large for undo history"). +- ๐Ÿ› ๏ธ **Fixed:** moves made with the gizmo, Align to ground or an Explorer drop were refused by + peers (a rotation sent with its order letters); loading a scene while the simulation runs no + longer leaves the old physics world behind. + +### ๐Ÿงฐ For authors + +- ๐Ÿงฑ **Game and template defs can say more:** rounded boxes, capsules, rings, planes, + ico/dodecahedra; spot, directional (shadows fitted to the scene) and hemisphere lights; glass, + clearcoat, sheen and toon materials; animation and particle presets by name; click-through + shells; custom skies with a gradient, fog and a solid ground. Games-tab cards are rendered with + each game's own lighting. +- ๐Ÿ”ค **Centred HUD text is centred.** A single-line HUD text sat flush left inside its box + whatever its alignment said. +- ๐Ÿงฉ SDK: `registerClickHandler(fn, {modes})`, `api.registerListedGroup(name, {label})`, + `api.storage`, `api.editorMode()`, and `api.pointerRay()` is the crosshair ray under a pointer lock and the + cursor's ray in a free-cursor game. + ## 1.16.0 โ€” Waves, and one world to keep ๐ŸŒŠ ### ๐ŸŽฎ A new game, and a Games tab that can move again diff --git a/CLAUDE.md b/CLAUDE.md index 9de987e5..c3d92adf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2156,6 +2156,153 @@ loadable play content. Everything a user does must be visible to connected peers `#embed-play` (โ–ถ while not playing, so an Esc inside the frame has a way back in). Absent = the old app. The community Worker's `/e/` frames the app at `/?s=&play=1&embed=1`; no separate viewer build. Suite `embed-boot` (20). +- **ROADMAP 30 โ€” EDIT / INTERACT, AND THE SELECTION THAT FINDS THINGS** (1.17.0; plan + as-built: + cloud `plans/core/roadmap-30-games-that-look-finished.md`). `sceneStore.editorMode` + ('edit' | 'interact', LOCAL โ€” never replicated, never saved) + `objectActions.setEditorMode`; the + toggle is the `mode` cell at the RIGHT END of the default Controls bar (`#editor-mode-toggle`, a + `