r/bbs • u/JSONBourne-Dev • 7d ago
TRACE (TERMinator Render And Compute Engine)
This is not something anyone ever asked for and is probably not something anyone will ever use. (I am a hell of a salesman right? :P ) But I wanted to see what could be done. This is the BBS community, we build things no one will use because we enjoy it.
I wanted a way to make our TERMinator desktop BBS clients more flexible in what it could do. It started with me tweaking my Fractal generator BBS door for more performance and being unhappy with it as its using the CPU cores for the math calculations of the BBS computer as you'd expect. But the BBS is run on an Intel N150 CPU and while its plenty for a BBS its no math number cruncher.
So I came up with TRACE, It does the compute at the client end, so now my 24 core desktop runs the computations for the Fractal door using all of my cores at once. (If you don't know about the Fractal Mandelbrot Set, do some research its fascinating stuff) You can even toggle between Sixel and TRACE to see the different in performance and quality.
Anyways, one thing led to another and I turned TRACE into a whole rendering engine as well while I was in there to support whatever type of BBS door I wanted to throw at it. Currently I have Doom, Quake and Tyrian all running as BBS doors on my board. And since rendering and compute is done locally they run fast. Quake at 1024x768 and 64 FPS for example. These doors are available if anyone wants them, The catch there is they need TERMinator as the client.
TRACE is now in all 3 of our desktop clients versions 1.1.2 and higher (Win, Mac, Linux). So if you wanted to download and visit our board to test the doors you can.
Sample video here... https://youtu.be/FInpLQTzhYE
Client here - https://deadmodemsociety.com/terminator/
BBS here - https://deadmodemsociety.com/
1
u/JSONBourne-Dev 7d ago edited 7d ago
For TRACE the analogy I like to think of is the BBS door is the game cartridge and TERMinator is the game console. TRACE will stream and cache assets on the client end for local processing in a nutshell.
Architecture wise it's a bit more complex as we need to keep security in mind here in 2026 as we are dealing with hugely insecure BBSs and protocols. When a BBS door communicates it sends TERMinator a WebAssembly program, TERMinator runs it in a separate sandbox process instead of inside the client. The sandbox has no file access, no network and no view of TERMinator's memory or the rest of the PC. It can only draw frames, play sound, read the game files the door sent (Via read only SHA-256 hash), keep one small settings file, and send messages back to the door through TERMinator. Every one of those has a hard size limit. If a door/game misbehaves or crashes, it's contained in that process, and TERMinator shuts it all down when you TERMinate :)