Road to 1.0: Four New Maps for the Beta
Amphi2, Depot, Shepas and Courtyard join the pools, Firefox keeps its frame rate when you get hit, an Ultralow preset, faster strafing and a new soundtrack song: "Noodlesoup Telefragged Me". Inside the Washoi beta.
Into the Beta
Washoi is in beta. It arrives with new places to fight, and with a long look at the moment a fight gets busy: the frame you get hit, the first time an effect appears, and the pile of wall marks and gibs a good fight leaves behind.
There are four new maps in the pools: Amphi2, Depot, Shepas and Courtyard. Bots know their way around all of them. Firefox stops stalling when you take damage. Fights draw in a handful of calls instead of dozens, and guns are reused rather than rebuilt. Slow machines get a new Ultralow video preset. Strafing gets faster. And the soundtrack has a new song.
Four New Maps
All four come from the Warfork map sources, compiled with 2048 × 2048 lightmaps and full lighting. Each has its own levelshot, taken in Washoi, shown in the lobby and on the loading screen.
washoi_amphi2: Octagon Obsession

Warfork's wda5 is now washoi_amphi2, and it joins the Amphi pool. Its nine wall pipes come from a 2013 model that the current sources lack.
Its signs are Washoi's own: an ammo board, a red WASHOI neon and a slim vertical neon that shows the whole of its art. While at it, Amphi1's red "WF" neon now spells WASHOI too.
washoi_snd6: Depot

Warfork's wbomb6 is now washoi_snd6, Depot, and it joins the S&D pool. A street lamp's glow, and the end of a plate strip that showed a developer marker texture, now draw their intended materials.
Depot's tower showed its dirt decal as solid olive panels. The decal's material used a template the game did not expand, so it had no blending at all. Material templates now work as in Warsow: any material can be one, and a template line expands wherever it stands in a material.
washoi_snd4: Shepas

Warfork's wfbomb4 is now washoi_snd4, Shepas, and it also joins the S&D pool. Warfork's mappers had already prepared it for the current compiler, so it is compiled as authored, with Warfork's own settings and the current sky and model paths. Warfork's September build still had a test sky. Its Warfork logo board is now a Washoi board.
washoi_dm12: Courtyard

