# MLG Deck: licences of the self-hosted engines and game data

Every engine and data file served from `engines/` is listed here with its licence, where it came from, when it was
downloaded and its SHA-256. Anything whose licence could not be established is not served (see the end).
Downloads are kept, untouched, in `engines/_dl/<name>/` (never published).

## Quake 1 shareware (`engines/quake1/`)

### Engine: WebQuake
- What: WebQuake, an HTML5/WebGL port of id Software's Quake engine, plain JavaScript (no WebAssembly, no threads).
  The 36 engine scripts in `engines/quake1/webquake/` are served **unmodified**; MLG Deck's own code
  (`index.html`, `mt-bridge.js`, `mt-loader.js`, `unpack.js`) sits next to them and replaces a few functions at
  load time.
- Licence: **GNU General Public License v2** (the repository's `GNU.md`, served as
  `engines/quake1/webquake/COPYING.md`; the Quake engine source it ports was released by id Software under GPL-2.0).
  Our bridge files are under the same GPL-2.0.
- Source: https://github.com/Triang3l/WebQuake, commit `917617ffdfe42fa9dca41bf1762f16a2e71f2d7b`, fetched as
  https://codeload.github.com/Triang3l/WebQuake/zip/917617ffdfe42fa9dca41bf1762f16a2e71f2d7b
- Downloaded: 2026-10-13. `webquake-917617f.zip` SHA-256
  `21ad43a0e8b48ca89fd4dcbc1b7edb42dede50067e0ac0a75911021079e559ae`.
- GPL source offer: the scripts are the source (unminified); the repository link above is the upstream.

### Data: Quake shareware v1.06 (`engines/quake1/data/quake106.zip`)
- What: id Software's original shareware release, **byte for byte as id published it** (episode 1, E1M1–E1M8).
  The browser unpacks `ID1/PAK0.PAK` from it in memory (`unpack.js`: zip, then the LHA archive inside
  `resource.1`); nothing on the server is modified or extracted.
