Closed roncli closed 5 years ago
So basically what I ended up doing was refactoring observers so that their "observer number" is consistent from start to finish... ie: if someone with a lower observer number logs out, your observer number doesn't decrease. See roncli/DXX-Retro@ef59480f159442e0b165086f9d95b32f115c96be for implementation.
After that, I created a separate queue for observer acknowledgements. See roncli/DXX-Retro@a8ec6f0c5f97cfdeedc283cf9819cf1656c26bd2 for implementation.
I believe with these two changes, this causes NEEDACK packets to apply to both players and observers, meaning things like score will not get out of sync. Tested a bit on my VMs, and will be doing larger tests with more players and observers.
Create a new or reuse the existing resending queue for observers for packets that need acknowledgement. Typically these will be the same as the needack packets for players, but will investigate on a case by case basis.