Friday, September 5, 2014

Quake Web Tools

A little while ago I wanted to do some Javascript programming and decided it would be cool if I could view the various file formats that are used by Quake 1 (a 20 year old game...) in my web browser. This was partly because I still play around with Quake level editors, and whilst there are multi-platform editors, many of the tools to work with other file types used by Quake don't exist on platforms other than Windows, or are so old they barely work on Windows anymore, so it seemed somewhat worthwhile.


Although the project is far from complete, I have built a drag and drop interface for viewing all of the main binary formats used by Quake (other than .dat, which is used for Quake C code lumps). I've named it Quake Web Tools. It should work perfectly in Chrome, and most of the functionality works in Firefox, although you can't currently extract files from .pak archives in Firefox at the moment (I plan to fix this!). Other browsers are currently untested, but as I work on the real UI and (hopefully) some editing functionality, I plan to do more compatibility testing. It does, however, work on Mac, Windows and Linux since it's just running in a browser.

Currently you can view the following formats:

  • .pak - Uncompressed file archive
  • .pal - 256 colour palette files
  • .wad - Texture/image directories used for textures and console graphics
  • .bsp - Game levels, with textured 3d preview and texture listing
  • .mdl - Model files, with textured and animated 3d preview
  • .spr - Billboard sprites
  • .lmp - Graphics lump, simple images.

You can get the code at the GitHub Repo.

Planned features:

  • Clean up of viewer code as it's currently very hacked together
  • Proper UI based using Polymer or home made Web Components library (To learn about Web Components, not just polymer's little bubble).
  • View files that are inside others without extracting manually.
  • View animated textures and sprites
  • .wav player (Quake uses .wav for all its sound.
  • .map viewer (And possibly editor at a later date?)
  • .wad editing (Add, delete, rename etc. Perhaps image editor?)
  • .pak editing (Basic add, remove, move file functionality)
  • .lit bsp viewer (Probably quite difficult to do in Three.js? Was enough hassle just to show textures).


  1. Hey Andy!

    I was really inspired by your work and decided to build something similar:



  2. Alex,

    That's awesome! I see you've gotten pretty far with it too. Hope you can finish it. By the way, someone already ported Quake to the web browser completely before me, and it's quite a nice port that runs pretty well:
    What I was doing with QuakeWebTools was trying to make editor tools, but as happens with a lot of projects, I got bored of it before I could make something really useful out of it.

    1. Yeah, it looks good but from my perspective it's more fun to build thing from scratch :)