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?
Features include: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.
- 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
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];
}
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: