r/joinsquad 22h ago

Discussion Squad has no real answer for team stacking, so I spent a year building one

159 Upvotes

TL;DR: Squad has no native skill balancing system, so games often end up as snowbally stomps. Over the past year, I've been developing a 4-plugin suite (TeamBalancer, EloTracker, SmartAssign, and Switch) that tracks real player skill (TrueSkill) to scramble teams, assign players as they join, and prevent team-switching abuse. Since disabling native ChangeTeam functionality and running the full suite, we've cut 150+ ticket blowouts by over 15% and functionally eliminated team-stacking complaints, with nearly zero admin intervention. My plugin suite (SlackersSuite) is open source and highly configurable. If your server is having team balance issues, you might see success giving it a shot.

---

Hello fellow squaddies! My in-game name is Slacker and I've played Squad for about 7 years at this point. I've accrued over 9.5k hours on servers like 56, Xpats, gmg, and now finally Northern Lights (henceforth NL). I'm highly competitive and really love the strategic depth and breadth that Squad offers. That being said, Squad has one glaring flaw that I've been raging against for literally years at this point.

Squad's laissez-faire approach toward skill balancing causes a vicious cycle with several contributing factors that make games inevitably turn into stompy steamrolls:

  1. Brain drain: Competent players often get frustrated with incompetent teammates, causing them to change teams or leave the game.
  2. Abandonment: When a team is losing badly, they often lose players (leaving or team-changing), causing potentially less skilled people to join the same team. Over several games, this organically causes people to migrate away from the losing team, making the balance problem even worse as the match progresses.
  3. The "friends" excuse: "I want to play with my friends" is a commonly used excuse for switching to the stacked team. The team with the more experienced players will almost always have more people you recognize, simply because they've played the game more. It's a very organic mechanism that results in team stacks even when nobody intends to team-stack. Worst case, their intention was to team-stack, and being "friends" with someone on the other team is a good enough excuse to skirt any criticism.
  4. No tools: There's no in-game mechanism for rebalancing teams, so admins often have to politely ask groups of players to switch. That assumes people will actually listen when asked, and that admins can eyeball-balance effectively. Even when there is a programmatic solution, the balancing that happens is largely blind and random, making it a coin flip whether it improves or worsens things.
  5. Permissive switching: Squad's native team-changing mechanism (~ChangeTeam) is extremely permissive, letting people switch every 5 minutes. Someone can change teams 10+ times in a single game if they want to.

All this to say, there's a real problem with the way Squad handles team skill balance. Left alone, we get an organic vicious cycle where one team progressively gets worse over time. What's more, Squad provides no real recourse for admins trying to host fair, competitive, and interesting-to-play games. I used to argue that team stacking was a community problem we all needed to actively combat, but that was an overly optimistic take. I now believe it's impossible to fix without intelligent, reactive server tooling.

Long story short, myself and the admins on Northern Lights have, over the past year, been progressively developing a comprehensive team balancing solution I'd like to share with you all today.

TeamBalancer: the first attempt

It started as a simple project to replace the proprietary team-scrambling plugin we were denied when NL was founded (from the ashes of gmg). I built the first version of TeamBalancer, which tracked consecutive wins/stomps and mixed the teams up with a fairly naive heuristic. It preserved squads so it didn't split up friend groups, but beyond that wasn't very intelligent. The idea was that since we had no real data on the players, the best we could do was shuffle the deck and hope the teams were balanced after the dust settled. This had mixed results: sometimes it worked great, other times it just made things worse.

EloTracker: giving it a brain

It became evident we needed a smarter solution than hopes and prayers. This led me to design and build EloTracker, a plugin that implements Microsoft's TrueSkill algorithm and wires player skill data into TeamBalancer so it can actually balance teams intelligently. It took a few weeks of tuning the algorithm and collecting player data before the system started accurately predicting match outcomes. TrueSkill was built for games with far fewer players per team, so it only takes win/loss and overall team skill into account, which means it takes a lot of games before a player's estimated skill is known with any certainty.

That said, I deliberately resisted adding metrics like kill/death ratio to speed up that certainty, because all that actually matters is whether you win or lose. I've seen SLs spend a whole game carrying the team with support work (HABs, resupply, yelling at goobers in command chat) while finishing the game 0 kills, 3 deaths. Margin of victory isn't considered either; a win is a win regardless of the ticket difference. Injecting my own beliefs about what it means to be "skilled" in Squad, and trying to balance for those metrics, could arguably worsen the predictive accuracy of the algorithm rather than help it.

