Hi Gang. Happy Thorium Thursday.
I’ve been building and maintaining Thorium Classic since 2016. During that time, it has been adopted by several brick-and-mortar space centers that use it in their field trips and private programs. Naturally, it’s not perfect. There are bugs, idiosyncrasies, and paper cuts that its users experience. But it’s a good program that works well for what they need. And, secretly, there's part of me that is glad it exists, just in case the Thorium Nova experiment fails and it ends up not being fun - I want good bridge simulator software to fall back on.
Unfortunately, maintaining it is a bit of a pain. It uses old techniques and packages, some of which are entirely unmaintained themselves. The code style is haphazard, since I used Thorium Classic to learn how to write code in the first place. And the underlying architecture is dated, hence branching off to build Thorium Nova in the first place.
I’ve played around with the idea of rewriting Thorium Classic using Thorium Nova’s engine to make maintaining it a little less of a headache. But every time I do it, I think to myself “What’s the point? What I should be doing is working on Thorium Nova, since that’s what I want to be building anyway.”
I go through this cycle every couple of months. But this time I had a crazy idea. You see, I split Thorium Nova into its own project because I knew the architecture of Thorium Classic wasn’t going to cut it for what I wanted to build.
But the same can’t be said for Thorium Nova’s architecture. It would work incredibly well for building a bridge sim game like Thorium Classic. It already has the foundational pieces - all that it needs is swapping out some of the backend simulation to fit Thorium Classic’s simplified model, port all the cards and cores over, and build out some specific features like keyboards, lighting, and simple viewscreens.
I'm building it, and I call it Thorium Legacy mode. That’s right, mode - I'm splitting Thorium Nova into two modes. When you start a flight, you’ll be able to choose between Nova mode, which simulates the 3D universe and does not require a Flight Director, or Legacy mode, which is based on Thorium Classic, requires a Flight Director, and has much less simulation, but provides more storytelling flexibility. Both gameplay modes will be available in Thorium Nova.
I started prototyping it this past weekend and already have one card — Thruster Control - completed. I chose this card as a test because it has a bit of everything without being too complicated — some simulation, some real-time communication, some 3D. It’s worked out great, is much cleaner than the original implementation, and even highlighted some bugs in the Thorium Nova components that I used to build the card.
I’m going to spend less time directly working on the Thorium Classic codebase. Instead, I’ll focus on porting cards and functionality to Thorium Legacy mode as quickly as possible. I don’t know how long that will take, but a generous estimate would require a week of effort per card. With 76 cards, it’ll take about a year and a half. I sincerely hope that it does not take that long.
As I go, I’ll be fixing paper cuts and making small improvements - things that always bugged that I’ll finally get around to making better.
Classic users will then be able to enjoy all of the core features of Thorium Nova, like more polished UIs, built-in documentation, the new mission and trigger system with more sophisticated automation tools, improved real-time synchronization between clients, a better dynamic core layout, the ability to customize layouts without needing a new version of Thorium, and probably more.
This work will also include tools for migrating existing Thorium Classic snapshots into Thorium Nova plugins that are fully compatible with Legacy mode. I intend to take a survey of Thorium Classic users to make sure all of the functionality they expect will be consistent in Legacy mode.
And finally, when Thorium Nova is finished, it will be easy to start adopting it one flight at a time. You’ll be able to port missions and ship configs over bit-by-bit without having to start entirely over, and can easily fall back on Legacy mode flights as needed.
It’s a bit of a mixed bag. I originally pitched Thorium Nova as having all the features that people love about Thorium Classic — this just gets them in the codebase a bit faster. This does come at the expense of building out the features exclusive to Thorium Nova.
Here’s what I’m currently working on:
So I’ll still meet, and exceed, my goals for 2025. We’ll see how things shake out with working on Legacy mode and how many Nova features are part of my 2026 goals.
That said, this will push the limits of the Nova architecture, which will strengthen it and make it more robust. UI components that I build for Legacy mode will be reusable in Nova screens, just like the Nova components will be used to build Legacy mode.
And the benefit of having an easy onramp for Thorium Classic users to adopt Thorium Nova will be a huge benefit. In fact, this might make it possible for us to write the Thorium Nova campaign as Legacy mode missions to test them out and get feedback before releasing them as fully automated missions with Thorium Nova.
Hopefully this sounds like a good plan, but I’m open to feedback. The biggest drawbacks of Legacy mode is how much time it takes away from Nova mode features and the risk that it might derail the roadmap. Naturally, if anyone else wants to keep working on the Nova mode roadmap, I’m more than happy to get you started and point you in the right direction.
Either way, I’m not too worried about, mainly because I’m patient and don’t need Thorium Nova to be finished anytime soon.
I’m here for the journey, and I’m glad you are too.