Retroquad - a Quake engine with the most advanced realtime 8-bit color software renderer on Earth

The home for dedicated threads to specific projects, be they mods, tools, or independent games.
Post Reply
mankrip
Posts: 921
Joined: Fri Jul 04, 2008 3:02 am

Retroquad - a Quake engine with the most advanced realtime 8-bit color software renderer on Earth

Post by mankrip »

This is a project I've been working on for years: Retroquad 0.6.6 Public Release.

Retroquad is an 8-bit color renderer in substance, rather than style. It substantially uses 8-bit color rendering to create a visual style beyond that of any other 8-bit color renderer.

In other words, what's Retroquad about?
Retroquad is a game engine with a 3D software renderer that employs many color algorithms independently created by myself to solve the limitations of 8-bit indexed color systems, pushing their quality above the known possibilities of their current state of art. It is intended to be an engine with all the advantages of 8-bit indexed color 3D software rendering, but without the drawbacks of classic 8-bit color renderers.

When fully polished, Retroquad should be robust enough to become a viable platform for creating new commercial quality independent 3D games that can be very quickly ported to other operating systems, consoles, mobile, and all kinds of obscure hardware and independent hobbyst hardware projects where it would otherwise be technically unfeasible or financially expensive to port them (such as the multitude of generic handhelds whose usefulness is limited to emulating old gaming consoles and playing classic software-rendered retro games). Retroquad will be very scalable, from low-end platforms with low-res screens to high-end platforms with very high-res screens. Multi-core processing will be implemented to improve 1080p performance and allow for 4K rendering without sacrificing the core goals of the project.

Another goal is to remove and replace as much of the old Quake code as possible, to make Retroquad's code more lean, polished and easier to maintain, hopefully turning it into a completely original engine.

The whole engine is being coded in pure C with no usage of processor-specific extensions. The lack of processor-specific extensions usage is purposeful, to ensure that this engine remains highly portable. Another reason for this engine to remain as hardware-independent as possible is to ensure future-proofing for software preservation. Games created using this engine will be able to be easily emulated for many decades in the future, making sure that people will always be able to experience them properly, even if their source becomes inaccessible or lost.

And finally, the last main reason why Retroquad exists. Software rendering is the only tech that will surely not suffer from hardware & drivers deprecation, the only tech you can count on to keep developing something ambitious and take your time to battle with all the roadblocks in your personal life, knowing that when you come back to it, it will still be working. Retroquad is intended to be an engine for people struggling in life, an engine that even if life slows you down and you take decades to create a game, it will still work as intended. With software rendering you can say goodbye to planned obsolescense, and never have to worry about being able to keep up with hardware and software upgrades.

As a lone developer, I am also commited to making Retroquad become as user-friendly as possible for other lone developers and small teams. Retroquad's development pipeline and workflow is being designed to be as simple as possible for people willing to create games from scratch, with no need to rely on asset stores or hire external help. Using common file formats widely adopted by operational systems and free user-friendly tools with years of knowledge and tutorials. And featuring software-rendered visuals that are truly retro to the bone — where it actually matters.
Features include:
  • Fog (not in the public release)
  • Colored lighting (not in the public release)
  • Transparencies
  • Scrolling textures
  • Emissive textures
  • HD textures
  • Animated texture interpolation
  • Trilinear texture filtering
  • Anisotropic texturemapping
  • Soft depth
  • Wavy shorelines
  • Shoreline foam (not in the public release)
  • Lightmapped liquids
  • Melt-mapped liquids
  • Procedural particles
  • Multiplanar scrolling skies with horizon fading and texture animations
  • Skyboxes
... and lots of more features, all in pure 8-bit indexed color using a single 256 color palette for everything.

Yes, the whole rendering pipeline is done in 8-bit indexed color, from start to finish. I've got a few people doubting this, but simply because they have never seen such a technology in their lifetimes that doesn't mean it is not possible. Its rendering quality is superior to any other 8-bit color renderer because I've invented a whole new approach to 8-bit color quantization and rasterization.