That said, in the future we hope to implement TrueSkill2, which addresses a lot of the shortcomings of the original algorithm: it accounts for skilled groups of players a bit better and factors in individual performance data (kills, deaths, score) on top of win/loss. I don't mean to shit on the original algorithm, since it works, but it does take a lot of games to gain real certainty about a player's skill.

SmartAssign: fixing the join

At this point I realized one of the only levers left to us was controlling which team a player is placed on when they join. By default, Squad places players on the team with the fewest players, or Team 1. We could do better, so I built SmartAssign, which takes player skill, clan tags, and team size into account the moment a player connects. Before they've even finished loading in, they're placed onto the team with their clan, or the team most in need of their skill (or lack thereof). This gave a marginal improvement in game quality.

Switch: closing the loop

Though TeamBalancer, EloTracker, and SmartAssign did improve ticket differences on NL, the whole system still assumed a certain amount of good faith from players. Nothing stopped anyone from using the native ChangeTeam command, or even the much more permissive !switch command, at any time. We even saw groups of players (whole clans!) switch teams right back after getting scrambled, just to keep the stomp going. We ultimately had to disable native ChangeTeam and build a less permissive but still fair alternative.

We extended the Switch plugin to:

  • enforce a longer cooldown
  • block mid-game team changes unless you'd just joined
  • block team changes the round immediately after a scramble
  • run through a queue system so people didn't have to spam the command

After a short period of growing pains, the new and improved Switch plugin is working fantastically.

The results

After disallowing native team changes and forcing players through our improved Switch plugin, we saw the largest improvement in ticket difference to date: a >15% decrease in blowout games (150+ tickets) and a 5% increase in close games (sub-50 tickets). As of today, I believe NL is in the top percentile of servers by ticket difference. It feels a lot more fair and competitive to play, and complaints about team stacking are functionally nonexistent. Best part, it takes nearly zero admin intervention. The whole system is autonomous. It's been literal months since the admins had to manually scramble teams.

Try it yourself

At this point, I know of 4 servers running TeamBalancer + EloTracker. NL is the only one running the full suite (TeamBalancer, EloTracker, SmartAssign, and Switch) and disallowing native team changes. NL keeps player Elo data private, but other servers have set up public Discord channels where you can query player Elo with !elo <identifier>.

The SlackersSuite is open source if you want to run any of this yourself, and you don't need to go all-in to get some benefit out of it. Just running TeamBalancer + EloTracker with native ChangeTeam left on will probably already cut down on complaints and improve game quality. But if you want what we've got on NL, that means disabling native ChangeTeam and running the full suite too. Each plugin has its own setup instructions, so grab whatever you actually need.

If I can do anything, even marginally, to improve game quality and cut down on team stacking across the Squad community, I'd consider that a win. Hit me up on Discord if you have any questions (@real_slacker).


r/joinsquad 3h ago

Media Squad is such a gem

Post image
95 Upvotes

The beauty of Squad cant be questioned...


r/joinsquad 6h ago

Smoke Is My Best Friend

Enable HLS to view with audio, or disable this notification

43 Upvotes

r/joinsquad 5h ago

Media When you hit 10/10 in a dream

Enable HLS to view with audio, or disable this notification

21 Upvotes

r/joinsquad 11h ago

Suggestion Game mode idea: Siege

Post image
10 Upvotes

I had an idea for a custom layer/mode called Siege that basically forces a 360-degree meat grinderfight.

The Layout:Instead of a linear map, it uses the existing map assets by giving the attackers all 4 main bases around the edges of the map at the same time. The defenders have no main base; they just start in the exact center of the map with a massive pile of build/ammo supplies and 5 cap points. Four points form a square perimeter on the corners, and one "Core" point sits dead center.

