Quake II · The Edge
使用真正的 Quake II 引擎与 q2dm1 原版地图。默认采用 640 × 480 软件渲染,以保留原版的像素画面;也可在开局时选择 Full HD、4K 等真实渲染分辨率。Yamagi/Qwasm2 包含错误修复,因此这里不承诺与某个 1997 年客户端逐像素、逐帧相同。
游戏资源
首次启动从原始镜像取得 3.14 试玩版和官方 3.20 更新包,校验 SHA-256 后在浏览器内提取 q2dm1 所需数据。不会执行 Windows 安装程序。也可以选择本机 PAK 文件;文件不会上传。
原始资料归 id Software 及其权利人所有;本项目不与其关联。参见试玩版许可及更新包附带许可。本项目没有包含零售版 pak0.pak。q2dm1 的 CD 音乐曲目未包含,地图、武器和环境音效可用。启动菜单中的零售战役、扩展包等内容不在本项目范围内。
可选重制材质
地图重制材质来自 Tosher / q2textures 及其收集的作者作品。包含 q2dm1 的 64 张对应材质,保留原版天空;不可见的 skip 工具纹理无需替换。使用现有软件渲染器转换为原版尺寸、调色板与四级 mipmap,以较小下载量呈现与加载高清 PNG 相同的结果。未改变引擎、地图结构、光照、武器或人物模型。上游许可与说明。
风格材质
菜单提供原版、重制、老电影、油画、青花赛博、霓虹涂鸦、熔岩重金属。莫奈、手绘半成品、宫崎骏式手绘和 Dust II 的素材保留,入口隐藏。它们以同一重制材质图集为基础,使用图像生成工具风格化,再经现有软件渲染器转换;保留原版纹理尺寸、调色板与光照。艺术风格是材质创作方向,不表示相关艺术家参与或认可本项目。各浏览器独立保存选择,开局仅下载所选材质包,约 0.7 MB。
配套角色
十种非原版风格各有两款角色外观,Dust II 为反恐队员与沙城武装,其余为守卫与游侠。基于现有试玩版/官方更新包的 male、female 模型,保留 198 帧原动作,细化为两套约 2,360 面的基础网格,并以图像生成工具制作 20 张配套皮肤。人物皮肤尺寸为原版两倍;引擎、命中盒与武器数值未改。原始模型与武器仍归 id Software 及其权利人。
角色资源包约 8.4 MiB,新版客户端均载入,以显示其他玩家选定的角色。开启原版角色随地图换装,只改变本机看到的原版角色外观;老电影模式将所有人统一显示为卓别林造型;各浏览器独立保存设置。未修改的软件渲染器仍使用原版调色板。
配套装备
十种非原版风格各提供 65 张重绘装备纹理,覆盖背包、盔甲、弹药、补给、增益道具、地上枪械、第一人称武器和角色携带武器。以试玩版及官方更新包的原始 UV 图为参考,通过图像生成工具设计,再恢复到原尺寸与调色板;模型、动画、伤害、拾取规则和界面图标保持现有版本。相关原始资源仍归 id Software 及其权利人。
装备自动跟随“场景与装备风格”切换,各浏览器独立保存,下次开局生效。仅下载所选装备包,约 1.2–1.4 MB;选择原版时保留原装备。
已归档的 Dust II 沙城风格
参考 Valve 的 CS:GO Dust II 官方视觉介绍,提供沙石、灰泥、蓝门、风化金属、浅蓝天空、反恐队员与沙城武装人物,以及配套军用装备和枪械外观。使用图像生成工具重绘现有 UV;未打包 Valve 原始游戏文件。地图仍为 q2dm1,模型、动作和游戏规则沿用现有版本。
风格声音与老电影
多数可选音效以现有试玩版和官方更新包的 WAV 为基础,在浏览器本机调整音色。青花风格保留原版声音,只为枪械开火与爆炸叠加瓷器碎裂:小枪配轻碎裂,爆炸配厚重破碎声;受伤、死亡与碎尸改用纯瓷片碎落声;脚步、拾取和环境声保持原样。使用 Joseph SARDIN 在 BigSoundBank 发布的三段陶瓷盘摔碎录音(CC0),在本机裁切与组合。保留原始声音时长、循环信息与原生空间播放;可切回原版。老电影模式增加泛黄色调与逐帧随机的胶片尘点、划痕,短划痕固定于屏幕坐标后消失。旧版生成尘点素材保留归档。人物外形按风格调整,原版命中盒与动作帧保留。
默片喜剧配乐
“Olde Timey” — Kevin MacLeod (incompetech.com),按 Creative Commons Attribution 4.0 使用。游戏版转为单声道 44.1 kHz / 96 kbps MP3,移除封面和元数据,循环播放;旋律未改。这是默片喜剧氛围配乐,并非卓别林创作或电影原声。仅老电影画面风格启用,可关闭、调节音量,切出标签页时暂停。
引擎与代码
Quake II → Yamagi Quake II → Qwasm2。感谢 Gregory Maynard-Hoare 及所有贡献者。
引擎许可证 · Qwasm2 源码快照 · 上游引擎二进制 · 可复现的浏览器套接字兼容补丁 · 传输适配源码 · 房间源码 · 启动器源码
仅对 Emscripten 中无法使用的两个操作系统套接字选项作兼容处理。通过 WebRTC 传递原始 Quake II 数据包,客户端使用原引擎;游戏模块接入下述 JABot 机器人。
PeerJS(MIT)用于建立浏览器连接;JSZip(MIT / GPLv3)用于读取资源包。
js-sha256(MIT)用于普通局域网 HTTP 的资源完整性校验。
机器人
使用 Jalisko 的 JABot 0.9.3,衍生自 Steve Yeager 的 ACE Bot。随附 q2dm1 寻路数据,可选择简单、普通、困难、噩梦四档水平,并可选择“我 vs 机器人队”的组队模式:机器人会共享目击位置,通知队友赶来支援。感谢原作者及贡献者。
GPL 许可证 · 完整修改源码、寻路数据与构建说明。本项目增加浏览器设置桥接、人数管理,并修正 WebAssembly 兼容问题。机器人名称带 [BOT],由房主控制。
Oldies Farm 常驻房间
Oldies Farm 提供一个 Linux 原生独立服务器房间,无需任何玩家浏览器担任房主。浏览器通过带密码会话验证的加密连接加入,真人与机器人合计最多 8 位;离开浏览器不关闭房间。已登录玩家可在 F2 调整共享机器人设置。视觉和声音风格由各浏览器独立选择。
联机说明
由房主的浏览器运行原版服务器,最多 8 人。房主需保持游戏开启;关闭或离开会结束对局。使用 PeerJS 公共信令服务建立连接。跨网直连受双方 NAT、防火墙及信令服务可用性影响;无法连接时会显示错误,不会用机器人冒充真人。可添加 1–7 个机器人,真人与机器人合计最多 8 人。
老电影可在开局选择只允许手枪,去掉武器、弹药、盔甲拾取,保留生命补给。单局 30 杀或 15 分钟;原版死亡竞赛计分、聊天与复活规则。WASD 移动,鼠标瞄准,左键射击,空格跳跃,C 下蹲,滚轮切枪,Tab 计分,T 聊天,Esc 原版菜单,F2 房间面板。
Quake II · The Edge
Runs the real Quake II engine and original q2dm1 map. The default 640 × 480 software renderer keeps the original pixel look; Full HD and 4K rendering can be selected before a match. Yamagi/Qwasm2 includes bug fixes, so this is not guaranteed to match a particular 1997 client pixel for pixel or frame for frame.
Game assets
On first launch, the browser downloads the 3.14 demo and official 3.20 update, verifies SHA-256 checksums and extracts the data required for q2dm1. No Windows installer is executed. You can also select local PAK files; they are never uploaded.
Original assets belong to id Software and their respective rights holders. This project is not affiliated with them. See the demo license and update license. The retail pak0.pak and q2dm1's CD music are not included. Map, weapon and environment sounds are available. Retail campaigns and expansions shown in the original engine menu are outside this project's scope.
Optional remastered textures
Remastered map textures come from Tosher / q2textures and its contributing artists. The pack replaces 64 q2dm1 textures while retaining the original sky; invisible skip textures need no replacement. Assets are converted to the original dimensions, palette and four mip levels for the existing software renderer. This texture conversion does not change the engine, map geometry, lighting or models. See upstream licenses and notes.
Visual styles
The menu offers original, remastered, silent film, oil painting, cyber porcelain, neon graffiti and lava metal. Monet, unfinished drawing, hand-drawn animation and Dust II assets remain archived with their menu entries hidden. Styled textures use the same remastered atlas as a reference for image generation, then are converted for the original renderer. Texture dimensions, palette and map lighting remain unchanged. Style names describe an artistic direction and do not imply artist participation or endorsement. Each browser saves its own selection and downloads only the chosen map pack, usually about 0.7 MB.
Characters
Ten non-original styles have two character looks each. Dust II uses a counter-terrorist and a desert fighter; other styles use guards and scouts. The demo/update male and female models retain 198 animation frames and are refined into base meshes of about 2,360 triangles, with 20 generated skins at twice the original dimensions. Shapes vary by style. Silent-film mode gives everyone a Chaplin-inspired bowler, short moustache, narrow coat, baggy trousers and oversized shoes. Hitboxes and weapon statistics are unchanged. Original models and weapons remain the property of id Software and their rights holders.
All updated clients load the base character pack (about 8.4 MiB) and the style model pack to display players' choices. Restyling original characters affects local appearance. Silent-film mode overrides all character appearances locally. Preferences are browser-specific and the renderer still uses the original palette.
Equipment
Each of the ten non-original styles has 65 redrawn textures for backpacks, armor, ammo, supplies, powerups, ground weapons, first-person weapons and carried weapons. They use demo/update UV layouts as image-generation references and are converted back to native dimensions and palette. Equipment models, animations, damage and HUD icons remain unchanged. The original resources belong to their respective rights holders.
Equipment follows the selected world style. Settings are browser-local and apply to a new match. Only the selected equipment pack is downloaded (about 1.2–1.4 MB); the original style retains original equipment. The optional silent-film pistol-only rule removes weapon, ammo and armor pickups but retains health.
Archived Dust II style
Inspired by Valve's official CS:GO Dust II visual overview: sandstone, plaster, blue doors, weathered metal, pale blue skies, counter-terrorist and desert-fighter characters, and matching military equipment. Existing UV layouts were redrawn with image generation; no original Valve game files are included. The map remains q2dm1. These assets are retained but hidden from the launcher.
Styled sounds and silent film
Most sound styles process demo/update WAV files locally in the browser. Porcelain gunfire and explosions retain the original sound with added ceramic cracks: light cracks for the Blaster and heavier breaks for explosions. Pain, death and gib sounds use only ceramic fragments; footsteps, pickups and ambience retain their original sounds. Three CC0 broken-plate recordings by Joseph SARDIN from BigSoundBank are trimmed and combined locally. Original timing, loop metadata and spatial playback are preserved.
Silent film adds sepia, random frame-by-frame dust and scratches. Marks appear at fixed screen positions and disappear. Previous dust artwork remains archived. Character shapes change with style while keeping original animation frames and hitboxes.
Silent-comedy music
“Olde Timey” — Kevin MacLeod (incompetech.com), licensed under Creative Commons Attribution 4.0. Converted to mono 44.1 kHz / 96 kbps MP3, with artwork and metadata removed, and looped; the composition is unchanged. This evokes silent comedy; it is not a Chaplin composition or film soundtrack. Available in silent-film mode, with an on/off switch and volume control. Louder piano lowers game audio. Music pauses in background tabs.
Engine and code
Quake II → Yamagi Quake II → Qwasm2. Thanks to Gregory Maynard-Hoare and all contributors.
Engine license · Qwasm2 source snapshot · Upstream engine binary · Reproducible browser socket patch · Transport adapter · Room source · Launcher source
A compatibility patch handles two operating-system socket options unavailable in Emscripten. WebRTC carries original Quake II packets; the client retains the original engine and the game module integrates JABot.
PeerJS (MIT) connects browsers. JSZip (MIT / GPLv3) reads resource archives. js-sha256 (MIT) verifies integrity over ordinary LAN HTTP.
Bots
Uses Jalisko's JABot 0.9.3, derived from Steve Yeager's ACE Bot, with q2dm1 navigation. Choose Easy, Normal, Hard or Nightmare, and free-for-all or humans-versus-bots teams. Bots use sight, audible sounds and public team reports; they prepare supplies when necessary and support nearby known fights. Thanks to the original authors and contributors.
GPL license · Full modified source, navigation and build instructions. This project adds browser configuration, player management, fair perception, support and pistol-only rules, plus WebAssembly compatibility fixes. Bot names begin with [BOT]; the host controls them.
Oldies Farm persistent room
Oldies Farm runs one native Linux dedicated room. No player browser acts as its host. Authenticated encrypted connections join up to 8 humans and bots combined; leaving a browser does not stop the room. Signed-in players can adjust shared bots with F2. Visual and audio styles remain personal.
Multiplayer
The host's browser runs the server for up to 8 players. Leaving or closing the host ends the match. PeerJS public signaling establishes connections; direct connectivity depends on NAT, firewalls and signaling availability. Connection failures are reported, and bots never impersonate humans. Add 1–7 bots within the combined 8-player limit.
Matches end at 30 frags or 15 minutes, using native deathmatch scoring, chat and respawn rules. WASD to move, mouse to aim, left click to fire, Space to jump, C to crouch, wheel to switch weapons, Tab for scores, T to chat, Esc for the native menu, F2 for room settings and F10 for fullscreen.