Skip to Content Skip to Navigation
Profile image for Ryan Herriman

Ryan Herriman

@silverfox@avara.dev

I've made a lot of Avara levels, and even headed up the Avara Aftershock mod project way back when. These days I try and put that esoteric knowledge to use by increasing the capabilities of the engine while maintaining backwards compatibility with the enormous library of third party content for the game. I also enjoy refactoring old code and continuing to make levels.

17 Posts Posts & Replies 11 Following 8 Followers Search

With specular highlights now working, I’m playing around with a potential design for rendering the lights as suns/moons in the skybox.

Decided to circle back to trying to implement specular lighting in Avara, wound up replacing the concept of “colors” in the model format with simple materials composed of a base color, a specular highlight color, and a shininess value. This allows a content creator to customize materials per face. To keep the look of old content intact, the default material continues to impart the flat shaded look!

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

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.

Ryan Herriman boosted

Aleph One 1.9 is now available from alephone.lhowon.org

Highlights of this release include Classic Marathon 2 on Steam, dedicated servers, the return of automatic demo playback, and more authentic gameplay options for Marathon 2 and Marathon Infinity.

Check out the full release notes here: github.com/Aleph-One-Marathon/

Ryan Herriman boosted
Ryan Herriman boosted

Aleph One 1.8 is available from alephone.lhowon.org/

The major new feature for this release is support for Steam and achievements. The standalone builds see a few changes and bug fixes as well.

Ryan Herriman boosted

Apple should go out of their way to make it easy to emulate classic Mac OS on modern Apple devices. Whether by providing an approved source of ROMs and system software, or just stating that it’s fine to distribute those things on the App Store. I don’t think they really care about those things existing online, so why not make them more accessible? It’d be fun, educational, and just a good thing to do.

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

Ryan Herriman boosted

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.

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.