The Mechanics: Tickets: Defenders start with 1000 tickets, but losing a corner point instantly drops them by 40. Attackers start with only 325 tickets, so they have to move fast. Gating: Attackers can’t touch the center Core point until they capture at least 3 out of the 4 corner points. The Core HAB: Defenders spawn on a special center HAB that cannot be proxied by nearby enemies, but the attackers can still physically shovel it down or C4 it if they breach the center. Armor: Defender vehicles spawn at the center and have a hard cap of 2 respawns max. To make holding the perimeter matter, every time the defenders lose a corner cap, their vehicle respawn timers get way longer. They have to build their own repair stations using their starting supplies. No Off-Map Artillery:Commander artillery and airstrikes are completely disabled for both sides so the center doesn't just get flattened by a magic button. Instead, defenders are the only ones allowed to build basic mortars. To counter this, attackers have to use the sandbox and set up TOW/ATGM emplacements on surrounding hills/rooftops to snipe defender armor and suppress the center. The Final Stand:If the attackers manage to cap the Core point, defender respawns turn off completely. Any defenders still alive have one final chance to clear the point and re-cap it to turn spawns back on. If they die, attackers win. Defenders win if they bleed the attackers' 325 tickets to zero.

Why this would break the meta (especially on maps like Tallil):If you put the Core point in the Tallil Aircraft Hangars, it turns into a massive bunker fight. Because running across the open desert against surrounding attacker TOWs and defender mortars is suicide, running on foot isn't an option. Attackers would be forced to actually run proper mechanized infantry using Bradleys, BMPs, and Strykers as literal battle taxis to smoke the desert, suppress the bunkers with autocannons, and drop squads directly onto the caps.

Let me know what you guys think or how you would balance it.


r/joinsquad 17h ago

Drop 3 confirm kill 4, How?

9 Upvotes

r/joinsquad 4h ago

IIRC we took out enemy armor on this position and won the game lol.

Post image
8 Upvotes

r/joinsquad 12h ago

My biggest skill issue yet

Enable HLS to view with audio, or disable this notification

7 Upvotes

How did I miss this!
Post copy-pasta here


r/joinsquad 18h ago

Help Can't Open Squad

2 Upvotes
Everytime i open squad through steam it just shows this message does anyone have any idea how to fix this

r/joinsquad 30m ago

Question Servers not loading

Upvotes

My fireteam servers always load but sometimes the servers for the default game just don’t load. It’s literally a 50/50 day by day if it loads, I’ve tried verifying and reinstalling and changing max ping none of it works. Anyone know a fix?


r/joinsquad 18h ago

Help Eu não sei como (sl)

0 Upvotes

Entao, basicamente ontem foi meu primeira dia jogando ativando como sl, após umas partidas eu caí com o Canadá, não havia um blindado sequer, apenas um morteiro e dois uh, nesse dia eu consegui comandar metade do meu squad para a defesa de um ponto, oque foi inesperadamente e incrivelmente bem sucedido, nos seguramos 3 squads e 3 bmps, tudo graças a cada espaço que eu desenhei e meus homens que seguiram as regras, após isso nosso time conseguiu dominar a bandeira inimiga e nós ganhamos a partida por 20 tickets, com meu squad e médico ganhando mpvs

O problema eh que hoje eu não consegui fazer nada de MT relevante, muitos dos meus homens não seguiam bem minhas instruções e eu não consegui ser muito bem oque queria, fiquei um pouco desanimado, eu compreendo Muitas das dicas dos sl experientes, passei horas lendo posts por aqui, foquei na diversão e estratégia, porém hoje não consegui nenhum

Diria que 3 a 4 pessoas mal abriam o chat voz, oque eh ok para mim, faz uma semana que eu perdi minha ansiedade social em jogos online

Acho que isso eh mais um desabafo doque tudo, aceito dicas sobre como lidar com o squad nessas situações, eu entendo que eu não preciso sempre pegar sl


r/joinsquad 27m ago

One of the worst parts about this game is people only play RAAS/AAS and INV

Upvotes

I have played FPS all my life and every other game, people play different game modes. Are squad players just too stupid, stubborn or just too lazy to play other game modes? The other game modes in the game are not difficult at all to understand. Territory Control is capture territory in the shape of hexagons you can see on the map. Destruction and Insurgency are just search and destroy. I seriously do not get it. Hell, why don't the Devs add more game modes? RAAS and Invasion get extremely old.


r/joinsquad 19h ago

Discussion Squad Sound Suck Right Now

0 Upvotes

Thats it, i'm tired of dying for TOW and HAT and not hearing NOTHING! You just blow up with not even a chance to identify direction.....