Jump to content

  • Log In with Google      Sign In   
  • Create Account

Need explaination how multiplayer works (i made example)

  • You cannot reply to this topic
1 reply to this topic

#1 aterkotoc   Members   -  Reputation: 101


Posted 27 June 2014 - 05:26 AM

Hello i ripped some part of Isogenic Game Engine huh icon_lol.gif and made simple example with linear interpolation: http://jsfiddle.net/Pvs5r/
Really i'am trying to build a multiplayer pure-html5 game.
Works not bad, but i have questions.

1) Why do we need to render in past time -100ms from now. Cause that smooth entities movement?

2) Do i need to render all world in past time, or just entities which is NOT created locally (example my character).
How i'am think i need to render all NOT locally created entities in past time, and do direct input on locally created entities+send inputs to server.
Then when server receive inputs, he apply inputs on snapshot at time Now - (PING / 2) - InterpolationDelay;

3) Do i need to make code render entities just in past or just interpolate them to Now time?
I think if we try to interpolate them to now, they may bounce cause example entity change direction.

4) Nothing can travel faster than light, cause that we have ping, so we can delivery commands from client to server immedatelly without delay.
So question is: in games based on source engine, all clients at MOMENT NOW see similar world with small difference or they just render in past time and server deals with it? I Mean move players back using world snapshots in past time to register bullet hit e.t.c

Thanks, can wait for a reply.


#2 hplus0603   Moderators   -  Reputation: 4970


Posted 28 June 2014 - 02:56 PM

1) Because information takes time to travel, you can render accurate positions from the past, or predicted (guessed, inaccurate) positions in the "now."

2) Both ways can work -- everybody in the past, or locally-controlled actors in the "now" (or, more accurately, "future" as seen from the server.)

3) Depends on whether you choose option a or b from 1).

4) The Source Engine Networking article does a better job of describing that than I can.
enum Bool { True, False, FileNotFound };