QuakeShack

By the end of 2024 I wanted to nerd on something interesting. I found an old Quake 1 port for the browser and it ran pretty badly, so I started tinkering around with it.

Always being fascinated by Half-Life and how Quake evolved into modern engines of today, I started following a similar path.

After fixing a couple of issues with sound playback, bringing back proper WebSocket support and a few other quality of life improvements, I started reimplementing the complete Quake 1 game logic in modern JavaScript.

At the same time I polished the engine code base and slowly added features I wanted to get my hands dirty with.

Slowly but surely, I added features which are common in the Quake 1 modding community such as RGB support, BSP2 map format, and a few others. But I didn’t stop there, I looked into different approaches on how to load and organize assets, features such as volumetric fog, PBR-based materials, dynamic shadow maps, more modern pathfinding algorithms and much more.

Currently the project is increasingly getting more features and bug fixes and is evolving into a rather neat engine to work with. To implement actually useful features I also started to come up with a mod that is based on QuakeShack: Hellwave.

However, this project is primarily my pet project to learn more about modern JavaScript/TypeScript, game development and computer graphics.

I also use LLMs on it to get an idea how to build actually useful agentic development workflows. One thing that surprised me how well it worked was letting GPT 5.4 and Claude Opus 4.6 to almost completely port the project from JavaScript to TypeScript. Though, it required a tied loop, since some of the porting it did constantly go off the rail such as removing important comments (such as TODO) or introducing unnecessarily complex functions to get around TypeScript type warnings.

The game can be found at https://play.quakeshack.dev/ and also comes with peer-to-peer multiplayer support with a game lobby.

QuakeShack hut

Credits to lavender.pet for making the comfy logo and big thanks to the Quake 1 modding community on Discord for being patient with me for asking stupid questions.