VOGONS


First post, by mankrip

User metadata
Rank Newbie
Rank
Newbie

Hello, first post. I'm not sure if this is the most appropriate place to post this, but this is a project I've been working on for years, and this forum seems to be a place where people may like to know about it:

Retroquad 0.6.6 Public Release.

So, what's Retroquad about?

Retroquad is a game engine with a 3D software renderer that employs many color algorithms independently created by myself to sol […]
Show full quote

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

& lots more features, all in pure 8-bit color using a single 256 color palette for everything.

Here are some screenshots & videos:
https://www.youtube.com/watch?v=aBW4xru6x4s&l … aVkLog&index=19
https://www.youtube.com/watch?v=ocScAD3t8EA&l … aVkLog&index=21
https://www.youtube.com/watch?v=tT2YlXrDQRc&l … aVkLog&index=16
https://www.youtube.com/watch?v=D6NoZyTYyZw&l … aVkLog&index=17
FDuAGiTX0AUXKXp?format=jpg&name=large
E_GcSYaWYAIdRR5?format=png&name=large
E8OuUVlXMAArCy4?format=png&name=large
E7Q2Bz0WYAI9Fpf?format=png&name=large
EzIEhZXXEAUfGMY?format=png&name=large

Retroquad engine author.

Reply 1 of 4, by rasz_pl

User metadata
Rank Member
Rank
Member

>from low-end platforms

how low end seeing you software render to 24/32bit before dithering down to 8bit palletized? 1GHz for playable 320x200?

md5sum.exe C:\Users\me\Desktop\PAK0.PAK
\5906e5998fc3d896ddaf5e6a62e03abb *PAK0.PAK

Afaik you cant redistribute that outside whole shareware bundle, which is under crazy restrictive license itself. Remember ID is owned by Microsoft now. Last month they sued someone over "Doomscroll" name.

>Retroquad_0.6.6src

yeah, about that

"Accompany it with the complete corresponding machine-readable source code
complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable."

Reply 2 of 4, by mankrip

User metadata
Rank Newbie
Rank
Newbie
rasz_pl wrote on 2021-11-22, 19:26:

you software render to 24/32bit before dithering down to 8bit palletized

That's a lie. The whole rendering is done in 8-bit color.

Retroquad has a number of color compiling routines that converts everything to 8-bit color data during load time. There's absolutely no truecolor rendering at all.

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.

rasz_pl wrote on 2021-11-22, 19:26:
>Retroquad_0.6.6src […]
Show full quote

>Retroquad_0.6.6src

yeah, about that

"Accompany it with the complete corresponding machine-readable source code
complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable."

What do you mean? It's a 7-zip archive with the whole source in there. There's nothing missing.

Retroquad engine author.

Reply 3 of 4, by rasz_pl

User metadata
Rank Member
Rank
Member
mankrip wrote on 2021-11-23, 11:33:

That's a lie. The whole rendering is done in 8-bit color.
Retroquad has a number of color compiling routines that converts everything to 8-bit color data during load time. There's absolutely no truecolor rendering at all.

There is no truecolor output, you render higher color precision with alpha and dither down (shadingmaps), thats why Im asking about performance impact.

mankrip wrote on 2021-11-23, 11:33:

What do you mean? It's a 7-zip archive with the whole source in there. There's nothing missing.

Im sorry, must be on my end then (couldnt compile)

Reply 4 of 4, by mankrip

User metadata
Rank Newbie
Rank
Newbie
rasz_pl wrote on 2021-11-23, 13:23:
mankrip wrote on 2021-11-23, 11:33:

That's a lie. The whole rendering is done in 8-bit color.
Retroquad has a number of color compiling routines that converts everything to 8-bit color data during load time. There's absolutely no truecolor rendering at all.

There is no truecolor output, you render higher color precision with alpha and dither down (shadingmaps), thats why Im asking about performance impact.

Read the source instead of spreading lies. All of the rendering data input is in 8-bit indexed color without alpha. And the 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.

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 >> TEXELPRECISION) * lcachewidth] + LXYVa) & 0x00FC) << 6) | texel_a[tcoord]] | luma_a[tcoord]] | *pbuffer];   }

Simply because you have never seen such a technology in your life that doesn't mean it is not possible.

rasz_pl wrote on 2021-11-23, 13:23:
mankrip wrote on 2021-11-23, 11:33:

What do you mean? It's a 7-zip archive with the whole source in there. There's nothing missing.

Im sorry, must be on my end then (couldnt compile)

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).

Retroquad engine author.