Back to Devlog
    v0.9.25
    ToolsOctober 4, 2026Release notes

    The Map Editor Is In The Engine Now

    SHAGGED, a console-launched map editor that compiles through MakeBSP and loads through the game's own BspLoader — plus Amphi as best-of-three.

    developer 1; editor

    Four views. Drag in an orthographic pane to make grid-aligned box brushes. Select and drag to move them.

    The build pipeline is the part that matters:

    text
    npm run shagged:server   starts a separate loopback map service,
                             connects when the editor opens
    
    Server Save              writes the current .map plus editable sidecar as an
                             immutable revision under server-data/shagged/maps
    
    Successful builds        publish as numbered PK3s in the game data directory,
                             and a build is marked playable only after packaging
                             succeeds

    A local MakeBSP/MakeLight install — NetRadiant Custom — compiled real output and loaded it through SHAG's own BspLoader. Tool paths default to tools/makebsp with the tracked Washoi profile at editor/makebspdata/washoi.json.

    An editor that cannot get its output back into the game is a modelling toy. This one has a compile service, a versioned save format and a publish step that only reports success after packaging.

    The Capability Ladder

    Map health analysis — missing spawns, required entity keys, broken target links, shared target names, malformed model refs. Toolbar regrouped into map / edit / placement / view / build. misc_model as a point entity with modelscale export. Point entities. Brush entities: trigger, door, plat, capture area. Face-by-face texturing with alignment, where previously there was one hand-typed shader and one fixed texture matrix for every face. Flycam navigation, Radiant-style selection, patchDef2 control grids through document, .map export and a verified MakeBSP compile with control points intact. Diagonal corner resize, because resizing both axes previously took two operations from four edge-midpoint handles. Live dimension label at the cursor. A visible grid-snap marker while dragging. Typed exact size while resizing. Visible feedback when a drag hits the one-grid-unit floor.

    Plus three M1 toolbar shortcuts that silently did not do what the table said, found by checking the toolbar and shortcuts table in docs/research/SHAGGED.md against the actual key handling.

    Amphi

    Best-of-three 1v1 deathmatch. Each round lasts three minutes, players and map items respawn during the round, and the higher frag count wins.

    Game-Side Fixes

    Procedural armor, health, ammo and powerup visuals now use the same BSP landing position as the server pickup trigger, which fixes items such as wdm12 yellow. Armor rebuilt as broad chest and shoulder plates over a dark frame with the +5 shard as a smaller irregular fragment. Quad is now a two-sided Q badge. Mega health restyled. The held grenade launcher's separate barrel attaches to its authored GLB socket as the pickup model already did, and each shot indexes the barrel 45 degrees. The duel pool includes wdm11 and wdm12. Lobby rail buttons no longer show the shared button component's bright bevel and violet hover paint against the gold panel — the hover still lifts the key.

    And The One That Was Not A Defect

    Every Known Unverified Item from the previous release is now resolved: the Room Template's export compiles with MakeBSP and MakeLight and loads through BspLoader; editor open/close/draw is checked in a real browser over CDP including three full open/Exit/reopen cycles with no duplicate roots or leaked canvases; and the light-grid count mismatch on an unlit fixture room is confirmed to be MakeLight's own grid compression on a room with zero light entities, not a SHAGGED export defect.

    That last one is the best kind of resolution. Somebody spent time proving that nothing was wrong.

    Still Open

    Groups, browser connection to the new compile service, exact BSP delivery, and the Playtest/Return loop.

    The backend compile path has passed tests with an injected tool runner and now with the real local MakeBSP and MakeLight through the HTTP job service end to end — but the browser editor has not connected to this service yet.