Thanks for posting.
jojoProjectile is tougher than fighting games but hitscan is probably a bit easier so about the same overall
volvo docsPrediction is only possible for the local player and entities affected only by him, since prediction works by using the client's keypresses to make a "best guess" of where the player will end up. Predicting other players would require literally predicting the future with no data, since there's no way to instantaneously get keypresses from them.
So for some reason it's not allowed to predict spawning a projectile. I don't get why, especially since the lag compensation system on the server is already able to go back in time to figure out when a command happened
volvoThe lag compensation system keeps a history of all recent player positions for one second. If a user command is executed, the server estimates at what time the command was created as follows:
Command Execution Time = Current Server Time - Packet Latency - Client View Interpolation
Then the server moves all other players - only players - back to where they were at the command execution time. The user command is executed and the hit is detected correctly. After the user command has been processed, the players revert to their original positions.
Furthermore, I cannot find on that page what is actually inside a snapshot. Does it have player positions or inputs(besides things like entity spawns to draw rockets and play weapon sounds?) ?
How does the client predicts where the other players will be on the next tick?
Also the GGPO document mentions that games have to be 'deterministic' in order to use it. Is source engine deterministic?