So, it would make sense to omit telling clientA about clientCs new position if a lineOfSight test returns false between the two - that way the clients won't have to update each other about positions when they won't affect directly the user interactions (e.g shooting).
However, this means the following:
If i send deltas between the current game state and the client's last acknowledged, BUT omit irrrelvant data, the client isn't actually fully up to date. This means that in the future, the client will not have full game information. Therefore, I have two options;
- Ignore this tomfoolery and just send all deltas
- Store the client's current interpretation of the game, and use that for deltas.
If a clientX was visible in this packet when it wasnt before, it would not fail the LineOfSight test, and the server would send the delta between the client's state (where the clientX in question was idle and unmoving) and the current state. In order to achieve this, after the delta is worked out, it is added to the existing game state and stored on the client. Therefore the client class on the server will represent the client's interpretation of the game, which in this example would have the idle X player behind a wall - thus the delta would tell the client to move clientX to its new spot.
This does mean more overhead though.
Does this make sense?