Profile
Back to NewsBack
Hacker News 4 min
Reader Mode
Show HN: Quake ported to safe Rust, playable in browser

Show HN: Quake ported to safe Rust, playable in browser

21 hours ago

Move

WASDmove / strafe (id's own: the arrows and ,. — idcontrols on the console) mouselook (click to lock; or click-drag). Too slow or too fast: Options, Mouse Speed — on a Mac a gaming mouse starts slow (macOS passes on only part of its movement) ←→turn Spacejump / swim up Cswim down gamepadLeft stick moves, right stick looks, RT fires, A or LT jumps, bumpers change weapon, Start the menu (D-pad, A and B work it), Back the scores. idcontrols on the console gives id's own joystick (after joystick 1). A browser sees a pad once a button is pressed

Fight

clickfire Ctrlfire (DOS-style — arrows + Ctrl play fine without capturing the mouse) 1–8select weapon (1 axe · 2 shotgun · 4 nailgun, once owned) wheelswitch weapon — up next, down previous (the slop preset's; Classic: id's, unbound)

Interface

any keythe menu, while a demo plays Escmenu / back — with the mouse captured, Esc releases it and opens the menu. In fullscreen on Chrome/Edge Esc just toggles the menu (hold it to leave fullscreen); elsewhere a second Esc leaves fullscreen (browser rule) Tabhold for the scoreboard (monsters, secrets, time) ↑↓menu: navigate · ←→ adjust · Enter select Optionsscreen size, brightness, mouse, always run — Customize controls to rebind keys, Video Options for the picture's size, Slop Options for this port's own settings, and last Reset to Classic (id's WinQuake exactly) and Reset to slop (everything as it starts), each resetting everything — keys, Options, video — after asking; saved games stay. Open the page as ?classic or ?slop to start in that preset -=screen size down / up Alt+Enterfullscreen on and off, whatever has the keyboard: the game, the menu, the console (Option+Return on a Mac). With id's own controls (idcontrols) the chord is id's strafe and jump: use the fullscreen button. F11 is the browser's own, the whole window F6 / F9quicksave / quickload (id's own binds — also F1 help, F2/F3 the Save/Load screen, F4 Options, F10 quit, F12 a screenshot — a .pcx file in this page's storage, not a download yet; F12 only reaches the game in fullscreen, where the browser keeps it for devtools otherwise) ~console (see below) gamewith a mission pack on this page (the server's or your own): Quake, Scourge of Armagon or Dissolution of Eternity — on the start screen, under the view, or GAME in a phone's menu. A choice reloads the page as ?game=hipnotic / ?game=rogue (none for Quake): bookmark one to start there. Saves stay; an unsaved game ends
console commands — cheats & level select (press ~)
godinvulnerability noclipwalk through walls flyfly mode give afull armor — also h s n r c for health/ammo, or 1–8 for a weapon (e.g. give r 50) impulse 9all weapons + ammo map e1m2jump to a level (start, e1m1…e1m8) killrespawn preset classicid's WinQuake engine exactly (every slop option off); preset slop the port's settings, each also a variable (wasm_showfps 1, host_maxfps 60, …; Options > Slop Options); preset alone says where yours stand (no menu does). Your keys stay, and the controls (WASD, mouse look, gamepad, Always Run) are the same in both idcontrolsid's own 1996 controls: the arrows, no mouse look, no gamepad, Always Run off helpid's Help/Ordering screen wasm_helpthis port's list of console commands (echo, clear, the demo commands, …)

Own Quake? Add your copy's id1/pak1.pak for episodes 2–4, a mission pack's own hipnotic/pak0.pak or rogue/pak0.pak, and the CD music (music/track02.ogg…, or hipnotic/music/track02.ogg for its own): drop the files, or the whole Quake folder, anywhere on this page, or . They stay in this browser.

Shortcuts: ·

id Software's 1996 Quake, ported to Rust from its GPL source and software-rendered in your browser — no GPU, no dependencies. Shareware episode included (id's original quake106.zip, 9.1 MB). Source on GitHub. Quake is a trademark of id Software. quake-srp is not affiliated with or endorsed by id Software.

Contact (including legal notices): [email protected]

Chat with me