Reality: The Lost Amiga 3D Engine

March 30, 2025

 

Reality: The Lost Amiga 3D Engine

What Is Reality?

Reality was the name of our Wolfenstein 3D-style game engine, which became an umbrella term for anything related to that pursuit. The project aimed to create a fast and efficient first-person engine on a near-stock Amiga 1200 (020+FastRAM) in the mid-1990s. This archive contains the last known remaining compiled executables from my various attempts to achieve reasonable performance on the platform.

Originally, the Reality project was most active between 1994 and 1995. Apart from a few screenshots shared with close friends, it was never publicly released. The executables included here represent alpha-stage software—functional but far from stable. While they take over the system in as OS-friendly a manner as I knew at the time, modern systems may not handle them well.



About the Demos

Reality.exe - Ray Casting Experiment

This was the initial test of the engine, developed sometime in late 1993 or early 1994. The first major challenge was the chunky-to-planar (C2P) problem, where my initial attempts using unrolled bit sets failed spectacularly. While this approach might have worked for particle effects, it was a disaster for general-purpose rendering. However, after several iterations, I moved on to a bit-parallel rotation solution, which significantly improved performance.

This is the only version of Reality that employs a true ray-casting method. The scene is constructed by casting rays outward from the camera’s field of view, step by step, checking for wall collisions. Each map pixel represents a vertical wall strip, likely stored as 8-bit data, allowing for 256 unique wall textures.

Color depth was either 16 or 64 colors, which struck a balance between visual quality and conversion speed. This version laid the foundation for later advancements.


Map.exe - 64-Color 2D Polygon Walls

As development progressed, I re-evaluated the engine’s structure and opted for a different approach. Instead of a traditional grid-based map, I structured levels as a grid of evenly spaced vertices, where walls were formed by linking vertex pairs. This allowed for non-orthogonal walls and greater flexibility in map design.

Rendering involved rotating and projecting the sector vertices, which determined floor and ceiling heights. The scene was then processed polygon-by-polygon. For each wall, I interpolated across its top and bottom, computing its Z-depth and texture U-values. Instead of rendering strips immediately, the engine stored them in a Z-buffer, ensuring proper visibility sorting.

A unique optimization was that textures were stored rotated in memory, enabling rapid texel fetching using a simple 8-bit V-offset.


Project Reality - 256-Color Rendering & 3D Objects

By early 1994, the gaming world was in the grip of DOOM fever, and we ambitiously aimed to push Reality further. As Commodore's decline loomed, we set our sights on creating something akin to Blake Stone, but with even more complex environments and polygonal objects.

