Bug: exponential escalation in processing time causes loss of games
The developers have produced a great product.
Unfortunately, the processing time for tokens entering the field is exponential. Even though you've capped it at approx 255, having 255 on one side and more than around 50 on the other side causes the game to fail in several related ways.
One failure is that the game applies timeout logic while the player is locked and waiting on the game engine to proceed. This can cause inappropriate loss of turn, which can easily throw a game.
Another failure is that the game applies timeout logic to the opponent while the player is waiting on the game engine to proceed, the second time. It's reliably the second time every time. It's not clear why this would be. I assume there's a stale pseudomutex somewhere?
A third failure is that if the mesh of tokens becomes too large - for an N*M of around 20,000 or so at least 3/4 in a single player's camp - then the game will take so long to do token introduction that the backend appears to disconnect thinking something has hung. "Unexpected match complete: the current match has ended for an unexpected reason. GreError. Winner: draw."
I got really excited because I play a super obnoxious token deck built around putting Migratory Greathorn on Scute Swarm to get a land flood started, then Auspicious Starrix to flood things exponentially. The reason I got excited was because for the first time, while playing that deck today, I saw someone else playing approximately the same deck against me. Moreover, we both had everything we needed very early on.
As soon as I realized they were playing roughly my deck (about two minutes in,) I started screencapping with OBS.
https://www.youtube.com/watch?v=lZG1qTb7AmE
You can get near-problem effects with just this deck on one side. I've never seen it lead to a game loss before; I think that needs more tokens than you'll get other than seeing two weirdo decks like this face off.
A second user posted a similar bug here:
-
StoneCypher#04372 commented
Notably, it seems almost certain that these values could be memoized, and if the memos weren't flushed until the card was affected or unaffected, this process would be essentially instantaneous
Then again I've never seen the underlying model, and it's probably radically complex, so that may not be practical