Retroquad has a number of color compiling routines that converts everything to special 8-bit indexed color data structures during load time. Thanks to that, all of the rendering data input is in 8-bit indexed color without alpha. And the color dithering is precomputed, it is not applied afterwards.

Here's the rasterization code for drawing a single semitransparent pixel with texture & lighting combined in realtime plus an emissive texture layer. The map16 tables contains 8-bit palette index data preshifted 8 bits to the left, to eliminate some bitshifting instructions.

Code: Select all

if (*zbuffer <= (izi_a))
{
tcoord = ( ( (t_s_a & t_smask_a) >> t_sshift_a) | ( (t_t_a & t_tmask_a) >> t_tshift_a));
*pbuffer = colorblendingmap_a[lumablendingmap16_a[colorshadingmap16_a[ (lixel_a[ (l_s_a >> TEXELPRECISION) | ( (l_t_a & 0xFFFF0000) >> l_tshift)] << 8) | texel_a[tcoord]] | luma_a[tcoord]] | *pbuffer];
}
My development environment:
Code::Blocks 20.03
TDM-GCC 9.2.0
MS Platform SDK for Windows XP SP2
DirectX SDK (I don't know the exact version, but it's from 2004).

Here are some videos:
RetroJam6: retrojam6_nait
RetroJam6: Sand Grain Universe
RetroJam6: Firey Oasis
RetroJam6: The Bringers of Blight
Jam1: Teh Ratz in Teh Wallz

And screenshots:
Image
Image
Image
Image
Image
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
Dev blog / Twitter / YouTube
mankrip
Posts: 921
Joined: Fri Jul 04, 2008 3:02 am

Re: Retroquad - a Quake engine with the most advanced realtime 8-bit color software renderer on Earth

Post by mankrip »

Here's my Christmas present for everyone this year:
Retroquad 0.10.0.

I'm looking for feedback, both good and bad.

I've had only one report of people being unable to run it in Windows 7. Can anyone else can confirm this? I wonder if that may be caused by me compiling it under Windows 10, but I don't have a Windows 7 PC to debug it myself anymore.

As stated in the readme, part of the performance issues in this demo is that half of the vanilla Quake maps were recompiled without VIS data, so all of their polygons will be processed at all times. So, performance will vary significantly between maps with VIS data and maps without.

If you wish to compile this engine yourself, use the CodeBlocks project file. The Visual Studio project file is outdated because the Visual Studio compiler produces bad results. TDM-GCC compiles it properly.

My development environment:
Code::Blocks 20.03
TDM-GCC 9.2.0
MS Platform SDK for Windows XP SP2
DirectX SDK (I don't know the exact version, but it's from 2004).
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
Dev blog / Twitter / YouTube
Shpuld
Posts: 106
Joined: Sat Feb 13, 2010 1:48 pm

Re: Retroquad - a Quake engine with the most advanced realtime 8-bit color software renderer on Earth

Post by Shpuld »

it's been a joy seeing you post about it on twitter, really impressive work

I'll have to try the build on my 8.1 machine as well as some laptops to see how it runs
Eukara
Posts: 22
Joined: Fri Jul 22, 2011 3:00 pm
Location: /dev/cdrom
Contact:

Re: Retroquad - a Quake engine with the most advanced realtime 8-bit color software renderer on Earth

Post by Eukara »

So much eyecandy in this. I've been drooling over this ever since you showed off the water waving test map with the fancy blending and skies. Must have been a few years now.
:shock:
revelator
Posts: 2610
Joined: Thu Jan 24, 2008 12:04 pm
Location: inside tha debugger

Re: Retroquad - a Quake engine with the most advanced realtime 8-bit color software renderer on Earth

Post by revelator »

:shock: wow
Productivity is a state of mind.
Post Reply