- Licence: id Software's **"SHAREWARE VERSION: QUAKE LIMITED USE SOFTWARE LICENSE AGREEMENT"** (`SLICNSE.TXT`,
  dated June 21, 1996) and its summary `LICINFO.TXT`, both inside the archive and also served unmodified next to it
  (`engines/quake1/data/SLICNSE.TXT`, `.../LICINFO.TXT`), linked from the game's loader.
  - Clause 6 (Permitted Distribution): distribution is allowed **free of charge**, **electronically**, **in a
    compressed format**, **with the agreement accompanying the software at all times**; end users may distribute
    it free of charge "only the Software as a whole". We serve the whole, unmodified, compressed `quake106.zip`,
    with the licence inside it and next to it, at no charge.
  - Clause 2 and LICINFO.TXT: **no commercial exploitation** of any kind (no sale, rent, pay-per-play, "distribute
    the Software for money or any other consideration"). MLG Deck has no money anywhere today.
    **Condition for keeping Quake 1 live:** if the weekly pool is ever funded (`data/rewards.json` `pool.funded`),
    or the site ever charges, sells access or shows ads, Quake 1 shareware must be taken off (or its play excluded
    from anything worth money) first. Prizes paid for playing it would be "consideration".
  - Clause 3/4: no modifying, reverse engineering or derivative works of the data, and no use of id's trademarks
    or screenshots outside the game. We do not modify the data; the game name appears only as the title of the
    game; the tile is the slice-1 crop of the source post's grid image.
- Source: id Software's FTP mirror, https://ftp.gwdg.de/pub/misc/ftp.idsoftware.com/idstuff/quake/quake106.zip
  (`Last-Modified: Mon, 30 Sep 1996`).
- Downloaded: 2026-10-13. SHA-256:
  - `quake106.zip` `ec6c9d34b1ae0252ac0066045b6611a7919c2a0d78a3a66d9387a8f597553239` (9,094,045 bytes)
  - inside it, `ID1/PAK0.PAK` `35a9c55e5e5a284a159ad2a62e0e8def23d829561fe2f54eb402dbc0a9a946af`
    (18,689,235 bytes; MD5 `5906e5998fc3d896ddaf5e6a62e03abb`, the known shareware 1.06 pak). The browser's unpacker
    is checked against this value by `engines/quake1/build/verify-unpack.mjs`.

Rebuild everything above from the two downloads: `python -I engines/quake1/build/assemble.py` (checks both
SHA-256 values first).

## OpenArena skirmish (`engines/openarena/`)

### Engine: ioquake3 web client (built here)
- What: the ioquake3 engine compiled to WebAssembly with Emscripten, **single-threaded** (no `-pthread`, no
  SharedArrayBuffer), GL2 renderer, game logic from OpenArena's own QVMs (interpreted). Files served:
  `engine/ioquake3.js` (SHA-256 `4680fa9692b8e399d235e6bffd9a695eaa73d480b411a247d7c140e9847a36be`) and
  `engine/ioquake3.wasm` (`b9be36ed36037b19311a3d7b9b038bd8b570175c586e96ecbd91db73c0942781`), built 2026-10-13.
- Licence: **GNU GPL v2** (`engine/COPYING-ioquake3.txt`, the repository's `COPYING.txt`; id Software released the
  Quake III Arena engine source under GPL-2.0).
- Source: https://github.com/ioquake/ioq3, commit `87a99d18206e878a20289f05ac3c16005dcae5c3`, fetched as
  https://codeload.github.com/ioquake/ioq3/zip/87a99d18206e878a20289f05ac3c16005dcae5c3 on 2026-10-13,
  `ioq3-87a99d1.zip` SHA-256 `8cc2e63c161ab63a1ee46171b003a71ea4b37b3e524de337c776bd30bbf6a2e2`.
  One change (exports `Cbuf_AddText` for scripting/QA): `engines/openarena/build/ioq3-web.patch.py`.
  Rebuild: `engines/openarena/build/build-ioq3.ps1` (Emscripten 6.0.12 from `_tools/emsdk`, CMake 4.4.4 + Ninja 1.13.2
  from `_tools/buildenv`). GPL source offer: the commit above + the patch script, both public.
- Linked in by Emscripten: **SDL 2.32.10** (zlib licence), fetched by Emscripten's ports system from
  https://github.com/libsdl-org/SDL/archive/release-2.32.10.zip (`sdl2.32.10.zip` SHA-256
  `7a3c207b8509edc487d658df357ad764cd852d68fe248d307b25c0741d52fdf0`); and ioquake3's bundled third-party code
  (libjpeg, zlib, Ogg/Vorbis/Opus etc., each under its own permissive licence inside the ioq3 source).

### Data: OpenArena 0.8.8 (repacked, trimmed)
- What: the `baseoa` game data of OpenArena 0.8.8, repacked by `engines/openarena/build/pack-data.py` into 12 pk3
  files under 25 MiB each (`data/oa-00.pk3` … `oa-11.pk3`, 277,419,120 bytes; per-file SHA-256 in
  `data/manifest.json`). Kept files are byte-identical to the release; left out: the optional
  `pak2-players-mature.pk3` models, `demos/`, `video/`, and every map except OA_DM1–OA_DM5 and Aggressor.
- Licence: **GNU GPL v2** (the release's `COPYING`, served as `data/OA-COPYING`; README says the content is GPL and
  "Source for content is available at http://openarena.ws/svn/source/"; credits in `data/OA-CREDITS`). We pass that
  source information along unchanged (GPL-2.0 section 3(c), allowed for non-commercial distribution), and the trim
  script documents every change.
- Source: http://download.tuxfamily.org/openarena/rel/088/openarena-0.8.8.zip (`Last-Modified: 28 Feb 2012`),
  downloaded 2026-10-13, 425,189,255 bytes, SHA-256
  `5a8faf7f5b51f351b0a1618c06b6b98a5f1a6758f1d39818de2c87df2a0bac4a`.
- Same commercial gate as Quake: section 3(c) only covers non-commercial distribution; if the site ever earns money,
  host the full corresponding source (or a written offer) next to the data first.

## Not served (licence or verification not established)
- **Quake III Arena demo data** (`demoq3/pak0.pk3`): its EULA (id Software's demo licence) was not available to read
  here, so it is not used; OpenArena (GPL) replaces it.
- **Diablo shareware** (`spawn.mpq` + the diabloweb front end): see the README, "Slice 2 steps 3 and 4".
- **Half-Life / CS 1.6 on Xash3D**: see the README, "Slice 2 steps 3 and 4".
