The Donnington Project

Recreating 14th-Century Berkshire Ruins in a 1996 Engine.



Technical Huddle

The Engine & The Budget

Before we continue, lets discuss about Game Engines, The original Quake has been well supported over the years by the game modding community and this has included many aspects of the features and enhancements, one has included creating custom game engines to meet new technology needs. Think of a Game Engine as the "executable brain" of the game. It is the core program that takes raw data maps, 3D models, and stone textures and translates them into the images you see on your screen. It handles everything from the way the Berkshire sun hits the towers to how the game responds when you move your mouse. Essentially, it is the stage manager for the entire digital performance.

However, the original 1996 engine comes with strict Engine Limits - essentially a rigid "memory budget". It can only track a specific number of "brushes" (the 3D blocks used to build the castle) before the world breaks. If I try to make a ruin look truly realistic by adding hundreds of tiny, jagged stones, I quickly "overdraw" that budget, and the engine simply refuses to load the map or crashes entirely.

Why use a Modern Client?

Modern "source ports" like AfterQuake or FTE QW act like an upgraded brain. They vastly expand these invisible budgets, allowing for complex geometry and smoother lighting that 1996 software could never process. By using a modern client, you see the historical detail I intended like the intricate flint-work without the "Object Limit" errors that would have stopped a 90s computer in its tracks.

Donny6

Snapshot Date: 5 June 2024

So, at this point, we had the main stucture, we had the hill but I wanted to reflect the valley of Newbury and Thatcham that you can see from the castle, to do this I used a background tile that I believe came from another game to give the effect I was after. I also began to add additional grass nodes to indicate using the func_illusionary 1px depth class, this was where I may have gone a little overboard and began to cause issues with some of the game engines that had lower limits

X-Ray: J.A.C.K. Wireframe
Donny Wireframe
Render: In-Engine Screenshot
Version 1 render, showing the twin gate towers

Donny9

Snapshot Date: 9 June 2024

So, in the 4 days between Donny6 and Donny9, I experimented a lot with how i was going to render the grass, I removed some of the single func_illusionary grass elements and replaced them with a "strip" of grass that did the same thing, this ended up being rejected due to the fact I could not line up a longer strip of grass horizonally due to the nature of the hill elements. This was soon reverted. It was also during this time I looked at implemented shillotees of trees in the background that would add more depth to the map. You can see this in the screenshot below

X-Ray: J.A.C.K. Wireframe
Donny9 Wireframe
Render: In-Engine Screenshot
Donny9 Render

Depth of vision removes the join in the sky.

This was always a concern of mine when looking at the map in game, If you are trying to replicate the feel that someone is emerged in an environment, you need to ensure that they feel enclosed - one huge issue was that the sky never looked correct and had a "event-horizon" style texture feel where the angles of the map joined by adding in tree lines this stopped this experience from happening - The screenshots show this join as it's taken direct from the render seen in J.A.C.K.

DonnyA

Snapshot Date: 16 June 2024

A few additional days later and You can see i'm adding in a "vertical arch" to pin-point the end of the grass line, this is the maximum level the grass will come up to the top level of the castle, This will be removed later. I am also planning any of the additional paths that go through the grass as seen from arial shots.

X-Ray: J.A.C.K. Wireframe
Donny Wireframe
Render: In-Engine Screenshot
Version 1 render, showing the twin gate towers
Technical Detail
Expert Note

I have included a quick overhead shot of the castle on the left, from here you can see what i mean, the grass is mostly trimmed near the castle ruins and is much longer futher out as it rolls down the hill, I wanted to ensure this was kept so added the vertical arch to the floor as a nature trim line so to speak. You can also see additional footpaths from this view.

Technical Huddle

The BSP Evolution

In the world of Quake, a map isn't just a 3D model; it's a compiled Binary Space Partition (BSP) file. As the Donnington Project grew in complexity - transitioning from simple gatehouse sketches to forensic flint-work - I had to navigate the strict versioning of these formats.

Legacy BSP Version 29

The original 1996 standard. Up until the early DonnyC3 snapshots, this was the format used. It is incredibly stable but has hard-coded "ceilings." If a map exceeds 32,767 planes or nodes, the compiler simply fails. This is the "Engine Limit" of the original Quake maps used in ealier engines including the original DOS and WinQuake Engines from the late 90s / Early 2000s.

Modern BSP2 Format

Modern source ports like Ironwail and Quakespasm support the newer BSP2 format. It removes the 16-bit integer limits of the original, allowing for maps of vast scale. This format is what allows the current builds to feature thousands of high-detail models without crashing the renderer.

Forensic Note: While J.A.C.K. allows me to draft in the modern format, I was still aiming for BSP29 compatibility wherever possible as it was a self-imposed challenge - building for the future while respecting the mathematical foundations of the past. However, this is the point, where I made peace with myself and more to the new format - sorry original DOS Fans :(

DonnyC3

Snapshot Date: 2 July 2024

So at this point, I'm naming the files with a Letter followed by number, and DonnyC3 is an intresting one. At this point, I'm adding in the backroad behind the castle and I've added a car that will be set to move along the road, there is also a gate and a fence which I am adding - This is all based again on airel photos

X-Ray: J.A.C.K. Wireframe
Donny Wireframe
Render: In-Engine Screenshot
Version 1 render, showing the twin gate towers

DonnyD6

Snapshot Date: 5 January 2025

We are skipping quite a few versions here to DonnyD6 as small incremental changes are made throughout late 2024, until this point, firstly, some additional rock prefabs have been added to increase the feeling of the hill, the grass elements have been increased to the corners and work has started on building the secret!

X-Ray: J.A.C.K. Wireframe
Donny Wireframe
Render: In-Engine Screenshot
Version 1 render, showing the twin gate towers

We start hitting limits...

So adding in so many func_illusionary grass elements means we're hitting the limits for even the top level modern engines, I'm going to have to scale these back soon, the grass with have to be a little bit patchy

DonnyD9

Snapshot Date: 27 March 2025

All the grass is completed! We've also improved the gateway ruin and we look to be finishing up the majority of the scentic elements - Well, we may need to review this later and clean up the large number of func_illusionary grass elements so it will run under more engines

X-Ray: J.A.C.K. Wireframe
Donny Wireframe
Render: In-Engine Screenshot
Version 1 render, showing the twin gate towers