v0.33.0
Big one. New gamemode, ranked 2v2, 22 new maps, and mappers can finally block off terrain.
Overview
Ranked 2v2
Ranked isn't 1v1-only anymore. Separate ladder, and it'll try to put you with your clanmates. Lobbies that don't fill or don't fully spawn now cancel instead of wasting your time.
Login with Google
Sign in with Google, link it to the account you already have.
Account usernames
Claim a username at the account level and play under it with a verified badge. Subscribers get bare names, no suffix.
Custom tribe names
New Tribes tab in the store. Buy a name and it'll show up on bot tribes in public games. Boost it to show up more. There's a leaderboard for them.
Impassable terrain
Mappers can mark terrain as unpassable. Whole new class of map design, and a few of the new maps already have it.
Warship veterancy
Warships get better the longer they survive.
MIRVs are real nukes now
MIRV warheads actually fly. Real flight paths, per-type speeds, and SAMs can shoot them down like anything else. Silo goes on cooldown after you launch one.
Anonymous names
Lobby setting that swaps everyone's name for an animal name. No collisions, and they're actually memorable.
22 new maps
Sol, Russia, United States, France, Germany, China, Vietnam, Scandinavia and more.
Gameplay & Balance
- Added the Doomsday Clock battle-royale zone gamemode — Zixer1
- Rebalanced the Doomsday Clock: 10-minute grace period, wave squeeze, slower troop drain, gentler-but-steeper warship attrition — Zixer1
- Doomsday Clock now decays warships alongside troops for doomed sides, and floors the drain at 5% of max instead of wiping to zero — Zixer1
- Doomsday Clock judges teams against the same bar as solo sides — Zixer1
- Doomed warships stay on patrol instead of idling at ports — Zixer1
- Added warship veterancy, with updated in-game instructions — bijx
- MIRV warheads are now standard nukes: real flight, normal SAM interception, per-type speeds — Evan
- Missile silos go on cooldown when launching a MIRV — Evan
- MIRV warheads now spawn properly over impassable terrain — TKTK123456
- Fixed SAM targeting, range miscalculations and nuke pathing — JB940
- Added impassable terrain — FloPinguin
- Fixed minimap priority for impassable terrain pathfinding — FloPinguin
- Added a custom alliance duration lobby control — Zixer1
- Fixed pirating not being disabled when a warship's owner has no port in that body of water — TKTK123456
- Fixed transport ships targeting unreachable inland-lake shores — Navaneeth Prabha
- Fixed transport ship troop counts not updating when a hydrogen bomb hits the player — AmanorsElliot
- Fixed the rail network path length limit and re-added its tests — TKTK123456
- Fixed the factory ghost radius — TKTK123456
- Fixed non-structures being deletable — unne27
- Fixed the nuke preview showing teammate SAMs as threats — Evan
- Highlight the owner of hovered naval units — unne27
- Reduced compact map chance in 1v1 from 50% to 20% — FloPinguin
- Removed the ports-disabled modifier from public games — Evan
Ranked & Matchmaking
- Added 2v2 ranked matchmaking — Evan
- Added the 2v2 ranked ladder as its own leaderboard tab — Evan
- Ranked 2v2 now prefers pairing clanmates as teammates — Evan
- Ranked 2v2 games end early when a full team is dead or disconnected — Evan
- Increased ranked 2v2 PvP spawn immunity to 1 minute — Evan
- Ranked 2v2 uses compact maps only 50% of the time — Evan
- Cancel ranked matches that don't fill or fully spawn — Evan
- Widened the matchmaking join window and cancel games that start short-handed — Evan
- Show the live queue size while matchmaking, and reconnect on silent disconnects — Evan
- Handle matchmaking socket close codes per the API contract — Evan
- Handle ranked play limits in the client — Evan
- Keep matchmaking games out of lobby reports and salvage invalid entries — Evan
- Mint game ids on the server and randomly route create-game across workers — Evan
- Removed clan tags from the 1v1 ranked leaderboard (it's an individual ladder) — Ryan
- Split the clan tag into its own filterable leaderboard column, with cleaner rank/clan/player cells — Ryan
- Fixed an infinite retry at the end of the ranked leaderboard — Ryan
22 New Maps
- Sol — Massive map of the Solar System — RickD004
- Russia — Big-map treatment of Russia — RickD004
- United States — Large country map built for the new impassable terrain feature — RickD004
- Germany — With state flags — SpeakIsntThere
- China — Qing-China themed country map — crunchybbb
- France — Large country map — RickD004
- Vietnam — Skinny country map based on Vietnam War — crunchybbb
- Scandinavia — Massive European regional map — crunchybbb
- Baltics — Regional map with multiple islands on edges — RickD004
- Caspian Sea — Medium sized vertical lake in Central Asia, plays a lot like Black Sea — crunchybbb
- Crimea — Disputed region between Ukraine and Russia — crunchybbb
- Finger Lakes — Six skinny lakes connecting to a river, upstate New York — crunchybbb
- Gulf of Guinea — African map with central Bioko Island — RickD004
- Hecate Strait — Strait in British Columbia, full of fjords — Liam Langford
- Irish Sea — Three landmasses surrounding the Isle of Man — RickD004
- Levant — Three landmasses surrounding Cyprus — RickD004
- Tierra del Fuego — Uses impassable terrain — RickD004
- Branching Paths — Branching fractals form waterways — NotRocketfish
- More than Luck — Five-leafed clover shaped map, inspired by nuke trajectories — Patrick Plays Badly
- Balkhash — Pipe shaped lake in Kazakhstan — RickD004
- Clearwater Lakes — Double impact crater lakes in Canada — RickD004
- Las Vegas Strip — Skinny long map, roads as water and casinos as nations — crunchybbb
Map Fixes & Improvements
- Allow mappers to specify custom tribe spawn coordinates in
info.json— FloPinguin - Added a tribe name themes system with custom tribes support — FloPinguin
- Added tribe themes to all real-world maps, plus custom tribes with spawn coordinates on Los Angeles — crunchybbb
- Multiple terrain changes and fixes across maps, plus further map changes for v33 — RickD004
- Updated map outlines (no resizing, except Oceania) and updated the Dyslexdria map — Patrick Plays Badly
- Small corrections across Dyslexdria, Los Angeles, World Inverted and More than Luck; recategorized More than Luck and Branching Paths as arcade — Patrick Plays Badly
- Minor updates to Branching Paths — NotRocketfish
- Added flags to flagless nations on the Spain and Italy maps — RickD004
- Nation relocation QoL changes for the Alps and East Asia maps — RickD004
- Standardized the SVGs of flags in the flags folder, plus other flag fixes — RickD004
- Added impassable terrain to the Korea map — crunchybbb
- Took v32 maps out of the "New" category to make room for v33 maps; tagged Branching Paths as new — RickD004, NotRocketfish
- Arcade maps now appear in all playlists — FloPinguin
- Fixed a crash on the Indian Subcontinent map — blon
- Filled a landlocked lake on the NW island of Four Islands to fix port placement — blon
- Prevented AI from placing ports on small lakes — FloPinguin
- Fixed map thumbnails resolving by map id instead of display name — Evan
- Added an Expand Maps button — bijx
- Trimmed archived map names — Ryan
- Updated the color mapping location in the map generator README — Aaron Tidwell
Cosmetics & Store
- Added a warship cosmetic effect (gradient/transition recolor) — Evan
- Added nuke-trail cosmetic effects with a tabbed effects picker, plus a spiral nuke trail — Evan
- Added nuke-explosion cosmetic effects with per-bomb-type shockwave customization, plus a sparkles explosion type — Evan
- Added a structures cosmetic effect (hover-shown gradient/transition recolor) — Evan
- Added the effects cosmetic category with a transport-ship trail, rendered as a gradient with an animated store swatch — Evan
- Added a search bar to the effects picker modal — Evan
- Added a crown cosmetic type, rendered above player names — Evan
- Merged the skin and effects pickers into a single lobby Cosmetics modal, and collapsed skins under one banner — Evan, Ryan
- Show plutonium and caps balances in the store header — Evan
- Added custom plutonium amount purchases with a cleaner amount UI — Evan, Ryan
- Confirm plutonium and caps purchases before charging — Evan
- Show USD-equivalent value in the cosmetic info tooltip — Evan
- Added claimable subscription rewards UI — Evan
- Restored subscriptions in the store and account modal, and added a checkmarked perk list on subscription tiles — Evan
- Specific rate-limit message on tier change, using shared dialogs for subscription flows — Evan
- Reworked the store into a popup and removed the "subscribe" / "purchase" text — Ryan
- Grouped skins, flags and crowns under a Cosmetics tab, and added a Merch tab to the store — Evan
- Show the plutonium signup bonus on subscription tiles — Evan
- Fixed stutter on the store's packs tab (animated drop-shadows, per-tile backdrop blur) — Evan
- Fixed the store bonus ribbon layout across languages — Aotumuri
- Grouped owned cosmetic variants for performance — Jish
- Fixed cosmetics blocking buttons on mobile — Luke-Dawes
Custom Tribe Names
- Added a Tribes tab to the store to buy and manage custom tribe names — Evan
- Custom tribe names now appear on bot tribes in public games — Evan
- Added tribe name boost purchases to the store — Evan
- Added a public tribe-name leaderboard tab — Evan
- Show active boost counts on the tribe leaderboard — Evan
- Show when the next tribe boost expires in the store — Evan
- Added a tribe stats page to the store's Tribes tab — Evan
Accounts, Profiles & Stats
- Added account-level custom usernames (
base.suffixplus premium bare names) — Evan - Show account usernames and a verified badge on player-facing lists — Evan
- Added a verified-name toggle so you can play under your account name — Evan
- Allow single spaces in account usernames — Evan
- Prettier username rendering — Ryan
- Login with Google, client UI — Jish
- Show "Linked to Google" once a Google account is linked — Jish
- Removed the Steam account-linking signpost — Jish
- Added a shareable player profile modal (
#modal=profile&publicID=x), profile links and game history on profiles — Ryan - Added a Clans tab to the profile modal — Ryan
- Added a Games tab to the account modal — Ryan
- Reworked stats into a dedicated embedded stats modal, with a stats button on clan game history and backward compatibility for older games — Ryan
- Renamed "ranking" to "stats" — Ryan
- Fixed game history action buttons overlapping in translated layouts — Aotumuri
- Let admins see clan tags in FFA — Ryan
- Fixed a bug when not being in a clan on mobile — Ryan
- Discord integration — Ryan
- Added marketing email consent UI (post-login prompt + account settings) — iamlewis
- Added CSV separation between names — Ryan
Anonymous Names
- Added the anonymize-names feature — Zixer1
- Memorable, collision-proof animal anonymous names — Zixer1
- Surfaced anonymous names as a lobby setting — Zixer1
- Name reveal now works by publicID during game config — Zixer1
- Fixed an anonymize-names desync by seeding the cluster-recalc offset from
id()instead ofname()— Evan - Fixed the anonymous-names setting not hiding names on the map — Evan
Featured Stream
- Added the featured stream feature — Zixer1
- Off-web exclusion, ad-free close, and keeping the stream through the lobby wait — Zixer1
- Mobile flick-to-dismiss — Zixer1
- Keep the Twitch embed at its 400x300 minimum — Zixer1
- Added a Streaming Now panel to the play page with live streamer cards, plus an identity bubble showing your flag, name and skin — Zixer1
- Stopped probing Twitch on every page load to avoid rate limits — Zixer1
Lobby & Social
- Subscriber-hosted public lobby listing, gated on the
canCreatePublicLobbiesentitlement — Evan - Auto-start listed lobbies after 5 minutes, surviving host modal close during auto-start — Evan
- Disabled host pause in publicly listed games — Evan
- Show notable settings on open-lobby rows in the join modal — Evan
- Show a loading spinner while the Join Lobby list loads — Evan
- Reuse private lobbies — MushroomLamp
- Added an allowlist for private lobbies (OFM) — Zixer1
- Replaced the leave-lobby popup with a custom popup — Ryan
- Allow mobile players to take part in the aftergame — FloPinguin
- Fixed the lobby status bar scrolling out of view when many players join — FloPinguin
- Accept
#as.when adding friends — Ryan - Configurable leaderboard and team stats columns — Ryan
Performance
- Reduced core live-memory footprint by 45% on large maps — Evan
- Cut core-sim GC churn by 75% cumulative across three passes, and added GC-churn profiling to the perf harness — Evan
- Main-thread memory harness: dropped three map-sized render buffers (−23%) — Evan
- Tick-dispatch timing harness and main-thread tick optimizations (late-game p95 −65%) — Evan
- Return the live
TileSetfromPlayer.tiles()instead of cloning — Evan - Reuse cached TradeShip paths for motion plans — Raka Hourianto
- Cache
maxTroopsduring the leaderboard update — Demonessica - Standardized cardinal-neighbor iteration on
neighbors()N,S,W,E order — Evan
Nations & Bots
- Fixed nations always attacking nuked territory instead of waiting for the correct strategy — FloPinguin
- Prevented AI from placing ports on small lakes — FloPinguin
- Added the tribe name themes system with custom tribes support — FloPinguin
- Fixed a TribeSpawner crash on invalid nation coordinates — FloPinguin
Graphics, UI & Quality of Life
- Added graphics presets, simplifying the settings behind an Advanced section — Evan
- Added terrain color settings, with live preview, and restored the default terrain colors — Vivacious Box, Evan
- Added a nuke fallout color graphics option and a structure dots toggle — Evan
- Set the structure border to territory color for the local player — Vivacious Box
- Added a black outline to the alliance icon for terrain contrast — Evan
- Update the coastline color dynamically when the ocean color changes — Berk
- Fixed the ocean color change reverting nuke-created water to land — Evan
- Replaced the small-player highlight toggle with a strength slider, moved into graphics overrides, and raised the default to 35% — Zixer1, Evan
- Standardized gradient
colorSizeto game tiles — Evan - Fall back to a full border recompute on massive tile changes — blon
- Render the spawn overlay with instancing to support large lobbies — Evan
- Gate users without GPU-accelerated WebGL2 instead of running at ~1fps — Evan
- Capped the renderer device-pixel-ratio at 2 — Evan
- Improved spawn phase progress bar visibility and sped up the spawn-phase ring pulse — ItsTimeTooSleep, Evan
- Made train tracks visible from farther out — Evan
- Made the important events panel scrollable — Evan
- Surfaced alliance renewal and rejection events in the important-events panel — Evan
- Added a trade ship captured event with a toggle setting — Evan
- Added a timer to the betrayal debuff in the player info overlay — JB940
- Fixed player emojis hiding the player status — JB940
- Changed the missile intercepted notification to "SAM intercepted" — blon
- Donation received events are now blue instead of green — Evan
- Host lobby start button turns yellow during countdown — Evan
- Changed factory icons from circles to hexagons — Antonio Lentini
- Right-click now cancels warship/boat selection instead of opening the menu — eastwoodgrant
- Respect the "Disable emojis" setting in all emoji display paths — eastwoodgrant
- Fixed trackpad pinch zoom in Safari — Landon
- Reworked
InputHandler.ts— TKTK123456 - Added billions to the money utils — bijx
- Added an achievement medal overview — bijx
- Fixed classes for the control panel unit display and the control panel / player info gold display — JB940
- Removed the background wrap-around seam on the home page when nav is hidden — Evan
- Show a loading spinner on the account button until auth resolves — Evan
- Prevented the Google CCPA button from shifting layout — blon
- Updated the tutorial video URL — Evan
- Translation updates (mls v5.8–v5.10) and removed the Discord URL placeholder from translations — Aotumuri
Server, Admin & Tooling
- Added an admin bot HTTP API for managing private games — Evan
- Added a live game stats endpoint to the admin bot API — Evan
- Added a private match telemetry stream — Jish
kick_playercan target a publicId, including disconnected accounts — Zixer1- Include publicID in admin-bot live stats players — Zixer1
- Per-player
killedBy,deathPositionandwinnerfor live standings — Zixer1 - OFM tournament: log final standings and per-kill eliminations — Zixer1
- Integrated batch
username_checkmoderation into game servers — Evan - Archive singleplayer games via the API instead of the game server — Evan
- API schema cleanup — Ryan
- Fixed
getApiBase()returninghttps://undefinedwhenAPI_DOMAINwas unset — Jish - Fixed asset uploads for filenames with apostrophes — Evan
- Removed unused dependencies, dead components and a stale package override — VariableVince
- Added an "assign to me" checkbox to issue templates — Evan
- Exempted Dependabot PRs from the PR gate, fixed the stale bot re-commenting on case-mismatched labels, and removed the PR description validation check — Evan
- Removed the Wicked Sick service-provider paragraph from the privacy policy — iamlewis
Security & Anti-Cheat
- Reject spawn intents after the spawn phase (anti-teleport) — iamlewis
- Prevent the client from bypassing random spawn selection — FloPinguin
- Reject malformed tile refs and unit ids in intents. One bad intent could freeze a whole lobby — Evan
- Keep private-lobby allowlist publicIds out of the game record and start message — Evan
- Require a strict majority in 1v1 winner-vote consensus — Jish
- Don't re-challenge Turnstile on lobby reconnect — Evan
- Removed FFA collusion warnings on replay and ranked — Antonio Lentini
- Dependency security bumps — dependabot
Translators
- Arabic 🇸🇦: N0ur, Moha & SyntaxPM
- Bengali 🇧🇩: sheikh
- Brazilian Portuguese 🇧🇷: theskeleton4393 & juliosilvaqwerty5
- Bulgarian 🇧🇬: Nikola123 & NewHappyRabbit
- Chinese Simplified 🇨🇳: Moki
- Chinese Traditional 🇨🇳: SkiRhino
- Czech 🇨🇿: Xaelor, erinthegirl & Matouš Adamů
- Danish 🇩🇰: NiclasWK
- Dutch 🇳🇱: cldprv, tryout33, Zjefken & Niels
- Esperanto: r3ms & Katokoda
- Estonian 🇪🇪: ramon.o
- Finnish 🇫🇮: Tanepro193
- French 🇫🇷: cldprv, gx21, r3ms & Eiwalis
- Galician: toldinsound
- German 🇩🇪: Pilkey, jacks0n, floriankilian, Fibig & TNB
- German 🇨🇭: originaloha
- Greek 🇬🇷: pantelispantelidis
- Hungarian 🇭🇺: ap.ms
- Hebrew 🇮🇱: Goblinon
- Hindi 🇮🇳: sheikh
- Italian 🇮🇹: frappa10 & Lollosean
- Indonesian 🇮🇩: tronsar
- Japanese 🇯🇵: Aotumuri, daimyo_panda2, gafunuko, kaywb & akisan
- Korean 🇰🇷: Jinyoon
- Macedonian 🇲🇰: Perdiccas
- Polish 🇵🇱: zibi, RinkyDinky, Rulfam & krissutonieja
- Persian 🇮🇷: nobodyiran
- Russian 🇷🇺: Rulfam & Redincon
- Serbo-Croatian 🇷🇸🇭🇷🇧🇦🇲🇪: Vekser
- Slovak 🇸🇰: extraextra
- Slovenian 🇸🇮: MotivatedMonkey
- Spanish 🇪🇸: 6uzm4n
- Swedish 🇸🇪: Moha, theangel2 & Keevee
- Toki Pona: Makonede
- Turkish 🇹🇷: Toyatak & grassified
- Ukrainian 🇺🇦: Rulfam
Contributors
v33 took 33 people. Code, maps, art, translations, the lot. Thank you:
Aaron Tidwell · AmanorsElliot · Antonio Lentini · Aotumuri · Berk · bijx · blon · crunchybbb · Demonessica · eastwoodgrant · Evan · FloPinguin · iamlewis · ItsTimeTooSleep · JB940 · Jish · Landon · Liam Langford · Luke-Dawes · MushroomLamp · Navaneeth Prabha · NotRocketfish · Patrick Plays Badly · Raka Hourianto · RickD004 · Ryan · SpeakIsntThere · TKTK123456 · unne27 · VariableVince · Vivacious Box · Zixer1