12. ⾮非同期型/サーバー集中処理理型
• FPSなど
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
State
F2
F3
F4
F5
F6
State
render
render
Snapshot
まずはサーバーからPlayerに世界の状態のSnapshotが配布
されて、それをもとにそれぞれのプレイヤーマシンで画⾯面レンダリング
13. ⾮非同期型/サーバー集中処理理型
• FPSなど
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
State
F2
F3
F4
F5
F6
State
render
render
Snapshot
State
State
render
render
Snapshot
サーバーは⾃自分のペースで次のフレームの世界のスナップショットを作り、
同じように配る
14. ⾮非同期型/サーバー集中処理理型
• FPSなど
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
State
F2
F3
F4
F5
F6
State
render
render
Snapshot
State
State
render
render
Snapshot
Command
Command
同時にプレイヤーも活動を始める。プレイヤーからはコマンドがサーバーに
送られてくる。
15. ⾮非同期型/サーバー集中処理理型
• FPSなど
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
State
F2
F3
F4
F5
F6
State
render
render
Snapshot
State
State
render
render
Snapshot
Command
Command
State
render
render
Snapshot
各プレイヤーのF2で送信されたコマンドは、サーバー上のF3のフレームで
処理理(当たり判定やアイテム取得判定)され、世界のスナップショットに反映され
ふたたびプレイヤーに配られる
16. ⾮非同期型/サーバー集中処理理型
• FPSなど
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
State
F2
F3
F4
F5
F6
State
render
render
Snapshot
State
State
render
render
Snapshot
Command
Command
State
render
render
Snapshot
State
render
render
Snapshot
State
render
render
Snapshot
Command
Command
Command
Command
Command
Command
あとはその繰り返し
17. ⾮非同期型/サーバー集中処理理型
• FPSなど
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
State
F2
F3
F4
F5
F6
State
render
render
Snapshot
State
State
render
render
Snapshot
Command
Command
State
render
render
Snapshot
State
render
render
Snapshot
State
render
render
Snapshot
Command
Command
Command
Command
Command
Command
• Client、Serverはそれぞれ独立したクロックで動作する
• Clientはコマンド送信と画面描画のみを管理し、当たり判定などはサーバー側で行う。
• なので自分の発行したコマンドの結果はサーバーからの返事をまって見た目上の世界に適用
される。
18. ⾮非同期型/サーバー集中処理理型
• FPSなど
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
State
F2
F3
F4
F5
F6
State
render
render
Snapshot
State
render
Snapshot
Command
render
Snapshot
render
Snapshot
render
Snapshot
Command
Command
Command
• 実際には下記のようにレイテンシの高いユーザーがいることが多い。
• そういったユーザーのから見た世界は、サーバーよりも遅れている。(ラグ)
State
render
State
render
State
render
State
render
Command
Command
Command
Command
19. • PSU
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
State
F2
F3
F4
F5
F6
State
render
render
Snapshot
State
State
render
render
Snapshot
Command
Command
State
render
render
Snapshot
State
render
render
Snapshot
State
render
render
Snapshot
Command
Command
Command
Command
Command
Command
• Client、Serverはそれぞれ独立したクロックで動作する
• Client側でダメージやアイテム取得を判断して、Server側でValida@on
• サーバー側を待つ処理がより少ないので快適度があがる
⾮非同期型/クライアント分散処理理型
参考 hAp://www.mmorpg.com/gamelist.cfm/game/215/view/forums/thread/104863/PSU-‐netcode.html
22. レイテンシについての実際の調査
• Unreal Tournament 2003
– 3% packet loss and 140ms latency at
maximum
– 75ms以上だとユーザーがラギーに感じる
– 100msを超えると遊びづらくなる
T.
Beigbeder,
R.
Coughlan,
C.
Lusher,
J.
PlunkeA,
E.
Agu,
and
M.
Claypool,
“The
effects
of
loss
and
latency
on
user
performance
in
unreal
tournament
2003,”
in
Proceedings
of
the
3rd
ACM
SIGCOMM
Workshop
on
Network
and
System
Support
for
Games,
ACM,
Portland,
Ore,
USA,
2004.
23. • FIFA soccer
– 150msを超えるとゲームが成り⽴立立たない
– 実際の平均レイテンシは118ms
レイテンシについての実際の調査
M.
Dick,
O.
Wellnitz,
and
L.
Wolf,
“Analysis
of
factors
affec@ng
players’
performance
and
percep@on
in
mul@player
games,”
in
Proceedings
of
the
4th
ACM
SIGCOMM
Workshop
on
Network
and
System
Support
for
Games,
ACM,
Hawthorne,
NY,
USA,
2005.
25. • A racing game
– レイテンシが50msを超えるとラップタイムが落落ち
始める
– だが上級者なら150msくらいまで影響を受けない
– 50ms以下のレイテンシはユーザーに気づかれない
– 200msを超えると明らかにラギーに感じる
– 500msになるとゲームが成り⽴立立たない
レイテンシについての実際の調査
L.
Pantel
and
L.
C.
Wolf,
“On
the
impact
of
delay
on
real-‐@me
mul@player
games,”
in
Proceedings
of
the
12th
Interna@onal
Workshop
on
Network
and
Opera@ng
Systems
Support
for
Digital
Audio
and
Video,
ACM,
Miami,
Fla,
USA,
2002.
26. • Shen Zhou Online(MMORPG)
– 150ms以下のレイテンシにおける平均プレイ
時間は4時間
– 250msだと平均1時間
レイテンシについての実際の調査
K.-‐T.
Chen,
P.
Huang,
and
C.-‐L.
Lei,
“How
sensi@ve
are
online
gamers
to
network
quality?”
Communica@ons
of
the
ACM,
vol.
49,
no.
11,
pp.
34–38,
2006.
27. • Half-‐‑‒Life(FPS)
– 50msを超えると結構つらい
レイテンシについての実際の調査
T.
Henderson
and
S.
Bhah,
“Networked
games—a
QoS-‐
sensi@ve
applica@on
for
QoS-‐insensi@ve
users?”
in
Proceedings
of
the
ACM
SIGCOMM
Workshop
on
Revisi@ng
IP
QoS:
What
Have
We
Learned,
Why
Do
We
Care?
pp.
141–147,
ACM,
Karlsruhe,
Germany,
2003.
28. • Madden NFL Football
– 500msくらいまでならユーザーは気づかない
– 750msになるとラギーだと思われ始める
レイテンシについての実際の調査
J.
Nichols
and
M.
Claypool,
“The
effects
of
latency
on
online
Madden
NFL
football,”
in
Proceedings
of
the
14th
Interna@onal
Workshop
on
Network
and
Opera@ng
System
Support
for
Digital
Audio
and
Video,
pp.
146–151,
ACM,
Cork,
Ireland,
2004.
40. ネットワークについての⼯工夫
Server
Player
A
Master
snapshot
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=D
Snapshot1
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=D
最初のスナップショットを送信
41. ネットワークについての⼯工夫
Server
Player
A
Master
snapshot
Player
B:
pos[0]=A,
pos[1]=E,
pos[2]=C,
health=D
Snapshot1
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=D
Ack
Player
AがAck
Player
Bが移動
42. ネットワークについての⼯工夫
Server
Player
A
Master
snapshot
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=H
Snapshot1
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=D
Ack
Snapshot2
Player
B:
pos[0]=A,
pos[1]=E,
pos[2]=C,
health=D
?
次のフレームのスナップショットを送るが、Ackされない
マスターのSnapshotは
常に進んで行く
43. ネットワークについての⼯工夫
Server
Player
A
Master
snapshot
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=H
Snapshot1
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=D
Ack
Snapshot1
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=D
?
Snapshot1
Player
B:
pos[0]=A,
pos[1]=E,
pos[2]=C,
health=H
次の送信時には、Ackされていないところから
最新のフレームまで送信
44. ネットワークについての⼯工夫
Server
Player
A
Master
snapshot
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=H
Snapshot1
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=D
Ack
Snapshot1
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
health=D
?
Snapshot1
Player
B:
pos[0]=0,
pos[1]=+2,
pos[2]=0,
health=-‐2
更にデータサイズを小さくするため、前のフレームから
の差分を取るデルタ圧縮方式を利用している
48. Player
B
最新のスナップショット
Player
B:
pos[0]=A,
pos[1]=B,
pos[2]=C,
velocity=...
次のスナップショットの予測
Player
B:
pos[0]=A’,
pos[1]=B’,
pos[2]=C’,
velocity=...
Player
B
Player
B
次のスナップショットが
到着するまでの間の
Player Bの予測はクライ
アント側で予測して描画
する
さらにネットワーク依存を軽減する:
Prediction