Iron Arachne's eighth anniversary

February 22, 2026

Today is the 8th anniversary of the launch of Iron Arachne. In those eight years, I've built some things I'm pretty proud of. The planet generator and the culture generator stand out most. There's still a lot of things I want to improve, and the list keeps growing. I daresay the list of things to do is increasing faster than the rate at which I do them.

The context for Iron Arachne shifted over the years. When I started it, I was no longer active in Silver Gryphon Games, but I was still working on tabletop role-playing games. A year or two later, I rejoined Silver Gryphon Games, and Iron Arachne shifted just a little in support of that. Then in 2023, Silver Gryphon Games formally closed. I focused more on Iron Arachne after that, and that's when the bigger releases (like the planet generator's current form) showed up. Last year, I sold most of my tabletop RPGs when I moved from North Carolina to Newfoundland, and Iron Arachne shifted to a worldbuilding focus over an RPG focus.

The only non-SGG RPGs I kept were Shadowdark, Orbital Blues, and Scott Compton's S.O.R.D.

Since December, I have been working on a massive update to the site. I originally intended it to be launched today, but the scope of the changes requires much more time.

At first, the big update was a change to the @ironarachne/rng library. I needed to be able to instantiate and seed more random number generators without affecting the global RNG. This was so I could fix a bug where, in a number of situations, altering the random results for a small piece of generation would affect completely unrelated random generation. So, I rewrote rng so that it would handle all of the random logic. This meant it replaced the random and seedrandom libraries I had been using up to that point.

Updating Iron Arachne to use the new version of the library was a huge effort and affected every part of the code. While I was working on this, I saw many opportunities for improving the site. Some of these I shelved until later. However, as I was just finishing up a course on applied algorithms for my master's degree, the algorithmic complexity of the dungeon generator appalled me. So, I decided to include a rewrite of the dungeon generator as part of this big update, since the rng update would be invisible to users.

It did not dawn on me until later just how many subsystems would need to change as part of updating the dungeon generator.

Initially, I wanted to get as close to deterministic as possible for every function. This meant having local random number generators and unique seeds all over the place, and it took awhile for me to learn the appropriate balance between "no randomness at all" and "completely random and dependent on global RNG." I'm still learning that balance, honestly.

I rewrote the treasure generator first. I assumed it relied on the fewest dependencies. This assumption was wrong, as it led to rewriting the item system. This, in turn, affected several other things. The magic item generator relied on the item system, for one. The magic item system isn't where it needs to be, but it's good enough to be on par with how it was before the rewrite. The new system takes into account container logic, including liquids. This is a massive foundational upgrade. However, since I'm focused on just getting this done, the initial release isn't going to use much of that beyond putting treasure in chests and other containers.

The next part of the rewrite was the encounter generator. At time of writing, I'm still working on the side effects of rewriting this subsystem. I rebuilt all of the underlying mob system. This includes the characters library, which is used by a ton of other things. The religion generator, for example, relies on the characters library. So does the family generator. I've already rewritten the family generator and I'm working on the religion generator. I'm trying to limit myself to just making it work with the new system instead of adding features, but the new family generator includes a family tree image. I couldn't help it.

An image of a fictional family tree
The family tree images are pretty basic so far

Also, I didn't need to do this, but I added a little bit of new functionality to the heraldry generator, along with many new charges. These new charges are AI-generated placeholders until I can find a real human artist to recreate them.

A heraldic device displaying a yellow housecat on a green and red striped shield
One of the new charges, a housecat

Once I finish fixing the side effects of rewriting the characters library, I'll finish the encounter generator. I built a new combat and magic system unique to Iron Arachne and added a translation library for turning those stats into Dungeons & Dragons stats. This is an experiment that may lead to more generators in the future.

So, that's what's been done. Now I'll write about what's still left to do.

For the dungeon generator, I need to write the following systems from scratch.

I can reuse some of the old dungeon generator's code for parts of these, but not much. It may be worthwhile to write about each of these systems here as I work on them. If you look at the list and think, "that sounds an awful lot like the subsystems of a Multi-User Dungeon (MUD)," you're not far off. I have an idea for another experiment later this year, but I won't write about that here. First, I need to complete the massive project I've already started!

In the coming weeks and months, there will be more blog posts about each of these systems. Writing about them helps my understanding and clarity. Drop back every so often, or follow my RSS feed.