2025-09-22: Big Bad Game-a-thon 2025, or How I Ran A Marathon Entirely On My Own Code

We just wrapped up Big Bad Game-a-thon 2025. I'm not one to brag but I think it was our smoothest event yet. I say that every year, because we're constantly improving. This one was special though. This year we moved to using the infrastructure I built for restream.space.

To say this was terrifying is an understatement. I tested everything religiously, but you don't really know how things are going to go once you introduce a 54 hour event with 10 staff members and 40 runners all interacting with it in different ways at the same time; you know? But it went marvelously. I have a list of tweaks to make that's as long as my arm, but it filled the core purpose perfectly and everything I had to throw into my bug tracker I'd call "QoL improvements and small bugfixes".

Restream.space, in a nutshell, is a small video content delivery network I'm running off a bunch of linux VPSes that do nothing but shuttle un-transcoded video around to each other, and a control plane that builds a website around broadcast graphics and web players to deliver a full "Marathon" presentation into a single web page. It's a weird combination of a home-run Amazon IVS and NodeCG, but more simple than either of them, and purpose-built for marathons and stream events.

It'd been sitting "ready" for something for months before I finally decided its first event (at least using all the automation and not just parts of it) would be BBG. I spent most of the entire month leading up to the event anxious about this decision.

But it went perfectly.

We had one technical issue mid-day Saturday while I was asleep. I ended up waking up to a marathon stall and kind of just said "Refresh the entire live page; let's get moving again". It then never happened again, so I'm not sure what happened there. We have a function to force-refresh video feeds but I didn't use it; I went straight to the thing I knew would fix everything. Regardless, it was fixed and we moved on.

So with the anxiety of "Is this going to work" out of my mind, I'm focusing on polish now. We need stinger transitions for scene changes, better flexibility on fields, a couple other things. More importantly, I had to make concessions in my system to do things "The BBG Way" and I think it's time to think about maybe changing what "The BBG Way" is to make things even better. Things like organizing fields in the layout.

I think I managed to hit on an extremely usable control interface too. I gave our hosts the ability to use a web form to fill out the overlay fields and control the layout, with a list of pre-configured runs they can just select and go. Everyone took to it flawlessly. We had, I think, three execution mistakes the entire event: two of them can be handled by a confirmation prompt and one was arguably "my tools did the correct thing for the inputs you provided".

In short though, I'm over the moon on how it went. Extremely proud of myself, my work, and the staff.

Enough About the Tech, What About the People?

I think, outside of the anxiety about the tech stack, there was a different energy in the air this year. The past couple of years, we were getting burned out. We'd finish each BBG exhausted and talk a big game about doing other stuff through the year, then never do it. It's only a 3 day event, but then you have a week before hand setting runners up and planning things, the giant rush of reviews, preparing the schedule. In total there's probably a six week period where either the entire staff (about 10 people) are putting multiple hours a day in to BBG, and the producers (2 people usually, more on that later) are putting in full workdays.

We don't have to put this much time into BBG. We want to. We want a polished event where the runners just show up and we all have fun with minimal setup fuss. We could just show up day of with a schedule we threw together and have 15 minute setup windows where we hand-crop Twitch streams and manually update fields and get things wrong and all this other stuff. I say all this with the implication that you can do it that way and still have a great event! I want something a little more though.

But regardless, this was something we needed to address. I can't say I was 100% successful, but I think we made great headway there. We've been expanding our staff a little over the past couple of years, to handle people who've stepped back a bit. I finally bit the bullet and gave a new person stream keys and some direct production tech responsibilities. The net result was I was able to actually sleep this year.

No joke. For a couple of BBGs now I haven't slept until I passed out. 6 or so hours per weekend, at best. It was killing me.

We also had some new runners who were just so dang excited to be here that their energy was infectious. We had one runner who submitted so many cool games we had to cut them off, then they showed up and started hopping onto other people's couches (with permission). I needed that level of unbridled enthusiasm. Speaking of which: the Sonic 06 run? Some of the best upbeat commentary I've heard in a long, long time. Just wow.

We had entire communities show up for the first time. I pushed out the feedback form this morning and already I've gotten some great comments from people about how happy they were to be here.

It makes the burnout just instantly vanish.

Actual Runs and Stuff

It's hard for me to have a top 5 or anything. Especially this year because I actually missed a good number of runs, you know, sleeping. Sonic 06 had such infectious energy and was so well executed to boot. The ALF opener and Pac-Land closers turned out to be amazing choices by our review squad. Flipnic was a good time and a fun watch. The Skate Horse race was awesome.

I had a run in, but it was mostly a token thing so I could continue to say I've been in every BBG. I ran Info Harry, as a bookend for my Info Harry II run last year. It was a 9 minute thing I ran while we were setting up for the finale stuff; literally an extended setup block I filled time in. I don't even feel bad about it or feel like I got given a slot because I'm production. It probably would have just been setup anyway if I wasn't there.

We had a lot of "theme" stuff this year. We had a lot of FMV game content, a lot of pinball, some edutainment stuff, some neat showcases. I think for next year I want to try to focus a little bit more back on speedruns, but we're constrained by what we're offered by runners. I'm definitely not unhappy, and I don't feel we need a clearly defined identity as a speedrun marathon that's all serious about our branding. I think if anything, our identity is "a bunch of gremlins who just take anything they think is fun"

Our horror stuff I think was perfect this year: not hardcore jumpscare laden horror, but not incredibly silly either. The horror driving games might be some of my favorite runs of the event too.

We had a 4 hour long adventure game as a cozy slot option. I don't regret that one bit either.

I think we have a good variety of tempos, themes, and genres even if we fall into "blocks" and "themes" a bit more than we might should.

So What Went Wrong?

Not much actually broke or went south. Let's see... We had a technical blip on Saturday afternoon. I woke up to a marathon stoppage due to a tech incident and our producer on shift at the time was about to kick the automation off and take over streaming manually before I was able to fix it. I think I have that glitch pinned down and hosts should be able to fix it if it happens again going forward.

I'm burying the true lede here though: If I had been another 3 minutes, staff would have fallen back to a backup without me and the marathon continued. That... was very not true the past 6 or so years. Gosh that's so good to know.

Our audio balancing is still rough. It has been our entire existence and we get feedback about it every year. It's, unfortunately, a tradeoff. We try to keep runner tech simple: commentary is done by pushing the commentators through the runner's stream via discord call. That means we receive all the audio bundled together and it has to be balanced by the runner before the run. On top of that, since the software pushing the stream to Twitch is unattended and hosts control the marathon with a web based hosting panel, we've been trying to dial in a limiter/compressor filter so if someone comes online way too hot, we don't blow people's ears out. Unfortunately that means things get squashed in transit. I want to kill the filter, but I need to do work on the audio systems before we can. I hope to by the next BBG.

We let some weird stuff into the event I'm not 100% sure we should have. One runner especially (and staffer too) tends to show up every year with something that oddly skirts the line on what we want in BBG. They don't do this on purpose, it just happens this way. This year we had a run I'd describe as "Content Warning: Yes". I was pretty okay with it up front, but watching it live, it felt not great. On top of that, it has a small number of Voxify voices in it. That I was far less happy about, but everyone else seemed okay with the idea of a game that's produced entirely with human effort, then one or two voices are filled in with AI.

In the future I think I'll be more steadfast about not wanting AI, at least.

What else... The new content warning system. It's one line shoved in the corner of the overlay. I had a neat animated sliding box for that, but then we allowed webcams this year and I had nowhere to put that box. I need to go back to the drawing board for this. However being able to add CWs live to a run was a hit with everyone. We needed that.

Transitions were rough. There's no animation or stinger for them right now. I thought this was okay because our old tech chain didn't have them either and the video encoder would struggle for a moment on a sudden transition and kind of tween it for us. Well this year we also increased our bitrate to Twitch so that stopped happening; doh. I get to add a stinger transition to the system now!

I also learned the hard way I need a confirmation on the button to commit layout changes when a setup staffer accidentally pushed a WIP layout change live, cutting another runner off. I now, already, have a confirmation popup for that button. Coded it this morning.

Finally bitrates. On the whole I think I shot too low on guiding runners on bitrates, mostly because since this is WebRTC and we can't encode b-frames, we need a slightly higher bitrate to compare with Twitch. This is a combination of things: The OBS I handed out defaulting to a fairly low bitrate for high-motion 3D content, and my setup docs not making it clear runners can change it. Kind of unfortunate but something to work on for next time.

But So Much Went Right

I have a lot of tiny complaints. But at the end of the day everything on the whole worked exactly how I designed it. No unexpected bugs minus that one audio glitch on Saturday. A couple of things to improve. Runner feedback so far is stellar: of the tech and of the event and the people in it.

I talk a lot about the tech but really I think it's the people that make BBG special. You have to have a certain kind of worldview to willingly speedrun kusoge, and I think that serves as a filter for certain types of people that usually poison a game fan group like us.

We had French and Japanese restreams and between them they were the source of about 2/3rd our viewers. It's always like this; we're huge in Japan for some reason. I love it. I don't mind that the Japanese restream is bigger than our main channel. That's cool to me.

On a weird personal thought that, mayhaps, I should probably keep to myself: I realized toward the end of the event that we had about triple the viewers as Speedgaming; just us, not counting the restreams. I have no ill will toward SG, but it's oh so weird to me that years and years ago I got my first thoughts for a marathon automation toolkit from them, ultimately wanted to position myself in helping them, didn't ever have that happen, then kind of fell out of that community when they embraced randomizers and eventually took a sponsorship from a sports book site.

That's just a lot to take in for me personally. Speedgaming and the people who run it were the pinnacle for me for years. I kind of wonder sometimes if BBG and the way we do things is the aspiration for some people out there. I tend to not believe so; I tend to believe we're just about a dozen dinguses running a stream. It's more fun to see ourselves that way.

About a quarter of our runners were brand new this year. We didn't plan it that way, it just happened that way. That's a good sign for our growth. They all rocked too. Not a single complaint about anyone's runs this year. Everyone showed up ready, flew threw setup, kicked butt on stage, and seemed to wrap up happy. That's all I can ask for.

So What Now?

I have a couple of QoL tweaks to make to restream.space but I'm going to take those slow. We need to cut VODs; especially since we had, I think, four world records in the event. I already have a new event in the works from someone who liked my work so much they want to use it.

The new event is kind of hush-hush right now and will be for awhile. But it's neat to already have another marathon on the horizon right after BBG; kind of staves off the event drop.

I need to get back to chipping away at my stream backlog and I have about 50 games I want to make Gamebadges for.

Mostly though, I think no new projects for the rest of the year. At least for October.

tags: tech, big_bad_gameathon