The loading bar was the actual problem
A few weeks ago, joining a match in The Agency meant staring at a loading bar for close to a minute, sometimes longer if your connection was having a bad day. We had players telling us this in the chat, in bug reports, in the little feedback box under the client. Nobody complained about the campaign missions or the RUSH waves. They complained about the wait before any of that started, which is a rough way to greet someone who just opened a browser tab to play a free game with no install and no credit card.
We're a small student-run studio out of Tunisia, and if you've ever wondered what indie game dev actually looks like day to day, it's mostly this: triaging which problem costs you the most players and fixing that one first, even when it's not the fun part. Nobody dreams of spending a sprint on load times. You dream of shipping a new mission or a weapon someone pitched on the idea board. But a slow load bar sits in front of every single session, campaign or RUSH or DOMINION, so fixing it touches more players per hour of work than almost anything else on our list.

The instinct when a game feels slow is to assume the game itself needs to get lighter. Cut a mode, trim a map, strip some detail. We looked at that path and backed away from it fast, because the actual bottleneck wasn't the game running once you were in a match. It was everything that happened before that, how the build gets packed up and handed to your browser the moment you hit play. That's a plumbing problem, not a content problem, and it meant we could fix the wait without touching anything you'd notice once the match actually started.
So this post isn't a spec dump about engines or file formats. It's about what changed for you specifically: the match starts sooner, the freezes mid-round happen less, and none of that came from cutting anything you liked. We're writing it up because this is the Tools and engines side of the studio, the unglamorous work that never makes it onto a feature list but decides whether the fun stuff even loads in time to matter.

What we changed, and the rollback that almost happened
The fix was swapping out part of our build pipeline mid-project, which is the part of this we almost didn't do. Changing how a project packages its assets while the project is live and being played is the kind of decision studios usually put off until some mythical clean break between versions. We didn't have that luxury and didn't want to wait for it either, so we made the swap while The Agency was still running, still taking matches, still being voted on by players in real time on the idea board.
Here's the part we're not going to hide: we almost shipped a broken build during the swap. The new packaging worked fine in our own tests, then behaved differently the moment it hit a live environment, and a chunk of matches failed to load correctly for a stretch of time before we caught it. We rolled back to the old pipeline that same day, patched the actual issue, and pushed the fix again once it held up under real traffic instead of just our test machines. That's one rollback more than we wanted, and we're saying so because pretending it went smoothly wouldn't match what actually happened.

Once the fix held, the difference showed up immediately on our own rough timers. The old build sat around fifty seconds to a full minute before a match would start, measured with a stopwatch on our end rather than any fancy telemetry, so treat it as a ballpark and not a lab result. The new pipeline gets most matches loading in under fifteen seconds on a normal connection, sometimes faster. We're not claiming a precise number because your connection and your machine will always move that figure around, but the gap between the old wait and the new one is not subtle, and you'll feel it the next time you queue up.
The bonus we didn't expect going in was fewer freezes mid-match, not just a faster start. The old packaging method loaded some assets in a way that could stall the game for a beat right when a wave spawned or a new area opened up, and the repackaged build spreads that work out so it doesn't hit all at once. We weren't chasing that when we started the swap. It showed up as a side effect of packing things more sensibly, and it's honestly closer to what players will notice than the load timer itself, because a freeze mid-fight costs you a lot more than a few extra seconds of waiting room.

Why we keep tinkering with tools nobody sees
This is the kind of change that never shows up on a roadmap vote, because nobody pitches build pipeline plumbing on the idea board the way they pitch a weapon or a map. But it's exactly the work that decides whether the stuff people do vote for feels good once it ships. If you're ever trying to figure out how to start indie game development yourself, this is a fair chunk of the honest answer: half the job is the part players never see and never asked for, done anyway because it holds up everything they did ask for.
We could have spent that same stretch of time building a new mission or a new weapon skin, something we could point to on a changelog and get an easy round of applause for. Instead we spent it on packaging logic, rollback plans, and comparing stopwatch numbers between two versions of a build pipeline. That trade-off is not glamorous, and it will never be the headline feature of a patch note, but it's the difference between a game that feels responsive from the second you click play and one that just has more stuff buried behind a long wait nobody wants to sit through.

We'd rather be the kind of studio that fixes the boring thing first. The Agency is still small, still built by students, still shaped by whatever gets voted up on the idea board, and we're not pretending this one pipeline swap solves everything. There's more plumbing work queued up behind it, some of it just as invisible as this was. But the next time you queue into a match and it drops you in before you've even finished reading the loading tip, that's this change working exactly as intended, quietly, in the background, which is really the only way this kind of fix is supposed to work.
