CDarrow / DXX-Retro

A source port of Descent 1 and 2, focused on quality competitive play. Uncompromising commitment to original gameplay (except where the original sucked). Based on the Rebirth project.
Other
50 stars 16 forks source link

Resending important NEEDACK packets for observers #103

Closed roncli closed 5 years ago

roncli commented 6 years ago

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.

roncli commented 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.