1st Scrapped Version

This is the first ever version of Trinity. It wasn't even called Trinity yet. It was basically a simple RGB raycaster with a sky that had an almost-accurate "3D" perspective, ice floor physics, 2D map view, a fake 3D sky floor, and a wall texture camera system. It was just a raycasting test, not yet intended to be an actual game engine. However, it laid the ground for upcoming versions. I even started developing a UI system, which I upgraded in the next version.

See video footage

2nd Scrapped Version

This was probably the funnest version. It was at this point that I decided I want Trinity to be a game engine. I made some basic Valve-inspired placeholder textures, added 45-degree angled walls, and a lightmap system for textures. I also made a map editor inspired by Hammer Editor and Eureka Editor, with UI that blatantly copied colors from the GoldSrc UI - at least temporarily.

See video footage

3rd Scrapped Version

This was the point when I gave the engine the name "Trinity". It also probably became the most advanced in this version. A mistake of the previous version was that I created a map editor before the engine had all the features I wanted. So, in this version, I decided to add those features first: proper angled walls (not just 45-degree angled), Doom-like ceiling/floor height, sprites, shadowmap and more. However, in the end I only implemented angled walls and height. A Procedural water animation also got added in.

To achieve this, I came up with a simple "sector" technique that divides each screen column into segments based on tile floor and ceiling heights. Essentially, it groups together multiple tiles of the same floor/ceiling height into a "sector" and renders it. If a sector's floor is higher than the previous one, a wall is rendered to close the gap. Similarly, if the sector's ceiling is lower than the previous one, a wall is again rendered to close the gap.

For angled walls, I used basic line intersection checks between the ray line and the tile's angled wall line to calculate the wall offset for the column.

The water animation was inspired by Quake's wobbly portal texture animation. I observed its behavior and attempted to recreate it using a simple sine/cosine combination for both axes.

See video footage

4th Scrapped Version

In this version, I finally made a logo for Trinity. I wanted something simple and retro-looking, and I was quite satisfied with the result. The engine recieved minor improvements, such as a proper "3D" sky perspective, better rendering quality, performance and texturing - textures no longer got stretched vertically. I also added a cool "3D" water wave effect. However, this version had a small downgrade from the previous one - no angled walls. I never got angled walls working properly with height in the previous version, so I scrapped them, and never got around to reimplementing them.

I created the "3D" water wave illusion using a sine-wave cutout generated along the edge of water sector. Then, the water floor texture is rendered inside that shape. However, this causes a small side effect - if you go all the way down to the sector's floor, the waves flatten, because they don't actually have any height.

While this engine was perhaps impressive as an advanced raycaster, it was too limited for general game development. That's why I decided to remake Trinity as a Build-style engine - arguably the most flexible type of 2.5D software-rendered engine.

See video footage