Download

1.19.4Latest

The settings update: all 231 settings you picked (new MORE pages, a SEARCH tab, page numbers), plus everything else from the testing builds since 1.19.3: the new map pool with a legacy maps toggle, ball mode, winner stays and power modes, the dash slide, no air drift, rocket knockback doubled, walk teleporters, one race leaderboard over every race map, and the fullscreen size warning. The network protocol is now 66 (1.19.3 used 53): 1.19.4 doesn't play with 1.19.3 games or servers, so update both. Dedicated servers update themselves. Maps saved by 1.19.4 are format 13: 1.19.3 can't open them; older maps convert by themselves. Your settings, maps, demos and files are kept. Human-made assets: 16.1%.

Settings (the settings update, batch 1 of the 231 you picked)

  • New MORE pages on CONTROLS and VIDEO + AUDIO (button at the bottom middle) for settings that didn't fit.
  • Mouse: vertical sensitivity, invert Y, zoom sensitivity (x1.00 = the same feel as unzoomed).
  • Scoreboard: hold or toggle.
  • Window: window size picker, the window's size and position kept between launches, and a 10 second "keep these display settings?" that puts the old mode back if you don't click KEEP.
  • Background: an FPS cap while alt-tabbed or minimized (60 by default) and an optional mute.
  • Shadow quality low / medium / high, applied at once. The GPU's name is shown, and laptops with two GPUs now run the game on the dedicated one.
  • HUD size: every HUD element bigger or smaller at once.
  • Crosshair: dot size, opacity, outline thickness and opacity, a style per weapon (e.g. a dot on the sniper), and COPY / PASTE CODE to share a crosshair in one line.
  • Hitsounds: their own volume, any sound pack's hitsound, a headshot ding, and the kill sound on its own switch.
  • Server list: sort by ping / players / name, hide full / empty, a ping limit, favourites (right-click a server; listed first) and a RECENT button for the servers you joined last.
  • Race and surf: tap R to go back to your last checkpoint, or hold it a quarter of a second to restart from the start. FULL RESTART can also go on a key of its own (CONTROLS > MORE KEYS). Both can be rebound.

Settings (batch 2, first half)

  • More MORE pages: GAMEPLAY gets one, and VIDEO + AUDIO now has three. CONTROLS has a third keys page, MORE KEYS.
  • Picture: gamma, contrast and saturation for the 3D scene (the HUD stays as it is), fog amount or off, and render scale now goes from 25% to 400%.
  • Presets: LOW / MEDIUM / HIGH / COMPETITIVE set shadows, anti-aliasing, render scale, fog and effects in one go.
  • Effects: effects opacity (explosions, sparks, bursts; 0 = off), kill bursts, tracers and the gun's recoil kick on their own switches.
  • Colour blindness: two team colour presets for red-green and blue-yellow colour blindness, and a warning under the team colours when your pair would be hard to tell apart.
  • Enemy model: draw every enemy as one model (not in ranked).
  • Sound: separate volumes for your footsteps, other players' footsteps (up to 2x louder), gunfire and the bomb beep. The planted bomb now beeps, faster as it runs down.
  • Kill feed and chat: how long lines stay, how many show, only kills you're in, chat opacity. While typing, the mouse wheel or Page Up / Down scrolls back through chat.
  • Team chat: a TEAM CHAT key sends to your team only (shown as "(TEAM)").
  • More keys: LAST WEAPON, SPEC NEXT / SPEC PREV while dead or spectating, HIDE HUD (with an option to keep the crosshair). When a new bind takes a key from another action, the page says so, with an UNDO button.
  • HUD: FPS and ping in the top right without a widget, announcer captions, health bars that fill to the mode's max health instead of 100, and a headshot colour for the crosshair's hit flash. Hints that name a key (like "HOLD E" to plant) now show your own bind.
  • Controls: grapple hold or toggle, left-handed (gun on the left, grapple launcher on the right), and NEXT / PREV WEAPON can stop at the ends and skip weapons you pick.
  • Display: G-SYNC / FreeSync mode (vsync on with the frame cap 3 under the refresh), and fullscreen can stay on screen when you alt-tab.
  • Windows: CPU priority HIGH as an option (above normal stays the default).
  • Menus: settings can open on the last tab you used, QUIT / DISCONNECT / STOP HOSTING can ask "SURE?" first, and a RECONNECT button on the main menu joins your last server again.
  • Connection: if the connection drops, the game tries to reconnect by itself (3 times; it can be turned off).
  • Queues: when your queue fills, a chime plays and the taskbar button flashes if the game is in the background.
  • Map editor: redo (Ctrl+Y or Ctrl+Shift+Z), and an autosave every minute while you have unsaved changes, with RESTORE AUTOSAVE if the game closed before you saved.

