dripton / Slugathon

Clone of the old Avalon Hill fantasy wargame Titan, using Python / PyGTK / Twisted
https://github.com/dripton/Slugathon/wiki
8 stars 2 forks source link

Sync problems with points and acquiring angels #158

Closed dripton closed 12 years ago

dripton commented 12 years ago

At the end of a battle, sometimes a client disagrees with the server about the number of points the winner gained from the battle. This can result in disagreements about whether the winner can acquire an angel, which can result in hangs if the server is waiting for an Acquire or DoNotAcquire and the client isn't sending it.

I really don't like the CanAcquire and AddPoints actions, or the Game.master flag. It should be possible for the client side to independently compute how many points it earns and whether the winner can acquire angels, without being led by the nose. The only complication is that the client can't compute half points for a dead player's other legions until it knows their contents. But the server can send RevealLegion for all of the dead player's legions, and then the client can proceed with awarding half points.

dripton commented 12 years ago

stresstest ran 69 games in a row without a crash last night, and it's still running. So I think the problem is fixed.

dripton commented 12 years ago

Nope. It crashed after 90 games. Maybe my fixes made it rarer, or maybe I just got lucky.

dripton commented 12 years ago

Maybe 8fa14500235a10944650c3124cd447707a7c65f1 is the fix.

dripton commented 12 years ago

Ran 118 stress tests in a row without hitting this. Calling it fixed, again.

dripton commented 12 years ago

I think it's fixed as of 0593c95ffe1d0d9b401b48852ea7ec3d8c4b713f