Welcome to the 15th installment of the Battlehouse Dev Blog, a place where fans of all Battlehouse games can enjoy regular behind the scenes peaks into the minds of Battlehouse Developers and Staff. This week, it’s bh-cameron’s turn:
It’s been a little while since we’ve been able to grace you all with a Dev Blog, as the current Developers Roadmap has temporarily been “on hold” while we continue to press forward and make solid progress on our “Project New Horizons”. Since we don’t have a lot of immediate content projects to talk about right now, the purpose of this particular dev blog entry is going to be to touch on a long standing game issue that has causing a lot of player confusion for some time now (and stirring up a ruckus recently on our Discord server): suspected battalion movement/attack cheats on the regional map.
Players call this suspected cheat many things when they see it happen: “batt skipping”, “batt jumping”, “batt flickering”, “batt speed hacking”, etc. But the one thing all of these instances have in common is that a player who’s trying to attack another player’s battalion on the regional might occasionally see instances of “battalion lag” wherein it can appear as if the batt you’re trying to attack skips ahead by a hex or two, or skips back by several hexes. This often allows the other player the ability to attack your battalion before you can even get to them and get a chance to click “Attack”.
What we want to officially drive home today is the explanation that this type of battalion behavior is 99% of the time NOT a cheat, and is usually just the result of a little bit of client-side browser lag. This situation can occur on the regional map when players use the “halt” command on a battalion before it reaches it’s destination. If the player seeing the “batt skip” is either running on a slow connection, or experiencing any temporary connection hiccups in their browser it, it can result in that player’s browser taking several milliseconds to properly update the map with the halted battalions true location as it’s stored in the game server.
Here’s a more specific breakdown of how it all works:
- Player A tells batt A to go from X0,Y0 to X100,Y50.
- Server accepts instruction, tells the rest of the world what’s happening.
- Player B sees batt A start heading from X0,Y0 to X100,Y50.
- Player A tells batt A to “Halt” when it’s at X10, Y10.
- In the time it takes for Player A’s “Halt” command to get from Player A to the server to player B, player B’s client keeps animating batt A’s expected progress towards X100,Y50.
- Server tells the rest of the world that batt A has stopped at X10, Y10.
- Player B’s client has batt A at X20, Y20 when it gets the server message that it actually stopped at X10, Y10. It appears to “skip” to X10, Y10, even though it was never actually at X20, Y20.
All of this being said, it’s simply not a cheat, but rather just a side-effect of how the regional map systems were designed and how they’re currently intended to behave.
As Battlehouse Developer bh-nirgal once said:
“You absolutely, 100% cannot rely on the apparent travel speed of other players on the regional map. The server and the client constantly disagree on where something should be. When the server tells the browser what the actual position should be, a battalion will leap ahead to get to where it’s supposed to be. The regional map is not and never was intended for simultaneous PvP. It’s for moving units around to attack AI bases, quarries, strong points, and parked battalions. The game is designed around Player vs Environment content and Player vs Player-Owned-Environment-Controlled content. The underlying technology just doesn’t support a true head to head game. You can play battalion fights if you want, but you’re going to constantly see things that look like bugs or cheats. The only thing that’s meant to be consistent is your own battalion’s speed.”bh-nirgal (Battlehouse Dev)
Now that you understand why this isn’t a cheat, you might now asking why we don’t change how the regional map works, or why we don’t update battalion attack rules to make these instances less common. We’ve thought about this a lot, and after several team chats on the topic, all of the potential solutions that we can think up all come with their own suite of side-effects:.
- We could remove the Halt command. (“Choose wisely before calling a battalion!”) But does anyone really want to lose their ability to halt a battalion?
- We could stop animating battalions, and replace “ghost” battalions at a destination with a generic marker until they’re actually in place, but this would make the regional map less exciting for many.
- As we already do in Firestrike: We could add a cooldown similar to FS, wherein a battalion has to undergo a few second long “regrouping” phase before new orders can be given. The current timer in FS is 5s, but we’re open to trying a duration that’s less drastic. As we’ve already heard from many players throughout Battlehouse games over the years though, “regrouping” cool-downs aren’t the answer.
Let us know what you think of these few possible solutions, and feel free to also let us know some ideas of your own over on Discord!
That’s all for now, Commanders. Keep up the good fight! And can we please cut back on the amount of “They’re hacking the regional map!” tickets that our lovely Player Support team has to deal with week to week?
Stay up to date every day on what’s being developed on the dev-tracker channel here.
Looking for an update on where the Dev Team currently stands regarding various community suggestions? Check out our “Voice of the Commander” trackers here:
- Thunder Run Voice of the Commander: Declassified
- Days of Valor Voice of the Commander: Declassified
- Mars Frontier Voice of the Commander: Declassified
- War Star Empire Voice of the Commander: Declassified
- Battlefront Mars Voice of the Commander: Declassified
- Firestrike Voice of the Commander: Declassified
Like what you see in this Dev Blog, or have suggestions on things you’d like to see addressed in our “Voice of the Commander” trackers? Let us know over on our Thunder Run Discord Server!