The Problem with Loose Consistency
Loose consistency has a tendency to result in illogical playouts. To demonstrate this, we ran our simulation under purposely bad network conditions and isolated a situation that is obviously inconsistent with the game rules. The following streams are all from the same experiment, just different views.Streams
consistency algorithm | loose | loose | loose | loose | loose | |
---|---|---|---|---|---|---|
scenario | swarm | swarm | swarm | swarm | swarm | |
bees | 8 | 8 | 8 | 8 | 8 | |
message delay [ms] | 400 | 400 | 400 | 400 | 400 | |
message loss [%] | 5 | 5 | 5 | 5 | 5 | |
packets sent [/s] | 20.5 | 20.5 | 20.5 | 20.5 | 20.5 | |
view | combined | bee#0 | bee#0, cut | bee#1 | bee#1, cut | |
AVI (FFV1) | prob.avi | prob_0.avi | prob_0c.avi | prob_1.avi | prob_1c.avi | codec: ffdshow-tryouts |
What you are looking at
The first stream is a superposition of two views of the game, the hosts of bee#0 and bee#1. When the views on the position of a particular bee coincide the result is a maroon ball for that bee. When the views differ, one edge will be colored differently. The honey-gathered numbers at the bottom are printed for each view.The others streams are views of just bee#0 or bee#1 (which is closer to the view of the other hosts on the main incident). Please ignore the numbering of the bees in these streams, as it gets reset. The two cut streams are closeups (in terms of time and viewable area) of just the main incident.
Noteworthy moments
The main incident happens around 42.15s, but there is also a similar situation at 45.60s (with a different resolution, though).Analysis
The rules of the game clearly state that when two bees collide, BOTH of them are dead for a few seconds. Yet after the collision at 42.14s, only bee#0 is dead, bee#1 is unharmed.What really happened is that the host controlling bee#0 missed some messsages sent by bee#1's host. So, host#0 saw bee#1 swinging over to bee#0 and finally colliding. It set both bees to be dead. A few milliseconds later, though, a message finally arrives from host#1, updating host#0 with the real state of bee#1. Thus, bee#1 is no longer seen as dead (by any host), while bee#0 is STILL dead because host#0 announces this to all other hosts, overwriting their view of bee#0.