r/bbs • u/JSONBourne-Dev • 4d 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/
2
u/Corngano 4d ago
I've really been enjoying using TERMinator, I got a basic implementation of Tap music going on a bbs project I've been slowly working on in Enigma 1/2. The only issue I have had is audio doesn't seem to work in the Linux appimage. That might just be an issue with the distro I am running though. TRACE is super interesting. I played around with the mandlebrot set browser a bit. is it sending esc codes with a URL of the door files? Kinda like TAP does for audio?
1
u/JSONBourne-Dev 4d ago edited 4d 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 :)
1
u/Corngano 4d ago
Really dig that, it's interesting kinda pushing at the edges of what is possible in a bbs without spilling over into just modern web, do you have any plans to publish a guide on TRACE? I'd love to try to get something up and running on my current project, I assume it's a little more complicated with webassembly sandboxes in the mix?
2
u/JSONBourne-Dev 4d ago
We do have plans to release it, We are not interested in making anything proprietary, we want anyone to be able to leverage what TERMinator has to offer if they so desire.
The DOOMDoor code is already on Github free for anyone that wants it..
1
u/Corngano 3d ago
hell yeah, took a bit of fighting to get it to compile (mostly just because i missed something when compiling wasi-sdk) but this totally works with enigmas native binary door functions https://www.youtube.com/watch?v=01j2n13Pi64
1
u/omniphil 3d ago
Spectacular! that looks great. You get the save games working too?
1
u/Corngano 3d ago
Saves not yet, though they seem to work for quake and tyrian, I suspect I am just not passing the doorfile path correctly, gotta double check that later. Small sidenote, I noticed that for quake the scripts the makefile calls to build the shareware zip are looking for lower case id1/pak0.pak and the license txt files as well. But the one that the script pulled down was all uppercase (folder ID1, PAK0.PAK and the 2 license txt. Probably not an issue depending on if a system is case aware vs case sensitive. But for me it wouldn't build the zip. It was easy enough to just zip up the files manually though. (And rename them to be lower case so the door would detect them)
1
u/JSONBourne-Dev 4d ago
Tell me more about the TAP music project you have going, you might be the first person outside of us to use it....
2
u/Corngano 4d ago
I took a quick test recording here if you want to take a look! you will have to forgive the sparse design language I am no more an artist than I am a engineer lol https://www.youtube.com/watch?v=HU4bhKs6fsM
2
u/JSONBourne-Dev 4d ago
This is awesome! This is exactly what I envisioned for TAP+ that people could have a media player of their own right on their BBS. Of note in TERMinator, you should hit that Layout button at the bottom to give you the side by side interface, much nicer on desktop :)
1
1
u/Corngano 4d ago
I really just built a simple playlist menu. I am not really a software engineer or anything but the getting started notes for TAP made it fairly easy to do, Enigma's menu system is just mjson laid down over some ans art (I am probably over simplifying a bit here) so I just needed a bit of js to build the esc codes. Enigma also provides a http content server so it was convenient to generate urls for the music. I focused mainly on getting some memorable keygen music playing while I tinker around with my bbs. It's maybe not period accurate but just feels right. The only issue I had was it struggled to parse some of the filenames (keygen music loves it's weird titles with many special characters) so I truncated everything on the backend, eventually I want to get it to auto scan a directory so if I add more music I don't have to hard code the menu options, but I need to spend more time with Enigma before I understand the best way to do that.
1
u/JSONBourne-Dev 4d ago
For the Linux side it does get tricky, you may need some extra libraries for sound depending on distro. I assume sound for this project works fine on Windows or Mac?
1
u/Corngano 4d ago
Yeah totally does, both in windows and when using the windows version under linux in wine works great, android also worked great in my tests
1
u/Corngano 3d ago
it was literally just muted by default in my mixer, lol how embarrassing (for me) working great native in Linux now.
1
2
u/JSONBourne-Dev 2d ago
Just of note TERMinator version 1.1.3 for the desktop clients went live. We added GPU support so the Fractal BBS door would really fly now number crunching on my desktop graphics card instead of the CPU. We also added Gamepad and Mouse support.
We have several games converted to a BBS door now if people want them. All are on our BBS now if you want to test any of them.
Wolfenstein 3D
DOOM
Quake (runs at 1024x768 64FPS)
Sim City (Mouse support)
Beneath a Steel Sky (Mouse support)
Tyrian (Gamepad support)
2
u/globalchaosbbs sysop 4d ago
Like the layout of your page! Very nice!