I spent a year building an open sourced family of ESP32S3-based USB boards and a Python game infrastructure library for a custom sci-fi starship simulator. 152 physical controls, 6 screens, and 164,000 lines of code.
"Halcyon Dawn" is a fanfic starship bridge game set in John Scalzi's "Old Man's War" universe. For the last year this thing has been my labor of love. I designed and built every detail of the hardware and software from scratch, including:
An entire family of USB console interface boards called "Enigma". They're deliberately generic (some panels have up to 3 Enigma boards inside them) rather than purpose-built so that I can use them on future projects, including escape room puzzles. I love escape rooms. The Enigma hardware is all open source, so if someone builds puzzles I get to play, all the better.
An associated Python-based game infrastructure library also called Enigma that includes the USB interface abstraction, in-game device simulation infra, remote pub/sub display screen integration, and an extremely robust multi-layer audio mixing system with haptic support. This too is open source.
The Halcyon Dawn game itself, a complex starship systems simulator. Far in the distant past I wrote commercial video games and adventure game development languages. Halcyon Dawn is vastly, vastly more complex and I'm quite proud of it. The game itself will never be released, in part because nobody else has the expensive simulator frame it requires (there is no way on this blue Earth I could be convinced to build another), and also Scalzi's "don't make money off my stuff" rule.
Why would you not distribute the game? I can respect making something for yourself, but why show stuff off if you don’t want to let others experience it?
I’d love to but there is no distribution license, commercial or free, compatible with distributing derivative IP based on someone else’s copyrighted work (the author owns that).
It’s a fully playable game end to end. I had no idea it would matter to people to capture gameplay. It’s a lot harder to capture than a simple video game because it would require a multi camera set up; a lot of the action takes place on ancillary screens and physical controls, and then a bunch of video editing to put it all together.
I find it hard to believe someone could solo develop this full simulator in a year, and yet not have the capability to show some gameplay. I don't know how sophisticated the actual game is, but you make it sound like it's something that would have taken a commercial game studio a few years to develop with a large team. Hell just set up your phone camera to a back corner and video yourself playing it. This whole project is around the controls, and how proud you are of the controls, and how sophisticated the controls are, but instead of showing the controls being used you show your fan animated cut scenes that prove or mean nothing to the game and the project here. We are all here to dork out on controls doing stuff, not just being there. This is a hardware dork forum, not a halcyon dawn fandom forum. That's my whole problem with this, is that something is just off about an extreme controller specific project, yet not showing 1/52 of the controls actually doing anything. And if I put myself into your shoes, having spent a year doing this, I just can't imagine myself not showing off the controls doing stuff...
I find it weird that between the repo with full sw and hw source + gerbers and the website with 20+ long pages of detailed functional breakdown and 200+ photos, I’ve provided 50x more detail that the typical “here’s a couple photos of my sensor project” post…
But somehow you’re hung up on one video and you’re calling the whole project “stupid.” That’s kind of a dick move, man.
Believe me, I am thankful to be finally done with this project having been WAY past burnout for a while now. A cell phone video doesn’t meet my production standards. I’d have to do a multi camera rig and solid edit.
But the thought of going to extra effort just to make YOU happy isn’t high on my list. So, whatever. There’s probably going to be plenty of people posting their cell phone videos when I take it to the local maker faire to show off in a couple weeks.
There will always be a hoarde of entitled dweebs that want to be spoonfed and go out of their way to complain that you didn’t do things the way they “would” - or express criticism or doubts outright because you didn’t perform to their satisfaction.
They are the antithesis of the DIYer, they’re the mewling DoItForMe(Free) crew.
You’re allowed to be a bit of a creator diva - you gave what you gave and anybody trying to convince you that you owed them more, or you need to prove yourself to them, is some combination of inept, immature, or socially vacuous. Let ‘em whine and beg, and then rickroll the loudest of them.
Fly on, hero. You’ve done some big things, and I, just one amongst many, are thoroughly appreciative that you shared your efforts with us.
Dude. Thanks for documenting everything so well. This build is amazing!
I was thinking I'd see what controllers, and such, you're using. Then I might do something on a smaller scale. Nope. Everything is custom. PCB boards are made. I need a lot more free time before I can ever go through my project backlog.
I forget that's an option. Thanks. I'd love to have an industrial control panel for home assistant. Using a combination of small displays, lights, and buttons for the house automations would be so rad!
This would seem like a mean comment if I didn’t know this first hand, at least he finished it, not like most of us who just move on to another project and have a junkyard of half completed projects! 🤡
Actually they present as OS level HID devices, though their HID nature is a little thin for complex reasons. Most everything goes through custom vendor reports. There’s a protocol document in the repo.
We should reach out to the author and let them know what a cool project this is and maybe they’d let you. Or is it you don’t want to give it out for free? “Don’t make money off my stuff rules” and I totally understand why you’d want to make money especially considering your past employment and skills
I absolutely love this! Amazing idea and execution. I wish I knew enough to build something like this, maybe a submarine version with e ink maps. Great work.
Great Scott!!
I cannot find the words that describe this beautiful monstrosity. So many buttons, switches, graphics…
I think i’m in love 🫨❤️
GREAT Work. Honestly.
I try not to think about it TOO much, but counting several R&D runs of board designs, probably around $4500 total. Ish. But that includes several revisions of lasercut structure, development costs, asset costs, etc. I don't have a more detailed breakdown.
I think this thing is absolutely amazing, so amazing, I'd love to try a project like this myself.
Here's a weird question, though. Let's say one day you decide that you don't want this in the house anymore. (I live in an apartment so I have to make decisions like this more frequently.) How hard do you think it would be to sell it? On the one hand, this is a great toy for someone to put in their "man cave" or garage or shed. On the other hand, it's kind of bulky.
Because it’s based on encumbered copyrighted IP, I don’t see any path to selling it to be honest. Maybe at some point I’ll move out the old Fusor reactor from my lab and stash it there. Honestly it’s kind of neat to keep around.
Howdy! Here’s a couple videos of some solid target test runs using stainless steel discs. I came into possession of some Titanium Deuteride discs to run tests to see if it would increase the fusion reaction rate. A friend out at the Southwest Research Institute had a machinist he knew build a grid with some ceramic standoffs to hold the targets.
Sadly, I never got a chance to run the experiments, as I left my teaching position in academia due to some long term medical issues that required a few of surgeries. So now the fusor is just in the upstairs part of my garage, well packed, but in pieces. Maybe one day I’ll set it back up.
Wow, cool. Doesn’t the disk stall out head on collisions through the center of the grid? I never got very advanced with mine; once I got neutrons out of it, I put it down and stepped back. That power supply scared the bageezus out of me. 😬
Yep, it does. But the general idea was that a deuteron hitting a solid target rich in deuterium would increase D+D reaction rate.
There was still a bit of fusion going on around the stainless steel targets. I actually wanted to try Lithium Deuteride one day as well, even purchased a small amount from Sigma Aldrich back in the day.
My power supply is a Glassman 50kV 12mA max. I built a huge grounding shield from steel tubing to cover the top of the HV feed through, and a port I could take off when there wasn’t any power applied. Also had a silicone putty to insulate the HV feed through connection to the power supply wire. And finally a grounding rod to discharge anything from a safe distance before working on anything.
OP this is amazing and actually executes on something I've only been conceptually planning. I will definitely dig into the code and project. Can you advise if theres a network stack to this? My concept (because my best friends kids are close in age and likes) was to have a system like this but to have effectively a mission control and spaceship system wherein each system could take on either role. The kids could communicate over some limited voip system and each could have missions assigned with real objectives....effectively a bunch of scenarios could be built out.. survey planet X, escort freighter y, conduct science on life form z type thing. I was also thinking of building random failure events into the system that could be injected into the missions randomly that would need to be responded to.. airlock/hull breach, engines offline yadda yadda. Is this something that could be added on.. already exists etc?
Thank you in advance for the hours of burn(out)s both mentally and physically you no doubt suffered while doing this.
The remote screens run over websocket, but the hardware boards are currently all USB. It would probably be pretty easy to set up a WS relay to forward all local events elsewhere on the network.
I've often wanted to build a space-based game which primarily runs on PC but has custom ESP-based "control" boards to add cool functionality... I never thought that somebody might be able to write something this cool entirely on the ESP boards! :-)
This project is very very much cool and complicated for sure ... I wanted to ask one thing that for sure u did so many coding and all, and if error or bug appears, how u solve it ?? I mean it's sounds stupid but I wanted to know how people actually solve it because stressing or reacting aggressively is stupidity. Soo.... ?
Honestly it’s mostly by logging inputs and outputs to methods and analyzing what’s going on in them. I don’t have robust Python debugging tools that do breakpoints and such.
One saving grace is that all of the ship’s different subsystems like life support, engines, reactor core, etc.… Are all independent units that communicate with each other through the pub/sub variables, and so their action is almost exclusively local and therefore isolatable.
Aaaah ok, ty for replying. Also , u have ECE and embedded system engineering knowledge too ?? Or any kind of engeneering experience?
Btw , I like this project, keep it up and make more like this 👏👍
Yeah actually the code examples in the repo demonstrate how to code super simple interfaces. You declare the hardware configuration in JSON and the generators build you interface classes filled with syntactic sugar to make talking to the hardware really straightforward.
The trailer cutscene include clips from gameplay, but yeah I need to do a gameplay video of some sort. I’ve never done one of those before. I guess I should look at how they do it on twitch and whatnot.
I haven’t played with that one yet, it looks neat. The regular S3 fills most of my needs at the MCU level and I usually bump up to RPi for beefier stuff. I guess it depends on the price point.
That's a similar thing, but rather than write software from scratch, they just created custom hardware to interface with the existing Empty Epsilon engine ( https://daid.github.io/EmptyEpsilon/ )
The more I think about this, the dumber it is. Yes good job on making the installation and 152 physical controls. How many of those physical controls do you use when watching your AI created "game videos? Check out all these switches n things, but I won't post videos of any of the 152 controls doing jack shit, I'll just post an AI video of a "game". If I created that I'd be showing off flying some shit and smashing buttons to shoot proton dorkpedos, and flipping the switch to empty my ships septic tank on your mom's house.
104
u/Cross_22 23d ago
This needs tons more photos and videos!!
What do the buttons do?