- Chat goes to your room (the sandbox, or your game) by default, and to the whole lobby with /all or a leading !.
Lines from elsewhere say where they came from ([Sandbox], [Game 2]), lobby-wide ones from your room say [All].
Typing shows only to your room. Protocol 8.
- Hosting: everyone is told who hosts now, and the host can hand it over with /host "player".
- /fashion <item> wears a fashion locally, like /color.
- Lines that mention a player show in that player's color, looked up as they draw.
- Tips are tagged with the item and situations they fit, and those that fit are 1.5x as likely. They turn over every
10 seconds on one continuous run, show under the menu too, and can be turned off with Tips in HUD / Gameplay. The
HUD hotbars hide while the menu is up (except on its item tabs).
- American spelling throughout: color, center, gray, mustache, and so on.
Hits tip it by their actual knockback (shared with fighters through knock_get), blasts push it, a Vacuum pulls it
toward its wielder and an airblast shoves it away. Blocks stay still. Protocol 7.
- Profile Stats: damage dealt, kills and wins (single player and multiplayer) and the most and least played weapons
and trinkets, counted from running totals in the simulation so online rewinds correct them. Protocol 6.
- First-run control hints in the sandbox (and Chat in lobbies), each gone for good once used.
- The ready countdown and a timed round's last five seconds beep (new countdown sound), and those seconds show big.
When time runs out, everyone short of the most health dies.
- Weapon balance tuned into tiers: Whip and Grenade Launcher on top, then melee, ranged, and utility (Vacuum,
Grapple, Uzi) at the bottom.
- The whip's lash is a chain of links a wave rolls down: windup, loop, crack, then a floppy recoil.
- Muzzles come from Muzzle nulls in weapons.anm2 (read in at build time), for shots and the flash, which now follows
the weapon.
- Settings: Quit, Scale (1x-4x or Free), FPS meter and limit beside Vsync, Mute on Unfocus, Damage Numbers, Rumble,
Stick Deadzone, and an Online section (Host, Chat, Ping) shared with the Multiplayer page.
- The menu header lays out tabs and buttons by their names. About is sandbox-only. The score no longer shifts with
the menu's tab.
- Smaller meters, 90 tips (all ending in !), and a shorter lobby welcome.
- Every attack is now assembled from traits on its definition instead
of per-weapon code: an anchor and path (thrusts, out-and-back, arcs),
shared flight physics (gravity, drag, acceleration, homing, and one
wall response: end, burst, stick, crawl, bounce, stop, pass, return,
latch), and flags like bouncy, drifting, tethered, orbiting, instant
and arming. Melee are projectiles too.
- Shots have a lifetime and a fade (when damage bottoms out). Range is
speed times lifetime. Ricochets and the Vacuum wind lifetime back.
- The Vacuum pulls anyone's shots, and its airblast flips them out
along the aim, claiming enemies' (fading into your colour).
- New trinket: Hourglass, longer projectile lifetime and range. Ropes
and chains lengthen with it and the Accelerator.
- Fashion: 23 items worn on the head, face or torso, chosen in Profile.
- Flamethrower flames hit continuously, the whip coils and sweeps,
bouncing shots roll over ramps, and Ricochet relights grenade fuses.
- Profile tab, colour tooltips, option hints on every setting, an
About tab with credits and links, and the Ithaca font.
- Loadouts lock once readied, tomatoes clear with the match, and the
round-over pause is 4 seconds.
- CC0 license. Tools and CLAUDE.md are no longer tracked, and the web
shell moves to web/.
- Tomato splats are kept in the match, so everyone sees everyone's
(others' arrive in replays, which play no effects), each splatting
with juice and a sound once.
- The sandbox's first player (solo or hosting) spawns on the arena's
P1 mark.
- A thrown flail ball or grapple stays out when switching weapons, and
another weapon fires while a grapple hangs on. Mines, flail balls and
grapples go once their slot no longer holds the weapon that put them
out (mines fizzling).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HUD:
- Hotbars fit a quarter of the screen, dropping to small then tiny slots
(thinner outlines when tiny), with cooldown bars matching their size.
- HUD elements are drawn on their own layer and composited at one
opacity: hotbar slots are see-through until hovered, the rest fade
while hovered.
- Rival windows fit the right column in at most two rows, shrinking
icons then font, then dropping icons for name, health and ping bars.
- Tooltips number equipped items' slots and say Recoil for weapons that
only push back. Previews use arrows, spread uses degrees.
- Crosshair fills in and shakes with charge, and weapons shake after
firing until their cooldown ends. DPS and speed meters off by default.
Gameplay:
- Dual Wield stacks: each copy fires another recently held weapon from
a fanned off-hand, at its own level's cut.
- Flamethrower: no slowing, smaller fireball with some recoil, and an
airblast that knocks others away.
- Iron Weights slam on any landing faster than a plain fall (platforms
too), stacking radius and damage, and speeding fast falls.
- Stuck arrows are one-way ledges until they fade, matching their
(slightly larger) hit size. Attacks now collide with slopes.
- Halved Tesla Coil, Recoil Coil, Diazepam, Shock Absorber, Feather and
screenshake values.
Art and tools:
- Weapon and trinket icons merged into one sheet each (normal, small,
tiny), cells in catalog order. Grimoire wisps stand upright.
- Fonts gain the degree sign and four arrows, decoded from UTF-8.
- Menu fighter preview walks at quarter speed.
- Unequip from either catalog tab by right click or gamepad.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lobbies hold 16 players and the sandbox 16 fighters, games up to 8. The arena
gets spawns 5-8 (outer ledges and middle platforms) and the race start eight
places. The sandbox adds eight more spawns, each the open spot farthest from
the rest. Rival cards wrap into rows of four, the lobby's player list goes to
two tiny columns when crowded, and the server keeps frame packets to one
datagram. Formatted with clang-format.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Neither does anything with the server running the games. Counting down to play
again moves into the match, so the server and every player agree on it and the
results show it starting again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sim holds one whole game (tick, snapshots, checksum) and talks to the screen only
through Cues, which the client's Scene plays and the server ignores. All drawing
moved to scene.cpp. Match takes this screen's wishes as request flags instead of
reading the menu, input and settings. The sim library builds without SDL and the
server links it, ready to run games itself.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>