7.
⾮非同期型/サーバー集中処理理型
• FPSなど
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
F2
F3
F4
F5
F6
• Client、Serverはそれぞれ独立したクロックで動作する
• ゆえにそれぞれのローカルでは軽快に動作させられる
• ダメージやアイテム取得などはサーバー側で処理
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
8.
⾮非同期型/クライアント分散処理理型
• PSU
PlayerA
PlayerB
F1
F2
F3
F4
F5
F6
Server
F1
F2
F3
F4
F5
F6
F1
F2
F3
F4
F5
F6
• Client、Serverはそれぞれ独立したクロックで動作する
• Client側でダメージやアイテム取得を判断して、Server側でValida@on
• サーバー側を待つ処理がより少ないので快適度があがる
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
State
Command
参考 hBp://www.mmorpg.com/gamelist.cfm/game/215/view/forums/thread/104863/PSU-‐netcode.html
10.
レイテンシについての実際の調査
• Unreal Tournament 2003
– 3% packet loss and 140ms latency at
maximum
– 75ms以上だとユーザーがラギーに感じる
– 100msを超えると遊びづらくなる
T.
Beigbeder,
R.
Coughlan,
C.
Lusher,
J.
PlunkeB,
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.
11.
• 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.
12.
• World of Warcraft 3
– 平均RTTで100ms
– 500msくらいまでならゲーム可能
– 800msを超えるとゲームが成り⽴立立たない
レイテンシについての実際の調査
N.
Sheldon,
E.
Girard,
S.
Borg,
M.
Claypool,
and
E.
Agu,
“The
effect
of
latency
on
user
performance
in
Warcrab
III,”
in
Proceedings
of
the
2nd
Workshop
on
Network
and
System
Support
for
Games,
ACM,
Redwood
City,
Calif,
USA,
2003.
13.
• 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.
14.
• 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.
15.
• 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.
16.
• 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.
27.
ネットワークについての⼯工夫
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
最初のスナップショットを送信
28.
ネットワークについての⼯工夫
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が移動
29.
ネットワークについての⼯工夫
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は
常に進んで行く
30.
ネットワークについての⼯工夫
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されていないところから
最新のフレームまで送信
33.
Prediction
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の予測はクライ
アント側で予測して描画
する
35.
Prediction
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の予測はクライ
アント側で予測して描画
する
Be the first to comment