2008年05月07日
局所知覚フィルタ(Local Perception Filters)の日本語訳
こんにちは。今回は以前このブログに英文で掲載されたLocal Perception Filtersの日本語訳です。また訳しつつ元記事に誤り(申し訳ない)を見つけましたのでその修正も含んでいます。
この記事では通信遅延によって引き起こされる、状況の食い違いを軽減する特別な方法を見ていきます。この方法は”局所知覚フィルタ”と呼ばれます。背後にある概念は、遅延を隠すために表示に使う時間を遅くしたり早くしたりするというものです。
例として図Aをお見せしたいと思います。ここに2人のプレイヤーがいます。AとBです。AとBのマシンは世界をまたいでインターネットで接続されていま す。彼らは1つのゲーム世界にいて、安定はしていますが遅い接続を使っています。1つのデータパケットがAからBまで伝わる時間は、0.5秒です。Aがプ レイヤーBの方へ弾丸を発射するとしましょう。弾丸はBに当たるまで3秒かかる速度で進んでいます。弾丸が見えている期間を青で囲って表します。
LPFなし (Without modification of time)
Aの画面では何事もなく3秒後に弾丸がBに当たるのを見ることができるでしょう。しかしBの画面では0.5秒後の位置に突然弾丸が現れることになります。 AからBにインターネットを通してパケットを届ける間ですでに0.5秒が経過してしまっているからです。また、Bが弾丸に対する反応をAに送る時間があり ません。このためBが弾丸を避けていてもAの画面では当たったように見える状況が発生します。では、どのようにすれば私たちは互いの状況の一貫性を保つこ とができるのでしょうか?
LPFあり (With local perception filter)
これはA側の時間をB側に合わせて遅らせることで実現できます。A側では弾丸が当たるまでに要する時間を0.5秒分引き延ばします。これによってBが弾丸 に対する反応をAに送る余裕が生まれます。またこの図では示されませんが、B側では逆に時間を0.5秒分縮めます。これで唐突に弾丸が現れなくなります。 時間を延ばしたり縮めたりすることは、弾丸の速度が変化することを意味します。これはトレードオフです。
それぞれのプレイヤーは周囲に、通信遅延に基づいた時間の遅れの場を持っているといってもいいです。時間の遅れは座標とは別にもうひとつの次元としてtで 表されます。tが大きくなれば結果として移動速度が低下します。扱っている座標の次元にもよりますが、このことは傾斜平面もしくは、円錐として視覚化でき ます。より詳細な説明が欲しい方は“Realizing Bullet Time Effect in Multiplayer Games with Local Perception Filters” by Smed, Niinisalo and Hakonen.をお読みください。
この方法を説明するために簡単なFlashアプリケーションを作りました。開始すると赤と緑の円が見えると思います。これらは1つのゲーム世界にいる2人のプレイヤーを表しています。スペースキーで赤から緑のプレイヤーへ弾丸(小さな円)を発射できます。
(上から順に4つの弾丸の説明)
- 赤い弾丸は赤のプレイヤーから見た、実際の弾丸を表します
- 緑の弾丸は赤のプレイヤーから見た、遅れるほうへ時間のゆがめられた弾丸を表します
- 赤の弾丸は緑のプレイヤーから見た、実際の弾丸を表します
- 青の弾丸は緑のプレイヤーから見た、早まるほうへ時間のゆがめられた弾丸を表します
赤のプレイヤーから緑のプレイヤーに弾丸が移動するにしたがって、緑の弾丸はより不正確に、青の弾丸はより正確になっていきます。近ければ相互作用の可能性が高いのでより正確な表示を行うというLPFの性格が分かるかと思います。
なおカーソル上下で遅延を変化させることができます。
参考文献


Leave a Comment
Trackbacked