Like many people who grew up in the 80s and early 90s, gaming was a 2d affair for me. Scrolling, sprites and smooth animation were key elements of most action games. The Commodore 64 was an excellent gaming machine in the early part of the 80s, because of its hardware capabilities coupled with a low pricetag. In the latter part of the 80s, we moved to 16-bit machines, and the Amiga was the new gaming platform of choice, again offering silky smooth scrolling and animations, but because of advances in technology, we now got higher resolutions, more colours, better sound and all that.
But then, the stars aligned, and Wolfenstein 3D was released on PC. The stars of CPUs becoming ever faster, the PC getting more powerful video and audio hardware, and 3D gaming maturing. A first glimpse of what was to come, was Catacomb 3-D by id Software, released in November 1991:
This game made use of the power of the 16-bit 286 processor, which was starting to become mainstream with PC owners, and the EGA video standard. The PC was not very good at action games, because it had no hardware sprites, and scrolling was very limited. But id Software saw that EGA’s quirky bitplane layout and ALU meant that it was relatively good at certain things. We’ve already seen that it is fast at filling large areas with a single colour, for polygon rendering for example. But it is also good at rendering vertical columns of pixels.
And that is the key to having fast texture-mapped 3D walls. By taking a simple 2D-map with walls, and performing raycasting from the player’s position in the viewing direction, you can make a simple perspective projection of the walls. You use raycasting to determine the distance from the player to the nearest visible wall, and then render a texture-mapped version of that wall by rendering scaled vertical columns based on the distance, with perspective projection.
Catacomb 3-D was a good first step, but the game still felt rather primitive, with the limited EGA palette, and the gameplay not quite having the right speed and feel yet.
But only a few months later, in May 1992, id Software released the successor, where everything really came together. The developers figured out that the EGA trick of rendering scaled vertical columns works nearly the same in the newly discovered ‘mode X‘ of VGA. The big advantage was that you could now use the full 256 colours, which made for more vibrant textures and level design. The game itself was also refined, and now had just the right look-and-feel to become a true milestone in gaming. Things have never been the same since.
Here is an excellent overview of how Wolfenstein 3D evolved:
But… that change did not bode well for the Amiga. Suddenly, everything the Amiga was good at, was no longer relevant for these new 3D action games. What’s worse… these games relied on very specific properties of the EGA and VGA hardware. They did not translate well to the Amiga’s hardware at all.
And to add insult to injury, id Software followed up with DOOM the next year, which again took advantage of ever faster and more powerful PC hardware, and refined the 3D first-person shooter even further.
A few brave attempts were made on the Amiga to try and make Wolfenstein 3D-like or DOOM-like games for the platform, but sadly they could not hold a candle to the real thing:
As a result, the consensus was that the Amiga could not do 3D first-person shooters because its bitplane-oriented hardware was outdated, and unsuitable.
But all that depends on how you look at it. As you know, demosceners/retrocoders tend to look at these situations as a challenge. Sure, your hardware may not have the ideal featureset for a given rendering method… but you can still make the best of it. The key is to stop thinking in terms of EGA and VGA hardware, and instead think of ways to scale and render vertical columns as fast as possible on the Amiga hardware.
One very nice approach was shown at Revision 2019 by Dekadence. It runs on a standard Amiga 500, and achieves decent framerates while rendering with a decent amount of colours and detail:
Another interesting project is a port of the original Wolfenstein 3D-game, which is optimized for a stock Amiga 1200. It achieves good framerates by rendering at only half the horizontal resolution:
The Amiga 1200 has a 14 MHz CPU. We can compare it to the closest 286es, which are 12 MHz and 16 MHz, and those are just about adequate to run Wolfenstein 3D as well, albeit at a slightly reduced window size for better performance. So this is not a bad attempt at all, on the Amiga.
Another touch I really like is that it uses the original PC music for AdLib, and uses an OPL2 emulator to render the music to a set of samples.
Another really nice attempt is this DreadStein3D:
It makes use of the engine for the game Dread, which is currently in development. This game is actually aiming more at DOOM than at Wolfenstein 3D, but it has a very efficient renderer, and rendering Wolfenstein 3D-like levels can be done very well on an Amiga 500, as you can see.
Here is a good impression of what the Dread game actually looks like:
As you can see, it’s not *quite* like DOOM, in the sense that there are no textured floors and ceilings. And it does not support height differences in levels either. But it does offer various other features over Wolfenstein 3D, such as the skybox and the lights and shadows. So it is more of a Wolfenstein 3D++ engine (or a DOOM– engine).
And the performance is very good, even on a stock Amiga 500. So… all these years later, we can now finally prove that the Amiga indeed CAN do Wolfenstein 3D. All it took was to stop thinking in terms of the PC renderer, and making poor conversions of the x86/VGA-optimized routines on Amiga hardware, but instead to develop Amiga-optimized routines directly.
If you look closely, you’ll see that they have a ‘distinct’ look because of the way the rendering is performed. Britelite discussed the technical details of what became Cyberwolf in a thread over at the English Amiga Board. It gives you a good idea of how you have to completely re-think the whole renderer and storage of the data, to make it run efficiently on the Amiga. It has always been possible. It’s just that nobody figured out how until recently.