This demo showcases the most advanced features we implemented:

  • 256-color rendering
  • Textured walls with transparency support
  • Depth-based lighting effects
  • Early support for floors & ceilings
  • Multiple rendering modes
  • Initial 3D polygon rendering
  • For polygonal objects, we experimented with a method where triangles were clipped against the depth buffer. The goal was to calculate the screen-space width of an object, scan across the depth buffer, and determine the visible clipping edges. This technique would have allowed objects to be properly occluded by walls while enabling partial visibility. While not perfect, it was an innovative approach at the time.

    Unfortunately, time and talent ran out. By the time we reached this stage, the Amiga community had already embraced Fears, Gloom, Breathless, and Alien Breed 3D. The dream of completing Reality faded, but looking back, I still wish I had been able to bring my full vision to life on screen.


    System Requirements

  • System: Amiga 1200 / Amiga 4000
  • Processor: 68020 or higher
  • Video: AGA chipset
  • RAM: 2MB + 2MB FastRAM
  • Sound: Not required

  • Final Thoughts

    Reality remains a fascinating relic of my early game development journey. While it never reached a finished state, it reflects the passion and creativity that fueled many indie Amiga developers during the 1990s. This archive preserves those efforts—flawed but ambitious, a glimpse into what could have been.

    Links:

  • Download Reality 3D Tech Demos(Amiga)

  • Thesius XII: Developing a Classic Amiga Shoot 'Em Up

    March 29, 2025

     

    Thesius XII: Developing a Classic Amiga Shoot 'Em Up

    Back in the golden age of the Amiga, I developed Thesius XII, a fast-paced shoot 'em up inspired by the arcade classics of the time. The game was my attempt at pushing the limits of the Amiga hardware while delivering an engaging and action-packed experience. Sadly, the game was never fully completed, but in 2000/2001, I released an 'as is' version featuring three levels. Despite missing final polish, it remains a nostalgic favorite for many retro gaming enthusiasts.



    Inspiration and Design

    The concept for Thesius XII was heavily influenced by IREM’s R-Type and Tecmo’s SilkWorm, two of my personal favorites. I wanted to create a game that blended intense shooting mechanics with strategic enemy patterns, requiring both reflexes and tactical movement. The art style and design leaned into the aesthetic of futuristic space battles, filled with vibrant explosions, detailed sprite work, and smooth scrolling backgrounds.

    Technical Development and Features

    The game was designed for a stock Amiga 500 running a 7MHz 68000 CPU, 512K memory, and the original chipset. Developing on this hardware came with its own set of challenges. Memory constraints, CPU limitations, and optimizing the rendering pipeline were crucial to maintaining smooth gameplay. One of the biggest hurdles was handling a large number of on-screen enemies without bogging down performance. To solve this, I implemented efficient sprite management and custom routines for object culling and collision detection.

    Some of the standout features of Thesius XII included:

  • Three Levels, Over 35 Screens Long: Each level featured unique environments and enemy designs.
  • Two Major Guardians Per Level: Massive boss battles tested players’ reflexes and strategic thinking.
  • Pre-Mission Briefing Terminals: Before each level, a terminal screen provided mission details, utilizing dynamic palette and resolution splitting to create an immersive effect.
  • Dynamic Copper Display System: This allowed up to 384 colors on screen, even on OCS/ECS machines.
  • Advanced Memory Management: Using a solid hunk file system and smart RAM disk buffering, the game optimized load times and performance.
  • Parallax Scrolling & Hardware Sprite Multiplexing: With up to 13 layers of parallax, the game maintained smooth visuals and animation.
  • Auto CPU Detection & Optimization: Gameplay remained consistent across different Amiga hardware from A500 to A4000.
  • High Score Entry Screen: Featuring one of my favorite pieces of music in the game, this screen brought a satisfying end to each play session.
  • Development Challenges

    One of the trickiest aspects of development was optimizing graphical effects for smooth performance. The intro, while simple by today’s standards, was particularly challenging to run efficiently on a stock Amiga 500. The Terminal Screen in Level 1 was another technical feat, combining both low and high resolution modes within the same screen, with palette splits on every scanline and dynamic text rendering.

    Another personal highlight was the homing missile system, which I spent a great deal of time perfecting. Even now, looking back, I think it worked out quite well.

    Release and Reception

    Prior to September 16, 2003, a multi-level version had never been released, as the game remained incomplete. However, we felt it was a shame not to share what we had, even though it lacked the final two levels and additional polish. Thesius XII v95 was first reviewed in Amiga Format (August 1995) in their PD section, and it was featured again in a follow-up issue, highlighting promising Amiga developers.

    Legacy and Follow-Up

    Years after Thesius XII, I revisited the concept with Thesius XIII, a tech demo for PlayBASIC. While it wasn't a full game, it showcased advanced techniques for handling sprites, movement, and rendering in a modern game development environment.

    Even though the full vision of Thesius XII was never realized, the game remains one of my favorite projects from the Amiga days. It was a challenging but rewarding experience that shaped my approach to game development. For those interested, an emulated version of Thesius XII is available online, best played using the latest version of WinUAE.

    Would you like to see a modern reimagining of Thesius XII? Let me know your thoughts!

    Links:

  • Thesius XII - Amiga Demos
  • Download Thesius XII (Amiga)



  • Thesius Xii - Amiga Demos

    April 19, 2019

     

    Thesius XII Intro (Amiga Game)


    This is the complete Title / Intro from our 1995 Amiga game called Thesius XII. Sadly the game was never 100% finished, but even so, back around 2000 / 2001 we released an 'as is' version with three levels, but it's missing lots of the final polish from the game.

    Thesius XII is yet another side scrolling shoot'em up game from those days, loosely inspired by such classics as R-Type & SilkWorm (was a big fan of that) and many other shooter of that time really. The game was designed for stock Amiga 500 running 7mhz 68000cpu, 512K Memory and Original Chip Set. The intro might look pretty plain today, but I remember it being fairly challenging to get the running at speed on the stock hardware.

    If you into a bit of nostalgia, you can download Thesius XII from our site.

    Developed By:
    https://www.UnderwareDesign.com





    Thesius XII Intro Options Screen (Amiga Game)


    This is a clip of the Intro / Options Screen from our 1995 Amiga game called Thesius XII. The game was designed to be fairly flexible, so the user could enable or disable some of the key features during play. For such things as the explosion particle count, parallax effects, sound and even some tweaks for homing missiles.

    The Homing missiles are probably my favourite section of code in the entire game. I remember a lot of work into them at the time, and looking back they seems to work fairly well.






    Thesius XII Level 01 Terminal (Amiga Game)



    This clip is from Level #1 Terminal from our 1995 Amiga game called Thesius XII. The terminal was meant to give the player a briefing about the up coming level as if there was some type of short to the game..but it's a shoot'em up... so... overkill... erm yeah... :)

    In retrospect, there's a lot more stuff going on it here than I remember, from dynamic palette and resolution splitting, through to wire frame vectors to chunky image scaling. If you look closely (even in the video), you'll notice the screen is in both low and high resolution. The top section is in 32 colour low res (everything above the terminal window), with palette splits on every scan line through the video window. The terminal window at the bottom is in hires 16 colour. There's copper resolution switches on every scanline.. This makes the text in the terminal look a lot cleaner, but places a lot of extra drag from gfx hardware. Making it one of the hardest parts to write at the time..






    Thesius XII - High Score Entry


    This is a clip of the High Score entry screen from our 1995 Amiga game called Thesius XII. Looking back on it, this is perhaps my favourite piece of music in the game, even visually I'm fairly happy with it.

    Art By: Ben Hemming
    Music By: Lars Jensen
    Code By: https://www.underwaredesign.com