代写COMP4002/GAM Games - Communication代写留学生数据结构程序

COMP4002/GAM Games

Multiplayer - Communication

Communication / Netcode

• Real time simulation

•  Updating the game state in response to input

Must be synchronised between players

• Networks are always subject to delays and latency (“lag”)

• “Round-trip time”

•  Time for an input to be sent and to receive a response

•  How to be responsive?

•  Bandwidth - Each client needs to synchronise a complex model every loop

•  Limited

•  How to be efficient?

•  Reliability - Packets get lost or delayed or arrive out of order

•  Inevitable

•  How to respond?

Lag / Consistency / “Desynchronisation"

•  Network delays lead to desynchronisation

•   Game states of players no longer match

•   Logical inconsistencies on divergence

Consider p2p / non-authoritative

1.       Blue sees Red move across the screen into their crosshairs

2.       Blue shoots Red with perfect timing on their screen.

3.       Blue’s game generates a shoot event, and sends the data to Red

4.       Blue’s game locally processes the shoot event, and confirms a hit, and shows Red as dead.

5.       In Red’s game, Red continues to move. Red’s game then   receives the shoot event, and processes the event. Blue’s gun no longer lines up with Red, and the shot is a miss.

6.       Red is alive in their game, but dead in Blue’s game.

Implementation Fundamentals

• Supports efficient replication Extrapolating= ? Server related with?  Authority

•  The communication of state or events to a remote peer

•  Replicating an object causes it to appear to be created and updated on a remote peer

•  Transfer sufficient data to reflect changes to the local object remotely

•  Replication is the application layer of the networking stack

• Authority

•  One entity has the canonical game state

•  Manage permission to update the persistent state of an object

•  The game server is authoritative over dealing damage

•  Can resolve inconsistencies, is trusted

• Prediction

•  Extrapolating the current properties of an entity based on historical authoritative data local guesses about the future

•  To support responsiveness

•  The opposite of authoritative

Common Approaches

•  Trade off speed and reliability

•  Reliable transport (TCP)

•   Requires high bandwidth or simple networked state

•   High-game tolerance to latency

•  Unreliable/datagram transport (UDP)

•   Fast and frequent

•   Can afford to lose some

•  Communication paradigms

•  Lockstep

•  Bandwidth reduction

•   Deterministic client-side replication

•   Snapshots and deltas

•  Prediction

•   Entity Interpolation

•   Dead-Reckoning

•   Client Authority Prediction

•  Server-Side Lag Compensation

•   Rolback

Lockstep

•  Lockstep

•  Ensure synchronisation

•   Both (all) clients are processing the same frame. at the same time

•   Clients are “locked in step”

•   Handling the same input

•  Tolerate delays

•   Every client waits for all of the data to arrive

•   Updates limited to the delay of the slowest client

•  Lockstep with input delay

•  Input data is scheduled to be processed in a future frame.

•   Based on the network latency

•  As long as input arrives before the schedule run time, the game is synchronized and there is no   wait time

Local input is delayed artificially

•   E.g. 100ms to see “effect” of input

Deterministic Client-Side Replication

• Each client has its own local replica of the model to use

• One/the server remains the authority on what is happening

• Is deterministic

•  Can reliably reproduce the same game state from the same inputs

•  Includes logic regarding how the simulation should evolve

• Local replica

• Receives regular snapshots of the server model

•  UDP (fast, but unreliable @~20Hz)

• Tell the server what we wish to perform, so the server can update the canonical model

•  The server is authoritative

•  Further changes are cascaded to the client

Snapshots and Deltas

• What does the server need to tell the client?

• What does the client already know?

• Optimise replication communication

•  Only tell the client what has changed

(delta), rather than send the full model snapshot

•   Reduce frequency of snapshots

•   {t=1, x { 0, 5 }, y { 5, 5 }}, {t=2, x { 0, 5 }, y { 10, 10 }}

•   {t=1, x { 0, 5 }, y { 5, 5 }}, {t=2, y { 10, 10 }}

•  Send full snapshot after a network delay so that the client gets back in sync

The player has pressed fire

The player has pressed fire Play the fire animation

Spawn the projectile

Simulate the motion of the projectile

Entity Interpolation

Between updates use the local replica of the model to calculate the current state

•  Receive regular updates from the server

•  20Hz

•   1) Position of all objects at time t

•   2) Position of all objects at time t+50ms

•   3) Position of all objects at time t+100ms

•  Much slower than our rendering loop frequency

•   Objects would “jump” between snapshots

•  Interpolate between past and current snapshots

•  When 2 is received

•  Calculate intermediate positions between 1,2

•   1) Position of all objects at time t

•   2) Position of all objects at time t+50ms

•    Move object to t+5

•    Move object to t+10 … render smooth motion at 200fps

Dead Reckoning / Opponent Predication

Interpolate / predict motion into the future using linear physics

•  Moving objects are likely to continue to move

•  Static objects are likely to continue being static

•  Inputs are likely to be the same (including null inputs)

•  Make guesses about future states when appropriate

•    Including opponents

•   Optimistic consistency

Game breaking

Modeling consequences if the player is wrong ?

•  Client is responsible for frame-to-frame movement simulation and rendering

•  Game critical events are comparatively infrequent

100Hz vs ? (how often do you pick something up / shoot?)

•  X is moving at speed Y with direction Z, so move it a bit in direction Z

•  Server is responsible for the bigger picture, the context and the consequences

•  Don’t predict significant events, wait for authoritative model

•  Player A has picked up the gold, B hasn’t

•  A has fired a gun and hit B

Client Authority Prediction

•  The player pressed forwards

•  Round trip time

•   Client->Server->Server Game Loop->Client

•   Significant latency for “twitching”

•   onLive

•  Assume that we will be given authority

•  That our local model will match future server model

•  Send the command to the server controller

•  Start moving immediately

•  Rewind if we got it wrong

•  Generally, most commands will be accepted as the model should be largely in sync

•  …the game feels more responsive than the network allows

•  Atomic movements smoother than 20Hz network rate

Server-side Lag Compensation

•  The server maintains …

•   A stack of snapshots

•    Remember where everything was up to a second ago

•   Current round-trip-time for all the clients

•   Time for a packet to travel from client->server->client

Predict game states while waiting for input

•   Assume players have not changed their inputs

Rollback

•   When a new command is received, estimate when it was sent rather than when it was received

•   Use the historical snapshot of the model to work out what the client state was at this time …the command is executed hopefully as if there was no lag

•   Often prioritising shooter rather than shootee, or highest latency player

•   Re-simulate subsequent frames

•   “ Rubberbanding ” or teleporting as the first state is unwound

•   Shooting around corners

•  Separate visual from state effect

•   Show a visual hit but don’t apply the damage immediately (might be rolled back)

•   Mixture of deliberate input delay and prediction



热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图