Infinite Loop in Gameplay Edge Case
I, out of much to my surprise, found an edge case in gameplay that leads causes the game to tie. Because /disableKarma doesn't actually work, no one was able to leave the game without penalty and the game did not recognize that it was not a winnable game.
Please refer to the images attached.
Additionally, it seemed that after a certain point, rolling a 7 wasn't an option.
Game Parameters:
- Base Map
- Random Dice
- 13 VP
There are many more screenshots, this bug does not let me attach more. Would be happen to send more if you contact me directly.
Additionally, as you can see with the screenshot, I have documented a few other CSS flaws once the users deck of cards has exceeded a certain limit.
Thanks!
Comments: 4
-
16 Dec, '20
ChiragI believe that in a case like this, /disableKarma could be automatically enabled. That might be the more user friendly solution, however, marking it as a tie is also an option.
I understand after a certain number of VP causes a game to un-winnable. These game parameters could have definitely resulted in a win. The game should either restrict the number of VP's allowed for other variables or should enter some kind of errorHandeling that either results in a message and a tie or disables karma. -
16 Dec, '20
ChiragThe gameId according to URL params is: #Isig
-
16 Dec, '20
ChiragSo I was thinking about it, this would be easy. Let's consider the following function: isGameWinnable()
- this function should check if the game is winnable at any given point on any given turn
It should look for:
- Are all houses built? If not, is it because there is no room to build houses? This would be dependent on number of roads left to play and how many sets of 2 spaces there are away from each house, as per the rule of placing houses
- Are all settlements built?
- Are all VP's used and drawn?
- Is longest road and largest army taken? (Although this condition would be satisfied by checking if all VP's are used and drawn)
Depending on how game values are managed by the server internally, this may be hard to do.
Wouldn't mind helping with this :) -
16 Dec, '20
ChiragThen from here you can use isGameWinnable() to create the subsequent workflow to handle this. Either disableKarma() or call the game a tie() and don't increment wins on user profile.
Or you can focus on making this not possible, although this may not be the best approach. You can always set more VP's even with base and still have a chance of winning, it's just the likelihood of a game being winnable goes up with the number of VP's and players playing the game.
Therefore, I think the better more user friendly approach would be to disable karma or call the game a tie.