Settings (batch 2, second half)

  • Settings search: a SEARCH box at the top of settings. Type part of a setting's name (or a key's) and click a match to jump to its page.
  • Three keys per action: every action can now have three keys instead of two.
  • Console binds: bind, unbind, binds, alias, unalias, exec and toggle in the console. A key can run any console command, and autoexec.cfg in the data folder runs at start.
  • Export / import all settings: GAMEPLAY > MORE > ALL SETTINGS copies every setting to the clipboard, or reads them back; RESET ALL (click twice) goes back to the defaults, keeping your name and servers.
  • Demos: sort by date, name, size or map, each demo's size, DELETE, AUTO RECORD (every match or ranked only) and KEEP the newest N.
  • Sensitivity from another game: CONTROLS > MORE turns a CS2, Quake, Apex, TF2, Valorant, Overwatch or Call of Duty sensitivity into Quark's.
  • Fullscreen resolution: VIDEO + AUDIO > MORE 3 picks any mode your monitor offers.
  • Practice (your own server, alone with bots): pause > PRACTICE has save / load position, god mode, passive bots (they don't shoot) and reset.
  • Players: pause > PLAYERS lists everyone on your server, with KICK, ADD BOT, KICK BOTS and RESTART.
  • Race ghost: in race and surf, your best run on each map plays as a see-through ghost.
  • Team panel and match summary: an optional panel with your teammates' health, and a summary of your match (shots, hits, accuracy, damage, best streak) under the end-of-match scoreboard.

Settings (batch 3: video, audio, crosshair, network, accessibility)

  • More picture options: VIDEO + AUDIO > MORE 2 adds TONE CURVE, CLEAN SURFACES, FLAT LIGHTING, SIMPLE SKY, FAR SCENERY, DRAW DISTANCE (150 / 250 / 400 m), DEBAND and 10-BIT OUTPUT, plus tracer colour (classic, team or your own) and projectile TRAILS (off / short / full, with opacity).
  • MSAA 8x, and options your PC can't do now say "N/A" (MSAA levels, 10-bit, latent sync, bypass compositor).
  • New VIDEO + AUDIO > MORE 4: shadow edge, shadow distance, shadows on the map / on players, your own shadow, players always lit, player brightness, custom outline colours and opacity, separate team / enemy outline widths, rope colour, fixed team A / B colours when spectating or watching demos, colour scheme copy / paste and 3 save slots, and accessibility: REDUCE FLASHING, colourblind-safe OK / error colours, tag "it" and race splits in your palette, AHEAD / BEHIND on splits.
  • New VIDEO + AUDIO > MORE 5 (sound): mono / swapped channels, stereo width, behind-you muffle, hearing range, sound occlusion (walls muffle sounds), dynamic range (clean / normal / night), audio latency (low / normal / safe), volume in dB or on a perceptual curve and up to 150%, background volume, force your sound pack on everyone, streak callouts (all / mine / off), time warnings (off / 60 + 30 / countdown, and on screen), each cue sound and announcer line on or off, and VISUALIZE SOUNDS.
  • New VIDEO + AUDIO > MORE 6: a NET GRAPH (apart from F3), packet loss protection 2 / 4 / 8, map downloads on / off with a cache limit and CLEAR, the light bake cache (size, bake threads, CLEAR), FOV as horizontal / vertical / 4:3, bypass compositor (Linux), latent sync safety and late-frame behaviour (Windows), a bigger or coloured menu cursor, and USE as hold or toggle.
  • Crosshair: a spread circle, a cooldown ring, and sizes in exact pixels instead of scaled with the resolution.

Settings (batch 3: HUD, social, controls, menus, host, editor, launcher)

  • Hit feedback (GAMEPLAY > MORE 2): damage number colour, stacking and time; damage direction arcs (colour, size, time); kill mark time and colour; a KILLED <NAME> line; hit flash time; low health warning (threshold, colour, pulse, beep); green +N heal numbers; weapon kick amount; and per weapon: show its model, and move it (x, y, depth).
  • HUD info (GAMEPLAY > MORE 3): speed in m/s, km/h or ups with a scale and ticks; bar captions; a 12 h clock, the round clock counting up and tenths in the last 10 s; pick the verbose info lines; auto-hide health, weapon list and bars; objective marker size, opacity, distance and edge arrow; scope size and reticle colour / width; network warnings (ping, loss, stall); a minimal spectator HUD; a headshot mark in the kill feed; a stalemate warning before the drain.
  • Social (GAMEPLAY > MORE 4): team chat only, a word filter, one chat colour, timestamps, your name highlighted with a ping, system messages all / important / off, a chat box with its own opacity, scoreboard sort and columns, others' name colours on or off, streamer mode (hides addresses, codes and names), alerts when the game is in the background, and what to do on joining (play, spectate, ask). Death camera: on the killer, your body or a teammate, for 0 to 3 s; spectator FOV and third person.
  • Controls (CONTROLS > MORE 2): per-weapon sensitivity, alt-fire toggle and swapped fire buttons; mouse acceleration and raw input; auto-hop off; a console key of your choice and the console in menus; alt-fire toggles allowed in ranked. New binds: volume up / down / mute, record demo, join team, spectate. Mode profiles can now set sensitivity, FOV and zoom FOV.
  • Menus (PLAYER > MORE): menu theme (dark or high contrast), your own accent, text brightness, panel darkness; the menu background as clockwork, a map you pick or a plain colour; the data folder with OPEN; your quip; mods (use your overrides, open the folders); remember your ranked queues; hide ratings. PLAYER shows your model turning in your colours (drag to turn it).
  • HUD: the objective line, the notices and the scoreboard can now be moved, sized, coloured or hidden on the HUD tab like the other elements. Custom widgets get 8 more values (snapshot rate, accuracy, damage, streak, round, vertical speed, height, weapon).
  • Players and votes: pause > PLAYERS is open to everyone: block one player's quips. New votes: restart, 5 more minutes, shuffle teams, kick a player.
  • Hosting: tick rate, snapshot rate and upload cap; auto start; balance bot skill; vs bots up to 15 a side.
  • Editor: fly keys follow your binds, fast-fly multiplier, a custom grid, a rotation step, the fly speed, grid and last light are remembered; test play picks the mode, bots, starts at the camera and can skip warmup.
  • Race: splits against your best, the previous segment or your last run, with a display time; the race stats page picks the map and the date format.
  • Launcher: OPTIONS: start the game automatically, keep the launcher open, launch options, and updates automatic / ask / at next launch.

Settings (batch 4: colours, screenshots, sound extras, latency)

  • New VIDEO + AUDIO > MORE 7 (colours): the world's outline colour, a wallbang tint, a high-contrast map palette, your own sky and glow colours on every map, objectives in your palette, zone pulse and opacity, a colour per FFA opponent, your own colour for your shots / laser / rope, gun colour (map / team / custom), health bar low threshold and colours, name tag colour / opacity / size, explosion colours (their own / your team / custom) and a colourblind palette for F3.
  • New VIDEO + AUDIO > MORE 8: screenshots as PNG or TGA, saved in the game's folder or Pictures/Quark, with or without the HUD, and an OPEN FOLDER button; demo rate (also here, not only on DEMOS); always on top; dash buffer (off / 0.05 / 0.1 / 0.15 s); ultra low-latency safety margin; NVIDIA threaded optimization off and DXGI present (Windows); hitsound tiers on / off, typing sounds on / off, quip captions and announcer ducking.
  • MORE 2: liquids flowing or still, glow strength, SMOOTH strength and the lightmap filter (smooth / nearest).

Settings (batch 4: HUD, menus, social, editor, practice)

  • New HUD > MORE: your own colours for recharging bars, the speed meter (slow to fast), weapons you can't use, the sticky counter at its most, warning and info lines, and headshot / big-hit damage numbers; the text outline's width (none to thick); how many notices show and for how long; a compass and a radar (teammates and objectives only, not in ranked); hide the REC indicator; tourney's TAB shows the bracket or the scoreboard.
  • Gameplay: STAIR SMOOTHING off steps the view up stairs at once (GAMEPLAY > MORE 3). SHOW I'M TYPING off hides your "..." from others, and the tiebreak's rock-paper-scissors cards can be clicked (GAMEPLAY > MORE 4).
  • Menus and bots (PLAYER > MORE): FIXED LOGO COLORS keeps the title cyan / red; your server's bots can all wear the standard model, and take names from bots/names.txt.
  • Editor: CLIP BOX COLOR (CONTROLS > MORE 2). Race: SPLITS: PALETTE also colours your best run and the leaderboard's #1.

Movement fixes

  • Wall teleporters keep your speed. Going in fast used to throw you out at a crawl about half the time (surfy too).
  • Walk teleporters: a teleporter can now let you out at walking speed instead of carrying all your speed (map editor: SPEED: CARRY / WALK on a teleporter; the one you go into decides). Maps are now format 12: older maps convert by themselves, but an older game can't open a map with a walk teleporter.
  • The grapple can't hook clip any more: it hits it and lets go, like nograpple. No more invisible hook points on map lids.

Maps

  • Thin walls are shoot-through: any surface 1/8 m thick or less (coats, panels, thin trim) now lets hitscan through at wallbang damage, like the dark grey wallbang walls.
  • Map picker: lists only the maps made for the mode you picked (ranked: only that ladder's maps), 7 across, each with a picture of the map from above. The mouse wheel scrolls when there are more.
  • Two new maps, made by q: Surfy (surf), now the map surf mode starts on, and Cobblestone.

Servers

  • Testing server alone: install.sh --testing-only sets up just the testing server, on the normal port, and keeps it running all the time on the newest testing build or production release, whichever is newer. Both servers stay the default (--both to go back); --no-testing is still production only.
  • OFFICIAL tag: the official Quark servers (production and testing) show a gold OFFICIAL tag in the server list and are listed first. It goes by the server's address, so another server can't get it by putting "official" in its name.

Modes

  • New mode: POWER. Each team shares one health pool, 2500 for every player on it, and nobody dies. An enemy's hits come off your team's pool instead of your health. When a team's pool runs out it loses; when the 10 minutes are up, the fuller pool wins. Your own rockets and the world (lava, acid, falls) take nothing from the pool; falling out of the map still respawns you. Someone who joins mid-match adds their 2500. The score box shows both pools, and the bar under it shows yours. Played on Bastion, Orbital and Lodestone. The network protocol is now 54, so games and servers update together.
  • Neutral payload's round clock is now 2 minutes for every player on the teams, counted when the round starts: 4 minutes in a 1v1, 16 in a 4v4 (it was 5 minutes whatever the size).

Weapons

  • Rockets speed up. The rocket launcher's rocket now gains 4 m/s every second it flies, on top of its 48 m/s launch speed (52 m/s after a second, 68 m/s at the end of its 5 s life), and keeps speeding up after a rubber bounce. The lob (alt-fire) is unchanged. Bots lead for it, and rocket riding pulls you along at its new speed. The network protocol is now 55, so games and servers update together; older demos still play.
  • Rockets speed up much faster. The rocket still leaves the launcher at 48 m/s but now gains 16 m/s every second: 64 m/s after one second, 80 m/s after two, 128 m/s at the end of its 5 s life (about 440 m). The lob (alt-fire) is unchanged at 33.6 m/s. The network protocol is now 58, so games and servers update together; older demos still play.

Map checks

  • The walk check sees ramps. The map tests' "can players get from every spawn to every objective" check now walks up wedges, corners and cut slopes up to 45 degrees (the steepest you can walk). Before, every slope counted as a solid block, so routes up a ramp (Mine's haul road and lava ramp, QK7's helix ramps) were reported missing or found only the long way round.

Bots

  • Bomb bots use every site. The attackers went for the first bomb site every round, so a site further away (Datacenter's B) never saw them. They now take the sites in turn, round by round. The defenders still guard one site each.

Map format 11: spawns for one mode

  • A map can give a mode its own spawns, e.g. a koth hill in a bomb map: spawn koth-a / spawn koth-b spawns are used only in king of the hill (and koth starts on them when the map has them), never in other modes. Any mode but race and multi point can have a set (ffa-any, bomb-a, ...). The map editor sets it on a spawn (MODE SET; a white cap marks one). Maps are now format 11: older maps convert by themselves, but an older game can't open a map that uses the new spawns.

Settings: page numbers

  • Every settings tab with more than one page shows its page numbers at the bottom, with < and > at the ends: click a number to go straight to that page, or the arrows (or the Left / Right arrow keys) for the previous / next page. The arrows stop at the first and last page. The MORE buttons are gone; BACK now leaves settings from any page (Esc still goes back to the tab's first page).
  • Fixed: settings rows drawn over the bottom buttons. On Windows, VIDEO + AUDIO's MAP COLOR and RESET MAP COLOR sat on top of BACK and MORE. Pages that were too full have moved rows instead: FLAT MAP (FULLBRIGHT, MAP COLOR) is now on VIDEO + AUDIO page 2, EXCLUSIVE AUDIO (Windows) on page 6 under OUTPUT, and SMOOTHING (INTERP) from GAMEPLAY to VIDEO + AUDIO page 7 under NETWORK. SEARCH finds them all.

Settings: SEARCH tab

  • SEARCH is a settings tab of its own (the last one): every setting in the game in one list, three wide, scrolled with the mouse wheel or the scrollbar, each with a small tag saying which tab and page it lives on. Type in the field at the top and the list narrows to the settings whose name, values, hint or a few extra keywords have every word you typed: "screen" finds the display mode, fullscreen size, window size, render scale and your monitors; "fov" the field of view and the zoom FOVs. The settings work right there in the list. Ctrl+F (or /) opens it from any tab; Esc clears what you typed. It replaces the small search box at the top right.

Bots

  • Team order no longer matters: every bot now decides what to do on the same picture of the world each tick, and who moves first rotates every tick, so it doesn't matter which team or player joined first. At round start, both teams' spawns are picked without either team dodging the other's fresh spawns.

Bomb

  • Spawns go by role: the attackers always start at the map's attack spawns and the defenders at the defence spawns, so at halftime the teams swap ends as well as roles. Before, each team kept its own end, so a map built with the attack 1 s closer to a site than the defence gave the same team the short way all match.

Glass

  • Sloped glass draws as its slope: glass on a wedge, corner or cut box used to draw as its whole box (a glass dome looked like four slabs floating over the roof). It now draws, and breaks into shards, as its real shape. The same goes for see-through looks and breakable blocks on a slope.

Race leaderboard: one total over every race map

  • The race board is now a total: your best time trial on every race and surf map (Particle Accelerator, Jungle Ruins, Rooftop Run, Surfy) added up, fastest first. A map you haven't run counts at its default time, so playing every map pays. Each map's own board is still there.
  • Surf maps have time trials too, played with surf's rules; their runs go to the boards like race runs.
  • LEADERBOARD: the RACE TOTAL column, your total and your time on each map under it, and TRIAL MAP to pick which map PLAY TIME TRIAL starts. MY RACE STATS shows what each map adds to your total.
  • Viaduct is no longer a ranked race map.

Maps: the new pool, and legacy maps

  • The old maps are retired. Temple, Bastion, Hamlet, Lodestone, Viaduct and the rest of the pool before 1.19.6 are gone from the map lists; the new maps (and q's Surfy and Cobblestone) replace them. The menu background is now Castle, and hosting starts on Sewer.
  • LEGACY MAPS (settings > GAMEPLAY > MAPS, off by default): turn it on to list the old maps again, marked (legacy). They're never ranked. A server or demo that asks for one by name still loads it.
  • Your maps folder is tidied once: untouched copies of the old official maps that older versions left in your maps folder (they hid the shipped map of that name) move to maps\legacy\. Your own and edited maps and downloaded maps aren't touched.
  • Ranked: qk1-qk8 are ranked on all three ladders. Each ladder starts on the map it's designed for: vanilla 1v1 on Greenhouse, laser vampire on Dojo, instagib on Spire. A ranked server still set to an old ranked map (e.g. --map temple) starts on its ladder's map instead.

Hide and seek

  • The hiders' head start is 5 seconds (was 30).

Race and surf

  • No time limit: a round runs until someone finishes, and the HUD counts your run time up.

Rockets

  • Rocket splash damage works online again: since 1.19.3 only a direct rocket hit did damage on a server; a rocket landing on the floor or a wall next to someone did nothing and showed no hit marker. Splash now hurts as it did before.
  • Map votes: the old (legacy) maps can't be voted unless the server turns them on.
  • Servers: a new server starts as unranked laser vampire 1v1 on Dojo.
  • Solar System (surf): 15 stages, Sun to Pluto, each one built from q's own design. It's on the ranked race total (10 min until you've run it).
  • Weapon switch: holding the scope (right click) while switching from the rifle to the laser no longer stops the laser shooting until you let go.
  • Syringe: heals half as much: 5 HP a use (was 10), and a throw gives a teammate 15 HP (was 30).
  • Clean surfaces now cleans every surface, not just the default ones: each custom surface shows as its own average colour, flat, and every face is one colour (no streaks, stripes or darkening near the floor; liquids too).
  • Your maps folder: the maps update's one-time cleanup no longer moves your own copies of generated maps into legacy/. It only moves old copies of the official maps.
  • Map editor: clicking a cut box, wedge, corner or tetra selects it where its faces are, not anywhere in its bounding box.
  • Step-up on cut boxes: a low cut box with an upright side at an angle is stepped onto like a normal box. A steep sloped face still blocks.
  • Floating faces: surfaces that drew detached from their objects sit on them again: Monorail's deck top floated about 70 cm above the deck, and a staircase flush with a thin wall or rail showed its outline on the wall's far side (Dam). It happened on most maps.
  • Pattern fade (VIDEO + AUDIO > MORE 2, LOOK): far away or at a grazing angle, a patterned surface fades smoothly to its average colour instead of shimmering, the way lava already did. On by default at lava's distance; FADE DISTANCE moves where it starts (0.25x to 4x) and FADE LENGTH how gradually it fades. Fully faded surfaces skip their pattern, so they draw a little faster too.
  • Alt-tabbed: the game stops drawing frames while it's in the background or minimized, and everything else keeps running: your connection, the match and a server you're hosting. DRAW IN BACKGROUND (VIDEO + AUDIO > MORE, WHEN UNFOCUSED) turns drawing back on at the background FPS limit.
  • 1v1 winner stays (ranked too): spectators wait in line in the order they joined. When a match ends, the loser goes to the back of the line and the first in line plays the winner. A draw keeps both players. Joining a full 1v1 puts you in line; TEAM SPEC takes you out of it. If a player leaves, the first in line takes the seat.
  • New mode: WINNER STAYS. 1v1 rounds while everyone else waits in line. Each round's winner stays; the loser goes to the back of the line and the next in line plays the winner. Every round you win counts, and the first to 10 wins the match. It uses the 1v1 rulesets and is offered on every 1v1 map. Unranked.
  • Tourney on any 1v1 map: every map that offers 1v1 now offers tourney too (it was only some of them).
  • No sound burst after alt-tabbing: coming back to the game no longer plays a pile of sounds at once. Sounds that waited too long are dropped, and at most 32 new sounds start at once.
  • Accuracy: the scoreboard's ACC and the match summary are the average of each weapon's own accuracy, so a second of the laser (100 shots) no longer outweighs every other weapon. It starts from 0 each match.
  • Health bars in ranked: enemy health bars now show in ranked too, when you have them on (they are on by default).
  • Planting and defusing keep knockback: you still can't move or shoot while planting or defusing, but rockets and blasts push you now (it froze you in place). Knocked out of range, the plant or defuse stops.
  • New VOTE page: pause > VOTE > MAP / MODE / MODIFIERS. Turn on what the vote should change (GAMEMODE, MODIFIERS, MAP), then pick each in order: the gamemode (OBJECTIVE BASED or PLAYER BASED first, then the mode and its ruleset), the modifiers (damage, speed, gravity, jump, knockback, health, vampire, regen, instagib, self damage, dash, grapple), then the map. One vote changes all of it. Voted modifiers stay through later map and mode votes until a vote sets them back to STANDARD. Not on ranked or time trial servers, or servers running a custom mode.
  • New mode: BALL. Two teams, a ball in the middle and a goal at each end. Shoot it, blast it or run into it to move it; it slides like a player on ice, at half gravity. Get it into the enemy goal to score; it goes back to the middle. Most goals after 10 minutes wins. Plays on QK8 Canyon (the goals are the end rooms' doors) and Suspension Bridge (across the deck at each tower), and it's in the vote's OBJECTIVE list.
  • Suspension Bridge: the smoke banks and haze are gone; spilled shipping containers stand where the smoke banks were, so the spawns still can't see each other.
  • No air drift: holding a direction in the air below run speed no longer speeds you up (it pushed 8 m/s² up to run speed); air strafing is unchanged.
  • Dash slide: dash down into the floor without holding jump and you slide like on ice until you're back to run speed or press jump. Holding jump still gives the super dash.
  • Ball: it bounces off everything like rubber. After a goal (or falling out) it waits 3 s before coming back. Rockets, bolts, stickies and thrown knives hit it. A ball moving over 20 m/s into you hurts and knocks you back. The knife pops it up instead of pushing it away, and the laser pushes it 3x harder, while its pull beam now pulls it.
  • Ball: your grapple catches the ball. It reels the ball in toward you while it pulls you toward the ball.
  • Rocket: double knockback everywhere: rocket jumps, enemies, the lob and the ball.
  • Ball: a knife swing pushes the ball once, not every tick of the swing.
  • Ball: a hit does 1 damage per m/s of the ball's speed relative to you (a 30 m/s hit is 30), still only above 20 m/s.
  • Ball: it rolls up any ramp, even past 45°, keeping its speed, and launches off the top.
  • Website: the game's website moves to its own address, https://quark.casa (the old floration.github.io/quark address forwards there).
  • Fullscreen size now has a warning: don't touch it unless you know what you're doing.

Everything that changed in 1.19.4, and why →

1.19.3

Everything from the testing builds since 1.19.1 (1.19.2 was never released on its own, so its changes ship here): new map pieces (wedges, corners, tetras and cut boxes at any angle), 472 map materials (ice, rubber, glass you can shatter, brick walls you can blow open, and 433 new looks: brick, concrete, tile, stone, nature, buildings, industrial, sci-fi and wasteland), plain and breakable versions of brick, cobblestone and glass, a new surf mode with its map Cascade, damage from your own screen (hits count where you saw them), PRIORITIZE GAME on Windows, and the map editor's material picker, FIX MAP and FIX GAPS. The network protocol is now 53 (1.19.1 used 47): 1.19.3 doesn't play with 1.19.1 games or servers, so update both. Dedicated servers update themselves. Maps saved by 1.19.3 are format 10: 1.19.1 can't open them; older maps convert by themselves. Your settings, maps, demos and files are kept. Human-made assets: 16.1%.

Performance

  • New Settings > VIDEO > PRIORITIZE GAME (Windows, on by default): while the game has focus, Windows runs its GPU work before other programs' (a YouTube tab, Discord or other hardware-accelerated apps) and gives it a higher CPU priority. Before, a video playing in the background could take a big share of every frame. Alt-tab and the other programs get their normal share back.
  • Blown-open brick and cobblestone walls no longer cut your FPS: after holes were blown in a wall (or the whole wall fell), every brick and cobblestone pixel on screen kept checking every hole on the map, so a room of brick could drop to a tenth of the frame rate. Each pixel now checks only the holes near it.

Maps

  • Wedges and corners: two new map pieces besides boxes. A wedge is a ramp (one top edge kept), a corner a pyramid with one top corner kept; the slope is whatever the box gives, so any angle. They can stand on the floor, hang upside down from a ceiling or lie on their side (an angled wall). Slopes up to 45 degrees are walkable (no hopping), steeper ones are walls you slide off or along; a dash into one rides up it (or down it). Shots, the grapple and light all follow the slope, and bots walk up gentle ones. In the map editor, N cycles a box through them and rotate / mirror turn them any way; Quarkology's map editor has Wedge and Corner buttons. Wedges and corners can be grouped with boxes, and the seams between pieces of one group go away, slopes included. Maps with them are format 5 (older maps load unchanged); older game versions can't join servers running this one (protocol 48).
  • Fewer stray outlines: where a box's edge was only partly against a flush neighbour (a taller step next to a shorter one, a wall meeting a longer wall), the whole edge kept its line; now only the uncovered part does. In hand-made maps, outlines now follow groups: parts of the same group join with no line, even across materials, and separate groups or ungrouped boxes keep theirs. The official maps keep joining same-material boxes.
  • FIX MAP and FIX GAPS in the map editor: FIX MAP joins same-material boxes that together make one box and removes boxes you can never see (wholly inside solid walls; anything behind glass, water or breakable brick stays). FIX GAPS closes gaps under 1/8 m by stretching the box that's off the grid to the one on it. Each is one undo step.
  • No more holes into the sky behind blown-open brick: a wall face covered by a thin brick or cobblestone layer was left out of the world, so blowing the brick open showed through to nothing. Those faces are kept now.
  • Cobblestone looks solid: dark streaks ran out of every corner where three stones met, which looked like gaps in the wall, and each stone was shaded in squares. The joints are now an even width and each stone has one shade.
  • Material picker in the map editor: clicking a material (for new boxes, or for what's selected) opens a grid of swatches, each drawn in the game's own look and the map's colours. It has three lists: the materials this map already uses, the last 10 you picked (kept between sessions) and all of them. M still cycles. FIX MAP / FIX GAPS now show only when nothing is selected, so the selection's buttons fit on screen.
  • 100 new brick, concrete, tile and stone materials (all of the picks): 30 bricks (colours plus Flemish, English, stack, soldier, herringbone and basket bonds), 20 concretes, 25 tiles and 25 stone walls, each drawn by the game with no textures. The map editor's material picker now fits all of them in one grid, with the name of the one under the mouse shown by CLOSE.
  • 333 more materials: your picks from the four earlier rounds of surface looks: 77 general ones (dirt, gravel, slate, basalt, hedge, coral, sci-fi panels and more), 100 nature, 86 industrial and 70 wasteland. All are solid and plain, each drawn by the game with no textures. A map's shader only carries the looks that map uses, so having 472 materials costs nothing in a match.
  • Bigger material picker: each swatch is now 100 × 100 with its name under it. Tabs split the materials by kind (IN THIS MAP, RECENT, BASIC, BRICK, CONCRETE, TILE, STONE, BUILDINGS, NATURE, INDUSTRIAL, SCI-FI / DECOR, WASTELAND, ALL), SEARCH finds them by name, and the mouse wheel scrolls.
  • Breakable and plain brick, cobblestone and glass are now separate materials: plain brick, cobblestone and glass never break, so a plain wall costs nothing extra (no hole checks, nothing kept behind it, and FIX MAP can merge it and hide what's behind it). BREAKABLE BRICK, BREAKABLE COBBLESTONE (thin ones blow open) and BREAKABLE GLASS work as before. Maps made before this convert by themselves: their glass and their thin brick and cobblestone become the breakable kind, so they play the same. Older game versions can't join servers running this one (protocol 49).

Weapons

  • Rifle: +1 damage a shot: 6 body (was 5), 8.5 head (was 7.5). A kill takes 17 body shots in 2.4 s (was 20 in 2.9 s), or 12 headshots in 1.7 s.
  • Bubble gun fires 20% faster: 6 bubbles a second (was 5), so 10 pops kill in 1.5 s (was 1.8 s).
  • Bubble gun alt-fire: up to 25 bubbles a stream from 30 m away (was 15). Still 5 when the nearest enemy is within 5 m, and the same 1.8 s reload.
  • 33% more knockback from the shotgun (a full blast shoves 8 m/s, was 6) and the crossbow (21.3 m/s a bolt, was 16).
  • Sniper: 33% more knockback (1.33 m/s a hit, was 1).

Movement

  • Dashing up goes higher: looking straight up, 50% of a dash goes upward (was 40%).
  • Air dashes add more speed the slower you are: a dash in the air now adds 35% of the gap between your speed and the 32 m/s cap. From 10 m/s you leave at 17.7 (was 11), from 25 at 27.5 (was 26), from a standstill at 11.2. Dashes on the floor and super dashes (hypers) are unchanged.

Downloads

  • Smaller game downloads in the launcher (coming): every release now also publishes a compressed copy of the game package, about half the size (Windows: about 40 MB instead of 72). The launcher starts using it once its own update ships; until then nothing changes, and the old package stays for older launchers.
  • Releases no longer wait for a Mac: GitHub often has no Mac free for hours, which held releases back (1.19.1 waited for one). Windows and Linux now go out as soon as they're built, and the macOS files follow when a Mac is free.
  • Surf: a new mode. Race rules (checkpoints in order, the first to the finish wins the round) on a course of steep ramps, with no dash and no grapple: you ride a ramp's face by strafing into it. Its map is Cascade, four stages of clean 52 and 60 degree ridges down a frozen gorge: gaps to fly across, a turn, zig-zags and two kickers that throw you up onto a ledge if you're fast enough. A dash into any slope now keeps its whole speed and turns along it. In surf you only hold the knife and nobody can hurt anybody (warmup too). Ramps are half as slippery: on a ramp's face you fall (and slide down and off it) at half speed. Strafing into a ramp you touch grips 2x harder (the air speed cap is unchanged).
  • New materials: ice (slippery underfoot), rubber (you bounce off it, floors, walls and ceilings, and it grips: faster to speed up and to stop), and sand, wood, plastic, grass, steel and diamond plate (they play like base, each with its own look). Metal now looks like brushed metal with a sheen, and water, lava and acid have moving noise across them, so lava reads as lava. Every look is made by the shader: no texture files, no extra memory.
  • Rockets and stickies bounce off rubber; stickies and a dropped bomb slide on ice, and a dropped bomb bounces on rubber. The grapple holds on ice as before.
  • Map editor: a new box is one grid cell (grid 0.25 m: a 0.25 m cube).
  • More materials: brick (classic red), glass, asphalt, mud, cobblestone, concrete, tile, marble, corrugated metal, hazard stripes, snow, stone blocks, crystal (glowing edges), circuit (pulsing traces), rust and terracotta. Grass is now green on top and down the top 1/4 m of its sides wherever nothing sits on it. Asphalt is fast and grippy, mud is sticky (slower, stops you hard, weaker jumps), and a dash started on ice is only 25% as strong.
  • Glass breaks: it's see-through and solid (you can stand on it and stickies sit on it) until it breaks. A shot or the knife leaves a crater and breaks the pane into 10-20 big shards, the ones near the crater flying on through it; a bolt or a blast (not the bubble) shatters the whole pane into 12-40 big pieces flying away from the blast. Dashing through shatters it along the dash, and grappling to it shatters it as you arrive; both cost you a flat 10 and its shards spare you. Grapple a pane while standing or moving away and the shards come back at you. Every flying shard or piece does 10 damage. Blast shards fly 3x as far, dash shards 2x, and the rest 1.5x; once they land they're harmless, and they vanish once they're out of view. Your own breaks show at once.
  • Blow holes in walls: brick or cobblestone no thicker than 1/8 m blows open from a rocket or sticky, a 2.5 m hole of broken bricks from a direct hit, smaller the further away the blast was (1 m away: 1.5 m). Nothing else breaks it.
  • Broken glass and holes come back every round, at a new match and on a new map (FFA keeps them until then).
  • Lava, water, acid and the patterned surfaces no longer shimmer seen from a low angle or far off: detail finer than about 2 pixels fades into its average.
  • Your hits count as you saw them: hitscan shots, rockets and crossbow bolts now do damage where they hit on your screen. Before, the server checked them again, so at high ping a rocket or bolt that clearly hit could do nothing. The only exception is when you die on the server before your hit reaches it. Your own rocket on yourself (rocket jumps) and the shotgun's ricochet are still the server's, and so are stickies, bubbles, bots and the grapple.
  • Tetra: a new map piece: a three-sided pyramid, with three base corners and its peak over one of them (a wedge corner cut in half along its diagonal). It walks, collides, lights and renders like the other slopes, and bots walk on gentle ones. In the map editor, N cycles through it after the corners, and rotate / mirror turn it any way.
  • Cut box: a new map piece: a box cut by up to six flat planes at any angle. Wedges, corners and tetras are simple cases of it. A round dome is now exact: each face is one cut box, with no gaps and nothing sticking out. It walks, collides, lights and renders like the other slopes, and the map editor's turn / mirror keys turn it too.
  • Coat in the map editor: select a box, look at one of its sides and press K to lay a 1/8 m layer of the current material on it (with several boxes selected, on that side of each). Good for a thin brick or glass skin on a wall.
  • Fixed: your rocket bouncing off rubber went invisible on your screen until the server's next update; it's now drawn along its bounce. Shooting a pane now brings the whole pane down in visible pieces (only the shards blown out of the bullet hole hurt), instead of a few tiny shards flying away from you.
  • Walls come down: once 80% of a thin brick or cobblestone wall has been blown away, the rest of it falls in a burst of chunks. It's back next round, like the holes.
  • Brighter glow: glow trim, crystal edges and circuit traces are brighter.
  • 25 liquids (your picks): lagoon, swamp, oil slick, tar, honey, mercury, molten gold, magma, toxic sludge, blood pool, hot spring, quicksand, ice slush, plasma pool, ink, glowing tide, sewage, wet cement, pink slime, coolant, white rapids, deep ocean, soda, void and mud bath. You wade into all of them, and each plays its own way: honey, tar and quicksand slow you and hold you back, oil is slippery, coolant speeds you up, the rapids carry you along, pink slime throws a fall back up, soda gives big jumps, deep ocean and quicksand change your fall, a hot spring heals you, toxic sludge and plasma hurt, and molten gold, magma and void kill like lava. They're under the new LIQUIDS tab in the map editor.
  • Map editor: the material picker fills the whole window, with previews twice as big (and sharp). New SPLIT, COMBINE and SUBTRACT buttons for a selected box: SPLIT cuts the selection in two along its longest side, COMBINE joins boxes of one material that make one clean box (anything else becomes a group), and SUBTRACT carves the first box you selected out of the others (shift-click them), so a doorway leaves the wall's pieces round the hole.
  • 40 large patterns (new materials, LARGE tab): the same looks with pieces 2 to 4 times as big: wide and huge planks, large and huge brick, cobbles, tile and stone, and large versions of 30 more brick, tile, stone, sett, flagstone and wood looks. They play like the normal ones.
  • Glass breaks two ways: a shot (or a grapple pulled back) SHARDS it: 2-5 big shards a square metre, 10 damage each, with a spray of glitter where it was hit. A blast, a dash or being pulled through SHATTERS it: 25-100 small pieces a square metre, 1 damage each, in a cloud of 250-1000 glitter bits. Glitter never hurts.
  • 25 see-through blocks (SEE-THROUGH tab): tinted, smoked, amber, frosted, reeded, stained and rain-streaked glass, glass block, plexiglass, ice, quartz, green gel, a hex force field, a red laser barrier, a hologram, chain-link mesh, cargo net, soap film, a water curtain, a smoke wall, prism glass, a jelly cube, ghost glass, a scanner beam and bottle glass. Each is drawn with its own pattern and you see through it. The glass ones stop you and your shots like a window. The force field stops players but lets shots through, the laser barrier is the other way round, a mesh or net lets shots through its holes, smoke blocks only sight, and you walk straight through the water curtain, hologram, soap film and scanner beam. Frosted glass hides you from bots.
  • 24 breakable blocks (BREAKABLE tab): wooden crate, plywood board-up, drywall, cinder block, paper screen, bamboo and picket fences, cardboard boxes, chipboard, rusted sheet, thin concrete, crystal, sandstone, sugar glass, hay bales, rotten planks, ceramic tiles, mirror, barricade, frozen waterfall, stained glass window, tyre stack, lath and plaster, and glass bottles. Each takes a set amount of damage before it breaks into chunks. A crate goes after one rocket, concrete panels and hay shrug off bullets, cinder blocks and tyres take a lot, and a mirror breaks after a couple of shots. Sugar glass, paper and cardboard break the moment you touch them, plywood, drywall and picket fences when you dash into them, and rotten planks give way a moment after you stand on them. They're all back next round.
  • 10 feature blocks (FEATURES tab):
    • Healing tile heals 10% of your health a second while you stand on it. Spike floor takes 20% a second.
    • Low gravity field halves gravity inside it.
    • Slow-mo field makes rockets, stickies, bolts and other projectiles fly at half speed inside it.
    • Gravity flip: above it, gravity points up. You fall to the ceiling and can walk and jump on it.
    • Checkpoint gate is a race checkpoint you run through. It comes after the map's own checkpoints, and the last one is the finish. It flashes green when you take it.
    • Light block glows in cycling colours and lights the room around it.
    • Shield wall stops bullets, rockets and grapples, but you can walk and see through it.
    • Crumble platform shakes when you step on it, falls a second later, and comes back 5 seconds after that.
    • Teleporter has a LINK number and an EXIT FACE, both set in the editor. Touch one and you come out of the next teleporter with the same LINK, on its exit face, at the same speed. Rockets and other projectiles go through too.
  • Strafing at speed: A/D strafing loses less of its push as you go faster. The window of angles that gain is the same, but speed keeps climbing for longer. In surf it falls off much less, so you can go very fast. A/D strafing also turns you about 50% harder without adding speed. A perfect strafer from 15 m/s reaches 47 m/s after 5 s (was 41) and 88 after 15 s (was 71); in surf, 56 and 123.
  • Glass shards from one broken pane hurt you 50 at most, however many hit you.
  • Free for all rulesets: free for all can be played with any of the 1v1 rulesets (vanilla, laser vampire, classic, quirky, hitscan, instagib, boomers, blades, moon shotgun). Pick one after choosing FREE FOR ALL when hosting, against bots, or in a map vote or change in game. Vanilla plays as free for all always has.
  • Gravity is heavier (24, was 22). Jump speed went up with it, so a standing jump is still 1.22 m high, but you spend about 4% less time in the air (a running jump reaches 6.0 m, was 6.3).
  • F3 cycles: press it once for the FPS line alone, twice for FPS plus worst frame, ping, 3D size and server rate, three times for everything with the latency graph, and a fourth time to turn it off.
  • Chat in settings: the chat stays on screen while the settings menu is open in a game, and Enter opens it there so you can type.

Everything that changed in 1.19.3, and why →

1.19.1

Everything from the testing builds since 1.19.0: a grapple launcher on everyone's arm and rocket riding, impact sparks and muzzle flashes, explosions that show at once, a tighter head hitbox, two new map materials (NOGRAPPLE and ACID), new and more detailed player and weapon models, an on-screen HUD editor with HUD styles, RENDER SCALE, a built-in BENCHMARK, and more optimized builds of the game with an AVX2 version picked by itself. The network protocol is now 47 (1.19.0 used 44): 1.19.1 doesn't play with 1.19.0 games or servers, so update both. Dedicated servers update themselves. Maps saved by 1.19.1 are format 4: 1.19.0 can't open them. Your settings, maps, demos and files are kept.

Testing builds

  • Testing builds are now numbered 1.19.1.1, 1.19.1.2 and so on (tag test-1.19.1.<N>): the production version they follow plus a count that starts at 1. The launcher's TESTING channel and the testing servers see them as newer than 1.19.1 and older than the next release, so there's nothing to do as a player. (Between 1.19.0 and 1.19.1 they were 1.19.0.testing.<run>.)
  • Server owners, once: a testing server's updater from before this change doesn't know the new numbers and stops the testing server once 1.19.1 is out. Run sudo sh tools/server/install.sh once from a checkout of v1.19.1 (or the testing branch), as for 1.19.0 (docs/OPERATIONS.md). It's the last time: from now on servers keep up with every update by themselves.

Grapple

  • Everyone now wears a grapple launcher on their left arm, in first person (low on the left, like the gun on the right) and on other players. The rope comes out of its barrel, and the hook's claw flies out to where it latched; while you're hooked your arm lifts toward it. It has its own HUD > GRAPPLE MODEL setting and isn't shown in modes without the grapple.
  • The gun and the grapple launcher now sit further back in the bottom corners by default, covering less of the screen, and in the same place at every aspect ratio (16:9, 4:3, ultrawide) and FOV.
  • New HUD > GRAPPLE MODEL setting: move, size, hide and colour the launcher on its own, separately from the WEAPON MODEL.
  • Tilt for both models: PITCH, YAW and ROLL sliders (-90 to 90 degrees) next to x / y / depth, so each can be placed on all 6 axes. Your shots and the rope leave the moved, tilted barrels.
  • Rocket riding: the grapple now catches rockets in flight, anyone's, your own too: fire a rocket, hook it and it pulls you along behind it. Only rockets (not knives, syringes, stickies or bolts). The hook lets go when the rocket explodes or after the usual 3 s, range and line of sight limits, you keep your speed and the grapple's cooldown starts. Custom modes can turn it off (GENERAL > ABILITIES > ROCKET RIDE); it's on everywhere else. A new network protocol (47): servers and players need this version.

Shots and explosions

  • Impact sparks everywhere: hitscan shots (rifle, sniper, shotgun, laser) now spark where they hit a wall, not only on enemies, and other players' shots spark too. Settings > GAMEPLAY > SHOTS > IMPACT SPARKS turns them off.
  • Muzzle flash on your gun and everyone else's when they fire. Settings > GAMEPLAY > SHOTS > MUZZLE FLASH turns it off.
  • Your explosions show at once: your rockets and bolts blow up on your screen the moment they hit a wall or an enemy, and your stickies the moment you detonate, instead of a round trip later. Damage and deaths still come from the server, so nobody looks dead who isn't.
  • Screenshots no longer overwrite each other: the screenshot key (F12) now saves to a screenshots folder in your game data folder, named by date and time, and the notice says the file name. Before, every launch started again at screenshot_0.png and replaced the last session's.
  • Weapon model opacity: Settings > GAMEPLAY > VIEW > WEAPON MODEL OPACITY makes your first-person gun and grapple launcher see-through (1 = solid, 0 = gone).
  • More detailed weapon models: every first-person weapon except the locator is rebuilt with more parts (sights, rails, grips, glowing details), up to 20 boxes each. Their size and where they sit on screen are unchanged.
  • New player models: WIZARD, ZOMBIE and FIGHTER, plus SIMPLE (just the hitbox: a body box and a head box), which replaces SCOUT (anyone who picked SCOUT now gets SIMPLE). STANDARD, HEAVY, ROBOT and KNIGHT and every projectile (rocket, sticky, bolt, knife, syringe, bubble, orb) are rebuilt with more detail. Every model still has the same hitbox.
  • More player models: PIRATE, NINJA and BANDIT.
  • New map material: NOGRAPPLE (slate blue with diagonal stripes). It is solid like a normal wall for players, shots and sight, but your grapple hits it and lets go instead of latching on. In the editor it comes after CLIP on the M key and the material list. Maps saved by this version are format 3; older games cannot open maps that use it.
  • New map material: ACID (glowing toxic green). You wade into it like lava, but instead of killing you at once it takes 10% of your max health when you touch it, then 10% a second while you stay in, so anyone lasts about 9 seconds whatever the mode's health. Your health drops at once on your screen; the death still comes from the server ("dissolved" in the kill feed), and whoever knocked you in gets the kill however long it takes. Regeneration waits while you're in it, and bots walk round it when they can. In the editor it comes after NOGRAPPLE. Maps saved by this version are format 4; this is a new network protocol (45), so servers and players need this version.
  • The head hitbox is just the head: a player is now hit as two boxes, the body (full width, from the feet up to the bottom of the head) and the head on top. The space beside the head, above the shoulders, is no longer part of the hitbox, so a shot past someone's ear misses instead of counting as a body hit. The same for every weapon, projectile, the knife and the grapple, crouched or any size. Blasts measure to the body or the head too, and bots aim a little lower so they keep hitting the body. This is a new network protocol (46), so servers and players need this version.
  • Fixed missing box faces: some faces of stairs and other stacked boxes were invisible in game. The check that hides faces buried inside other boxes was approximate and could hide a face that was still partly visible; it is now exact, and invisible clip boxes no longer hide the faces behind them.

Sounds

  • The bomb going off now makes a sound: a deep, long boom at the bomb that everyone hears. Before, the round just ended in silence.
  • Tag passes are heard: being tagged plays a stab and a sting, tagging someone plays a heavy hit sound (with HITSOUND on), and everyone else hears the new "it" get hit.
  • Race practice checkpoints ding (CHECKPOINT and FINISH), like in the race itself. Before, practice laps before the race were silent.
  • Demos: the recorded player's own shots are heard again. Before, their gunfire was silent in playback.

HUD

  • Edit the HUD on screen: Settings > HUD > EDIT ON SCREEN shows every HUD element where it goes, with the score box, kill feed and chat too. Click one to select it, drag it to move it (it snaps to the screen's edges and centre and to the other elements, with guide lines; hold Alt to place it freely), and drag a corner, use the wheel or press + / - to size it. Arrow keys nudge it (Shift: 10 at a time), Tab picks the next element, Delete hides or shows it, and Ctrl+Z / Ctrl+Y undo and redo. A small panel beside it has the element's settings and its style, plus RESET ELEMENT, RESET ALL and DONE.
  • HUD styles (theme.cfg): give any HUD element a background, border, rounded corners, padding, opacity, text size and line spacing, from the on-screen editor or by writing theme.cfg (next to hud.cfg, in a short CSS-like format). It changes live in a running game. With no theme the HUD looks exactly as before. In ranked, a theme can dim an element to 30% at least, never hide it.
  • The score box, kill feed and chat are now HUD elements: move, size, recolour and style them like the others (Settings > HUD and EDIT ON SCREEN).
  • Fixed the HUD tab's footer covering the weapon list: BACK and RESET WHOLE HUD now sit higher, clear of the HUD's bottom row.
  • The HUD and menus draw a little cheaper: the HUD costs slightly less CPU per frame than before even with all of the above, and every piece of text and every box in the UI sends a third less data to the GPU.

Video

  • RENDER SCALE (Settings > VIDEO + AUDIO > IMAGE, 50% to 200%, default 100%): draws the 3D world at that share of your window's resolution and stretches it to fit, while the HUD, text and menus stay at full resolution and sharp. Below 100% for more frame rate on a weak GPU; above 100% for a smoother, supersampled picture. Works with every ANTI-ALIASING mode. F3 shows the resolution the world is drawn at (3D 960X540). At 100% nothing changes.
  • SHARPEN (next to it, on by default): below 100%, sharpens the stretched world a little so it looks less blurry. It does nothing at 100% and above, or with ANTI-ALIASING: SMOOTH, which smooths the edges instead.
  • BRIGHTNESS and PLAYER SHADOWS now share a row, to make room.

Benchmark

  • BENCHMARK on the main menu: RUN BENCHMARK plays a Hamlet free for all demo (shipped with the game) with the HUD off and a small BENCHMARK / time left box; Esc cancels. The first 3 s aren't counted. Then a result page: a frame-time graph of the whole run with lines at 60 / 144 / 240 fps, AVG FPS, 1% LOW, 0.1% LOW, MIN FPS (the worst frame), STDEV (ms), the frame count, and your setup (resolution, render scale, display, vsync, FPS limit, AA, shadows, CPU, GPU, driver, version), next to the run before it.
  • Runs are saved like demos in benchmarks/ in your game data folder, one file each. The BENCHMARKS page lists them; open any to see its result page, give it a NAME (it starts as the build's label, the map and the date), DELETE it, or EXPORT CSV (every frame's time in whole microseconds, one a line) or EXPORT PNG (a picture of the result page) into benchmarks/exports/; OPEN FOLDER opens it. A FLAGS.txt next to the game's exe names the runs of that build (its first line).
  • Runs are uploaded automatically to the ranking server with your ranked key (CPU, GPU, driver, the numbers, the main video settings, the game version and channel, testing builds too). The ranking server takes them from this release on (testing builds before it retried until now); the list marks the runs that went through.
  • quark --benchmark [demo] [seconds] runs it and prints the results (scripts and comparisons).

Performance

  • More optimized builds of the game: the game is now compiled with full optimization (-O3 and link-time optimization) and for newer CPU instruction sets. How much faster it is still needs a controlled benchmark: the first laptop comparison was skewed by the laptop warming up.
  • Two game builds in every Windows and Linux package: quark (SSE4.2: any x86-64 CPU from about 2009 on) and quark_avx2 (AVX2: Intel from 2013 on, every Ryzen). The game starts the AVX2 one by itself when your CPU has it; nothing to choose. Both play exactly the same online. --no-avx2 (or QUARK_NO_AVX2=1) keeps the SSE4.2 one.

Everything that changed in 1.19.1, and why →

1.19.0

The first production release since 1.17.0. It collects every testing build from 1.18.0 to 1.18.32: lower input and audio latency, cheaper servers, reworked dashes and the hyper, a gameplay feel pass (taps never lost, enemy movement sounds, a death screen, clearer calls), the new Rubik font and a redesigned menu and settings, and custom modes that can change mode rules, weapons and movement. The network protocol is now 44 (1.17.0 used 42): 1.19.0 doesn't play with 1.17.0 games or servers, so update both. Dedicated servers update themselves. Your old demos are converted when the game starts, and your settings, maps and files are kept.

Movement

  • Two dashes, 0.6 s apart, each recharging in 1.2 s. From full charges you can use both dashes in the air within about 0.72 s. A spent dash recharges for 1.2 s from the end of the dash that used it, then comes back the usual way: landing refills both, a bunny hop one. On the floor you can dash about every 0.72 s.
  • Holding dash dashes as soon as it can, and a press up to 0.1 s early is kept until the dash is allowed.
  • Dash aim: looking straight up, 40% of a dash's speed goes up (was 64%); looking straight down, 90% goes down (was 64%).
  • Hyper (super dash): it leaves at 5 m/s faster than you were going (at least 11, at most 36), instead of a flat 30. It leaves the floor as if your dash bounced off it: the further down you look, the more of that speed goes up, up to 90% looking straight down. From a run that's about 0.45 m high at 20 degrees down, 1.9 m at 45 degrees and 3.9 m straight down.
  • A dash into a wall bounces off at 16 m/s (was 24). A dash jump still leaves at 24, and a ground dash aimed a little upward can now be dash-jumped too.
  • Quick dash (duel QUICK DASH and DASHING BLADES, the BLADES arena): two charges, 0.2 s apart, 0.4 s recharge.
  • A/D air strafing is stronger (air strafe cap and air acceleration up 10-15%): strafe jumping builds speed faster, about 20.7 m/s after one second from a run instead of 18.2. W-only air turning is 10% slower.
  • Strafe jumping is the same at any frame rate (at 60 fps you used to lose about 5% speed against a fast machine; now under 0.1%).
  • Short taps always count: a jump, dash or grapple press shorter than a frame is never lost, and a jump tapped up to 0.1 s before landing jumps the moment you land.
  • Ladders: only W and S climb (S climbs down); A and D move you sideways.
  • Stairs are smooth: running up steps no longer jolts the camera.
  • Fewer corrections online: the syringe refill and grappling an enemy are predicted.
  • Grappling a wall you're standing against grabs once (at most once a second while held) instead of replaying the grapple sound every frame.

Weapons and combat

  • Rifle body 5.0 (was 4.95), shotgun head pellet 2.6 (was 2.55): 20 rifle body shots and two point-blank head blasts now kill.
  • Sniper body shot 40 (was 50). A headshot still does 50: 2 headshots or 3 body shots to kill.
  • Your own rocket splash ramps up smoothly with height: a rocket at your knees costs about 10 HP instead of 34. Rocket jumps are unchanged. Rocket splash now also hits a player peeking over cover.
  • Weapon switches show instantly: your weapon, HUD, zoom and shots change the moment you press the key, not one ping later. After a knife or syringe throw you go back to the weapon you held, not the rocket.
  • Sniper, crossbow and rocket keep a click up to 0.1 s early and fire the moment they're ready.
  • Shots line up better with what you saw: lag compensation is exact between ticks, and refire is timed by your own commands.
  • Knocking someone off the map within 3 s is your kill (rocket, crossbow knock, grapple pull).
  • Shotgun HEADSHOT only when at least half the blast hit the head. The bubble stream no longer gives away enemies behind walls, and a click right after you respawn no longer plays a shot the server never fires.

Sound

  • You hear enemies move: their jumps, landings (louder when hard), dashes, supers and hypers, in 3D. Enemy footsteps are heard on stairs and no longer play in mid-air.
  • Distant gunfire: a hidden shooter within 60 m is heard as a muffled shot from roughly where they are.
  • Sounds behind you are quieter and duller than in front, and 3D sounds follow you while they play when you turn.
  • Your hurt sound is calmer: at most once every 0.15 s, louder for bigger hits.
  • Quips get their own setting: QUIPS on/off and QUIPS VOLUME. Quips are only hype lines (headshot, sprees, new leader...), never a countdown or objective call. You can put your own in voices/<voice>/quips/.
  • EFFECTS VOLUME and ANNOUNCER VOLUME set the effects and the announcer on their own.
  • Hide and seek and tag: everyone hears the locator from where the seeker or tagger stands.
  • Windows audio goes through WASAPI: about 10 ms of buffering (was 30), about 3 ms where the driver allows it, and EXCLUSIVE AUDIO for about 3 ms on more devices.
  • Three announcer lines that never played (AIRBORNE, TEN SECONDS, FIVE SECONDS) are gone; every voice has 27 lines.

HUD

  • The death screen shows who killed you, with what, their HP (not in ranked) and the respawn countdown.
  • A red arc round the crosshair points to whoever hit you, and enemy rifle shots draw tracers.
  • Kills: a red X kill marker, and a killed player you can see drops with a death sound and a red burst.
  • Instant hit sparks for your rifle, sniper, shotgun and laser hits, and your rockets, bolts and knives appear the moment you fire, from your weapon.
  • The round clock is back under the mode title in every timed mode (it had been missing since 1.17.0).
  • The dash bar: a dash you have but can't use yet is a light grey pip that turns blue the moment you can dash; a used dash is empty until it comes back.
  • The weapon bar fills over alt-fire refire and the spawn lock. The notices under the score bar are one tidy list.

Modes

  • Bomb calls: your job at every round start (ATTACK / DEFEND), halftime's side switch, and a dropped or picked-up bomb.
  • Payload checkpoints play POINT TAKEN / POINT LOST. FFA calls only your own lead changes and shows your place under the mode title ("2ND OF 8").
  • Payload and multi point: round 1 ends with how far the attackers got ("TEAM A pushed 57 m - TEAM B must beat it"), round 2 ends as soon as the result is settled, and a level attack goes to the side that got there sooner. No more tiebreaker rounds.
  • Railyard: past the last checkpoint, attackers respawn in 3 s.
  • 1v1, duel and tourney: 2.5 s between rounds (was 4), and the calls use player names.
  • Hide and seek: a seeker who falls or dies is back after 2 s; ties go to whoever stayed hidden longest, then rock paper scissors; the seeker sees hiders within 24 m without a line-of-sight check, so close hiders don't pop in late.
  • Spawns: FFA picks a random unseen spawn among the farthest ones; team spawns avoid enemies' sight.
  • Spectating in team modes: after you die you watch your killer for 1.5 s, then only teammates.
  • An emptied server stops playing (unranked): when a side or everyone leaves, the match waits 10 s, then gives the side still there a forfeit win or goes back to warmup.
  • Fixed: tag players knocked out in one match started the next one already out; the Railyard cart's collision was at the wrong end of the track in team B's attacks; killstreaks carried over between matches.

Bots

  • Bots path round walls, crates and posts instead of walking into them (Depot's gatehouse, Summit's west spawn and others).
  • Bomb vs bots on Depot and Lodestone works: defenders split across the sites.
  • Bots turn toward whoever hurt them, even a sniper they couldn't hear. Play vs bots 1V1 is one bot, and DUEL uses the duel team size.

Menus and settings

  • A new look for the menus, settings, in-game pages and map editor: a title logo drawn like the app icon in your team colours, card pickers for maps, modes, rulesets and ladders, and BACK always bottom-left.
  • Settings has six tabs (PLAYER, GAMEPLAY, CONTROLS, VIDEO + AUDIO, CROSSHAIR, HUD) with hints, colour pickers instead of R / G / B sliders, and right-click to unbind a key.
  • Live HUD preview on the HUD tab: the HUD stays on screen and the element you edit moves, resizes and recolours as you go.
  • DEVICES: pick the sound output, the monitor for fullscreen and borderless, and the refresh rate for exclusive fullscreen (the microphone pick is stored for later).
  • Rubik Bold is the new UI font, and SETTINGS > FONT picks another: Work Sans, Quark Classic, look-alikes of game fonts, or any .ttf / .otf you put in mods/fonts.
  • HOST > ADVANCED holds the network options and BOT BRAIN. Custom mode sliders show the real value (GRAVITY: 22.0 M/S2), with a new DASH + GRAPPLE tab.
  • MAX FPS is a slider (right-click: your refresh rate), and the click that brings the game back after alt-tab no longer fires.

Display, input, performance and netcode

  • Latent Sync (Windows, the new default PRESENT setting): no tearing, at nearly no-vsync latency. Linux and macOS default to NO VSYNC.
  • Less time from mouse to screen: the mouse is read again just before the world is drawn, raw mouse input runs on its own thread on Windows, LOW LATENCY ULTRA is paced like NVIDIA Reflex, and windowed vsync uses the driver's vsync (one refresh less delay).
  • F3 shows a mouse-to-photon graph; F4 shows only that number. VOTE START moved to F5.
  • GPU MAX CLOCKS (Windows, NVIDIA) keeps the GPU from clocking down mid-frame.
  • Fewer frame-time spikes: no allocations per frame, about 7x cheaper text, and no more once-a-second stutters.
  • The official maps ship with their lighting baked: no bake on first join (Midtown 5.3 s to 0.05 s), and cached loads are about 2.5x faster. The download grows by about 12 MB.
  • Kill feed, chat and name events are never lost when packets arrive out of order or a snapshot is crowded. Remote players are drawn 7-16 ms closer to the present, and your own position is drawn as of now.

Servers

  • Much less CPU: a Linux server with players used about 30% of a core on a small cloud VM and now uses 10-12%.
  • The tick rate steps down only on real trouble: late ticks in two 3-second checks in a row (one short host pause no longer drops it to 500 Hz), heavy load, or bandwidth trouble for most players (the snapshot rate drops first). status shows the rates and why they last changed.
  • Dedicated servers with nobody on pause: no ticks and next to no CPU until a player joins, who starts at warmup.
  • New options: --max-upload-kbps N, --tick-spin auto|N and --botbrain <name>.

Custom modes and modding

  • Mode logic: a .qmode can carry a logic section that changes scoring, round ends, respawns, who can hurt whom, timers and announcements. Servers playing it show [name#hash] in the server list.
  • Weapon sets: a custom mode can change any weapon's numbers and add hit and kill rules (weaponset=<name>). Joining players get the set automatically.
  • Movement equations: any movement setting in a custom mode can be a formula or curve (friction = sqrt(speed)), worked out the same way on the server and in your prediction.
  • Bot brains: bots can play .qbrain files from your bots/ folder (addbot ... brain=<name>, or HOST > ADVANCED > BOT BRAIN).
  • More models can be replaced (arms, bomb, payload cart, checkpoint gates), and replacement models are drawn like the built-in ones. Replacement sounds listed in sound-levels.txt keep their own loudness.
  • All of these are for unranked games: ranked matches and time trials always play the standard rules, weapons, movement and bots, and show the shipped models, whatever is in your overrides folder.
  • Local editor tools for modders (not in the game download): sound, model, bot, gamemode, weapons and physics editors under tools/.

Fixes

  • STOP HOSTING no longer closes the game on Windows (and BACK TO EDITOR, ending vs bots or a time trial, or a dropped connection while hosting).
  • ALT TOGGLE scope zooms with the toggle; weapon kick recovers the same at any frame rate and while scoped.
  • Giant and double-size enemies' shots start at their eyes; spectators see the watched player's laser and sniper shots.
  • See-through parts of custom weapon models show in first person; a fresh announcer line is no longer cut off when 64 sounds play.
  • Editor: big maps stay smooth while editing, and an online edit can no longer change the wrong object.

Everything that changed in 1.19.0, and why →

1.18.32

A fix for the grapple sound. No protocol change: 1.18.32 plays with 1.18.22 and newer games and servers (protocol 44).

  • Grappling a wall you're standing against no longer spams the sound. Holding grapple with your face to a wall used to replay the grapple sound every frame, very loudly. Now it grabs once, and at most once a second while you hold the button, like any other grab and release.

Everything that changed in 1.18.32, and why →

1.18.31

The hyper (super dash) now sends its speed up off the floor, and dashes aim less steeply up and more steeply down. No protocol change: 1.18.31 plays with 1.18.22 and newer games and servers (protocol 44), but update both: on a mixed game and server, dashes aimed up or down and every hyper jolt once to where the server puts them.

  • Hyper: up to 90% of its speed goes up. It leaves the floor as if your dash bounced off it: the further down you look, the more of its speed points up, at most 90% looking straight down. Its speed is the same as before (what you carried in + 5), but the part that goes up no longer moves you forward. From a run: about 0.45 m high at 20 degrees down, 1.9 m at 45 degrees, 3.9 m straight down. This replaces the 3x hop from 1.18.28.
  • Dashes aim up at most 40% and down at most 90%. Looking straight up, 40% of a dash's speed goes up (it was 64%); looking straight down, 90% goes down (was 64%). A standing jump with a dash straight up at its top now peaks about 2.8 m (was 4.15 m).

Everything that changed in 1.18.31, and why →

1.18.30

Servers no longer lower their tick rate because of one short hitch on the host machine. The physics editor's game comparison gains 12 more games. No protocol change: 1.18.30 plays with 1.18.22 and newer games and servers (protocol 44).

  • Steadier tick rate on servers. A single short pause on the host (common on cloud machines) used to be enough to drop a server from 1000 Hz to 500 Hz at the next break. Now late ticks must show up in two 3-second checks in a row before the rate steps down. Heavy load, bandwidth trouble and lag for most players still lower it straight away. The server log says late ticks in one window (...), waiting for a second when it holds off, and status shows it too.
  • Physics editor: 12 more games to compare. The Values tab's game picker now has Quake Live, Quake Champions, Reflex, UT2004, UT3, Halo 3, Halo Reach, DOOM Eternal, CoD4, Fortnite, Portal 2 and CS 1.6 as competitive servers run it. Apex, Overwatch 2, UT99 and Minecraft gain the values they were missing. Each value says where it came from and whether it is exact, measured or estimated.

Everything that changed in 1.18.30, and why →

1.18.29

Settings > HUD now shows your HUD live while you edit it. No protocol change: 1.18.29 plays with 1.18.22 and newer (protocol 44).

  • Live HUD preview. On the HUD tab the real HUD stays on screen behind a see-through settings panel (in a match with your live values, from the main menu with sample ones). The element you picked is outlined, and while you drag its sliders or change it, it's drawn over the panel so you see it move, resize and recolour as you go. A hidden element shows a dashed outline where it would be.

Everything that changed in 1.18.29, and why →

1.18.28

The hyper (super dash) now launches you 3x higher, to make up for its lower speed since 1.18.7. No protocol change: 1.18.28 plays with 1.18.22 and newer games and servers (protocol 44), but update both: on a mixed game and server a hyper jolts once as it lands where the server says.

  • Hyper hop 3x higher. Aimed just past the hyper angle you now rise about 0.9 m (was 0.3 m), at 45 degrees 2.4 m (was 0.8 m), and straight down 3.65 m (was 1.22 m, a standing jump). You stay in the air about 1.7x as long, so a hyper carries you about 1.7x as far.

Everything that changed in 1.18.28, and why →

1.18.27

The crossbow is back to 50 body damage, so two body bolts kill again. No protocol change: 1.18.27 plays with 1.18.22 and newer games and servers (protocol 44).

  • Crossbow body 49 -> 50 (head still 75). 1.18.21 had lowered it so a headshot would save a bolt, but that made a body kill take three bolts. The owner chose to drop that change.

Everything that changed in 1.18.27, and why →

1.18.26

A small fix to weapon switching, plus faster tests on Windows. No protocol change: 1.18.26 plays with 1.18.22 and newer games and servers (protocol 44).

  • After you throw your knife (or syringe), your view model and HUD go straight back to the weapon you held before it. For one ping they used to show the rocket launcher first.
  • The developers' full test run on Windows takes about 3 minutes 20 seconds instead of 14, so fixes get checked and shipped sooner.

Everything that changed in 1.18.26, and why →

1.18.25

A behind-the-scenes update to the developers' tests. Nothing changes in the game, and it plays with 1.18.22 to 1.18.24 (protocol 44).

  • The automatic map grading is gone: the maps will be designed by hand. Every check that catches a broken map (spawns in walls, unreachable objectives, ladders, stairs, places you can reach out of bounds) stays.
  • The full local test run takes about 1 minute 50 seconds instead of about 5, so fixes get checked and shipped sooner.

Everything that changed in 1.18.25, and why →

1.18.24

Bots stop walking into walls and crates, and you can pick the brain your hosted game's bots play.

Bots

  • No more walking into walls: bots used to plan straight across a floor through whatever stood on it. Fixed cases include the Depot bomb carrier pushing into the gatehouse wall, Depot yard runs stopping at the perch, and Summit's west spawn walking into the ledge ramp for 4-20 s. Bots now path round walls, crates and posts.
  • Bomb carriers and defusers chasing someone no longer think twice as hard every tick.
  • Bots spread their looking across server ticks instead of all looking on the same tick after a round restart, so busy servers have smaller tick spikes (Hamlet with 24 bots: worst bot think time per tick down about 25%).
  • Summit KOTH bots now get round the hill properly, so they hold it about 30% less than before (they used to stand stuck on it).

Hosting

  • HOST GAME > ADVANCED > BOT BRAIN: pick BUILT-IN or any brain file in your bots/ folder (made with the bot editor). Bots added from the console play it too. A brain with an error says which line and the bots play the built-in brain. Ranked games always use the built-in brain; VS BOTS keeps the built-in brain.

Everything that changed in 1.18.24, and why →

1.18.23

Clearer calls in bomb, payload and FFA, the last item from the gameplay feel review. No protocol change: 1.18.23 plays with 1.18.22 and newer games and servers (protocol 44).

Calls

  • Bomb tells you your job at every round start: "ATTACK: CARRY THE BOMB TO A SITE AND PLANT IT" or "DEFEND: KEEP THEM OFF THE SITES, DEFUSE A PLANTED BOMB" during the freeze.
  • Bomb halftime is announced: "HALFTIME - SIDES SWITCHED: YOU ATTACK NOW" (or DEFEND).
  • A dropped or picked-up bomb is called for both sides ("BOMB DROPPED - PICK IT UP" / "THEY DROPPED THE BOMB").
  • Payload checkpoints play the POINT TAKEN or POINT LOST voice for your side.
  • FFA only calls your own lead changes ("YOU TOOK THE LEAD" / "YOU LOST THE LEAD"), and the line under the mode title shows your place, like "2ND OF 8".

Everything that changed in 1.18.23, and why →

1.18.22

Custom modes

  • Movement settings can be equations. In a custom mode, any movement setting can be a formula instead of a fixed number. It can depend on other settings (friction = sqrt(speed)) or on what you're doing right now: your speed, time in the air or on the ground, height, dash charges, dashing or grappling. Curves with easing (in, out, inout, smooth, expo, back...) and bounds let a setting change smoothly, e.g. curve(p.hspeed, 2, 12, 2, 0.6, "inout"). The server and your own prediction both work them out every millisecond, so they play the same online. Make them in the physics editor and save them as a custom mode.
  • The HUD's dash pips and hook bar, the grapple onto players, the syringe and bots all follow those equations.
  • Modes without equations play exactly as before.

Compatibility

  • Protocol 44: this version can't join servers on 1.18.21 or older, and they can't join it. Old demos still play.

Physics editor (local tool)

  • Compare your settings with 22 other games (Quake, CPMA, Warfork, Xonotic, Half-Life, Counter-Strike, TF2, Titanfall 2, Overwatch and more). Every value has its source.
  • Each setting can be fixed, an equation or a curve, with a live plot.
  • The Code tab shows the game's real movement code with your values filled in.
  • A new Code graph shows which movement step each setting changes.
  • The Movement graph gains 3D, locked axis units and A vs B compare.

Everything that changed in 1.18.22, and why →

1.18.21

A gameplay feel update: you hear enemies move, taps are never lost, the death screen tells you who killed you, a fallen hide and seek seeker comes back, and empty servers stop playing by themselves. No protocol change: 1.18.21 plays with 1.18.16 to 1.18.20 games and servers, so you can update either one first.

Movement

  • Short taps always count. A jump, dash or grapple press shorter than a frame is no longer lost.
  • Tapped jumps buffer like held ones. A jump tapped up to 0.1 s before you land jumps the moment you land, the same as holding jump. Before, a tap 30 ms early did nothing.
  • Holding dash dashes as soon as it can. You no longer need a fresh press, and a press up to 0.1 s early is kept until the dash is allowed.
  • Strafe jumping is the same at any frame rate. At 60 fps you used to lose about 5% speed (11% at 30 fps) against a fast machine; now it's under 0.1%.
  • Fewer corrections online: a syringe refill and grappling an enemy are now predicted, so your dashes and hook don't jump back a round trip later.
  • Dash jumps are easier: a ground dash aimed a little upward can still be dash-jumped, and bunny hoppers holding jump get the same 0.1 s dash-jump window as a fresh jump press.
  • Ladders: only W and S climb; S climbs down, A and D move you sideways.
  • Stairs are smooth: running up steps no longer jolts the camera (it eases over about 25 ms; your shots still leave from your real eye).

Combat

  • Rifle body 4.95 -> 5.0 and shotgun head pellet 2.55 -> 2.6, so 20 rifle body shots and two point-blank head blasts now kill (they left 1 HP).
  • Crossbow body 50 -> 49 (head still 75): a headshot now saves a bolt. Two body bolts no longer kill; it takes three.
  • Your own rocket splash ramps up smoothly with height: a rocket at your knees costs about 10 HP instead of 34. Rocket jumps are unchanged.
  • Sniper, crossbow and rocket keep a click up to 0.1 s early and fire the moment they're ready.
  • After a knife or syringe throw you go back to the weapon you held, not the rocket.
  • Shots line up better with what you saw: lag compensation is exact between ticks, and refire is timed by your own commands, so taps at the end of a cooldown fire at once with your aim.
  • Rocket splash hits a player peeking over cover.
  • Shotgun HEADSHOT only when at least half the blast hit the head.
  • Knocking someone off the map within 3 s is your kill (rocket, crossbow knock, grapple pull). Before, nobody got the point.
  • A click right after you respawn no longer plays a shot the server never fires.
  • The bubble stream no longer gives away enemies behind walls.

Sound and HUD

  • You hear enemies move: their jumps, landings (louder when hard), dashes, supers and hypers, in 3D. Your own jump, landing and dash sounds no longer drop out when you bunny hop or press jump and dash together.
  • Your hurt sound is calmer: at most once every 0.15 s and louder for bigger hits. It used to play about 40 times a second under the laser and drown out footsteps.
  • Distant gunfire: a hidden shooter within 60 m is now heard as a muffled shot from roughly where they are.
  • Instant hit sparks: your rifle, sniper, shotgun and laser hits show a red spark at once instead of a round trip later. The hit sound and number still come from the server.
  • Your rockets, bolts and knives appear the moment you fire, from your weapon, instead of popping in a few metres out.
  • Sounds behind you are quieter and duller than the same sound in front, so you can tell front from back.
  • A red arc round the crosshair points to whoever hit you, and enemy rifle shots draw tracers.
  • Kills: a red X kill marker, and a killed player you can see drops with a death sound and a red burst. The last hit's sound and number now come before the kill sound.
  • The death screen shows who killed you, with what, their HP (not in ranked) and RESPAWN IN 1.4.
  • The weapon bar now fills over alt-fire refire and the spawn lock. Enemy footsteps are heard on stairs.

Modes

  • Spectating in team modes: after you die you watch your killer for 1.5 s, then only teammates.
  • Hide and seek: a seeker who falls or dies is back after 2 s. Before, the round idled out and every hider scored.
  • Hide and seek ties go to whoever stayed hidden longest; rock paper scissors only if that's level too.
  • Payload and multi point: round 1 ends with "TEAM A pushed 57 m - TEAM B must beat it" instead of a ROUND WON that turned into YOU LOSE. Round 2 ends as soon as the result is settled.
  • 1v1, duel and tourney: the break between rounds is 2.5 s (was 4 s), and the calls use player names instead of TEAM A.
  • Payload and multi point level attacks go to the side that got there sooner ("level with TEAM A's 2 points, there sooner than its 3:40"). No more tiebreaker rounds, which added 8-11 minutes.
  • Payload's last leg: on Railyard, attackers past the last checkpoint respawn in 3 s instead of 5.
  • FFA spawns are less predictable: a random unseen spawn among the farthest ones, not always the single farthest.
  • Team spawns avoid enemies' sight, not teammates (Summit KOTH: 57% of respawns in sight before, 22% now).
  • Killstreaks no longer carry over from warmup or the last match. Multi point can't start on a map without points.

Bots

  • Play vs bots in 1V1 is one bot, and DUEL uses the duel team size (both were 2v3).
  • Bomb vs bots on Depot and Lodestone works: defenders split across the sites, and bots no longer stick on walls there.
  • Bots turn toward whoever hurt them, even a sniper they couldn't hear, after their reaction time.

Servers

  • An emptied server stops playing (not ranked): when a side or everyone leaves, the match waits, and after 10 s gives the side still there a forfeit win or goes back to warmup. VS used to loop "round draw" every 7 s, and a 1v1 leaver handed out rounds.
  • Older 1.18.16 to 1.18.20 clients joining a 1.18.21 server play normally; they just miss the new sounds and markers.

Everything that changed in 1.18.21, and why →

1.18.20

Quips get their own setting.

Sound

  • QUIPS on/off and QUIPS VOLUME (VIDEO + AUDIO > SOUND). Quips are the announcer's hype lines played after a frag. They no longer follow the ANNOUNCER setting or its volume: you can mute the call-outs and keep the quips, or the other way round.
  • Quips are only hype lines. By default each voice's quips are its HEADSHOT, AIR ROCKET, SPREE, RAMPAGE, UNSTOPPABLE, GODLIKE, NEW LEADER and HIGH SCORE lines. A quip is never a countdown, objective, round or time call, so it can't be mistaken for one.
  • Your own quips: put sound files in voices/<voice>/quips/ (wav, ogg, flac or mp3). They replace that voice's whole quip set. To add to the defaults instead, export them first (the sound editor does this) and put them in the same folder.

Everything that changed in 1.18.20, and why →

1.18.19

Custom modes can now change the weapons themselves, not just scale them. The standard weapons and every built-in mode are unchanged.

Custom modes

  • Weapon sets: a custom mode can name a weapon set (weaponset=<name>, a file in custom_weapons/) that changes any weapon's numbers: damage, headshot damage, fire rate, range, spread and scope, projectile speed, drop and lifetime, splash, direct-hit damage, self damage, wallbang damage, knockback, damage falloff with distance, and every alt fire (the rocket lob, knife and syringe throws, shotgun bounces, the laser pull, the rifle scope, the bubble stream, stickies). A set can also rename a weapon and add its own rules for what a hit or a kill does (for example double damage on airborne players, or health back for a kill).
  • Players joining a server that plays a set get it automatically, so their shots, spread and projectiles match the server's. A set that is missing, broken or too big falls back to the standard weapons and says why.
  • Where it runs: games you host with a custom mode (unranked). Ranked matches and time trials always play the standard weapons.

Weapons editor (for weapon makers; not in the game download)

  • A new local page for making weapon sets: tools/weapon_editor (http://127.0.0.1:8773/), also the Weapons Editor tab of the Quark Project app. Edit each weapon's numbers, see a values table of damage, shots and time to kill and DPS (body and head, every alt fire) against the standard, compare with weapons from 19 other games, write hit / kill rules as code, blocks or a graph, test against still and moving targets on a range or any map, and watch or batch-run bot fights with the set. One click writes a custom mode that plays it.

Everything that changed in 1.18.19, and why →

1.18.17

You can now change how a game mode plays, not just its numbers. The built-in modes play exactly as before.

Custom modes

  • Mode logic: a custom mode (.qmode) can now carry a logic section that changes what happens when: what a kill scores, when a round ends and who wins it, respawns, who can hurt whom, timers and announcements. It starts from one of the 13 built-in modes and only overrides what it writes. The bomb, the payload cart, capture points, race checkpoints and the other objective mechanics stay as they are; the logic decides what they mean.
  • Host > Custom modes shows LOGIC: name#1a2b3c4d under the TIME / SCORE / ROUNDS sliders for a mode with logic (or the error, in red, when it doesn't compile). Saving a mode there keeps its logic and any settings this version doesn't know (another editor's, a newer game's) instead of dropping them.
  • A server playing mode logic says so: its name in the server list starts with [name#1a2b3c4d], the CUSTOM MODE notice on joining shows the same label, and the server log names it. Two servers with the same label play the same rules. A mode whose logic doesn't compile won't start, and says which line is wrong.
  • Where it runs: games you host with a custom mode (unranked). Ranked matches and time trials always play the standard rules.
  • Players joining need nothing extra: the logic runs only on the server, the network protocol is unchanged, and the HUD is the base mode's.

Gamemode editor (for mode makers; not in the game download)

  • A new local page for making modes: tools/mode_editor (http://127.0.0.1:8771/). Start from any built-in mode and edit it as code, blocks, a graph or a table of values; see what changed against the built-in, which phase each part runs in, and simulate matches with bots. Saving keeps the physics editor's movement settings in the same file untouched.

Everything that changed in 1.18.17, and why →

1.18.16

Two sound changes.

Sound

  • Hide and seek and tag: everyone hears the locator. When the seeker (or the tagger) fires the locator, every other player hears its ping from where the seeker stands, in the seeker's sound pack. Before, only the seeker heard it.
  • Three unused announcer lines are gone. AIRBORNE, TEN SECONDS and FIVE SECONDS were never played and had no recording in any voice; every voice now has 27 lines.

Everything that changed in 1.18.16, and why →

1.18.15

Servers

  • Dedicated servers with nobody on pause. With only bots (or no one) on, a dedicated server stops the game: no ticks, no snapshots, the clock stands still, and it uses next to no CPU. The bots' match is dropped, so the first player to join starts at warmup as on a fresh server. Hosting from the game and vs bots are unchanged.

Hide and seek

  • The seeker's game is now sent hiders within 24 m without a line-of-sight check (was 20 m), so hiders close by never pop in late. Other modes stay at 20 m.

Everything that changed in 1.18.15, and why →

1.18.14

Settings

  • DEVICES (VIDEO + AUDIO, bottom right): pick the sound output (system default or any device by name; the sound moves there at once), the microphone (saved for voice chat later: nothing records yet), the monitor fullscreen and borderless open on, and the refresh rate for exclusive fullscreen. REFRESH lists them again. A saved device that's unplugged falls back to the default with a notice.
  • EFFECTS VOLUME and ANNOUNCER VOLUME (VIDEO + AUDIO → SOUND, under VOLUME): turn the sound effects (the hitsound too) and the announcer up or down on their own. Right-click a slider: back to 1.00.

Everything that changed in 1.18.14, and why →

1.18.13

The menus, settings, in-game pages and map editor have a new look (the owner-approved UI redesign). Every setting is kept.

Menus

  • New title logo: QUARK is drawn like the app icon, with the Q split in your team colours. Pick another UI font and the title follows it.
  • Main, join, host and vs bots pages are tidied: BACK always bottom-left, the main action bottom-right, nothing runs off the screen. The server list has column headers and scrolls with the wheel.
  • HOST > ADVANCED: the network options (UDP port, auto port forward, server log) moved to their own page. Duel's 1V1 / 2V2 is now a TEAMS cycle.
  • Map, mode, ruleset and ladder pickers are one card grid with descriptions. Maps not built for the mode get one legend line instead of a warning under every card.
  • Custom mode: one panel on every tab, a new DASH + GRAPPLE tab, and sliders show the real value in the mode (GRAVITY: 22.0 M/S2) instead of a multiplier.
  • Info pages are larger text in one column and scroll with the wheel; the leaderboard and demos fit their panels.

Settings

  • Six tabs: PLAYER, GAMEPLAY, CONTROLS, VIDEO + AUDIO, CROSSHAIR, HUD, with hints under each setting.
  • Colour pickers replace every R / G / B slider trio (right-click: the default). The HUD tab picks its element from a dropdown.
  • Right-click a key slot to unbind it (or click it and press Del).
  • In game, the HUD hides while settings is open.

Text

  • Text fits by itself in every font: a label that is too long is first closed up, then shrunk, and only cut with "..." as a last resort. Fonts that ran outside the line are drawn to fit it.

In game

  • The notices under the score bar are one tidy list (no more lines drawn over each other), the scoreboard starts under them, and TOTAL K / D only shows when someone has one.
  • The F3 box no longer runs under the score bar; the cooldown captions are readable.
  • Pause, vote, queue and the in-game pickers use the new layout; the hide and seek tiebreak no longer covers the scoreboard.

Map editor

  • The side panel is in sections with larger text; EXIT sits with NEW / SAVE / TEST, BAKE LIGHT beside HOST EDIT SESSION.
  • A key bar under the 3D view shows what the map is playable as, its counts and the key help, and fits narrow windows.
  • Dialogs are centred in the 3D view. Dragging a resize handle towards the horizon no longer flips the face inwards.

Everything that changed in 1.18.13, and why →

1.18.12

A model modding update: ranked games only show the shipped models, more of the game's models can be replaced, and replacement models made in the new model editor look exactly like the built-in ones. Gameplay, the network protocol and demos are unchanged: 1.18.12 plays with 1.18.7 and newer (protocol 43).

Models

  • Ranked is fair again. Ranked matches and time trials now ignore the model files in your own overrides folder: everyone playing there sees the shipped models. Before, your own files applied in ranked too, so someone could make enemies huge or neon for themselves. Casual games, and spectating a ranked match, still show your own models.
  • More models can be replaced: the arms, the bomb (on a carrier's back and on the ground), the payload cart and the checkpoint gates are now models like the players and weapons (models/prop/ in the overrides folder). They look exactly as before.
  • Replacement models look like the built-in ones. A model made in the model editor is drawn the same way as the game's own: with outlines, crouching per box, team colours and face plates hidden in first person. A broken model file is ignored and the default is kept.

Tools

  • Model editor (for modders and the developer): tools/model_editor builds a local page that shows every model the way the game draws it, lets you edit it box by box or import a .glb, and exports it into the overrides folder.

Everything that changed in 1.18.12, and why →

1.18.11

Bots can now play custom "brains". Default bots play exactly as before.

Bots

  • Bot brains: everything a bot decides is now data: its reaction times, aim and movement numbers, the % chances to jump, dash, grapple or strafe, its weapon choice by range, the curves behind them, and which objective it goes for in each mode. The built-in brain is today's bot, unchanged.
  • Your own brains: put a .qbrain file in your user data folder's bots\ (Windows %APPDATA%\quark\bots\) and add a bot that plays it with addbot [a|b] [skill] brain=<name>. The local bot editor (tools/bot_editor) writes these files. brain=default forces the built-in bot.
  • A bot playing a brain file shows it when it joins, e.g. BOT ANNA (EXPERT, mybrain#1a2b3c4d) joined. A broken file is refused with the line and column of the error.

Servers

  • Dedicated servers: --botbrain <name> makes every bot the server adds play that brain. Brains work on local, listen and unranked servers; ranked and time trial never load them.

Everything that changed in 1.18.11, and why →

1.18.10

A font update: the game's text is now Rubik Bold, and the new SETTINGS > FONT page lets you pick another one, including fonts styled after other games and any font you add yourself. It plays with 1.18.7 and 1.18.9 games and servers (same network protocol).

Fonts

  • Rubik Bold is the new UI font (menus, HUD, chat, scoreboard, editor; the console stays monospaced). It's the same font as the logo, launcher and website title, and about as wide as Work Sans Bold, so every layout fits as before.
  • SETTINGS > FONT (the FONT button beside BACK, in the menus and in game): pick RUBIK, WORK SANS (the font of 1.17 - 1.18), QUARK CLASSIC (the original pixel font) or a font styled after a game: OVERWATCH, COCAINE DIESEL, QUAKE, HALF-LIFE 2, TF2, TF2 SECONDARY and APEX LEGENDS. The text changes at once, and your pick is kept.
  • The game-styled entries use the closest free font, bundled with the game. If you have the real one, it's used instead: Windows' Verdana for Half-Life 2, a Steam install of TF2 or Quake, or the real font files put in mods/fonts (the names are in mods/fonts/README.txt). Those files are only read on your computer, never shipped.
  • Your own fonts: put any .ttf / .otf in the game folder's mods/fonts (OPEN FOLDER on the FONT page) and press REFRESH to pick it. If a picked font is gone at the next start, the game goes back to Rubik and tells you.
  • Asset overrides: fonts/Rubik.* now replaces the default font; fonts/WorkSans.* replaces only the WORK SANS entry. Each bundled look-alike can be replaced by its own file name.
  • The game download is about 0.5 MB bigger (the built-in fonts).

Everything that changed in 1.18.10, and why →

1.18.9

A behind-the-scenes update to how builds are checked. Nothing changes in the game, and it plays with 1.18.7 and 1.18.8.

  • Automated builds now check only that the game builds and packages on Windows, Linux and macOS. The gameplay and menu tests run on the developers' machines before every update, and every testing build is played by hand before it reaches production, so builds come out faster.
  • The deep memory-safety checks (sanitizers and fuzzers) now run only on the build marked as the final test before a release.

Everything that changed in 1.18.9, and why →

1.18.7

A responsiveness, movement and HUD update: weapon switches show instantly, your two dashes can be used 0.6 s apart and recharge in 1.2 s, the wall bounce and super dash speeds change, the round clock is back, and the dash bar is clearer. 1.18.7 changes the network protocol (43): it doesn't play with 1.18.6 or older games and servers, so update both. Old demos are converted when the game starts.

Responsiveness

  • Weapon switches show instantly: your weapon, HUD, zoom and shots change the moment you press the key, instead of one ping later. Holding fire through a switch no longer silences your own shots (the laser's beam and sound used to stop while it kept firing).
  • Pressing one weapon key, then another, then the first again within one ping no longer leaves you on the second.

Movement

  • Dashes are 0.6 s apart and recharge in 1.2 s (was a 1.2 s cooldown between any two dashes). From full charges in the air you can use both dashes within a second (about 0.72 s apart). A spent dash recharges for 1.2 s from the end of the dash that used it, then comes back the usual way: landing refills both, a bunny hop one. On the floor that means a dash about every 0.72 s.
  • A dash jump still gives back the dash it used at once, so from two charges you keep both; a dash that's still recharging from earlier stays out until its 1.2 s.
  • Dash tech speeds: a dash into a wall now bounces off at 16 m/s (was 24); a dash jump still leaves at 24; a super dash now leaves 5 m/s faster than you were going before the dash (at least 11, at most 36), instead of a flat 30 (up to 36) however fast you were. Out of a run that's 14.5 m/s (was 30).
  • Quick dash (duel QUICK DASH / DASHING BLADES, BLADES arena): 0.2 s apart and a 0.4 s recharge (was a 0.4 s cooldown).
  • Custom modes: the DASH COOLDOWN setting (standard 0.6 s) scales the recharge too; SUPER DASH BOOST is now the m/s a super dash adds (standard 5, was x1.25); DASH SPEED also scales the wall bounce's 16. Old custom mode files keep working.

HUD

  • The round clock is back under the mode title in every timed mode: FFA, tag (its 60 s fuse), hide and seek, bomb (the fuse once it's planted), payload, both-ways payload, multi point and race. It had been missing since 1.17.0.
  • The dash bar: a dash you have but can't use yet is a whole light grey pip, and it turns blue the moment you can dash. A used dash is empty until it comes back. The pips used to grow from empty, so one dash looked like it had spent both charges.

Everything that changed in 1.18.7, and why →

1.18.6

A sound modding update: replacement sounds can now keep the volume you set for them.

Sounds

  • Your own volume for replacement sounds. The game normally plays a replacement sound or voice line at the loudness of the sound it replaces, so every sound pack stays fair. A file listed in sound-levels.txt now keeps its own loudness instead (it is only turned down if it would clip). This works for the overrides folder and for mods/sounds/.
  • Sound editor (for modders and the developer): tools/sound_editor builds a local page to hear every pack's sounds and every voice line, try them in gameplay scenes, trim and filter them, set groups to the same loudness, and export them into the overrides folder.

Everything that changed in 1.18.6, and why →

1.18.5

A client performance and polish update: smoother frames, fewer stutters, faster map loads, and a batch of fixes. Network protocol unchanged (42): it plays with 1.18.x games and servers.

Loading

  • The official maps ship with their lighting already baked. No more bake on the first join after an update: Midtown 5.3 s → 0.05 s, Lodestone 2.8 s → 0.04 s. The download grows by about 12 MB.
  • Cached map loads are about 2.5x faster (the light bake's preparation runs on every core).

Performance

  • Text and HUD drawing is about 7x cheaper per letter (about 160 µs a frame with F3 open, 40-75 µs for a normal HUD), with exactly the same picture.
  • No more once-a-second stutters: the HUD's hud.cfg check, the settings page, Latent Sync and F3 no longer do slow system calls during the frame.
  • Sounds never make the game wait for the audio mixer.
  • Less work between your mouse and the screen: most of the remaining GPU setup now happens before the late mouse read.
  • Health bars, the editor, the netcode and the menus do far less per frame (details in the full notes).

Audio

  • 3D sounds follow you while they play: an explosion behind you moves to the other ear when you turn, instead of staying where it started.
  • Lower-latency normal audio on Windows 10+ where the sound driver allows it (about 3 ms instead of 10, without exclusive mode).
  • EXCLUSIVE AUDIO works on more devices (24-bit and float-only devices), and says N/A when the device takes none of its formats instead of BUSY.

Fixes

  • Kill feed, chat and name events could be lost when packets arrived out of order. They're now always delivered, in order.
  • The click that brings the game back after alt-tab no longer fires your weapon.
  • ALT TOGGLE scope: the view now zooms with the toggle (it only zoomed while the key was held).
  • ULTRA low latency kept its pacing when the GPU is the bottleneck (it slowly switched itself off).
  • Enemy footsteps no longer play in mid-air at high frame rates.
  • Killstreak callouts start fresh each match (a spree carried over to the next match).
  • A click just before Esc, chat or a map change no longer fires a stray shot.
  • Weapon kick recovers while scoped or with the weapon model hidden (unscoping replayed it).
  • Giant / double-size enemies' shots start at their eyes; a spectator sees the watched player's laser and sniper shots.
  • F3's input-to-frame number was one frame too high.
  • The custom mode editor's PLAYS AS reaches every mode; the console says "unknown setting" for a typo with a value; a possible crash in the map picker after deleting maps.
  • Editor: big maps stay smooth while editing (no 30 MB rebuild per keystroke or slider move), and an online edit can no longer change the wrong object when someone else adds or deletes one.

Everything that changed in 1.18.5, and why →

1.18.4

A small server fix. Network protocol unchanged (42).

Servers

  • A big reliable message, such as a long chat line, a ranked ticket or a map edit, can no longer get stuck waiting while a crowded snapshot has no room for it. The oldest one now always gets its room, and that snapshot carries fewer projectiles instead. This is the server half of the fix for occasionally lost kill-feed lines, chat and names. The client half comes with the next game update.

Everything that changed in 1.18.4, and why →

1.18.3

A server update: dedicated servers use far less CPU, and a server that can't keep its tick rate steady now lowers it by itself. Gameplay is unchanged and the network protocol is unchanged (42), so 1.18.3 plays with 1.18.2 games and servers.

Servers

  • Much less CPU. A Linux server with players on used about 30% of a CPU core on a small cloud VM. It now uses 10-12%. It sleeps until just before each tick instead of spinning, and it reads and sends its packets in batches. Each tick also costs 20-30% less: cheaper visibility checks, snapshot packing, bot thinking and lag compensation.
  • Late ticks lower the tick rate. If ticks keep running more than about 4 ms late (a busy or shared host), the server steps down to 500, 250 or 125 Hz at the next break. Before, it only did this when its own CPU use was high, so a slow shared VM stayed at 1000 Hz and played badly.
  • Short on bandwidth lowers the snapshot rate first (500, 333, 250, 125 a second), then the tick rate. It reacts to most players losing packets or lagging at once, or to a host's --max-upload-kbps limit. One player's bad connection no longer lowers the rate for everyone.
  • The server console's status shows the tick and snapshot rates, how late ticks run, the upload and download, and why the rate last changed.
  • New server options: --max-upload-kbps N and --tick-spin auto|N.

Everything that changed in 1.18.3, and why →

1.18.2

A small gameplay update: stronger A/D air strafing, a weaker W-only air turn, a quick dash that recharges faster, a super dash that hops higher the further down you look, a lighter sniper body shot, and six fixes. Network protocol unchanged (42), but the movement changed: play 1.18.2 against 1.18.2 servers, or your own movement will be corrected by the server.

Movement

  • A/D air strafing is stronger: with a strafe key held, the air strafe cap is 10% higher (2.3 to 2.53) and air acceleration is 15% higher. Strafe-jumping builds speed faster: about 20.7 m/s after one second from a run instead of 18.2.
  • W-only air turning is 10% slower at every speed.
  • Quick dash (duel's QUICK DASH and DASHING BLADES, the BLADES arena) now cuts the dash cooldown to 0.4 s instead of giving a third charge. You have the usual 2 charges.
  • Super dash: the further down you look, the higher you hop, from half a jump (0.31 m) just past 14.5° down to a full jump (1.22 m) straight down.

Weapons

  • Sniper: a body shot does 40 (was 50). A headshot still does 50, so it takes 2 headshots or 3 body shots to kill.

Fixes

  • Tag: players knocked out in one match no longer start the next match already out.
  • Payload (Railyard): in team B's attacking rounds, the cart's collision is where the cart is drawn, instead of at the other end of the track.
  • The payload cart's shadow no longer gets baked into the cached map lighting (maps re-bake their lighting once).
  • See-through parts of custom weapon models now show in first person.
  • A fresh announcer line is no longer cut off when 64 sounds are playing.
  • The dash bar on the HUD fills over quick dash's 0.4 s cooldown.

Everything that changed in 1.18.2, and why →

1.18.1

A fix for hosting on Windows. Network protocol unchanged: 1.17.0, 1.18.0 and 1.18.1 games and servers play together.

Fixes

  • STOP HOSTING no longer closes the game (Windows). Ending a hosted game with bots in it crashed the game without a message; it now returns to the main menu. The same crash hit BACK TO EDITOR after a test map, ending vs bots or a time trial, and a dropped connection while hosting. 1.18.0 fixed only half of this.

Everything that changed in 1.18.1, and why →

1.18.0

A latency and performance update: less time from your mouse to the screen, lower audio latency on Windows, and cheaper servers. Network protocol unchanged: 1.17.0 and 1.18.0 games and servers play together.

Display and input

  • Latent Sync (Windows, the new default PRESENT setting): no tearing, at nearly no-vsync latency. The game shows one frame per refresh and flips it just as the monitor's blank begins, with the mouse read as late as the frame's own render time allows. It times itself to your PC; if your PC can't keep up with the refresh rate, it runs unsynced (it tears instead of stuttering) until it can. A TEAR LINE OFFSET slider fine-tunes it. Linux and macOS default to NO VSYNC.
  • The mouse is read again just before the world is drawn (late latch), and the HUD and player shadows are now built before that read, so less sits between your mouse and the screen. Your weapon model always follows your aim exactly.
  • Raw mouse input on its own thread (Windows): an 8000 Hz mouse no longer costs frame time, and the cursor is held still while the game has it.
  • LOW LATENCY ULTRA is paced like NVIDIA Reflex: each frame starts just in time for the GPU, so ULTRA no longer costs fps.
  • Vsync in a window or borderless uses the driver's vsync instead of a wait for the desktop compositor: one refresh less delay (7 ms at 144 Hz).
  • Your own position is drawn as of now, not one server tick behind.
  • MAX FPS is a slider: drag or type any cap (0 = unlimited); right-click sets it to your screen's refresh rate (subtract a few for G-Sync / FreeSync).
  • GPU MAX CLOCKS (Windows, NVIDIA): sets "Prefer maximum performance" for the game in the NVIDIA driver, so a GPU idle half of every frame doesn't clock down. From the next start.

Audio

  • Windows sound goes through WASAPI with 10 ms queued (was 30 ms through WinMM).
  • EXCLUSIVE AUDIO (Windows): the sound device for the game alone, about 3 ms of buffering; other programs are silent while it's on.

Performance overlay

  • F3 shows a mouse-to-photon graph: every part of a frame as a bar on one time line in microseconds, from the mouse's report to the light leaving the screen at the crosshair (measured CPU and GPU times; the display's part worked out from its refresh rate and, with vsync, its real blank timing).
  • F4 shows only the mouse-to-photon number. VOTE START moved from F4 to F5 (your saved key moves too).

Servers and performance

  • Server ticks are 16-33% cheaper on average and the worst ticks less than half as long, with exactly the same results. Hosted servers keep their 1000 Hz on Windows 11 when the window is minimised.
  • Fewer frame-time spikes: no memory allocations per frame in a match, fewer rays per player, cheaper text, and a shadow pass that only covers where players are.
  • Faster map loads on big maps (the light bake's buried-face test looks only at nearby brushes), and leaving during a load no longer freezes the window.

Fixes

  • A crash when a hosted game's server thread ended (memory freed twice on Windows).
  • Remote players are drawn 7-16 ms closer to the present (frame time no longer counted as network jitter).
  • Held fire keeps the server's rhythm: sounds and tracers no longer drift late over a burst. The weapon kick recovers at the same speed at any frame rate.
  • EXCLUSIVE AUDIO no longer runs off the bottom of the settings screen.

Everything that changed in 1.18.0, and why →

1.17.0

A big one: two security reviews fixed, the owner's design decisions applied, rebuilt bots, a new font, and a new release process. Network protocol 42: old and new versions can't play together, so update servers and games together.

Gameplay

  • Overtime in payload, neutral payload, multi point and bomb: if the side that needs time is on the objective (or touched it in the last 5 s) when the clock runs out, the round goes on until 5 s after their last touch. The HUD shows OVERTIME.
  • Headshots are the head only: shoulders count as body. The sniper does a flat 50.
  • Headshot damage numbers are red.
  • Fixed spread patterns: the shotgun always fires the same pellet layout, and weapons with spread follow a fixed sequence while you hold fire. Your tracers show exactly where the pellets go.
  • Players with a high interpolation setting (up to 200 ms) now hit what they see.
  • The syringe is only in modes where you respawn (not VS, bomb, duel, 1v1 or tourney), unless a custom mode lists it.
  • Knife throw: the knife is disabled for 4 s (greyed with a timer), and nothing can be used for the knife's normal swing cooldown (0.75 s). The old shared throw cooldown and the extra delay after a throw are gone.
  • Syringe: each use heals you 10 HP, with a 1 s cooldown (was 1 HP every 0.1 s). A throw heals a teammate, disables your syringe for 4 s, and nothing can be used for 1 s. A teammate's syringe hit also brings back your thrown knife or syringe at once.
  • Weapon balance: rifle 4.95 a body shot (was 5.95) and 7.5 a headshot (was 8.5), no spread, and scoped it fires only 10% slower (was 25%); the shotgun's knockback is doubled; the laser reaches 24 m (was 32): more damage up close, the rifle wins at range; the sniper does a flat 50.
  • Projectiles fly in fixed 1 ms steps, so rockets, stickies and bolts follow the same arc on every server tick rate, and your screen draws them along that arc, gravity included.
  • The grapple no longer slows you down when it catches.
  • The grapple sticks to enemies: a hook that hits an enemy deals 10 damage (15 to the head) and pulls you both together until you meet (release, a dash, or your own grapple breaks it; teammates are passed through; in instagib, hide and seek and tag it only pulls).
  • Stickies stick to enemies they hit and ride along on them until you set them off, for the full blast (they see and hear STICKY ON YOU).
  • Dash tech: jump during a dash on the floor to keep its full speed (dash jump); look down and dash into the floor holding jump for even more speed and a low hop (super dash, up to 36 m/s); dash into a wall head-on (under 45°) to bounce off it at full dash speed.
  • Size modifiers (double size, giant, tiny) scale your collision box, not just your hitbox and camera.
  • A giant never spawns inside a wall: if no spawn fits, it spawns crouched or just beside one.
  • Rockets fly straight (no drop; was 12 m/s²). The alt-fire lob drops at 13.5 m/s² (was 36), so it arcs gently instead of falling at your feet. Stickies no longer inherit your sideways speed, only forward / back and up / down, so strafing doesn't throw them off target.
  • Faster movement: run 9.5 m/s (was 8), ladders 6.75 m/s up and 4.5 sideways (were 4.5 / 3), and you can steer a standing jump. Ground acceleration is 16 (was 12): full speed about as soon as before at the higher top speed.
  • At speed, A/D strafing turns better than holding W, from 9.5 m/s (run speed) up: holding W alone steers less and less above that.
  • Holding jump refills only one dash charge: bunny hopping never builds the second one back; land without jump held for both.
  • New sounds: a super (dash jump), a hyper (super dash) and the locator each have their own.
  • Thrown knives, crossbow bolts and thrown syringes stay where they land: in the wall until the match ends, or in the player they hit until that player dies. Just for show: nothing about the weapons changed.
  • Dashes keep 1 m/s of each dash (was 3).
  • Two dash charges, on top of the dash cooldown: a dash needs a charge and the 1.2 s cooldown, which starts when your last dash ends. Landing refills both charges, a bunny hop refills one, a dash jump leaves both, and a super dash or a wall bounce leaves one. You can't dash during a dash. The HUD's dash pips fill up while the cooldown runs.
  • Health bars are switched on for everyone once with this update (now the default); turn them off again in SETTINGS if you prefer.
  • Type a number into any slider, and right-click a slider to reset it to its default (including the custom-mode MOVEMENT page).
  • New settings: damage-number size, the damage flash at the screen's edges (now off by default; turn it on or set its strength in VISUALS), zoom FOV for the sniper's and rifle's alt-fire, and the map colour for fullbright flat textures.
  • Map editor: the grid goes down to 1/8 m, and the grid button says 1/8, 1/4, 1/2, 1, 2 and 4 m.
  • The knife's slash comes out of the knife you hold, like any weapon's shot, and has no box at its end any more.
  • Every button in the game is now tested automatically, which fixed buttons that did nothing, settings that didn't stick, wrong Esc behaviour and cut-off text.
  • Name colour: pick the colour others see your name in on the scoreboard, in chat and in the kill feed (SETTINGS). Name tags over teammates keep the team colour.
  • Hide and seek scoring: everyone seeks once. A hider still unfound when the round ends scores 1, and the seeker scores 1 for each hider found; a found hider scores nothing, and a fall scores nobody anything.
  • Hide and seek tiebreak: players tied for first after the last round play rock paper scissors for the match. Between two it's best of 3 (a draw is thrown again); with three or more, everyone throws at once and the losing shape is out (one shape, or all three: throw again) until two remain. Pick with 1 / 2 / 3 within 6 s; no pick means a random one.
  • The locator is a weapon (key 0) with its own model, held only by the seeker and the tagger: fire it to see one random hider / runner through walls for 1 s, every 5 s. It exists only in hide and seek and tag (other modes and custom modes never get it), and the use key no longer triggers it. Bot seekers and taggers use it too.
  • Hide and seek and tag: the seeker / tagger is seen holding the knife (or locator); hiders and runners hold nothing. Hiders are no longer shown the seeker's position through walls.
  • Tag: runners always see where the tagger is: a marker through walls with the distance, or an arrow at the screen edge.
  • Tag: going to spectator or leaving during a match eliminates you, and you stay out if you reconnect.
  • Bomb: a dropped bomb falls to the floor and goes back to an attacker after 15 s.
  • Heals stop at your life's starting health. Balance bots aren't removed mid-round while alive. The FFA scoreboard shows frags. Colosseum's tourney uses its opposite-end spawns. The server tick rate only changes between rounds.
  • Fixed: the laser did ~25x damage on servers that had been up for hours (the server clock lost millisecond precision). The server clock and every timer now use full precision and never wrap, however long a server runs.

Bots, rebuilt

  • They only know what a player could: a view cone with line of sight, hearing gunfire and footsteps with a rough direction, and memory of where they last saw you. No more 360° vision.
  • They react like people (450 / 300 / 200 / 150 ms by level), flick and overshoot, lose track of fast strafers and misjudge leads. Levels are clearly apart; experts are strong but beatable.
  • Difficulty no longer depends on the server tick rate. Advanced and expert bots bunny-hop, air-strafe, dash and grapple, and no longer dash into pits.
  • Bots keep off the edges: they simulate a grapple pull before taking it, never hop or dash toward a drop, and fight away from ledges (falls over every map in testing: 56 -> 5); fewer self-kills with rockets and stickies. They use their real (size-modified) hitbox for objectives, and hide and seek / tag bots no longer pick spots from the previous map. A bot added during a tag match plays the next one.
  • Navigation is built in the background at map load (no hitch when the first bot spawns). Fixed bots that sometimes never fired after switching weapons.

Ranked

  • Your ranked id is proven by your key, so nobody can play under your id, not even a server you join that passes your connection on to another one: what your game signs names the server you joined. (A dedicated server that players reach at an address it can't see itself, such as a router forwarding a different port or a container, says so with --own-addr host:port.) Your ratings, race times and Discord link carry over automatically the first time you start this version (the game keeps asking until the ranking server confirms it, and a match rated before that is merged in rather than replacing your old rating).
  • Match tickets: a ranked match only counts if the server opened it with the ranking server and the players' results agree. If your game sees a different result than the host's, it reports a dispute instead, and a disputed match is never rated (it's logged).
  • Live ranked matches are locked (1v1 vanilla, 1v1 laser vampire and FFA instagib; the Viaduct race isn't): no votes, map or mode changes, ranked off, kicks or team switches until it's over.
  • The first player to leave a live ranked match loses it; the player who stayed can then leave freely.
  • Race times are reported by the server that saw the run, and impossible splits are refused.
  • Discord links are verified: run /link in Discord, type the code in SETTINGS > DISCORD CODE. Crown roles go only to verified links. Linking shows what becomes public.
  • New accounts are provisional for 5 matches (one placement threshold everywhere).
  • A reconnect gets its old slot back only if it proves the same ranked id, and an FFA leaver who rejoins is counted once, as the leaver.
  • Spectators of a ranked match see health bars, crowns, models and HUD extras again; only the players have them hidden.

Servers and connections

  • 10 s reconnect grace in every game: your slot, team and score are kept; in a tourney a drop is no longer an instant walkover.
  • Tourneys are seeded by your average rating across the three ranked ladders (200 if unrated); top seeds get the byes.
  • Hosting shows if your port is reachable: the pause menu shows the UPnP result and whether friends can actually reach you (green / red with advice), with CHECK AGAIN.
  • Admin is the player hosting the game, nobody else. kick takes a player's name (or id), and addbot takes a skill name.
  • Joining does a quick address check, so forged packets can't make a server flood someone or kick a player; server-list queries and version-mismatch replies can't be used for amplification; hit rewind is capped by your real ping; chat is filtered and rate-limited; votes check map names and have a cooldown.
  • A malicious server or map can no longer write files outside the game folder, crash the game or freeze it; settings from a server that aren't real numbers fall back to defaults. A broken demo, package or server reply fails with an error, never a crash.
  • Hidden information: your game is no longer sent the health, weapon or firing of players you can't see, nor projectiles out of your sight (wallhacks have less to show). In hide and seek the seeker gets nothing about the hiders during the head start. While you're dead you see what the player you watch sees, and explosions out of sight still sound where they happen. Spectators still see everything.
  • New vote: move a player to spectator (callvote spec <name>, from 3 players): for someone AFK or causing trouble. They stay out of play until the next map. Kicking stays with the host or the server console and can't be voted.
  • The ranking server's address is built into the game (only a file signed with the release key can move it); it's hardened against spam, with cached leaderboards.
  • Smoother servers with many players: line-of-sight checks are spread over the ticks and capped (Midtown with 32 players: worst tick 11-13 ms -> under 1 ms), and sending snapshots allocates no memory.
  • Hosted edit sessions no longer hitch every 5 s: the autosave runs off the game thread.
  • Stopping or leaving a hosted game no longer freezes the screen for up to 15 s.
  • --own-addr is explained in the README, and a game hosted from the menu says on the pause screen when players reach it at an address it can't confirm as its own.
  • Fixed: a custom mode whose map list started with a blank entry switched the host to a map with no name.
  • Every server box runs a production and a testing server ("[TESTING]", next port up), each on the latest build of its channel. The testing server only runs while there's a testing build newer than production; otherwise it's off. A load governor shares the machine: when it can't carry both, the empty server slows first, then the one not playing a ranked match, then the other, down to 125 Hz; if that isn't enough the testing server closes until things calm down. Production never closes.
  • Ranked on testing servers and testing builds is played but never rated ("TESTING SERVER - RANKED NOT RATED"), and the ranking server refuses their results.

Your files and updates

  • Old demos are converted when you update (1.11 and later), so they keep playing; the originals are kept in demos/old/<version>/, and one that can't be converted says which version recorded it.
  • Updates delete only retired game files (ones an earlier version installed that this one doesn't): never your settings, maps, demos, screenshots or anything you made.
  • Your data lives in your user folder (Windows %APPDATA%\quark, Linux ~/.local/share/quark, macOS ~/Library/Application Support/quark): settings, ranked key, demos, HUDs, your maps. It's copied over on first start, and uninstalling never deletes it.
  • Folder names with non-ASCII characters (such as an accented Windows user name) work for every file the game reads and writes.
  • Replacement assets: sounds and voices (.wav, .ogg, .flac, .mp3), glTF models, the font and the icon can be replaced by files in overrides/ in your user folder (see docs/ASSETS.md).
  • Everything published is signed: game packages, test builds, the launcher (the standalone downloads too) and the website's file list. The launcher refuses any update whose signature doesn't check out, and checks that the signed release list names this exact version, channel and file. Versions from before signing (1.16 and older) install like any other, with no warning.
  • If an antivirus quarantines a game file (it happened to quark.exe of 1.15.1 and 1.16.0 on one PC: a false positive on an unsigned build), the launcher now notices: an update stops before anything changes (RETRY), and the game is never started without its exe. You're told how to restore it or add an exclusion, and REPAIR reinstalls your version; CHECK FILES checks every game file.
  • Windows exes now carry version information and a manifest (antivirus scanners flag anonymous exes more), and on Windows an update keeps your old quark.cfg and replaces an older installed launcher properly.
  • Launcher: a CHANNEL button switches between PRODUCTION and TESTING builds and lets you pick any version. It never downgrades on its own, updates itself, and the game brings every older launcher (and its shortcuts) up to date, so you never need to download the launcher again.

Interface

  • New font: Work Sans Bold, sharp at every size, with real lowercase.
  • Console: monospaced; Tab no longer opens the scoreboard; Tab lists every completion, for every command and argument. Chat and console have a real caret (arrows, Home / End, Delete).
  • Alt+Enter toggles borderless fullscreen and windowed; holding it no longer also presses Enter.
  • Chat: a Toggle chat key (unbound by default) hides or shows incoming chat, and SETTINGS has a Disable chat option that stays in sync with it. A chat key bound to a letter no longer types that letter into the chat.
  • Hitsounds come in four tiers by damage (under 10, 10-24, 25-50, over 50), each heavier and louder, in every sound pack (and replaceable in the Asset Studio: HIT, HIT_MED, HIT_HEAVY, HIT_BRUTAL).
  • Crosshair hit flash: choose its colour, or turn it off (the default is unchanged).
  • Health bars over other players are on by default for new players (still never in ranked; SETTINGS turns them off).
  • Sniper scope off: with SCOPE OVERLAY at 0 the sniper zooms with your normal crosshair, like the rifle and crossbow, instead of no crosshair at all.
  • Outline thickness: separate settings for the world's outlines and for players' outlines.
  • Map lighting is worked out in the background with a loading bar: the window no longer says "Not Responding", and joining a big map on a remote server no longer times out. It also fits your graphics card's largest texture size.
  • Fewer hitches: rescanning maps, refreshing the server list (it could freeze for 6 s while a fetch was pending), recording a demo and changing the announcer voice no longer stall the game.
  • Text that doesn't fit shrinks, then clips with "..." instead of overflowing. Long names no longer run into the next column in the scoreboard, the server list or the Discord setting.

Editor

  • Editing a built-in map: when you save or leave, it asks whether to keep your edits as a new map of your own (e.g. temple_edit). Built-in maps are never changed, and hosted edit sessions on them are never saved over them.
  • Fixed the crash when opening a map ("mymap"), and maps saving as "mymap" whatever you typed (SAVE AS in shared sessions).
  • Trim and clip (invisible wall) boxes can be edited, deleted and undone; the material cycle includes TRIM and CLIP, and clip boxes show see-through violet.
  • Move and resize handles on all six faces, visible and grabbable through other objects.
  • Edits apply in place (big group edits sync 4-5x faster); maps load about 4-6x faster.
  • Clip boxes can be selected from anywhere: click the same spot again to pick the next thing along your view, and FIND CLIP BOXES steps through every invisible wall. When handles overlap, the nearest one is grabbed.
  • An edit with several parts applies whole or not at all, undo included. Saved maps keep every digit an edit carries, so an edited map reloads exactly as edited.
  • A map that can't be saved under its own name gets a free name (mymap2, NAME_new2) and never overwrites another map.
  • Faster on big maps: the map is drawn as one static batch (about a third less frame time on Midtown), and there's no full rebuild after each edit.

Maps

  • Maps are generated from tools/make_maps.py (one file per map in tools/maps/) when the game is built. The map report grades maps against what movement can really do (bunny-hops, strafing, dash-ups, grapple) and checks nobody can get out of bounds.
  • Dojo: an invisible wall at the moat's far edge (a running jump used to clear it).
  • Maps are identified by the SHA-256 of their content (ranked map list, lighting caches, map downloads, editing sessions).
  • Map files have a version line, and every change to the format comes with a converter: older maps are converted when they load, and your own maps are converted once at startup (the originals are kept in maps/old/v<N>/). A map from a newer version still loads, skipping what this one doesn't know. Staircases and the map's setting are real keywords, kept by the editor.
  • Hand-made maps are checked and scored like generated ones but don't have to pass the automated map checks; their scores are listed in the map report for balancing.
  • Every offered mode has enough spawns on every map, spawns face open space and are spread out, ranked maps are checked for point symmetry, and the payload cart's path is checked against the geometry.
  • Ranked maps (Anvil, Dojo, Furnace, Gantry, Temple) have the sun straight overhead, so both sides get the same light.
  • Team spawns can no longer see the enemy's spawns: screens on Canal and Railyard, a screen wall before the defenders' north-yard spawns on Depot, bus shelters on Downtown, cover on Lodestone, moved pads on Midtown.
  • Railyard: a box on the cart's track moved beside it. Lodestone: the cart runs beside the station landing. Viaduct: a pillar no longer blocks the second race leg, and the start grid holds 8 racers.
  • Attackers and defenders reach every bomb site and point at about the same time (within 1 s, graded at the worst one): defenders used to get there up to 13 s early. Midtown and Lodestone's multi point spawns are re-staged; Depot's bomb sites are now halfway down each side (among the warehouse racks and on the loading dock); Lodestone's bomb sites moved to the middle of the mine (attackers used to reach one 10.8 s first).
  • Stricter map grading: only floor you can reach counts, loops and height are measured for real, balance is checked for every objective of every mode, and the long sightline band follows the laser's 24 m. Maps that fell below 7 were fixed: more cover on Midtown and Lodestone, extra ladders to the roof walks on Colosseum, Furnace and Temple, head-high field walls on Hamlet (and ways out of its creek, a ladder each side of the water tower), lights on Harbor, crowd barriers on Viaduct, more clutter and ladders on Depot, Railyard and Foundry.
  • Lodestone is graded in every mode it offers: its race now ends on the cage landing so it can't be skipped, free for all has 12 spread-out spawns, and the ore-cart track has cover along both sides. Lodestone is no longer offered for team VS, duel, 1v1 or tourney: those want a small arena, and the mine is about 30 times too big (you can still start it there, with a warning).

Website

  • New Assets and Sounds pages: spin every model and map in 3D and play every sound and announcer line, for the production or testing build, then make your own model (.glb) or sound (.wav) and drop it into your overrides/ folder.

Release process

  • New work lands on a testing branch as signed prereleases (the launcher's TESTING channel, and #testing-updates on Discord). Production releases come only from a version tag on the protected main branch and need Windows, Linux and macOS.
  • Tests run on Windows in CI too, and under address and undefined-behaviour sanitizers with fuzzing of packets, maps, custom modes and packages. Dedicated servers update only to signed releases of their own channel (production or testing) and run as their own sandboxed user.
  • Discord bot: at most 5 live server channels, a Testing Updates role, secrets in a protected file. /changelog understands testing builds, and the bot uses the game's built-in ranking server address.

Everything that changed in 1.17.0, and why →

1.16.0

  • macOS is back: Mac packages and launcher build again.
  • Rocket direct hits deal 50, and sniper headshots deal 50.
  • Lifetime K / D has its own scoreboard column that counts up live during the match. It's sent to the server when the game ends.
  • Sound mods without rebuilding: put WAV files in <game folder>/mods/sounds/<kit or all>/<SOUND>.wav and they load at startup. Each package includes a README explaining the layout.
  • Asset Studio: a page that lists every default sound, model and map, with players and a 3D viewer. Replacements uploaded there become the defaults in the next update.

Everything that changed in 1.16.0, and why →

1.15.1

(No macOS build this release.)

  • Spectating is obvious now: a big SPECTATOR banner under the score box.
  • Custom modes: every setting shows the standard value and what your mode changes it to (e.g. AIR ACCELERATION 2.20 -> 4.40). Long lists (maps, movement) add columns instead of running off the screen.
  • Discord: update announcements ping @Update Pings instead of everyone. A #get-pings channel greets new members and lets you pick Update, Game and Other pings.

Everything that changed in 1.15.1, and why →

1.15.0

(No macOS build this release.)

  • Custom modes: MOVEMENT page. Every movement setting can be scaled in a custom mode: crouch speed, ground acceleration and friction, air acceleration / strafe cap / overstrafe brake / air control, step height, dash speed / length / exit speeds / cooldown, bhop bounce, grapple range / pull / top speed / gravity / cooldown, ladder speeds. Everyone in the game moves by the same numbers.
  • Lifetime kills and deaths. Your kills and deaths add up across every session, version and mode; the scoreboard shows everyone's TOTAL K / D (outside ranked).
  • MOUTH sound kit: each sound trimmed to a sensible length (one footstep, not several).

Everything that changed in 1.15.0, and why →

1.14.2

(Includes everything from 1.14.1. No macOS build this release: GitHub's macOS build machines were unavailable.)

  • Movement back to the original feel: 8 m/s run, the original acceleration.
  • Rockets fly straight again (they no longer carry your momentum); sticky bombs still do.
  • Servers that dropped below 1000 Hz now try the next tick rate up every so often, and step back down if it doesn't hold (waiting longer each time).
  • Health bars only show when you can see the player's whole body, and are exactly as wide as their hitbox (no spotting players through walls).
  • Payload: when the teams swap sides, the cart starts at the new attackers' end of the track.

Also in 1.14.1

  • Run speed back to 8 m/s; explosions 25% louder.
  • New sound kit MOUTH replaces WOODEN; make your own kits in assets/sfx/custom/<kit>/.
  • Orbital: windows into space (a ringed planet, moons, stars).
  • Crown letters on the crown model; queue menu in two columns; the launcher always adds desktop and start menu shortcuts.

Everything that changed in 1.14.2, and why →

1.14.1

  • Run speed back to 8 m/s, with quicker acceleration (you reach full speed sooner).
  • Explosions are 25% louder.
  • New sound kit MOUTH (recorded by the owner) replaces WOODEN.
  • Make your own sound kits: drop files into assets/sfx/custom/<kit>/ (list of every sound in the README there).
  • Orbital: windows in the hull looking out into space - a ringed planet, moons and stars.
  • Crown letters (Q, LG, I, R) are part of the crown model.
  • Queue menu fits on smaller screens (two columns).
  • The launcher always adds a desktop icon and a start menu entry (the toggles are gone).
  • Score box no longer overlaps its text on small screens; notices show on the main menu; the leaderboard fits 4:3 screens.
  • Tests run about 3x faster.

Everything that changed in 1.14.1, and why →

1.14.0

Movement

  • Run speed 8 -> 12 m/s; gravity +10% (less floaty). The standing jump is still 1.22 m, so every ledge you could reach you still can. (The run speed went back to 8 m/s in 1.14.1.)
  • Dashes out of fast strafes still add speed (exit cap 32 m/s); overstrafing loses about as much as before.

Sound

  • New sound kits: DEFAULT, HEAVY METAL, MAGICAL, RETRO, WOODEN. Heavy Metal, Magical and Wooden use real recordings (Kenney.nl, CC0): steel hits and real explosions, glass chimes, wood knocks. Every sound has its own version in every kit, all mixed to the same loudness.
  • Race: a ding at every checkpoint and a chime at the finish.

Maps

  • Hightown: two big switchback staircases along the outside walls instead of the lift shafts.
  • Viaduct: an invisible ceiling at the top of the big walls (no more going over them), and lava falls down the middle of every section so you can't hook or dash around a leg.
  • Temple: the side staircases split either side of the bridge (no more cracking your head on it).
  • Lodestone: no lamp post in the middle of a staircase.
  • Lava kills on touch (everywhere, including editor maps).

Map editor

  • New materials: WATER (wade in it) and LAVA (kills).
  • Rotate 90 degrees about any axis (R, Shift+R, Ctrl+R) and mirror across any plane (F, Shift+F, Ctrl+F), with buttons; works on everything selected.
  • Editing together: chat (Enter) and votes (F1 / F2) work in the editor.
  • Calling a vote that's already running counts as a yes. "Play it" passes after 30 s unless someone votes no.

Menus

  • Checked every menu: Esc now behaves consistently (settings pages, info, custom mode editor, race stats), menus reset when you leave a game, Controls / Settings / HUD layout fit on 720p and smaller screens, server and demo lists scroll, the pause menu dims the game, wording fixes.
  • Menus no longer read files every frame.

Discord bot

  • The live player count channel sits at the very top of the server.

Everything that changed in 1.14.0, and why →

1.13.0

New map

  • Hightown (hide and seek, also tag): the top five floors of a skyscraper and its roof, high over a city. Offices round an open atrium, corner storerooms to hide in, lift shafts with ladders on every floor, staircases at opposite corners, and a roof terrace with a pool, plant room and helipad.

Maps

  • Gantry: more detail (pipes, signs, cable drums, crates, bollards); the lorry docks are solid floor now (only the flooded dock, with water, kills); spawn sheds open onto 4 m of floor; no more floating crates or lamps; the crane containers hang from slings.

Map editor

  • New objects: BOX, ROOM (a door in every wall) and STAIRS. Rooms and stairs stretch as one piece until you ungroup them.
  • New objects use the material you picked last.
  • GROUP / UNGROUP any selection (shift+click to select several).
  • IMPORT GROUP / EXPORT GROUP: save groups (a statue, a gameplay feature...) to the groups folder and drop them into any map. Import checks the clipboard first; export copies to the clipboard and opens the folder so you can name it.

Game

  • Crowns are a 3D crown on the player's head, with the board's letter: Q vanilla, LG laser vampire, I instagib, R race.
  • Ranked: no crowns on players, no health bars, no typing dots.
  • Health bars can sit over the head or at the feet (VISUALS).
  • Spectating shows the watched player's gun and the keys they're holding.
  • Console: TAB completes, UP/DOWN recalls earlier lines, colour highlighting, CTRL+V pastes, CTRL+C copies the line (or the whole log).
  • Interp: DEFAULT, DISABLED, or CUSTOM with a 1-200 ms slider.
  • Settings say what they set: PLAYER MODEL, SOUND PACK, VOICE.
  • QUEUE FOR ALL in the queue menu.

Discord bot

  • Update announcements ping @everyone.
  • A voice channel for each live server.
  • Queue for all button.
  • Clearer messages when the queue key or channel permissions are wrong; fixed a startup crash.

Everything that changed in 1.13.0, and why →

1.12.4

  • Dojo rebuilt: a simple eye-to-eye laser vampire arena. An open 24 x 24 m platform with nothing on it, a lava moat around it, decorations only outside, on a mountain top.
  • Discord bot: fixed the crash at startup (slash commands); install.sh is safer.

Everything that changed in 1.12.4, and why →

1.12.3

  • The Discord bot gets a one-command installer for a Linux server: tools/discordbot/install.sh. It sets up Python, saves the token, server ID and BOT_KEY securely, does a test run, and installs the bot as a service that starts at boot and restarts if it crashes.
  • The game itself is unchanged from 1.12.2.

Everything that changed in 1.12.3, and why →

1.12.2

Smoother servers under load

  • A busy server falling behind used to skip ahead in time, which made its clock jump.
    • Players' games read those jumps as network jitter and buffered more, so everyone else was drawn further in the past (31-54 ms instead of about 10 ms on a loaded 2-core machine).
  • Now the server catches up a little each frame instead, so its clock stays smooth. It still answers the network between catch-ups, so it can't freeze. Only a huge backlog is skipped.
  • Includes everything in 1.12.1.

Everything that changed in 1.12.2, and why →

1.12.1

Fixes

  • Choppy audio on Windows. Sound kept cutting to silence for a few milliseconds at a time.
    • The cause: the audio thread slept between buffers, and Windows rounds a short sleep up to about 15 ms, longer than the queued audio lasts.
    • The fix: it now wakes exactly when the sound card finishes a buffer, and keeps 30 ms queued instead of 20.

Announcer

  • All seven voices (male, female, British, old man, e-girl, India, spy) now have their own recordings of every mode call:
    • bomb planted and bomb defused;
    • hill captured and hill lost;
    • point captured and point lost;
    • round won and round lost;
    • overtime;
    • new high score;
    • new leader.
  • The "airborne" and the 10 and 5 second calls are gone.

Demos

  • OPEN FOLDER button in the demo list.
  • Record at 62.5 Hz or at full rate: every snapshot, up to 1000 Hz. Full rate is smoother but makes much bigger files.

Temple

  • Opened up: no outer walls any more. It's now a temple on a mountain top, with the courts ending at a cliff edge.
  • Spread out more, with a lantern-lit balustrade along the edge (gaps to drop through).
  • New cover and height: ruined cloister walls, two ruined towers (stairs, then a ladder to a 7 m perch) and raised offering plinths.

New map: Dojo (ranked laser vampire)

  • A great training hall. Both fighters start across the tatami in sight of each other, facing each other.
  • Nobody can fire for the first 5 seconds of a round; a HOLD FIRE countdown shows it.
  • There's a raised fighting ring, koi pools, galleries behind paper screens (the laser goes through them), and balconies at both ends.
  • You can climb ladders up to the roof beams and a ridge walk 12 m up.

Gantry (ranked instagib)

  • Rebuilt 1.5x longer, 2x wider and 2x taller.
  • Two catwalk tiers, cranes 18 m up (ladders onto them), a container yard in the middle and a gangway across the flooded dock.
  • Built for free for all now, the way ranked instagib is played: 14 spawns, mostly out of each other's sight. Nobody has a shot from spawn to spawn.

Midtown

  • Lights inside every office, on both floors.
  • Doorways are clear: nothing stands in them, and the facade strips no longer cross the doors.

Gameplay

  • Rockets and stickies inherit 90% of your velocity instead of 100%, so firing straight down while moving boosts you forward again.
  • Multi point and payload: defenders on the point (or by the cart) only earn objective time while they're contesting it, with an attacker there too.

Everything that changed in 1.12.1, and why →

1.12.0

Announcer

  • Recorded voices: MALE, FEMALE, BRITISH, OLD MAN, E-GIRL, INDIA and SPY (Settings > VOICE).
  • New calls:
    • "You died".
    • "Headshot" and "Direct" (an air rocket kill).
    • Killstreaks: "Killing spree" (3 kills), "Rampage" (5), "Unstoppable" (7), "Godlike" (10).
    • Time left: "One minute remaining" and "Thirty seconds remaining".
    • "Round over".
  • A new 3-2-1-fight countdown.
  • When someone else gets a killstreak, you hear a sting and see a notice. You also hear a sound when you die.
  • Quips: press G (rebindable: QUIP) to say a random line from the voice pack. Everyone hears it from where you stand.
  • When someone types in chat, others hear soft key clicks and see "..." over their head.

Weapons and movement

  • Knife: 30 damage every 0.75 s.
  • Crossbow: headshots do 75, and a bolt hit shoves hard.
  • Bubble gun: single shots fire 5 a second. The alt-fire stream sends 5 bubbles when the nearest enemy is close, rising to 15 from 30 m away, so it can't one-shot up close.
  • Rockets and stickies: they inherit your velocity when fired.
  • Air strafing: a wider range of turn speeds gains speed, and overstrafing costs much less. Top speed rose a little: about 22 m/s after 4 s, up from 20.5.
  • Dash: it can now leave you at up to 28 m/s, so a dash always adds speed.

Tag and hide and seek

  • Locator: the tagger or seeker presses E (use) to see a random runner or hider through walls for 1 second. It has a 5 second cooldown.
  • Invisible ceiling: you can't hook or jump out over the outer walls of the arena maps any more. It's an invisible wall above them that only blocks players; shots, hooks and sight go through it.

Ranked and community

  • Crowns: #1 on any ranked board wears a gold crown, and the rest of the top 10 wear silver. They show over your head, next to your name in chat, and on the scoreboard. Turn them off in Settings > VISUALS > WINNERS CROWN.
  • Ranked instagib spawns: in instagib and free for all, you spawn where nobody can see you.
  • Instagib scoreboard: shows only GIBS and accuracy.
  • Discord link: type your Discord name in Settings (next to your name). The Discord bot uses it for leaderboard roles and queue pings.
  • Queues: ESC > QUEUE lets you queue for any mode or ranked ladder from inside the game. These queues are shared with the Discord server. When one fills, everyone in it is told, both in game and on Discord. If you're in a ranked match at the time, you're told when it ends.
  • Discord bot (tools/discordbot):
    • posts updates, live servers with player counts, a ping role for when a game starts, the queues, the leaderboards and the INFO text;
    • gives the #1 and top 10 roles.

Settings

  • New VISUALS page:
    • fullbright (a flat white map);
    • your shots: with the weapon model, always or never. They come from where the gun is, or would be.
    • other players' tracers and beams on or off;
    • health bars over players (not in ranked);
    • scope overlay opacity;
    • sticky counter;
    • winners crown.
  • Sticky counter: the HUD shows STICKIES n/6 while you hold the launcher or have stickies out.
  • Console: opens a console that sets any setting on the fly. Type help; list fov searches; fov 110 sets a value; /callvote ...` sends a server command.

Everything that changed in 1.12.0, and why →

1.11.0

Demos

  • Record what you see: ESC > RECORD DEMO, then ESC > STOP RECORDING. Demos go in the demos folder, named after the map, mode and time.
  • Watch them from MAIN MENU > DEMOS (newest first), or with quark --demo <file>. You see through the recorder's eyes, with everyone else, the chat, kill feed and HUD as they happened. ESC > STOP DEMO goes back to the list.
  • A demo carries its map, including your own and edited maps, so it plays anywhere on the same version. It records at 60 Hz, about 15-20 kB a second.

Key overlay

  • A new HUD element: W A S D, mouse buttons, jump, crouch, dash and hook light up while you hold them.
  • It's part of the verbose HUD (Settings > HUD > VERBOSE INFO). Move, size, recolour or hide it in the HUD layout editor (KEY OVERLAY).

Scoreboard

  • New ACC column in every mode: the share of your shots that hit an enemy (hitscan and projectiles; a rocket counts as a hit if its blast damages anyone).

Server freeze fix (why 1.8.0 and 1.10.0 never released)

  • A server catching up on missed ticks could get stuck forever if each tick took longer than real time. It only checked for "fell far behind" before catching up, never during. The release builds froze this way in the time trial test on GitHub's slower machines. A busy real server could freeze the same way. It now catches up at most 20 ticks at a time, then skips ahead and gets back to the network.
  • Tests made robust on slow machines:
    • The bot aim test's target strafes and turns at the edges, instead of teleporting back to the middle. Each level is measured for 25 s.
    • The multi point test waits for the round to start instead of a fixed time.
  • 1.11.0 includes everything from 1.9.0 and 1.10.0.

Everything that changed in 1.11.0, and why →

1.10.0

1.9.0's release build failed on a flaky test, so this release also includes all of 1.9.0 (see its notes): the new scoreboard score, outline colours, sniper collateral, the tag colours and more.

Ranked instagib is now a free for all

  • The instagib ladder plays FFA with a 5 minute limit; everyone on the server is rated by placement.
  • Vanilla and laser vampire stay 1v1.

Expert bots

  • Much better aim: faster reactions, tighter tracking, fewer lapses. They hit about 40% of rifle shots on a strafing target, up from 24%.
  • They grapple around far more: up smaller ledges, across shorter gaps, and they retry twice as often.

Fixes

  • The bot aim test strafed its target by the wall clock while the game ran sped up, so on a busy build machine it gave different results each run and blocked 1.9.0's release. It now strafes by game time.

Everything that changed in 1.10.0, and why →

1.9.0

Release fix

  • The 1.8.0 Linux build stalled in its tests and the release never went out. This release includes everything from 1.8.0.
  • A test run that hangs now fails after 25 minutes, and the log shows which test it stopped on. The time trial test also no longer fails on a slow machine.

Scoreboard

  • SCORE is now total damage to enemies / 10 + seconds on the objective (on the hill or point, or by the cart).
  • New DMG and OBJ columns show each part separately.
  • Race, hide and seek, and tag keep their own scores.

Players

  • Player outline colours: Settings > TEAM OUTLINE / ENEMY OUTLINE. Choose black, white, team colour, red, yellow, green, cyan or magenta.
  • Every player model is now mostly the team colour. The grey bodies on the robot, knight and heavy are gone.
  • When you spectate someone, you see their health.

Tag

  • The tagger is red on every screen, including their own. Everyone else is blue, and a new tagger turns red as soon as they're tagged.
  • "IT" is now "TAGGER".

Weapons

  • Sniper shots collateral: one shot hits every player in its line, up to the wall.
  • Laser alt-fire pulls 40% harder.
  • Rifle tracers last 20% less time.
  • Enemy shotgun shots now show their pellet tracers.
  • Hiding the weapon model also hides your own tracers and laser beam.
  • An enemy's shot sound no longer plays twice when their firing state flickers between snapshots.

Other fixes

  • Tourney: a bye can no longer win. Balance bots were being removed while they waited as spectators, which forfeited their matches.
  • Map editing by vote, then VOTE: PLAY IT: tested end to end. If the map can't be played, everyone now sees why.
  • Chat: pressing Enter shows the recent chat history while you type.
  • Mouse DPI is a text field: click it and type any DPI.

Everything that changed in 1.9.0, and why →

1.8.0

New map: Midtown (multi point)

  • A city centre the size of Lodestone: three avenues each way and sixteen blocks of two-storey offices.
    • Climb the offices through their stairs to the roofs, or up their fire escapes.
    • An elevated railway with two stations crosses the middle.
    • There's a park with a fountain and a pond, and city hall on its plaza.
    • Parked cars, buses, street trees, lamps and bus shelters fill the streets.
  • The attack: A the north intersection, B an office roof, C the park, D the railway station, E city hall.

Maps and modes

  • Each map is now offered for the mode it's built for, plus free for all. Lodestone is the map built for every mode (all of them except the ranked race). It has team spawns, a hill, bomb sites, a cart track and a race course.
  • You can still start any map in any mode. The menus warn when a map isn't built for that mode, because it may be missing what the mode needs.

Payload checkpoints

  • Maps can mark checkpoints along the cart's track (cartcheck 0.33). Reaching one adds 60 s, and the cart can't roll back past it. On maps with staged spawns, the spawns move up too.
  • Railyard has checkpoints at a third and two thirds of the way. You'll see a gate on the track and a tick on the progress bar for each.

Announcer

  • New voices from a neural speech engine, both deep and in a big hall: male or female (Settings > VOICE).
  • The countdown is clearer: each number is its own clean word.
  • New calls:
    • "You win!" / "You lose." at the end of every match (any mode).
    • "New high score!" for a race personal best.
    • "New leader!" when someone takes the lead in free for all.

Info

  • Main menu > INFO explains the modes, the controls, the HUD and settings, hosting and joining, the map editor, and the maps.

Fixes

  • Lodestone: the strata bands and timbering no longer run across tunnel mouths and stair openings.

Everything that changed in 1.8.0, and why →

1.7.0

Custom game modes

  • Build your own modes in game: Host > Custom mode > NEW / EDIT.
    • General: the mode it plays as, health, gravity, move speed, jump height, knockback, and dash / grapple / self damage / instagib / vampire / regen toggles. Time, score and round limits are also set here.
    • Weapons: turn each weapon on or off and set its fire rate, damage and projectile speed.
    • Maps: a map pool that rotates to the next map after every match.
  • Presets are saved to custom_modes/<name>.qmode. Pick one in the Host menu and host as usual.
  • Everyone who joins gets the server's rules automatically. Movement and weapon timing predict exactly, and the server list shows the mode as [name] server.
  • Map votes on a custom server stay inside its pool and its mode. Ranked always uses the standard rules.

Fixes

  • The laser beam now comes out of the laser model's emitter and follows the HUD viewmodel position, depth and scale.
  • Jumping, falling, grappling or dashing into stairs carries you up them like walking does. You no longer bonk off the risers and lose your speed.
  • Switching weapons with fire or alt-fire held (e.g. scoped sniper) no longer fires the new weapon. Let go and press again.

Balance

  • Sniper: no spread when unscoped. Hip shots go exactly where the crosshair is.
  • Bubble gun: bubbles travel 20% faster (primary 15.6 m/s; the alt-fire stream 8.4 to 24 m/s).

New mode: multi point

  • The attackers take the map's points one at a time, in order.
  • Only the attackers capture. Standing on the point with no defender on it fills it, and more attackers fill it faster. A defender on the point holds it. A point left alone slowly drains.
  • Every point taken adds 90 s to the clock and moves both teams' spawns forward. The attack wins the round when every point falls; the defence wins if time runs out.
  • The sides swap after the round. More points taken wins, then the faster attack.
  • Maps define the points (point boxes, in attack order) and the spawns for each stage (spawn att2 ..., spawn def0 ...).

New map: Lodestone (multi point)

  • A working mine the size of four hamlets, two storeys deep.
    • North half: a sunlit surface (the pithead, the mill, spoil heaps) over room-and-pillar workings, cut through by an open pit with benches and haul ramps.
    • South half: two great caverns under the mountain, the shaft station and the crystal grotto with its underground lake. They're lit by a sun shaft, overhead lamps and glowing crystals.
  • Five points down the mine: A the pithead, B the pit floor, C the workings, D the grotto shore, E the mother lode.

Syringe (key 0)

  • Fire: heals you 1 hp every 0.1 s while held.
  • Alt-fire: throws it. A teammate it hits gets 30 hp at once and all their cooldowns reset (weapon, dash, grapple). The throw has a 2 s cooldown.

Weapons, HUD and controls

  • Every weapon's shots now start at its model's muzzle, wherever the HUD layout puts the model: tracers, beams and your own projectiles.
  • Rockets, sticky bombs and crossbow bolts have proper models (fins and flame, a spiked mine with a blinking core, a bolt with fletching).
  • HUD settings: the elements are in a dropdown, and the weapon model has its own button.
  • Weapon keys 9 (knife) and 0 (syringe) now work. Before, the knife's slot fell through to "next weapon".

Votes and bots

  • One button, CHANGE MAP / MODE: pick the mode, then a map for it. One vote (or one change for the host) does both.
  • Bot levels shifted down one: expert is the old advanced, advanced the old intermediate, intermediate the old beginner. Beginner is a notch easier than before.

Editor

  • A LADDER button: one object you can move and stretch. Its rails and rungs are made from it, so they always fit.
  • Move arrows on boxes, zones and ladders. The face squares still resize.
  • Clicking selects whatever is under the mouse. It used to only work near the middle of the view.

Fixes

  • Viaduct: buttress fins beside every arch, and a fifth spandrel wall. Hooking the middle of a wall and dashing along it to an arch no longer skips a section.
  • Walking up stairs: you could get stuck against a 0.5 m step when you stopped a hair short of it. Fixed.
  • Bot route finding: much faster on big maps.

Announcer

  • A voice counts each round in ("three, two, one, fight!").
  • With ANNOUNCER: ALL CALLS (Settings) it also calls the mode's moments: bomb planted / defused, hill captured / lost, point captured / lost, round won / lost, overtime.
  • Set it to COUNTDOWN for the count only, or OFF.

Race

  • Race now starts in practice: run the course untimed, with checkpoints. Nothing is timed or recorded, and it never starts by itself. Vote start (F4) and the race proper begins.
  • The race leaderboard only takes time trials on the shipped, unchanged Viaduct. The server only marks a run as a time trial there, and your client only sends (or counts as a personal best) a run on the official map.
  • Bastion, Foundry and Colosseum can also be played as multi point (their hill and bomb sites become the points).

Everything that changed in 1.7.0, and why →

1.6.0

  • Joining a full duel: if the sides are even and full, asking to join calls a vote to let you in. If it passes, you join and the teams go uneven. If the sides are already uneven, you just join the side with room. Ranked stays 1v1.
  • Free for all has no teams: joining says "joined the game" instead of "joined team A", and bots added to a free-for-all aren't put on a team either.
  • Weapon model in the HUD settings: a new WEAPON MODEL element. You can move it, push it nearer or further (depth), resize it, give it a custom accent colour, or turn it off with SHOW.
  • SHOW toggle for every HUD element: health, weapon name, cooldown bars, speed meter and weapon list can each be turned off.
  • Rejoining a hosted game: the host's automatic port forward (UPnP) is now renewed every 15 minutes while the server runs. Some routers only grant a 2-hour forward, or drop it on their own. When that happened, everyone already in the game stayed connected, but anyone joining or rejoining got "no response". The tests now also cover leaving and rejoining in free for all, team vs and duel, in warmup and mid-match.

Weapons

  • Every cooldown is 25% shorter. The exception is the laser: its "cooldown" is its damage tick, so shortening it would raise its damage by a third.
  • Every weapon does 15% less damage, except the laser and the knife. Headshots too: sniper 42.5, rifle 8.5, pellet 2.55.
  • Crossbow: 50 body, 60 headshot, 2 s cooldown.
  • New: the bubble gun.
    • It fires 3 slow, floating bubbles a second, each popping in a small 10-damage explosion.
    • Alt-fire shoots a stream of 5 bubbles at once at different speeds, then takes 1.8 s to reload.
    • It's in the slot before the knife, bots use it, and it's in ranked vanilla.
  • Knife: 25% more reach (3.5 m), a 10% wider hit, and a swing that misses keeps cutting along your aim for another 0.12 s.

Visibility and lighting

  • Players don't vanish behind corners anymore. The server now checks line of sight from both sides of your head to the enemy's head, chest, knees and shoulders, now and a quarter of a second ahead. A player stays shown for 0.6 s after leaving sight (was 0.3 s).
  • Indoor lights are 10% brighter.
  • New BRIGHTNESS setting in the video settings (0.6–1.8).

Everything that changed in 1.6.0, and why →

1.5.0

New maps

  • Downtown (king of the hill, a city block).
    • The hill is the plaza at the crossroads: a statue in a fountain, with benches and planters round it.
    • Four avenues lead in, and an underpass runs under the plaza with a hatch ladder up into it.
    • Around the plaza: an office building (two floors, plus a fire escape to the roof), a row of cafes with a roof terrace, parked cars, bus shelters, a metro entrance, and lit windows on every facade.
  • Orbital (team vs, a space station).
    • Each team starts in its docking bay beside a shuttle.
    • Three ways across: the cargo hall in the middle, a corridor down each side behind shoot-through glass, and an upper deck along the corridor roofs.
    • The hub has the reactor core and a catwalk ring. Its two observation windows are open to space, so fall out and you're gone.
    • Galleries at 8 m give each side a high perch.
  • Clockwork (duel) replaces Crucible: you're inside a giant clock.
    • The great wheel turns in the middle, over the works. Four spokes lead in.
    • A pinion up ladders above the wheel, balconies along the walls, pendulums in front of each spawn, and the clock face glowing on the end walls.

Every map has one mode

  • Foundry is built for tag now, with tool cribs to duck into. Bastion is built for team vs, and Colosseum for tourney. All three still run every mode.
  • docs/MAP_STRUCTURES.md explains, for every map, why its layout suits its mode and why each structure is there.

Viaduct: harder, and the grapple doesn't make it easy

  • The beams weave round posts, so a dash-jump can't skip a bend.
  • The stepping pads are 0.9 m, zig-zag, and have posts beside them.
  • The covered lane is a tunnel through a rock spur, so there's no roof to run along. The cliff path weaves under a solid overhang.
  • Beams are 0.6–0.7 m wide, and there are 12 checkpoints.
  • Measured on the path of a player who dash-jumps and grapples well: 12 jumps per 100 m, 20% of the course on narrow footing, and only 4% grappled.

Stairs and ladders

  • Every staircase is now walked by the tests, and none may cut through or hang over another path. Fixed along the way:
    • Single 0.6 m steps (the step-up is 0.55 m).
    • Decoration caps that made every step 0.6 m.
    • Anvil's stairs under the horns.
    • Galleries over the tower stairs on Anvil and Bastion.
    • Foundry's stairs into the offices.
    • Colosseum's aisle buried in the stands.
    • Canal's footbridge stairs into the corner stairs.
    • Harbor's stairs over a door.
    • Props on the stairs on Gantry and Railyard.
    • A house on Hamlet's windmill-hill stairs.
  • Ladders end flush with the floor at the top (the rails used to stick up and trip you). New ladders on Anvil, Bastion, Canal, Colosseum, Depot, Furnace, Gantry, Summit and Temple.

More to every map

  • Temple: a roof walk and pagoda lookouts at 11 m.
  • Gantry: a flooded dock, crane-leg ladders up to the crane bridges, and sunken lorry docks.
  • Anvil: forge hoods with a flue walk and chimneys.
  • Furnace: a ladder up the stack, and a roof walk over the side bays.
  • Summit: a beacon platform, cairns on the peak and firewood stacks.
  • Depot: a barge basin and a yard crane.
  • Hamlet: a gully, street lamps and moved houses.
  • Colosseum: the emperor's box and wreckage in the sand.
  • Canal: house-roof ladders.
  • Bastion: tower roofs at 12 m and torchlight.

Bots

  • Bots now walk stairs with 0.5 m steps. They used to ignore those steps.

Stricter map grading

  • Higher targets: detail and lights for decor; cover, loops and dead ends for layout.
  • Creativity: each feature is worth less, and a setting no other map has counts.
  • New "mode fit" score: each map is judged on what its own mode needs.
  • Only real floor counts: unreachable roofs and floors below the kill height are no longer counted as floor.
  • More realistic jump checks: dash-jumps are checked for a player-wide body.
  • Every map scores 7+ in every category, and the tests fail otherwise.

Everything that changed in 1.5.0, and why →

1.4.0

Every map now scores at least 7 out of 10 in decor, layout, movement, creativity and balance. The tests fail if one drops below.

Viaduct

  • Fixed the blocked path. The stairs up to the higher legs were solid columns down to the ground. One stood right across the first loop's beam, so the only way past was to cut around it. Stairs in the air are now flights of steps with nothing underneath.
  • Harder, and harder to cheese:
    • The east edge has a roofed aqueduct gallery, so you can't leap or grapple over it from above, then a collapsed stretch of zig-zag stones.
    • A tower ladder up to the south turn.
    • The west edge has a narrow cliff path under an overhang.
    • The skyway ends in stepping stones in the sky, over gaps.
    • Four spandrel walls cross the gorge with an arch for each leg, so nothing goes over them.
  • More to look at: pavilions over the start and the lap gate, lanterns along the course, rock strata on the gorge walls, a river far below.

Other maps

  • Furnace: stokers' ladders up to a deck on the furnace, and roofed side bays where you start.
  • Canal:
    • Lock-gate ladders up to the gate beams, a narrow perch 7 m over the water.
    • Humpback footbridges over both canals.
    • Boathouse canopies, and timber stacks you can shoot through.
  • Hamlet: the pond has water, there are garden sheds and woodpiles you can shoot through, and stone walls and log piles break up the open valley floor.
  • Bastion: a timber breastwork along the gallery, in panels you can shoot through.
  • Crucible: ladders up two corner pillars to perches over the moat; the spawn barricades are timber now.
  • Gantry: roofed loading sheds at both ends.
  • Temple: offering stones and toppled column drums in the open courts.
  • Railyard: crates and cable drums around the yard, away from the track.

Bots

  • Bots now use ladders to reach the floor at the top. Before, the climb wasn't linked to it.

Map analysis

  • Movement is rated more specifically. Every race leg is checked for how much a dash-jump (16 m) or grapple pull (45 m) can cut it, how many jumps it asks for, and how much of it is on narrow footing. The report lists each leg.
  • Fairer comparisons. Running and tech routes are now measured over the same floor points, and beams and stair steps get floor points.
  • Explanations. docs/MAP_STRUCTURES.md explains why every structure on every map is there.

Everything that changed in 1.4.0, and why →

1.3.0

  • Bastion is now a castle. Thick curtain walls you can walk along the top of, towers jutting out at the corners and flanks, gatehouses with portcullises where the teams start, banners and torches. The water moat round the keep is bigger.
  • Foundry is now a big indoor factory. A sawtooth roof with skylights, steel columns, overhead cranes with hooks to grapple, conveyor lines, presses, tanks, a catwalk ring, and ribbed walls with loading bay shutters.
  • Water and lava you can see. Deadly water and molten pits now show a blue or glowing surface. You still die if you fall in.
  • Dash: the speed you keep after a dash is capped at 24 m/s, the same as the grapple's top speed.
  • Map analysis:
    • quark_tests mapreport measures every map's decor, layout, movement, creativity, originality and mode balance, and writes docs/MAP_REPORT.md. The method is in docs/MAP_METRICS.md.
    • tools/map_shots.sh takes 16 shots per map.

Everything that changed in 1.3.0, and why →

1.2.1

  • Bots use the grapple. Advanced and expert bots hook up to ledges on their route and across long open stretches. They only fire when the hook will catch near where they're going, and let go once they arrive. In a grapple-only duel life every bot uses it, since it's the only way to move. A test checks that expert bots grapple (about 15 times in a 40 s match).

Everything that changed in 1.2.1, and why →

1.2.0

Headshots (top fifth of the hitbox):

bodyhead
rifle bullet710
shotgun pellet23
crossbow bolt40 (was 50)50
sniper4050

Movement:

  • Air strafing works properly. Air control (steering your momentum toward where you look) used to apply all the time, which cancelled the speed you gain from strafe-jumping. It now only applies when you hold forward or back alone, CPM style. Holding a strafe key and turning gains speed like Quake: a test goes from 8 to 20 m/s in 4 s of strafe-jumping.
  • Dashes build momentum. You come out of a dash at your old speed + 5 m/s (up to 36), instead of dropping back to where you started.
  • More vertical dash. Looking straight up or down makes the dash up to 85% vertical (was 30%).
  • Bhop bounce. Landing hard while holding jump bounces you higher than a normal jump: half of the extra landing speed, up to +8 m/s. A 20 m fall turns a 1.2 m hop into a 5.6 m one.

Everything that changed in 1.2.0, and why →

1.1.4

  • Fixed: a "double size" duel life kept your camera at normal height. Your view, your shots, the spectator camera and bots now use the giant's eye height, so they line up with the bigger model and hitbox.
  • Duel never repeats a modifier within a match. Previously it only avoided the one just played. With 30 modifiers and at most 21 rounds, every life of a match is now different. The test checks it.

Everything that changed in 1.1.4, and why →

1.1.3

Weapon balance from the owner:

  • Laser: 0.03 → 0.04 damage per tick. Time to kill drops from 3.3 s to 2.5 s.
  • Rifle: fires 10% faster (one shot every 0.202 s, up from 0.222 s). Time to kill drops from 3.1 s to 2.8 s.
  • Scoped rifle: scoping now slows the fire rate by 25% instead of 50%.

Everything that changed in 1.1.3, and why →

1.1.2

Republishes 1.1.1, whose release build stopped on a flaky bot-aim test. It includes everything from 1.1.1: dash and grapple in hide and seek and tag, and no knife throws in those modes.

  • Bot skill levels are further apart. Beginner and intermediate aimed almost the same. Against a strafing player with a rifle, the levels now land roughly 3 / 5 / 8 / 14 damage per second (beginner / intermediate / advanced / expert).

Everything that changed in 1.1.2, and why →

1.1.1

  • Hide and seek and tag: dash and grapple now work for everyone, seekers and hiders alike.
  • Fixed: endless knife throws. Holding alt-fire while clicking fire threw the knife past every check. In hide and seek / tag that meant unlimited throws; in other modes, a second throw while the knife was still away. Throws now follow one rule everywhere: knife in hand, and never in hide and seek or tag. A test holds both buttons and checks that nothing is thrown.

Everything that changed in 1.1.1, and why →

1.1.0

Ranked race: Viaduct time trials.

  • TIME TRIAL (main menu, or the leaderboard): a solo race on Viaduct, on your own machine with no other players needed.
    • Each round is one run, and they repeat for as long as you like.
    • The clock at the top shows your run time.
    • Every checkpoint pops up your split and how far ahead (green) or behind (red) your best run you are.
    • Time trials use the ranked fairness rules: default model, HUD, controls and 10 ms interpolation.
  • Leaderboard: a new VIADUCT TIME TRIAL column shows the fastest times. Only a new personal best is sent, and the server also keeps only your best.
    • Every submitted run includes the time at each checkpoint, so suspicious runs can be checked and deleted by hand (see tools/master/README.md).
    • The website shows the board too.
  • MY RACE STATS (on the leaderboard): every Viaduct run you finish, in a time trial or a normal race, is kept in race_times.log. The page shows:
    • your runs and best time;
    • your best possible time, the sum of your best segments;
    • your average and your average over the last 10 runs;
    • each checkpoint on your best run, and how much time it loses against your best segment there;
    • your recent runs, each with a bar against your best.
  • Race rounds now last 5 minutes (Viaduct is two loops). Protocol 21.

For the server owner: the ranking Worker needs the new table and code before times show up. It takes two steps in the Cloudflare dashboard; see tools/master/README.md → "Race time trials".

Everything that changed in 1.1.0, and why →

1.0.1

Weapon balance from the owner:

  • Crossbow: reload 1.5 → 2.0 s, bolt speed 90 → 76.5 (−15%). Time to kill is now 2.0 s.
  • Rocket: refire 2.0 → 1.6 s (−20%). Time to kill is now 3.2 s.
  • Sniper headshots: 50 damage, up from 40, on the top fifth of the hitbox. Two headshots kill (2.0 s); body shots still need three.

Everything that changed in 1.0.1, and why →

1.0.0

quark 1.0. Every map, mode, menu and system has been audited, optimised and polished for release.

What's in 1.0

  • 12 modes: free for all, VS, duel (1v1 / 2v2, 30 rulesets), 1v1 (9 rulesets), tourney, bomb, payload, neutral payload, king of the hill, race, hide and seek, and tag.
  • 15 maps: four ranked maps, one for each objective mode, all-mode maps, Hamlet for hide and seek / tag, and Viaduct. Viaduct is now a two-loop race that climbs higher each leg.
  • Ranked 1v1 on three ladders (Vanilla, Laser Vampire, Instagib). Ranked always uses the default model, HUD, controls and a fixed 10 ms interpolation, so nobody gets an edge.
  • Customisation:
    • five player models and five sound packs, which everyone sees and hears, with equal loudness;
    • HUD widgets with a drag-and-drop editor;
    • a verbose info HUD;
    • control scripts (SOCD / snap tap, alt-fire toggle);
    • per-mode HUD and control rules;
    • import / export of layouts and profiles.
  • Built-in map editor with network co-editing, and self-updating dedicated servers.

The road to 1.0 (0.33 → 1.0.0)

  • Audit: menus, modes, maps, balance, website and code, written up in docs/AUDIT.md. Thirteen rule bugs were fixed: tourney walkovers and joins, the tag and hide edge cases, bomb drops, empty FFA, payload tiebreaks and vote ballots.

Client frame rate, measured with the in-game benchmark on software GL, so only the relative change counts:

mapbefore (avg / 1% low)1.0
foundry35.6 / 21.041-48 / 25-29
harbor44.8 / 31.550-54 / 38-42
hamlet44.8 / 31.448-53 / 32-37

This comes from culling world chunks, a cheaper world shader, culling dynamic objects, an allocation-free F3 overlay and an exact frame cap. Anti-aliasing is optional and off by default: smooth edges (cheap) or MSAA 2x / 4x.

Server CPU at 1000 Hz:

  • Harbor (12 bots + 4 clients): 102 → 68 µs per tick, 6.8% of the budget.
  • Hamlet (24 bots + 8 clients): 166 µs per tick.
  • An empty server sleeps instead of spinning.

Bandwidth: about 62% less per client. Snapshots go out at 500/s, the self state is leaner, projectile velocity is sent only when it changes, and events are resent once per round trip. Interpolation delay is about 9 ms.

Fixes:

  • Self-hosted servers no longer drop to 500 / 250 Hz: a miscounted 50% "packet loss" caused it.
  • The knife throw no longer fires a rocket lob straight after.
  • Depot's stairs face the right way.
  • Every ladder on Hamlet is climbable, and a test checks it.

Polish:

  • UI text always fits its button.
  • Every screen has been checked by screenshot.
  • The website has been redone.

Known issues

  • A ranked match a player quits before the end isn't rated. That needs server-signed results, planned after 1.0.
  • Balance proposals for the rocket and sniper are written up in docs/AUDIT.md but not applied. The numbers are the owner's call.

Everything that changed in 1.0.0, and why →

0.38.0

  • Fixed: self-hosted servers dropping to 250-500 Hz. The client counted the snapshot gap in ticks, but since 0.36 snapshots go out every other tick. It reported exactly 50% "loss", and the server lowered its tick rate in response. Loss is now counted in snapshots. A new test runs a loopback match with the rate check on and requires 0% loss at 1000 Hz.
  • Your sound pack is heard by everyone, like your model. Other players hear your guns, footsteps, grapple, hurt sounds and explosions in the pack you picked, and you hear theirs in theirs.
    • All packs are built at startup, so switching costs nothing.
    • Every pack is normalised to the same loudness as STANDARD (measured: within 0.01 dB on every sound), so no pack is louder or quieter.
  • Other players' hurt sounds are now played (positioned at them, throttled to at most 5 per second).
  • Ranked uses the default player model for everyone. Model changes are refused, bots spawn standard, and every client draws standard models. Sound packs stay allowed. The ranked screens now mention the default model too.
  • Protocol 20: player info carries model and sound pack.
  • Viaduct is now two full loops, each leg higher than the last:
    • leg 1 is the old course;
    • leg 2 climbs back south along the east edge;
    • leg 3 runs north along the west edge;
    • leg 4 is a high skyway down the middle to a finish above the start. It has five more checkpoints, beams, hurdles and slaloms. A run now takes about four times as long. Bots can still reach every checkpoint (checked by the tests).
  • Interpolation setting (Settings → INTERP): adaptive (the default), or a fixed 5-100 ms delay for other players. Ranked always uses a fixed 10 ms.
  • UI text always fits: any label too wide for its button, toggle, cycle or slider shrinks just enough to fit. This fixes the overlapping sound-pack, HUD toggle, widget editor and opposite-keys labels.
  • The ranked fairness notice no longer overlaps the ruleset line.
  • Review fixes:
    • big servers no longer send snapshots faster than their cap;
    • the delta-base ring survives tick-rate changes;
    • one large reliable event no longer blocks smaller ones;
    • keys held through a menu are no longer fresh presses afterwards;
    • widget labels can't break the file format;
    • hud.cfg hot-reload also notices quick edits;
    • control profiles store binds by action name, so they survive future updates;
    • sticky-bomb sounds use their owner's sound pack.
  • The website has a 1.0 refresh: stats, a "Make it yours" section, the twelve modes and the ranked fairness rules.

Everything that changed in 0.38.0, and why →

0.37.0

Customisation before 1.0: player models, sound packs, a scriptable HUD and control scripts.

  • Player models: STANDARD, HEAVY, SCOUT, ROBOT and KNIGHT (Settings → MODEL). Purely cosmetic, same hitbox, and everyone sees yours. Bots pick one at random.
  • Sound packs: STANDARD, ARCADE, HEAVY, RETRO and SOFT (Settings → SFX).
  • Verbose HUD (HUD LAYOUT → VERBOSE INFO): a dense block in the top right showing clock, version, FPS, FPS min over the last second, speed, ping, loss, tick / snapshot rate, enemies and teammates alive, round time, map, mode and K / D.
  • Custom HUD widgets (HUD LAYOUT → WIDGET EDITOR):
    • Show any game value as:
      • a number (optionally colour-graded);
      • a bar;
      • a colour-graded bar;
      • an icon whose opacity follows the value;
      • an icon + bar.
    • Values available: health, speed, dash, hook, fps, fps min, ping, loss, time, enemies, teammates, kills, deaths, score and tick rate.
    • Editing:
      • Add, duplicate or delete widgets.
      • Drag them anywhere; they snap to the nearest corner so layouts survive resolution changes.
      • Pick the value from a dropdown, then set style, icon, size, bar size, max, colours and label.
    • Layouts are saved in hud.cfg, which you can also edit by hand; changes reload live.
  • Import / export, for both HUD layouts and controls:
    • Export copies the layout to the clipboard and also saves a file in huds/ or controls/.
    • Import uses the clipboard when it holds a valid layout; otherwise it lets you pick a file from the folder.
    • FOLDER opens the folder.
  • Control scripts (Controls):
    • Opposite keys (SOCD): cancel out (default), last pressed wins (snap tap / null binds), or first pressed wins.
    • Alt-fire hold or toggle.
  • Mode rules: choose a HUD layout and a controls profile that load automatically in a given mode (for example a minimal HUD in FFA and toggle-scope binds in 1v1). Your defaults come back when you leave that mode.
  • Ranked fairness: ranked always uses the default HUD and no control scripts. Widgets, verbose info, SOCD, alt toggle and mode rules are all ignored there, and the ranked screens say so.

Everything that changed in 0.37.0, and why →

0.36.1

  • Server: batched hit feedback is only checked when there is some waiting (it used to scan all 32x32 player pairs every tick).
  • Removed the temporary anti-aliasing debug output and fixed a misplaced settings comment.
  • The 1.0.0 plan now includes the verbose HUD, scriptable HUD widgets, control scripts, ranked fairness rules, player models and sound packs.

Everything that changed in 0.36.1, and why →

0.36.0

Fixes

  • Knife throw: right-clicking to throw the knife no longer fires the weapon you switch to (the rocket lob) straight away. Let go of the button, then click again.
  • Rocket alt-fire: the lob now flies 1.4x as fast (70% of rocket speed), with the same 3x gravity.

Server: less CPU, less bandwidth

  • Snapshot rate: snapshots are sent at their own rate, separate from the 1000 Hz simulation. The default is 500 per second; --snaprate N changes it (1000 = lowest latency, 250 or less = less CPU and upload).
    • Your input is still simulated every millisecond.
    • Interpolation of other players grows by about 2 ms (7.1 → 9.2 ms on the localhost test).
  • Big servers keep the full 1000 Hz tick and send fewer snapshots instead. Before, the whole server dropped to 250 or 500 Hz above 16 players.
  • Leaner snapshots:
    • Your own grapple and dash state is only sent while active.
    • Projectile velocity is only sent when it changes.
    • Reliable messages are re-sent once per round trip instead of in every snapshot.
    • Result: 172 → 129 bytes per snapshot. With half as many snapshots, upload per player is about 62% lower (≈1.4 → 0.5 Mbit/s).
  • Snapshot buffers are reused instead of being reallocated every send.
  • An empty server sleeps between ticks instead of busy-waiting.
  • Benchmark (quark_tests serverbench): Harbor, 12 bots + 4 players, 102 → 69 µs per tick at 1000 Hz.

Protocol

  • Network protocol version 19: everyone needs 0.36.0.

Everything that changed in 0.36.0, and why →

0.35.0

Faster frames

  • World culling: the world is split into 12 m chunks, and only the ones in view are drawn, in a single draw call. Before, every surface was drawn every frame, including everything behind you.
  • World shader: same image (identical to within 1/255 per pixel), less work per pixel. Map colours are converted once per frame instead of once per pixel, and glow trim and distant scenery skip the lighting entirely.
  • Players, projectiles and effects outside the view are skipped. Their shadows still show up.
  • F3 stats no longer sort every frame time twice a second; that could itself cause the spikes it measures.
  • Frame cap: no longer drifts slightly below the rate you set.
  • Other: shader uniform lookups are a hash instead of a linear search, and finished sounds leave the audio mixer without shuffling the voice list.
  • Benchmark (software rendering): Foundry 35.6 → 48.2 FPS average, 1% low 21.0 → 29.3. Harbor 44.8 → 54.0 FPS, 1% low 31.5 → 42.5.

Anti-aliasing (Settings, right column; off by default)

  • SMOOTH EDGES (CHEAP): one screen-space pass that smooths only high-contrast edges, which in quark means the outlines. Everything else passes through untouched.
  • MSAA 2X / 4X: multisampled 3D scene. The HUD and menus are drawn after the resolve, so they don't pay for it.

Tools

  • quark --bench SECONDS: plays a vs-bots match with a slow look around, then prints avg / 1% low / 0.1% low FPS, the worst frame, and the CPU part of each frame.
  • Profiling builds (-DQUARK_ZONESTATS=ON) print per-zone times, including each zone's worst frame.
  • --menushot captures menu screens headless.
  • quark.cfg (your settings) is no longer tracked in the repository.

Everything that changed in 0.35.0, and why →

0.34.0

Fixes from the 1.0.0 audit (docs/AUDIT.md).

Modes

  • Tourney:
    • If a finalist leaves, the other player advances straight away (walkover), instead of playing forfeit rounds or stalling forever.
    • A player who joins into a departed entrant's slot no longer inherits their place in the bracket.
    • Spectators can't join a running tourney match with team a / team b.
  • Tag: if everyone else leaves, the last player wins. Before, they were eliminated at the timer with no winner. When "it" is passed on because the old "it" left, the new one gets the same 2-second freeze as after a tag.
  • Hide and seek:
    • The number of rounds is fixed when the match starts, so players leaving or joining don't cut it short or drag it out.
    • Hiders who fall off the map no longer count as found by the seeker.
    • Nothing carries over into warmup after the match: the last seeker no longer keeps the only knife.
  • Bomb: if the carrier falls off the map, the bomb drops where they last stood, not inside the pit.
  • FFA: a match with nobody left playing now ends, instead of looping in overtime.
  • Payload: tiebreaker rounds are decided on their own two rounds, not on rounds 1-2 again.
  • Votes: a player who joins into a departed voter's slot no longer inherits their vote.

Menus

  • VS now defaults to Bastion and Tag to Hamlet. Foundry is listed as an all-modes map.
  • New --menushot flag: screenshot the main menu headless, for audits.

Everything that changed in 0.34.0, and why →

0.33.3

  • The 1.0.0 audit is written up in docs/AUDIT.md: menus, modes, maps, balance, website and code, with a ranked fix list.
  • Fixed a crash when the in-game map picker was opened outside a game (only possible with a debug flag).

Everything that changed in 0.33.3, and why →

0.33.2

Ladders fixed

  • The rungs stuck out from the wall into the climbing space, so you snagged on them.
  • At the top, the roof's overhang, parapet and glow trim blocked the way over the edge.
  • The climbable area ended too low to carry you onto the roof.
  • All fixed: the rungs sit flush against the wall, roofs are cut open above every ladder, and every ladder carries you up and over.
  • A new test climbs every ladder on every map, so a broken one can't ship again.

Hamlet: more verticality

  • A ladder up the church's north wall onto its stepped roof. Walk the tiers up to the ridge.
  • A two-storey house with an upper floor up a ladder inside.
  • A plank bridge between two neighbouring rooftops.
  • A lookout tower at the orchard's edge, 7 m up by ladder.
  • The bell tower's belfry floor now has a small hatch over the ladder rather than a big hole.

Everything that changed in 0.33.2, and why →

0.33.0

Hide and seek (new mode)

  • One player seeks, everyone else hides. Movement is run and jump only: no dash, no grapple.
  • For the first 30 seconds the seeker faces the wall and counts on a blacked-out screen while the hiders hide.
  • The seeker has the knife, and one stab finds a hider. Nobody else has a weapon, and the knife can't be thrown.
  • The seeker wins the round by finding everyone (+3). If anyone stays hidden for 5 minutes, the hiders win (+2 each).
  • Everyone takes a turn seeking, and the top score wins the match.

Tag (new mode)

  • Like hide and seek, but tagging someone with the knife makes them "it". They stand still for 2 seconds, so there's no instant tag-back.
  • Each round lasts 1 minute. Whoever is "it" when time runs out is eliminated, and the next round starts with a new random "it".
  • The last player left wins.
  • An IT marker floats over whoever is "it". Each player sees a banner with their role.

New map: Hamlet

A big village for hide and seek and tag. It also runs FFA.

  • Streets around a green with a well.
  • A church whose bell tower you climb by ladder up to the belfry.
  • A dozen houses: flat roofs reached by ladders, or pitched roofs.
  • A barn with a hayloft.
  • A windmill on a terraced hill and a water tower with a ladder.
  • A pond, a creek with footbridges, an orchard, hedges, haystacks and carts.

Ladders

  • Maps can now have ladders (ladder x0 y0 z0 x1 y1 z1).
  • Move to climb, look down to climb down, stop to hang on, and jump to kick off.
  • Bots can find their way up them.

Also

  • Players with no weapon get no weapon view or weapon bar. The dash and grapple bars are hidden when those abilities are off.
  • Network protocol version 18: older clients need to update.

Everything that changed in 0.33.0, and why →

0.32.0

Every map reworked for gameplay

Each map now has its own layout idea and a centrepiece it's named after:

  • Crucible (duel): a molten moat around a central island, reached by four narrow bridges. The crucible hangs above the island. Knock your opponent into the moat.
  • Depot (bomb): three different lanes:
    • West runs through a roofed warehouse full of racks.
    • The middle crosses an open yard around a freight truck you can climb onto.
    • East drops into a sunken loading trench under a raised dock.
  • Summit (koth): the hill is a mountain peak, three terraces up with a beacon on top. There are crevasses in the corners and two mountain huts.
  • Railyard (payload): the track runs through a roofed tunnel, past a station platform with a canopy and under a footbridge. A steam locomotive waits on the siding.
  • Canal (neutral payload): water channels either side of the causeway; fall in and you're out. Each channel has three bridges. Lock gates stand at both ends, with houses on the banks.
  • Harbor (FFA):
    • The sea runs along the quay.
    • A freighter is moored there that you can board and walk through.
    • There are three piers and a lighthouse.
  • Bastion (all modes):
    • A keep stands on an island in a moat, with four drawbridges.
    • Raised bastions on the flanks.
    • Curtain walls with gates.
    • Battlements along the walls.
  • Foundry (all modes): a giant ladle pours into a casting pit, with molten runners leading off it. There are furnaces in the walls.
  • Colosseum (all modes): a gladiator statue in the middle and two open beast pits in the arena floor.
  • Ranked maps (all still point-symmetric):
    • Temple: reflecting pools and a pagoda shrine over a golden idol.
    • Furnace: glowing grates and molten trenches behind the inner walls.
    • Gantry: an open loading bay under the middle bridge, plus crane cabs with hanging containers.
    • Anvil: an anvil with horns, and two giant hammers.

New race map: Viaduct

A long course over a chasm. It starts on a bridge on stone arches, then goes:

  • up stepping stones,
  • through a covered lane and up a climb,
  • across a narrow beam (or grapple across the gap),
  • through a slalom and down more stones,
  • and home through the finish arch.

There are five checkpoints. If you fall, you restart from your last checkpoint.

Looks

  • Every map has distant scenery beyond its walls: a city skyline, mountains, smokestacks, harbour cranes, pagodas or ruins. It's unlit and costs almost nothing to draw.
  • Outdoor maps get yard-style walls with lamp posts. Bastion has battlements.
  • The payload is now an armoured ore cart: metal chassis on wheels, a team-coloured band and a glowing core, all in the map's colours.
  • Weapons take their colours from the map: metal bodies, with the map's glow on emitters, scopes and canisters.

Under the hood

  • New map setting void <y>: falling below that height kills. Pits use it, so you're out about a second after falling in, not after a 20 m drop.
  • New far material for distant scenery: no collision, no lightmap and not counted in the map's bounds. It's available in the editor.
  • Glow surfaces no longer take up lightmap space.
  • Bots:
    • They follow the shared edge between surfaces instead of cutting corners across holes.
    • On maps with pits, they brake at edges, even mid-hop.
  • New quark_tests playtest: bots play every map in its own mode and report kills, falls and objective progress.

Everything that changed in 0.32.0, and why →

0.31.1

  • Fixed: the Play vs Bots map picker thought you were in ranked if your Host Game settings had ranked on, and greyed out most maps.
  • RESET MAPS in the map editor now also removes retired built-in maps that older versions left behind (Arena, Tug, Duel, Sprint).

Everything that changed in 0.31.1, and why →

0.31.0

Map editor

  • MAPS FOLDER opens the maps folder in your file browser.
  • RESET MAPS puts every built-in map back to its original version. Click it twice to confirm. Your own maps are kept.
  • The original maps are built into the game, so a reset works offline.

Everything that changed in 0.31.0, and why →

0.29.1

Website

  • Redesigned the site to be simpler: a plain layout and one typeface, and the hazard stripes and stencil lettering are gone.
  • Added a map gallery with fresh in-game screenshots of all 13 maps, each labeled with the mode or ranked ladder it's built for.
  • The download button, weapon table, leaderboard and changelog all still load live.

Everything that changed in 0.29.1, and why →

0.29.0

Map looks

  • Every map now has its own colors (walls, trim, metal, glow and sky). For example: Furnace is blood-red, Harbor is docks at sunset, Temple is sandstone and gold, Summit is ice blue.
  • There are two new surface materials, metal and glow (lit trim). Both are in the map editor, so you can use them on your own maps.
  • New details on every map:
    • Glow lines along the walls.
    • Emblems on the end walls.
    • Lamps hanging under the roof beams.
    • Floor inlays.
    • Capped cover blocks with glow bands.
    • Metal catwalks, pipes and containers.
  • Rendering:
    • Surfaces have subtle panel detail.
    • Walls are darker near the floor.
    • Colors use filmic tone mapping.
    • The sky has a gradient and a sun glow.
    • The cost is a few shader instructions; the sky only shades pixels nothing else covers.

Maps renamed

  • No map is named after a game mode any more: Arena is now Bastion, and Tug is now Canal. Old configs and votes that use the old names still work.

Votes

  • A refused map vote now says why: the server doesn't have that map (it may be on an older version), or the map can't run that mode.
  • A test now calls a vote for every map and mode pair, to make sure none are refused by mistake.

Everything that changed in 0.29.0, and why →

0.28.0

Leaderboard

  • New LEADERBOARD screen in the main menu, with the top 20 for each ranked ladder (vanilla, vampire, instagib) and your own rating.
  • The website has a live leaderboard section with the top 10 for each ladder.
  • Ranked reports now include player names. Players appear after 3 ranked games.

Map pool

  • There are 13 maps now. Sprint and the old Duel map are retired.
  • Ranked maps:
    • Temple: vanilla.
    • Furnace: vampire.
    • Gantry: instagib.
    • Anvil: all three ladders.
  • All ranked maps are point-symmetric and have mirrored spawns.
  • Ranked can only run on a ranked map for its ladder. Votes and map commands enforce this.
  • Arena, Foundry and Colosseum support every mode.
  • Mode maps: Depot (bomb), Summit (koth), Tug (neutral payload), Railyard (payload), Harbor (FFA) and Crucible (duel).
  • Railyard and Tug got tracks, signal gantries and containers. Decorations on every map are now placed in symmetric pairs.

Duel

  • 30 Duel rulesets. Each one sets its own weapons, health, player size, movement and damage, and some add health regen.
  • A Duel match is now first to 11.

Everything that changed in 0.28.0, and why →

0.27.1

  • You spawn holding slot 1 (rocket), or the first slot the mode allows.
  • Laser Vampire healing fades over a round: 100% of the damage you deal at the start, down to 50% after one minute, then it stays at 50%. Even fights end instead of both players healing forever.
  • Knife throw: after you throw, the knife is gone for 5 seconds.
    • You switch straight to your next weapon with no delay on it, and can't pull the knife back out early.
    • The weapon list shows a countdown next to KNIFE.
    • In knives-only modes you keep stabbing; only the next throw waits.
    • Bots handle this too.
  • The network protocol changed, so servers and clients must both be on 0.27.1.

Everything that changed in 0.27.1, and why →

0.27.0

New alt-fires

  • Knife: alt-fire throws it. It's a fast knife that arcs a little and hits for full knife damage; one throw per second.
  • Shotgun: alt-fire shoots ricochet pellets. They bounce off up to 2 walls for half damage, so you can hit around corners. Your own ricochets never hit you.
  • Rifle: alt-fire scopes in like the sniper (lighter zoom), but you fire at half rate while scoped.

Weapon order

  • Number keys, scroll wheel and the HUD list now go: 1 rocket, 2 rifle, 3 laser, 4 shotgun, 5 sniper, 6 sticky, 7 crossbow, 8 knife.

Smarter bots

  • They pick the best weapon for the range from what the mode allows. Before, in rulesets like Classic or Blades, they kept asking for weapons they couldn't have.
  • They use the laser, sticky launcher and knife now:
    • They set off their stickies when you're in the blast.
    • They throw the knife when you're out of reach and close in to stab.
    • Better bots scope the rifle for long shots.
  • Each weapon has its own preferred distance: they rush with knives and shotguns, and hang back with snipers and crossbows.

Defaults and UI

  • Chat opens with Enter (keypad Enter too), instead of T. Configs that still had the old T/Y default switch over; a key you picked yourself is kept.
  • The crosshair, cooldown bars and speed meter hide while a menu is open, instead of showing through it.
  • The "hosting on port..." line moved under the top panel, so it no longer overlaps the pause menu.
  • Bot difficulty buttons fit (EASY / MEDIUM / HARD / EXPERT BOTS).
  • Buttons dropped the "..." (VOTE, MODE, MAP, RANKED, LADDER).
  • Free for all's countdown reads "STARTING IN 3" instead of "ROUND 1 - 3".
  • The controls screen names keypad Enter properly.

Everything that changed in 0.27.0, and why →

0.26.7

  • New industrial-style website:
    • Steel panels with corner bolts, hazard-stripe bars and stencil lettering.
    • Number readouts for tick rate, weapons, modes and players.
    • Feature and mode sections.
    • A weapon spec sheet built from the game's real numbers.
    • A how-to-host section.
    • A "shipping log" changelog.
    • Download and Discord buttons up top.

Everything that changed in 0.26.7, and why →

0.26.5

  • Discord: https://discord.gg/RERYWNWSXg
    • The main menu has a DISCORD button (next to QUIT) that opens the invite in your browser.
    • The website links it in the top menu, under the download button and in the footer.

Everything that changed in 0.26.5, and why →

0.26.4

  • Server list: long server names now scroll back and forth so you can read the whole name, with a short pause at each end. They're no longer cut off with "...". Map, mode, player count and ping stay lined up on the right.

Everything that changed in 0.26.4, and why →

0.26.3

  • Fixed: whole surfaces (like the floor) sometimes disappeared.
    • The renderer skips faces that are completely buried inside other blocks. It decided that from only 5 sample points, and corner columns plus something in the middle of the map could cover all 5. The entire floor was then treated as buried and not drawn.
    • It now checks a 9×9 grid, so only faces that really are buried get skipped.
    • Maps re-bake their lighting once.

Everything that changed in 0.26.3, and why →

0.26.2

  • No more getting stuck on floor lines. The floor seams, wall trims, wall panels and bomb-site pads used to stick out 2 cm, enough to catch you mid-jump or mid-hook. They're now set into the floor and walls, flush and look the same.
  • Grapple queues. Hold the grapple button and it fires the moment your aim crosses something within range. Sweep across a thin bar and it grabs it. A press during the cooldown fires as soon as the cooldown ends. One grab per press: release to fire again.
  • Servers on small cloud machines stay at a high tick rate. The server used to step down when ticks ran late, even while the CPU sat almost idle (shared VMs wake programs late). It now steps down only when the work itself is heavy, or packets are actually being lost.
  • Fixes:
    • The RANKED tag no longer overlaps the objective text.
    • Long server names are shortened so rows fit the server list.
    • The vote panel fits its buttons.

Everything that changed in 0.26.2, and why →

0.26.1

  • Explosions set off nearby stickies, yours and the enemy's: rockets, stickies, anything with splash. Chain reactions work.
  • Knife: reach is 2.8 m (was 2.2 m), and its beam now runs all the way from you to the tip.
  • New weapon models. Each weapon has its own shape:
    • Rifle: magazine, barrel and front sight.
    • Rocket launcher: flared tube with exhaust rings.
    • Knife: guard and long blade.
    • Sniper: scope on rings, bolt and muzzle brake.
    • Laser: glowing coils and emitter.
    • Shotgun: twin barrels with a pump.
    • Sticky launcher: drum magazine.
    • Crossbow: limbs, string and a bolt.
  • Servers: the auto-updater puts the shipped maps back before updating, so a stray local change can't block updates.

Everything that changed in 0.26.1, and why →

0.26.0

  • Servers update themselves. tools/server/install.sh sets up a Linux server as a service: it starts on boot, restarts on crash, and checks for updates every minute.
    • When a new version is out, the server builds it in the background.
    • It waits until no match is being played, says "restarting for an update - rejoin in a few seconds", and comes back on the new version.
    • Mid-match, players get "an update is ready - the server restarts after this match" instead.
  • Vote ranked on or off. In the vote menu, RANKED ON... lets anyone pick a ladder. On a ranked server you get SWITCH LADDER... and RANKED OFF instead.
    • A ranked server refuses bot votes, tourney votes, non-1v1 map votes and map editing, and says why.
    • Hosts get the RANKED tile in CHANGE MODE too, and it applies straight away.
  • Vote to edit the map together on any server. EDIT THE MAP TOGETHER in the vote menu, or EDIT MODE in the host's ESC menu.
    • On a normal server the edits are temporary: you can play the edited map (VOTE: PLAY IT or the host's PLAY MODE), but the file is never touched, and the original comes back when the map changes.
    • SAVE A COPY keeps your own copy of the edited map.
  • Maps redone:
    • Random debris replaced with tidy crate stacks in the wall bays.
    • New corner columns, chair rails and inset wall panels.
    • New tiled floor seams in both directions.
    • Wall lamps light every map.
  • Fixed: leaving a server sometimes opened the map editor. The click on DISCONNECT also landed on the MAP EDITOR button of the main menu that appeared under it. A click that changes screens no longer reaches the next screen.
  • Menu fixes:
    • The vote menu is shorter, and bot options are hidden on ranked servers.
    • The pause menu panel now fits all its buttons.
    • The server list shows [RANKED <ladder>] from the server itself, so it stays right after a vote.
  • The network protocol changed, so servers and clients must both be on 0.26.0.

Everything that changed in 0.26.0, and why →

0.25.0

  • RANKED in the mode picker. Host → Mode now has a RANKED choice holding the three ladders: VANILLA, LASER VAMPIRE and INSTAGIB. Picking any other mode turns ranked off. The separate RANKED toggle is gone.
  • Ranked only runs on official maps.
    • A map counts as official when it's a shipped map, checked by both name and file contents.
    • The map list greys out other maps, and a ranked server refuses to start on one or switch to one.
    • Each player's game also checks: on a map that isn't official, it doesn't report the result, so the match is never rated.
    • Map editing is off on ranked servers.
  • Always visible in a ranked game: a gold bar and a RANKED tag on the top panel, which reads "RANKED 1V1 - <LADDER>".
  • Type any value into a slider: click the number, type a value, then Enter (or click elsewhere) to apply it. Esc cancels. The number gets an underline on hover.
  • Knife: only the beam from your hand out to the tip now; the side-to-side swipe is gone.

Everything that changed in 0.25.0, and why →

0.24.2

  • Host screen with RANKED on: the mode button picks the ladder instead (VANILLA → LASER VAMPIRE → INSTAGIB), since ranked is always 1v1. Before, it showed whatever mode was picked last, like Neutral Payload, which ranked then ignored.
  • If the picked map can't do 1v1, a 1v1 map is picked automatically.
  • The bots toggle reads "BOTS: OFF (RANKED)".
  • The ranked hint line no longer runs past the edge of the panel.

Everything that changed in 0.24.2, and why →

0.24.1

  • Three ranked ladders, each with its own rating. Ranked is always 1v1, played on one of three rulesets:
    • VANILLA: every weapon
    • LASER VAMPIRE: lasers only, damage heals you
    • INSTAGIB: snipers, any hit kills
  • Hosting: pick the ruleset in the Host screen's 1v1 ruleset as usual. Any other ruleset falls back to Vanilla. The server list shows the ladder, for example [RANKED LASER VAMPIRE]. A dedicated server picks its ladder with --ranked --variant vampire.
  • Ratings: the scoreboard shows ratings for the ladder being played. Winning on one ladder never touches your other two.
  • Matches aren't rated after a vote switches the server to a ruleset that isn't a ladder.
  • Server owners: this needs the updated tools/master/worker.js (the database tables are unchanged).

Everything that changed in 0.24.1, and why →

0.24.0

  • Ranked mode. Host with RANKED on (Host screen), or run quark_server --ranked. Ranked servers show [RANKED] in the server list.
    • Your identity: your game makes a secret key the first time it runs (quark.key, next to quark.cfg). Your rank belongs to that key, so it stays on this computer. Copy the file to take your rank to another PC, and don't share it.
    • Reporting: when a ranked match ends, every player's own game sends the result (who played, which side, who placed where) straight to the ranking server. The match is only rated when every player reported exactly the same thing. One different report voids it, and so does a player who never reports within an hour.
    • The host is never trusted: it never sees anyone's key, and a lying server just produces reports that don't match. Anyone can host ranked.
    • Ratings use OpenSkill (Weng-Lin, Plackett-Luce). It handles 1v1, 2v2, 3v3, uneven teams and free-for-all including ties, and beating stronger players moves you more.
    • The rating number is shown as (skill − 3 × uncertainty) × 40, starting at 0. It reads 1234? for your first 5 games while you're still placing.
  • Where you see it: the scoreboard on ranked servers has a RATING column, and after a match you see how much your rating moved.
  • Not rated: tourney matches, matches with bots, and matches with more than 16 players (ranked servers don't add bots).
  • The network protocol changed to version 15, so servers and clients must both be on 0.24.0.

Everything that changed in 0.24.0, and why →

0.23.0

  • Fixed: thin gaps along the edges of accent and wallbang blocks.
    • Last update raised every accent and wallbang face slightly off its block to stop flicker where it meets another material, which opened gaps at the edges.
    • Now only faces that actually overlap a different-material face in the same plane get raised. Everything else sits flush.
  • Drag handles in the map editor.
    • Selected boxes and zones get a handle on every face; drag one to move that side.
    • Hold Shift to drag the whole object along that axis instead.
    • Spawns, lights and path points get arrows to drag them around.
    • Handles are colored by axis and snap to the grid. They also work when editing together.
  • The editor's 3D view stops at the side panel. The crosshair, where new things are placed, is now in the middle of what you can see.
  • Choose which modes a map allows. In the editor, click the mode buttons to allow or block each mode.
    • Dim buttons mean the map is missing something that mode needs, like team spawns.
    • Map menus and votes only offer the allowed modes.
    • Saved as a modes ffa duel ... line in the map file.

Everything that changed in 0.23.0, and why →

0.22.0

  • Edit maps together. In the map editor, HOST EDIT SESSION hosts the open map with your host settings (port, server list). Others join from the Join screen like any game and land straight in the editor.
    • Everyone can build. Each edit goes through the server, so all copies stay identical. Anyone who falls out of sync, or joins late, re-downloads the current map automatically.
    • You see the other editors as floating cameras with their names.
    • Undo (Ctrl+Z) undoes your own edits, not anyone else's.
  • The host's map is always autosaved: every 5 seconds while it has changes, and when the session ends.
  • Players who aren't the host are asked whether to save their own copy when they leave or the server closes. They can also click SAVE A COPY at any time.
  • Switch between editing and playing.
    • The host clicks PLAY MODE to save and start a normal match on the map, in its "built for" mode if it supports that, otherwise FFA.
    • EDIT MODE in the ESC menu brings everyone back into the editor, starting where they were standing.
    • Server console: editmode on / editmode off.
  • Chat, votes and other text commands now send several at once instead of one per round trip, so bursts (like holding an arrow key in the editor) don't lag.
  • The network protocol changed to version 14, so servers and clients must both be on 0.22.0.

Everything that changed in 0.22.0, and why →

0.21.0

  • Map editor (main menu → MAP EDITOR). Fly around and place boxes in base, accent or wallbang material, plus spawns (team A, team B, any, race), lights, bomb sites, a hill, race checkpoints and payload path points. Everything snaps to a grid of 0.25 to 4 m.
    • Controls: hold right mouse to look and use WASD to fly. Click to select. Arrows and PgUp/PgDn move the selection, Shift+arrows grow it, Ctrl+arrows shrink it. M changes material or team. Ctrl+D duplicates, Del deletes, Ctrl+Z undoes, Ctrl+S saves.
    • BAKE LIGHT previews the real lighting.
    • TEST saves the map and starts a private game on it. Leaving that game takes you back to the editor.
    • The panel shows which modes the map can be played as.
    • Maps save to maps/<name>.qmap. Use your own name: the built-in maps are replaced by updates.
  • Automatic map download. When you join a server running a map you don't have, or a different version of one you have, the game downloads it from the server while connecting. Downloads are kept in maps/downloads/ and reused next time.
  • Maps reload without restarting.
    • The host's pause menu has RELOAD MAP, which re-reads the current map file and sends any changes to everyone. The server console command is reload.
    • New or edited map files show up in the map lists right away.
  • The network protocol changed to version 13, so servers and clients must both be on 0.21.0.

Everything that changed in 0.21.0, and why →

0.20.0

  • Map lights. Maps can place light x y z radius [intensity] objects that are baked into the lightmap, so indoor rooms aren't pitch dark. Harbor's warehouse, Temple's under-bridge and Colosseum's arches have them.
  • No seams between matching blocks. Faces of different blocks that share a plane and material no longer draw an outline where they meet.
  • Wallbang always wins the z-fight. When surfaces overlap in the same plane, the dark wallbang material is drawn on top. Decorations can now cover gameplay geometry without flicker.
  • Longer weapon trails. Hitscan tracers last 0.25 s (sniper 0.9 s) and fade out. Rocket and crossbow trails are about three times longer.
  • Knife hitbox is drawn as a beam from your arm to the tip of its reach.
  • Speed meter sits under the cooldown bars and shows the exact speed. Its bar fills on an exponential curve, so it never maxes out; tick marks are at 5, 10, 20, 40 and 80 m/s.
  • HUD layout editor (Settings → HUD LAYOUT). You can move, resize and recolor the health, weapon name, cooldown bars, speed meter and weapon list.
  • Air step-up. Touching a step's lip while airborne (after a jump, hook or blast) now puts you on top, as long as you aren't still rising fast.
  • Slopes are not in the game. They are viable but would be a big change to collision and movement, so they are left out for now.

Everything that changed in 0.20.0, and why →

0.19.1

New 1v1 / tourney ruleset: Vanilla

  • Every weapon and all movement abilities, no gimmicks. It's first in the ruleset list, so tourneys can be played straight.

Maps got a lot less bland

  • Every generated map gets a detail pass:
    • buttresses along the walls with accent caps
    • base trims and cornices
    • pipes along the long walls
    • overhead beams in tall rooms (they double as grapple anchors)
    • floor strips
    • scattered debris The pass keeps clear of spawns, objectives and the payload track.
  • Foundry: an upper ring of catwalks linking the raised corners, wallbang window screens in the middle, and gatehouses on the flanks.
  • Harbor: a walled warehouse with doorways and a roof deck reached by stairs, plus a catwalk across the containers.
  • Temple: a bridge between the galleries with a little shrine on top, and arcades across both ends.
  • Colosseum: an inner ring wall with arches on all four sides and pillars at the corners, which breaks the bowl into lanes.

Everything that changed in 0.19.1, and why →

0.19.0

Netcode

  • Delta snapshots. The server only sends what changed since the last snapshot your client confirmed receiving. An unchanged player costs 3 bytes and an unchanged mode state 1 byte; mode timers are sent in tenths of a second, so they rarely change. If that snapshot is too old, a full one is sent instead, so packet loss can't break it.
    • With 8 players all moving, snapshots dropped from about 420 to about 180 bytes; when players are standing still they're much smaller still.
    • That's what lets big servers keep higher tick rates.
  • Adaptive interpolation delay. Other players used to be drawn a fixed 3 snapshots + 10 ms behind (13 ms at 1000 Hz). The client now measures how late snapshots actually arrive (99th percentile) and uses 2 snapshots plus that, between 1 and 50 ms. On a clean connection enemies are drawn several milliseconds closer to where they really are, and the server rewinds less for hit checks.
  • Enemies out of sight aren't sent. The server checks line of sight 20 times a second. Enemies you can't see arrive without a position, so wallhacks get nothing. Their name and score still reach the scoreboard.
    • Anyone within 20 m (earshot), teammates, and everyone while you're dead or spectating are always sent.
    • A player stays visible for 0.3 s after you lose sight of them, and their movement is extrapolated slightly, so peeks never pop in late.

Online play needs everyone on 0.19.0 (protocol 12).

Everything that changed in 0.19.0, and why →

0.18.0

Performance (measured with Tracy, 20 s of a bot match on Harbor)

  • Text draws once per character instead of 9 times. The 1-pixel black outline is now done in the shader, and UI vertices are half the size (16 bytes). Vertex data uploaded per frame went from about 400 KB to about 85 KB, and 2D drawing from 0.72 ms to 0.15 ms (median).
  • No first-frame hitch. Every shader and blend state is compiled while the map loads, behind the loading screen, instead of on the first frame of the match. The first in-game frame went from 57 ms to 6 ms, and the worst frame after it from 24 ms to 11 ms.
  • Less shadow work. Player and projectile shadows are only sampled inside the area those objects can actually shade. Everywhere else, the world and player shaders skip the 4 shadow samples per pixel. This helps most on integrated GPUs and at high resolutions.

Tourney

  • Matches are now best of 5 (first to 3).

Everything that changed in 0.18.0, and why →

0.17.2

For developers: Tracy profiling

  • Build with -DQUARK_TRACY=ON (optionally -DQUARK_TRACY_DIR=<tracy checkout>) and connect the Tracy profiler to see named CPU zones for every part of a frame:
    • event polling, net, input and prediction, world building
    • the shadow, world and dynamic passes, the HUD, 2D flushing, swap and the low-latency wait
    • the hosted server's simulate and snapshot steps, and the audio mixer
  • Plots show vertices and bytes uploaded per frame, and profiling builds also print those numbers every 5 seconds.
  • Normal builds are unchanged: the zones compile to nothing.

Everything that changed in 0.17.2, and why →

0.17.1

Website

  • Redesigned again, less corporate this time: scanlines, an ASCII logo, a pixel font, crooked polaroids of every map, and a weapon table printed like a terminal (still generated from the game's source every release). It's written like a human made it.

Everything that changed in 0.17.1, and why →

0.17.0

New mode: 1V1 rulesets

Pick 1V1 in the mode list, then choose a ruleset. Matches are rounds of one life each, first to 5. These are separate from DUEL (1v1 or 2v2 with a random modifier per life).

rulesetweaponstwist
Laser Vampirelaserdamage you deal heals you
Classicrocket, laser, knife
Quirkycrossbow, sticky, rifle
Hitscanrifle, sniper, laser, shotgun, knife
Instagibsniperany hit kills
Boomersrocket, stickyno self damage
Bladesknifedash recharges 3x faster
Moon Shotgunshotgun40% gravity

Weapons outside the ruleset are greyed out in the weapon bar, and switching skips them.

New mode: TOURNEY

  • Everyone in the server goes into a single-elimination bracket, bots included. Byes fill odd numbers.
  • Matches are 1v1, best of 3. Everyone else spectates the match in progress.
  • The bracket appears for everyone between rounds and matches, and on TAB. Eliminated players are struck through, and the current match is highlighted.
  • Choosing the setup: vote for TOURNEY like any mode (VOTE → MODE → TOURNEY → ruleset). Then, in warmup, vote TOURNEY MAPS... and TOURNEY RULES.... Pick several of each; matches rotate through them, and the server switches maps between matches.
  • Dedicated servers: --mode tourney --tourney-maps colosseum,temple --tourney-modes classic,hitscan.

Wallbang walls

  • A new dark grey material. It's solid to walk on, but hitscan weapons (rifle, sniper, laser, shotgun, knife) shoot through it for half damage. Tracers show the shot going through.

New maps

  • Temple (1v1): columns, side galleries, an altar, and wallbang screens across the middle.
  • Colosseum (tourney): tiered stands, corner towers, a central obelisk to grapple from, and wallbang shields.
  • Harbor (big free for all): a quay, shipping containers, crates, a crane to grapple from, and wallbang fences.

Up to 32 players

  • Servers can now take up to 32 players. 8 is still the default; raise it with MAX PLAYERS in the Host menu, or --max 32 on a dedicated server.
  • Big servers start at a lower tick rate (500 Hz above 16 players, 250 Hz above 24) to keep bandwidth sane. Warmup can still step down further.
  • The scoreboard shrinks its rows to fit.

Other changes

  • Sniper zoom is much milder: 45° instead of 24°.
  • Race: you can't damage or push other racers anymore; your weapons only affect you.
  • Menu backdrop camera no longer clips into walls.

Online play needs everyone on 0.17.0 (protocol 11).

Everything that changed in 0.17.0, and why →

0.16.2

Main menu

  • The menu background is back. The menu now has its own backdrop, a slow camera orbit around Crucible. Before, the menu was plain black until you had played a map. Its lighting is baked once on the first start, then cached.

Website

  • Redesigned floration.github.io/quark:
    • A download button for your platform, plus every other platform and the full game builds.
    • What the engine does, with tick rate, movement steps and input latency.
    • Every mode with a picture of its map.
    • A live weapon table, generated from the game's source on every release, so the numbers never go stale.
    • A hosting guide, and a collapsible changelog that shows tables and formatting.
    • Works on phones.

Everything that changed in 0.16.2, and why →

0.16.1

Launcher fixes

  • No more launchers multiplying in the background. If the launcher couldn't copy itself into the program folder (for example because another launcher was already running), it handed off to itself, and that copy did the same, over and over. It now never hands off to itself, and a launcher started by a hand-off never hands off again.
  • Only one launcher runs at a time. Starting it again just brings the open one to the front.
  • No more duplicate files in the program folder. The installed launcher always has the same name (quark_launcher.exe), whatever the download was called, such as "quark_launcher (1).exe". Leftover copies from older versions are deleted.

If you still have extra launchers running from the old version, end them in Task Manager or restart once. 0.16.1 cleans up the rest.

Everything that changed in 0.16.1, and why →

0.16.0

Weapon tuning

Time to kill is from 100 health with perfect aim.

weapondamagetime between shotstime to kill
Laser0.03 every 1 ms (beam)0.001 s3.3 s
Knife400.7 s1.4 s
Rocket402.0 s4.0 s
Sniper402.0 s4.0 s
Shotgun20 pellets × 2 (40 per blast)1.0 s2.0 s
Rifle7, full auto0.222 s3.1 s
Sticky351.0 s2.0 s
Crossbow501.5 s1.5 s
  • Damage can now be fractional.
  • Fast weapons fire several times per server tick when needed, so the laser does the same damage at 1000, 500, 250 or 125 Hz.
  • Holding fire keeps an exact cadence even when commands arrive late or bunched together.
  • Hit sounds and damage numbers for rapid hits like the laser are grouped every 50 ms.

New weapon behavior

  • Laser alt-fire is a tractor beam. It pulls the target toward you instead of pushing them away, at 75% damage. Pulses run back along your beam while it's pulling.
  • Rockets and stickies knock enemies upward twice as hard. Your own rocket jumps are unchanged.
  • Knife swings are visible. A slash trail sweeps across the knife's reach, with a marker at the tip showing exactly how far it hits. Other players see your swings too.

Other

  • The floating "PAYLOAD" label above the cart is gone.

Everything that changed in 0.16.0, and why →

0.15.0

Vote to change map or mode

  • Anyone in a server can call a vote to switch map or mode: pause menu → VOTE... → MODE... or MAP..., then pick from the full list.
  • A majority of the human players decides. When it passes, the server switches like a host change does, and everyone reloads into the new map.
  • The host can still change map or mode directly, without a vote.
  • Dedicated servers accept the same vote from chat: /callvote map <name> [mode] or /callvote mode <mode>.

Everything that changed in 0.15.0, and why →

0.14.5

  • Rifle is full auto again: hold fire to keep shooting (0.222 s between shots).
  • Launcher: quark is always added to Windows "Apps & features" / installed programs, so you can uninstall it from there. The option button is gone. Existing installs get the entry the next time the launcher starts.

Everything that changed in 0.14.5, and why →

0.14.4

Internet server list fixes

  • Your own server shows up. Most routers can't reach their own public IP from inside the network, so your own listed server never answered. The game now recognizes your own server and asks it locally instead.
  • Silent servers stay visible. A listed server that doesn't answer still appears after a couple of seconds as "NO RESPONSE (PORT NOT OPEN?)", and you can click it to try connecting anyway. Before, it was hidden.
  • More reliable queries: each listed server is asked up to 3 times, so a single dropped packet no longer hides it.

Everything that changed in 0.14.4, and why →

0.14.3

Mouse sensitivity in cm/360

  • Settings has a CM/360 slider under sensitivity, plus a DPI button (click to cycle: 400, 800, 1000, 1200, 1600, 2400, 3200, 6400).
  • Dragging either slider updates the other. Set your mouse's DPI and type in, or drag to, the cm/360 you use in other games.
  • Sensitivity uses the same scale as CS and Quake (0.022° per mouse count), so you can also copy your CS sensitivity number directly. The zoomed sensitivity scales with field of view, so scoping feels the same.

Everything that changed in 0.14.3, and why →

0.14.2

Weapons

  • Grenade launcher removed. It's back to 8 weapons.
  • Rifle is semi-auto: one shot per click. A click up to 0.15 s before the rifle is ready is kept and fires as soon as it can.
  • Sniper hip-fire spread is wider, and your tracer now shows exactly where the shot went. Spread is worked out the same way on your side and on the server, so what you see is what hit.
  • Crossbow gets a light zoom on alt-fire (70° field of view). It keeps the normal crosshair and has no scope overlay.

Server list

  • The internet-list status on the Join screen has its own line, so it no longer overlaps the title.
  • Host menu: "LIST ON INTERNET" is now PUBLIC, and "BOT BALANCE" is now BALANCE BOTS, so the labels fit.
  • When you host, the screen shows whether your game made it onto the internet list (under the port and UPnP status).

Online play needs everyone on 0.14.2 (protocol 10).

Everything that changed in 0.14.2, and why →

0.14.1

Menus

  • Pause menu: a single VOTE... button opens a list of everything you can vote on: start the match (in warmup), balance bots on or off, and bot difficulty.
  • Map and mode changes (host): CHANGE MODE and CHANGE MAP open the full list of modes or maps, instead of stepping to the next one.
  • Option buttons no longer have a "LABEL:" prefix. They just show the setting, like "BORDERLESS FULLSCREEN", "LOW LATENCY ULTRA" or "UNLIMITED FPS", so long values no longer overflow.
  • Crosshair customization is in Settings → CROSSHAIR, next to CONTROLS. It arrived in 0.14.0.

Launcher

  • Version picker: a scrollable list beside the changelog (mouse wheel or scrollbar) instead of arrows. The installed version is marked with *.
  • Window icon: on Windows, the window and taskbar now show the quark icon instead of the default one.

Everything that changed in 0.14.1, and why →

0.14.0

New weapon: grenade launcher (key 9)

  • Grenades bounce off walls and floors and explode after 1.6 s, or right away on a direct hit.
  • 35 splash damage and a 1 s reload (2 s time to kill).

Weapons and movement

New tuning (time to kill from full health with perfect aim):

weapondamagereloadtime to kill
Rifle7 (was 10)0.222 s3.1 s
Rocket45 full hit (was 35), drops faster (gravity 12)1.0 s2.0 s
Sniper504.0 s (was 2.0)4.0 s
Laser1 every 0.02 s (beam)—2.0 s
Crossbow501.5 s (was 2.0)1.5 s
Knife, Shotgun, Sticky, Grenadeunchanged2.0 s
  • Scope: the crosshair is hidden while scoped; the scope's reticle is used instead.
  • Dash tilts a little with where you look: up to 30% of its speed goes up or down.
  • Crouch removed. The crouch bind is gone from the controls.
  • Stickies on the payload cart stay stuck in the same spot on the cart and ride along with it.

Map and mode picker

  • In Host and Play vs Bots, clicking MAP or MODE opens a list of every map or mode instead of stepping through them one at a time.
  • Each map shows which mode it was built for. Maps that can't run the chosen mode are greyed out.

Crosshair customization

Settings → CROSSHAIR has a live preview and these options:

  • Style: cross, cross + dot, dot, circle or T.
  • Length, thickness and gap.
  • Outline on or off.
  • Color: your team color, or a custom RGB.

Bots

Every level now aims like a person instead of locking on:

  • The aim error drifts.
  • It trails strafing targets.
  • It sometimes has a moment of bad aim.
  • The hand shakes slightly.
  • Turning speed is limited and speeds up gradually, so long flicks take time.

Beginner aims better than before, and intermediate is much weaker. Hit rate against a strafing player at 14 m with the rifle:

levelhit rate
Beginner~7%
Intermediate~12%
Advanced~24%
Expert~43%

Internet server list

  • It's live. Hosted games with LIST ON INTERNET on, and dedicated servers run with --public, now show up on everyone's Join screen.

Other

  • The test suite runs on a sped-up clock: about 2 minutes instead of about 15.

Online play needs everyone on 0.14.0 (protocol 9).

Everything that changed in 0.14.0, and why →

0.13.0

New mode: DUEL (1v1 or 2v2)

  • 1v1 or 2v2, chosen when hosting (Host menu → TEAMS, or --teamsize 2 on a dedicated server). First to 5 rounds. Anyone beyond the team slots spectates.
  • Each life (round) is played under a random modifier for everyone, never the same one twice in a row:
    • Vampire laser: lasers only, and damage you deal heals you.
    • Rockets only
    • Knives only
    • 1 HP: everyone has 1 health.
    • Double size: both players are twice as big, hitboxes included.
    • Grapple movement only: no walking, jumping or dashing. The grapple is the only way to move.
  • The current modifier is shown under the scoreboard. A stalemate drains health, like VS.
  • New map Crucible, built for duels: high open ceiling (double-size players fit everywhere), tall pillars to grapple from, short sightlines. Picked by default for DUEL. Use --mode duel on a dedicated server (1v1 also works).

Time to kill: 2 seconds for every weapon

With perfect aim, every weapon now kills a full-health player in exactly 2.0 seconds:

weapondamageshots to killtime between shots
Rifle10100.222 s
Rocket3531.0 s
Knife4031.0 s
Sniper5022.0 s
Laser (beam)4250.083 s
Shotgun5 × 10 pellets (50 full blast)22.0 s
Sticky3531.0 s
Crossbow5022.0 s

Controls

  • Scroll wheel binds fixed: one action per wheel notch (smooth-scrolling trackpads and high-res wheels no longer skip several weapons), and the wheel now works for hold actions like jump or fire.
  • Binding an input to an action removes it from any other action, so it no longer triggers two things at once.

Weapons

  • You respawn with the weapon you had selected last (including a weapon picked while dead), instead of the rifle.
  • Rockets fly faster (48 m/s, was 32) and now drop slightly (gravity 5 m/s², about a third of the sticky's).

Internet server list

  • Hosted games and dedicated servers can now show up for everyone on the Join screen, not just on your LAN. Host menu → LIST ON INTERNET (on by default); dedicated servers use --public.
  • The Join screen lists LAN and internet games together and asks every server directly, so it shows only games you can actually reach, with real ping and player counts.
  • Runs on a free Cloudflare Worker, so no VPS is needed. It goes live as soon as the list's address is added to the website.

Server logging

  • Hosts and dedicated servers can write a game log to logs/:
    • Simple: deaths, map changes, chat, round and match wins.
    • Verbose: simple, plus hits and every player's position, velocity, aim, health and weapon at 125 Hz.
    • Extreme: everything at the full tick rate (up to 1000 Hz), including inputs, movement timers and projectiles.
  • In game: Host menu → SERVER LOG. Dedicated server: --log simple|verbose|extreme and optional --logfile PATH.
  • The log is buffered, so even extreme logging stays off the tick's critical path.

Online play needs everyone on 0.13.0 (protocol 8).

Everything that changed in 0.13.0, and why →

0.12.1

Sound

  • All sounds rebuilt to be more satisfying and less robotic: weapons have a weighty low "body" plus a filtered crack instead of raw noise, a short room reverb tail, and smooth fades (no clicks).
  • Hitsound is now a soft, rounded tick; kills are a two-note chime.
  • Footsteps and movement are softer and more muffled.
  • Everything is quieter: roughly half the previous loudness, and the default volume is lower (60%).

Text input

  • Ctrl+V (Cmd+V on Mac) pastes into any text box: server address, name, port, and chat. Ctrl+C copies the text box's contents.
  • Spaces and line breaks around a pasted server address are ignored.

Everything that changed in 0.12.1, and why →

0.12.0

New maps (one designed for each mode)

  • Duel (VS): small symmetric arena, center pillar, side walls, raised blocks by each spawn.
  • Depot (Bomb): three lanes split by long walls, sites A and B at the defenders' end with crates and a raised defender perch.
  • Summit (King of the Hill): a stepped plateau in the middle with stairs on all four sides, flank towers and grapple pillars.
  • Railyard (Payload): a winding track from the attackers' base to the defenders' base with cover beside the track and two overlooks.
  • Tug (Neutral Payload): straight symmetric track, the cart starts in the middle.
  • Foundry (FFA): raised corners with stairs, center dais, grapple pillars, ten spawns all facing the middle.
  • Sprint stays the race map; Arena still works for every mode except race.
  • Picking a mode in Host Game or Play vs Bots selects its map automatically.
  • Every map is automatically checked: spawns clear, and bots can reach every objective from every spawn.

Launcher

  • Choose any released version (or "latest", which follows updates). Your choice is remembered; the changelog shown is for the selected version. Note: you can only play online with people on the same version.
  • The launcher installs itself into your Programs folder (Windows: %LOCALAPPDATA%\Programs\quark, no admin needed) and removes the copy you downloaded. Existing installs are moved there automatically.

Fixes

  • Starting the game in borderless or exclusive fullscreen now renders at your screen's full resolution (it used to draw in the bottom left at the window size).
  • Arena: removed a spawn point that was inside the center pillar.
  • Bots path to the floor of a hill instead of the top of cover on it.

Everything that changed in 0.12.0, and why →

0.11.0

Sound

  • New custom audio engine: low-latency mixer (about 20 ms) on the system's own audio API (WinMM on Windows 7+, CoreAudio on macOS, ALSA on Linux, loaded at runtime). All sounds are synthesized by the game, no sound files.
  • Hitsounds: a blip when you hit someone (lower pitch for bigger hits) and a double blip for kills. Can be turned off (Settings > HITSOUND).
  • Footsteps, jumps and landings for you and other players; you can hear where others are walking.
  • Weapon sounds for all 8 weapons, for you and positioned in 3D for everyone else; explosions, sticky bombs sticking, crossbow bolts hitting.
  • Dash whoosh, grapple fire and grapple hook impact (you hear other players' hooks land too).
  • Getting hurt has a sound.
  • 3D sound: stereo panning by direction and falloff by distance.
  • Volume slider in Settings.
  • If there's no audio device the game runs silently.

HUD and controls

  • Weapon cooldown bar under the crosshair, above the dash and grapple bars.
  • Controls screen: an X button on each action unbinds it.

Everything that changed in 0.11.0, and why →

0.10.0

Pregame

  • Warmup ("pregame") now lasts until the players vote to start: press F4 (rebindable) or use VOTE START MATCH in the pause menu, then F1/F2 to vote.
  • No balance bots during warmup. When a start vote passes and the teams are uneven, a second vote asks whether to fill the uneven teams with bots for that match; the match starts either way.
  • Play vs Bots still starts by itself.

Payload

  • New mode: Neutral Payload. The cart starts in the middle of the track and either team can push it (team A toward the end, team B toward the start). Reaching the far end wins; when the 5 minute timer runs out, the team whose side the cart is on wins (dead center is a draw). A tug-of-war bar shows where it is.
  • Respawns (5 s) in both payload modes.
  • The payload cart is now solid: it blocks movement and bullets, so it's usable cover. Anyone the moving cart runs into gets pushed aside. Client prediction knows about it, so there's no stutter when you walk into it.
  • Bots push the neutral payload too.

Other

  • Protocol version 7.

Everything that changed in 0.10.0, and why →

0.9.0

Damage rebalance (longer time to kill)

No single shot does more than 50 damage (players have 100 health).

  • Sniper 50 (2 hits), crossbow 50 (2 hits), shotgun 10 pellets x 5 = 50 max (2 full hits)
  • Rocket 35, sticky 35 (3 hits)
  • Rifle 10 per shot (10 hits, about 1.1 s), knife 40, laser 60 damage per second
  • Rocket/sticky self damage from below is still 10% (now 3.5 max)

Damage numbers

  • When you hit someone, the damage floats above them. Hits close together add up into one number; big hits (40+) show larger in yellow.

Controls

  • Every action can be rebound: Settings > Controls. Two slots per action; each takes a key, a mouse button (including side buttons) or the scroll wheel. Backspace clears a slot, Esc cancels, "Reset to defaults" restores everything.
  • Bindable actions: move, jump, crouch, fire, alt fire, use, dash, grapple, each weapon, next/previous weapon, scoreboard, chat, vote yes/no, perf stats, screenshot.

Name

  • Your multiplayer name (used in chat, the kill feed and the scoreboard) can now be set right on the main menu. If two players use the same name, the second gets "(2)" added.

Everything that changed in 0.9.0, and why →

0.8.0

Bots

  • Play vs Bots (main menu): pick a mode, map, difficulty, and how many enemy and teammate bots. Runs a private local server, no port forwarding needed.
  • Four difficulties:
    • Beginner: slow to react (0.7 s), shaky aim, rifle only.
    • Intermediate: 0.4 s reactions, strafes while fighting, picks shotgun/rifle by range.
    • Advanced: 0.25 s reactions, bunny hops, dashes, uses rockets (aimed at your feet), crossbow and sniper, leads moving targets.
    • Expert: 0.15 s reactions, tight aim, fast turning.
  • Bots play every mode: they capture the hill, push or block the payload, carry and plant the bomb (and keep going for the site while shooting), defuse, and run races.
  • Bots find their way around with a navigation graph built automatically from the map's blocks (they plan jumps between platforms), so every map, including new ones, supports bots.
  • Bots use exactly the same movement and weapon code as players (no cheating), at any server tick rate.

Uneven teams

  • Team modes: when one team has fewer human players, an intermediate bot joins that team automatically, and leaves when another human evens it out. A bot also gives up its slot when a human joins a full server.
  • Players can vote: pause menu -> VOTE BOTS ON / OFF, or vote a bot difficulty. Press F1 (yes) / F2 (no). Majority of human players decides; votes last 30 s.
  • Hosting: "Balance uneven teams with bots" toggle in the Host Game menu.

Dedicated server

  • quark_server --bots N [--allies N] [--botskill 0-3] [--nobalance]; console commands addbot [a|b] [skill] and kickbots.

Other

  • Scoreboard shows BOT instead of a ping for bots.
  • Protocol version 6.

Everything that changed in 0.8.0, and why →

0.7.0

New weapons

  • Shotgun (6): 10 pellets x 9 damage (up to 90), wide spread, 0.85 s between shots. Close range. All pellets that hit the same player count as one hit.
  • Sticky launcher (7): lobs sticky bombs that stick to walls and floors (up to 6 out; a 7th removes your oldest). Hold right mouse to detonate them (armed after 0.35 s). 85 damage, 3.4 m blast, same self-damage rules as rockets (10% from below), so sticky jumps work.
  • Crossbow (8): fast bolt (90 m/s) with slight drop, 85 damage on a direct hit, no splash.
  • Keys 1-8 and the scroll wheel cycle all 8 weapons.

Other

  • Weapon switching is sent as a weapon number instead of button bits (room for more weapons). Protocol version 5.

Everything that changed in 0.7.0, and why →

0.6.1

  • New icon: a split team/enemy "Q" in the Rubik font. Used for the game, the launcher, desktop/Start Menu shortcuts, and the website (also its browser tab icon).
  • The Rubik font (SIL Open Font License) is included in assets/fonts so the icon can be regenerated with tools/make_icon.py.

Everything that changed in 0.6.1, and why →

0.6.0

Movement

  • More air control: stronger air acceleration, and holding a direction in the air bends your momentum toward it without losing speed.
  • Dash is stronger but shorter: a flat 24 m/s burst for 0.12 s (no gravity during it), then you keep 11 m/s or your previous speed if you were faster. Still 1.2 s cooldown.
  • Grapple now has a 1 s cooldown after you let go.
  • Dash and grapple cooldown bars under the crosshair (fill up and turn your team color when ready).
  • Still identical at every server tick rate (checked by the automated test).

Weapons

  • Rocket self damage is now 10% when the explosion is at or below your feet (rocket jumps barely hurt); explosions level with your body or above still do full damage.
  • Protocol version 4.

Everything that changed in 0.6.0, and why →

0.5.0

Launcher

  • Install options in the launcher:
    • Windows: Desktop icon, Start Menu entry, and Installed Programs (shows up in Settings > Apps / Programs and Features with its version, size and an Uninstall button).
    • Linux: Desktop icon and app menu entry.
    • macOS: Desktop icon and Applications folder entry.
  • Uninstall button (click twice to confirm): removes shortcuts, the programs entry and all game files.
  • The launcher now installs itself to a fixed per-user folder (%LOCALAPPDATA%\quark on Windows, ~/.local/share/quark on Linux, ~/Library/Application Support/quark on macOS), so shortcuts keep working even if you delete the file you downloaded. The game is kept in a "game" folder inside it.
  • No administrator rights needed: everything is per user.

Other

  • quark now has an icon (game and launcher on Windows, shortcuts on Linux).

Everything that changed in 0.5.0, and why →

0.4.0

Display and latency

  • Display modes: windowed, borderless fullscreen, exclusive fullscreen (legacy).
  • Present modes: no vsync (lowest latency, may tear), vsync, adaptive vsync (only tears when a frame is late; falls back to vsync if the driver doesn't support it).
  • Low latency mode (works on every GPU: NVIDIA, AMD, Intel, Apple):
    • On (default): at most 1 frame queued on the GPU, so your input never waits behind a deep render queue.
    • Ultra: nothing queued, and the frame cap now waits before reading input, so each frame shows the freshest input possible (just-in-time input, the same idea as NVIDIA Reflex).
  • F3 now also shows input-to-frame latency (average, minimum, 99th percentile, in 0.1 ms steps): from the moment the game receives a mouse/key event from the OS to the moment the GPU has finished drawing the frame that shows it. Measured with GPU timestamps, so it never stalls the game. Does not include the monitor's own scan-out time.
  • F3 shows the server tick rate and your snapshot loss.
  • Frame caps 500 and 1000 added.

Controls and HUD

  • Scroll wheel switches weapons.
  • Team and enemy colors can be set exactly with R/G/B sliders (presets still available; defaults unchanged).
  • All text has a 1 px black outline.

Everything that changed in 0.4.0, and why →

0.3.0

Movement

  • Left Shift: dash in the direction you're moving (or forward), 1.2 s cooldown. Keeps your speed if you're already faster.
  • Hold Space: automatic bunny hopping. You jump the moment you land, before ground friction slows you down.
  • Q: momentum grapple (like TF2). Press to fire at what you're aiming at (45 m range), hold to be pulled in. The pull adds to your momentum instead of replacing it, so you can swing. Everyone can see your rope.

Server tick rate

  • The server now starts at 1000 Hz and sends a snapshot every tick.
  • During warmup it checks whether it can keep up: late ticks, failed sends, and snapshot loss reported by every player. If not, it steps down to 500, then 250, then 125 Hz (the minimum) and tells everyone.
  • quark_server --tickrate N sets the highest rate to try.
  • Movement is simulated in fixed 1 ms steps, so it is exactly the same at every tick rate and every frame rate (checked by an automated test: identical positions at 1000/500/250/125 Hz with dashing, bhopping and grappling).
  • Other players are drawn 3 snapshots + 10 ms behind: 13 ms at 1000 Hz (was 50 ms).
  • Client prediction skips its replay when the server agrees with what was predicted (almost always), so high tick rates cost very little CPU.
  • Windows: 1 ms timer precision for accurate ticks; the hosting thread runs at above-normal priority.

Other

  • Servers are limited to 8 players (keeps 1000 Hz affordable on home connections).
  • Protocol version 3: older clients and servers can't connect to this version.

Everything that changed in 0.3.0, and why →

0.2.1

  • Fixed the release build: 0.1.2 and 0.2.0 were not published because the build configuration was broken. This release contains everything from 0.2.0 (sniper, laser, rocket, netcode and engine speedups).

New weapons

  • Sniper (4): 95 damage, hold right mouse to scope in (24 degree zoom, perfectly accurate when scoped, inaccurate from the hip). Mouse sensitivity is scaled while scoped so aiming feels the same.
  • Laser (5): continuous beam, 5 damage every 0.05 s (100 damage per second), 32 m range. Other players see your beam.
  • Rocket (2): faster rockets (32 m/s), 95 damage direct, splash damage and rocket jumping.
  • Weapon slots shown on the HUD. Rifle (1) and knife (3) remain as placeholders.

Performance and latency

  • Netcode: snapshots are now sent every tick (60 per second instead of 30) and other players are shown 50 ms behind instead of 100 ms, halving the visual delay.
  • Netcode: the server now runs your input the moment it arrives instead of waiting for its next tick (removes up to 16 ms of input delay). Rate-limited so clients can't move faster than real time.
  • Netcode: the shared part of each snapshot is encoded once per tick instead of once per player.
  • Engine: maps are now indexed in a spatial grid, so collision, hit detection and line-of-sight checks only test nearby blocks (identical results, about 2x faster on arena, more on bigger maps). Lighting bakes faster too.
  • Renderer: shader parameter lookups are cached instead of being looked up by name every frame; no per-frame memory allocation for player interpolation.
  • Weapon refire timing stays exact while holding fire.

Everything that changed in 0.2.1, and why →

0.2.0

New weapons

  • Sniper (4): 95 damage, hold right mouse to scope in (24 degree zoom, perfectly accurate when scoped, inaccurate from the hip). Mouse sensitivity is scaled while scoped so aiming feels the same.
  • Laser (5): continuous beam, 5 damage every 0.05 s (100 damage per second), 32 m range. Other players see your beam.
  • Rocket (2): faster rockets (32 m/s), 95 damage direct, splash damage and rocket jumping.
  • Weapon slots shown on the HUD. Rifle (1) and knife (3) remain as placeholders.

Performance and latency

  • Netcode: snapshots are now sent every tick (60 per second instead of 30) and other players are shown 50 ms behind instead of 100 ms, halving the visual delay.
  • Netcode: the server now runs your input the moment it arrives instead of waiting for its next tick (removes up to 16 ms of input delay). Rate-limited so clients can't move faster than real time.
  • Netcode: the shared part of each snapshot is encoded once per tick instead of once per player.
  • Engine: maps are now indexed in a spatial grid, so collision, hit detection and line-of-sight checks only test nearby blocks (identical results, about 2x faster on arena, more on bigger maps). Lighting bakes faster too.
  • Renderer: shader parameter lookups are cached instead of being looked up by name every frame; no per-frame memory allocation for player interpolation.
  • Weapon refire timing stays exact while holding fire.

Everything that changed in 0.2.0, and why →

0.1.1

  • Website: changelog is now built into the site, and the download button gives you the launcher for your system directly
  • Website no longer depends on the GitHub API (works even when it's rate-limited)

Everything that changed in 0.1.1, and why →

0.1.0

First playable build.

  • Custom C++ engine: OpenGL 3.3 renderer, custom UDP netcode, no game engine dependencies
  • Flat grey world with black outlines on every edge, pre-baked lighting (soft sun shadows, sky occlusion, light bounce)
  • Real-time shadows for players and projectiles
  • Multiplayer: host from the game or run quark_server; automatic port forwarding (UPnP); LAN server list
  • Client-side prediction, smooth interpolation, lag-compensated hit detection
  • Game modes: VS, Bomb, Race, King of the Hill, Payload, Free for All
  • Maps: arena (all team modes + FFA), sprint (race)
  • F3 performance overlay (average, 1% low, 0.1% low FPS)
  • Placeholder weapons (rifle, rocket, knife) and movement until the final designs
  • Launcher that downloads and installs updates automatically

Everything that changed in 0.1.0, and why →