“Perfection!” I had to fight the acquisition of world space coordinates for the skybox for the purposes of ray casting for longer than I expected, but it seems that it’s paid off and I’m now able to apply fog accurately to the not-actually-there ground.

Welcome!
This is a community dedicated to the 1996 classic shareware game Avara, and the ongoing development of a modern port.
We are running Incarnator, an ActivityPub/Fediverse server forked from Takahē. If you want to give it a spin, there's an open testing instance at alpha.incarnator.org.
Recent Posts
Debugging calculating world space coordinates per fragment, finally working after a long battle with something meant to be dirt-simple. Turns out Avara’s matrices are transposed. Nothing I’m doing with literally any of this is rocket science, but at least I’m learning a lot in the process. 👍 Thanks to @croc and aureus for banging your heads against the wall with me on this.
Currently working on a lore-accurate atmospheric haze effect! The color is an artifact of the level’s sky colors (I might make it independent later), and the density is also configurable by the level designer. It defaults to off entirely to avoid mucking with the appearance of old levels. This all started as a way to try to subtly add more depth to the otherwise flat shading, which normally can make determining the edges of level geometry difficult. I find that even a low amount of haze (about 500 “ppm”) is enough to alleviate the issue without making things look obviously foggy. (The screenshot is at 200000ppm.) We’re going to work on finding ways to convincingly apply it to the skybox next.
Been working on the Avara renderer again! It’s been on the agenda for awhile, but I finally bit the bullet and drastically improved performance by identifying and storing static objects in a single vertex buffer and draw call. Sphinx built a test level with over 2000 game objects (far beyond any existing level, given the game’s history as a 90’s game) and its performance is essentially no worse than Baghdad, the canonical “barebones” level. Previously a map like this would take something like 10ms to render, now it renders in less than 1ms on average (it peaked at 1.3). I also worked on a simple fade out effect for objects exiting the view distance.
I'd love to give back to GNU but sometimes the libraries sure do disappoint. Perfect compliance to the style guide AND writes random strings to `stderr`. We don't do `#define BUFFER[4096];`--in 2013 no less
me after clicking download on the glad webpage the fourth time in an hour: perhaps I should try GLEW
Spent a couple hours updating our zig branch from 0.8 to 0.13, still better than dealing with CMake
Probably my favorite part of the initial port was the level loading from PICT resources. Avara would install QuickDraw callbacks for all the different shapes and text, and then render the PICT, calling those procs to iteratively build the level:
https://github.com/jmunkki/Avara/blob/master/src/Avara/GameParser/LevelLoader.c#L406
I spent several days digging through Inside Macintosh - Imaging With QuickDraw (822 pages!) learning how to parse PICT opcodes and mimic QuickDraw callbacks, resulting in:
Hawthorne - August 16, 2018:
Tonight on Tuesday Night Avara, I’m testing Head (@tra) and Lucifer’s spawn-killing prevention measures for the first time while simultaneously trying not to lose my temper after KeeL kills me for the hundredth time. https://www.twitch.tv/avara_silverfox
Left: August 6, 2018
Right: August 8, 2018
@croc@avara.dev somehow found and fixed a matrix multiplication error (I transposed two subscripts), ending my weeks-long suffering, and instantly fixing BSP rendering. It was a four character change, but seeing actual Avara BSPs rendered completely reinvigorated the port. We also introduced a new JSON format for BSPs, so we could stop reading them out of resource forks.