Skip to Content Skip to Navigation

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

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:

github.com/jmunkki/Avara/blob/

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:

github.com/avaraline/Avara/blo

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

Hi, I'm croc, I've worked in (mostly web) software for a long time, stemming from an interest in computers sparked by the Apple Macintosh as a young lad

I love working on video games! I contribute to the open source port of Avara, and I have made minor contributions to Antares and various Escape Velocity community projects

I will be posting stories about porting Avara here, possibly some general development frustrations, probably the occasional music video.

The first attempt at BSP rendering during the Avara port (at least the first I have a screenshot of). It is supposed to say “Mission Complete” - friends, the mission was NOT complete.

My work on this project is frequently motivated by something I want to be able to do as a level designer. Sometimes, the work itself inspires me to create a new level as a showcase! Around the time of the transparent rendering fixes, I made an updated version of my old KOTH map, Mill. The new version is called Don Quixote, features multiple recessed glass platforms, fixes the Z-fighting on the teleporters, and replaces the KOTH logic with my updated solution which supports all 8 teams.

Once the other devs were satisfied with the rendering refactor (it went through a couple design iterations), I decided I'd try my hand at enhancing the renderer. I've been slowly laying the ground work for deferred rendering, and one of the steps is to render transparent geometry once the opaque geometry is completed. This, combined with sorting the transparent faces (with extra help from Head) has finally rounded several rough edges with rendering transparent geometry! Before and after:

Going to try logging updates and thoughts here from now on. Thanks to @vertigo for setting things up! I've already talked briefly about refactoring asset management elsewhere, but shortly after that I refactored Avara's rendering code as well and learned a lot about OpenGL in the process. An interesting side effect is that it appeared to reduce app memory usage by roughly a third. Here are some boring before/after shots to show that nothing (aside from code quality) changed.