Warfork's wdm12 is now washoi_dm12, Courtyard, and it joins the Duel and FFA pools.
Its two teleporters showed their destination through a live camera view, which the game does not draw. They now show the starfield of DM5's teleporters behind a slow energy swirl.
No Invisible Walls
Bringing older maps to the current compiler made every decorative model solid. Amphi2, Depot and Courtyard now collide only where their mappers meant them to.
It showed most at two jump pads. The pipes above Amphi2's tower pad stopped every jump, and an invisible slab above Courtyard's pad by the Mega Health bounced players back down. Both pads now throw you where they should, on Courtyard all the way up to the Electrobolt.
Bots Know Every Map
Bots learned the wall jumps, climbs and drops of the maps that had no routes yet, from training demos:
- DM7: 38 routes
- DM12, Courtyard: 32
- Amphi1: 6
- Amphi2: 27
- Shepas: 38
- Depot: 38
Every map in the Duel, FFA, Amphi and S&D pools now has them.
Skies Face the Right Way
Every map's sky was mirrored east to west. The faces Quake puts at +X and −X were swapped, and each side image was reversed. Depot's moon hung over the wrong end of the tracks, opposite the light the map is lit by.
Skies now have Quake's layout on every side, unmirrored. The same conversion builds the cubes for cubemap material stages, water and screen-space reflections, so those reflect the same sky.
Firefox, Under Fire
Firefox players saw the frame rate collapse during fights, worst when they were hit. The causes came from profiling Firefox 159 on a recorded duel.
The figures in the next sections come from that profiling, not from every map, mode or machine.
A Damage Flash That Costs Nothing
The damage flash used to redraw a full-screen 2D canvas on every frame while it faded: gradients, plus up to 60 triangles per hit.
It is now a red vignette and a glow on the screen edge facing the damage, painted once and faded by the browser's compositor. A hit costs almost no frame time, and the flash no longer draws triangles.
In a Firefox window, frames over 33 ms in the 400 ms after a hit fell from 18 to 6. With no flash at all, the count was 5.
Shaders That Stay Compiled
Firefox lacks KHR_parallel_shader_compile, so each shader program it links stops the frame for 150–300 ms.
Switching weapons threw away the view model's materials, and their shaders with them. Switching back compiled them again, mid-match. Compiled shaders now stay cached for the session, so anything rebuilt with the same shaders finds them ready.
Built on the Loading Screen
Some shaders compiled during play that the loading screen should have built. The weapon and player warm-up compiled variants that play never draws: with no active camera between frames, they lacked the perspective-camera define. The player model was never warmed at all, and a weapon mesh drawn with the default material was skipped.
Switching to the blade also built two variants. Its light was turned off for every gun, and the new blade was drawn once before the light came back.
The warm-up now compiles with the camera play uses, warms a throwaway player model and includes default-material meshes. The blade's light is always on and reaches only the blade.
Effects had the same problem. The blade's slash trail, shotgun pellets, floating damage numbers and the teleport afterimage each built their shader the first time a fight drew them, at 17–38 ms apiece. They are now compiled behind the loading screen, through the same code that draws them.
What It Adds Up To
On the duel demo first profiled, frames over 80 ms fell from ten to none. On that demo, on an FFA on the same map, and on a duel and an S&D round on two other maps, no shader compiles after the loading screen.
Fewer Draws in a Fight
On most machines the game is limited by the browser's main thread rather than the graphics card. Fights added the most work, because every effect drew separately.
Each wall mark was a mesh and a draw of its own, and each shotgun pellet had its own material too. Fifty wall marks were fifty draws, a shotgun blast twenty, and a death twenty-eight for eight seconds. Wall marks, pellets and gibs are now batched: each kind is one mesh drawn once with all its copies, so a fight adds a handful of draws. These batches are also compiled behind the loading screen.
The four pooled teleport afterimages played their idle animation while unused, which was over half of all animation work. Hidden, they now stand still.
Uncapped on a recorded duel, the frame rate rose by 7 to 9%, and the slowest 5% of frames got about 10% faster.
Steadier Frames
A second pass went over the whole frame, measured uncapped on a recorded four-player FFA on washoi_dm2. On that demo, the average rose from 196–202 to 232–241 fps. Frames over the 6.06 ms budget of a 165 Hz display fell from 27–29% to 10–12%, and the slowest frame went from 41–47 ms to 26–30 ms.
Hidden meshes now cost nothing. They are two thirds of the scene, model templates and pooled effects, and each camera skipped them only after Babylon had checked them. They are now left out before that check.
Guns are reused. Other players' guns, and weapons dropped on the floor, were cloned on every switch, death, respawn and drop. Each clone took 2–12 ms, a few times a second in a fight. They are now parked and reused. One gun of each kind is built behind the loading screen, and every weapon's world model is preloaded, not only the ones placed on the map.
A copy of a model also takes its source's bounds, instead of posing every vertex on the CPU to measure itself. Switching your own weapon costs half as much.
Smaller savings add up too:
- Positioned sounds no longer each run their own update every frame.
- The camera watching a dead player traces the collision brushes instead of every map triangle.
- The moon light, unused on maps, is off rather than dark.
- A new gib, pellet or wall mark no longer draws one frame of stale data.
perf capturenow names the GPU the browser draws with, and the render size.
Ultralow, for the Most Frames
There is a fourth video preset, Ultralow, below Smooth. It is for the most frames on slow machines: half render resolution, map surfaces in flat colour with their lighting kept, and no antialiasing, dynamic lights, gibs, wall marks, teleport afterimages, fog or outlines.
On a recorded duel it ran from 21% to more than twice as fast as Balanced.
It is the only preset that turns outlines off. The other presets turn its other switches back on but leave outlines as they are.
Each switch it uses is also a setting of its own, with a cvar:
- Render resolution:
r_renderscale - Antialiasing:
r_msaa, from the next start - Dynamic lights:
r_dynamiclight, from the next map - Gibs:
r_gibs - Wall marks:
r_marks - Teleport afterimage:
r_teleport_ghost - Fog:
r_fog
With gibs off, a gib death still pulls the view back from where the body was.
A More Honest Loading Screen
After the map has loaded, the loading screen used to say only "Setting up" while the game prepared its weapons and effects. That step now reads "Compiling shaders", with a percentage, and the progress bar moves through its last stretch with it.
The loading screen is also quiet now. The server streams the match, shots and footsteps included, from the moment it greets the client. The loading screen only muted them once the map load had started, so up to a second of a running match, often bots firing, played first. Sounds are now muted from the greeting until the loading screen is gone.
Watching a Player Die
When you spectated someone or watched a demo, the view stayed behind the player's eyes when they died. It sat at the body, inside the weapon they had dropped at their feet, and filled the screen with a huge, garbled gun. The dead often have no position in the snapshots, so the view simply held there.
It now pulls back to the same chase of the body that your own death shows: behind and above it, kept out of walls. It returns to their eyes when they respawn.
Electrobolt Ammo Counter
The Electrobolt's ammo digits floated above the sight's holo pane. The new sight moved the pane and the counter's mount down, but the weapon's animation still held the mount at its old height. The animation now matches, in a rebuilt washoi_weapons.pk3.
Noodlesoup Telefragged Me
There is a new song in the soundtrack: "Noodlesoup Telefragged Me". It plays in the in-game playlist.
The lobby now picks one of two songs at random each session: the new one, or "Washiki Washoi".
Faster Strafing
Base ground speed is now 320 units per second, up from 280. That covers strafing, back-pedalling, diagonals and running forward without sprint.
Sprinting straight forward stays at 400, and weapon speed bonuses apply on top as before: the Blade strafes at 330. Swimming, at half the base speed, is now 160.
Crouching at the new speed still walks; a slide needs 375. Recorded demos play at the speeds they were recorded with.