01/11/08 17:34
>>104
おぅ。
もう実装されてるわけですね。すごいなぁ。
とりあえず議論の前提をば。
・完全同期は物理的に不可能(光速度の限界(笑)、IP的にも)。
・通信のレイテンシが許容範囲内(数ms~十数ms)になることは多分無い。
→通信インフラはレイテンシよりスループット(帯域)を高める方向で成長してる。
・自分自身の見込み描画は必須(無いとイラつくから)。
こんな感じで良いでしょうかね?
通信インフラについては多分あってると思います。
で、すでに示されてる方法だとどうしてもラグる。
てことで解決の方向性としては、
(1) カクカクでも完全同期。カクカクしてもかまわないようなゲームにする。
(2) ラグって破綻した表示をなんとかごまかすことに全力を注ぐ。
(1)は別なゲームになっちゃうんで、(2)だよなぁと。
これくらいしか思いつかん。
(1)だったらターン制にするという究極の解があるけど。
とりあえずいろいろアイデア。
>これもまた、移動などの「その後が予測しうる」行動ならば、まあ
>アリかもしれないとは思いますが、予測が外れた際に「オット戻ろう」
>的な動作が目立ちました。(意味通じますよね)
外れてもワープさせずに外れた位置から歩かせて復帰させる。
(ひどい時はしょうがないのでワープさせる)。
予測移動の時は、あまり先まで進ませないとか
(サーバから位置情報が来たら急いでそこまで歩かせる)。
戦闘なんかは特に同期が必要なんだけど、相手の行動を見る、
つまり、「自分→サーバ→相手→サーバ→自分」
とかまってたら動考えても間に合わないので、
相手の行動をみて何かするのではなく、相手のステータスを見て(回復とか)
させる。また、戦闘のペースも出来る限り遅くする。
ステータス見るだけなら、「サーバ→自分」なのですばやい判断も可能そう。
ダメージ計算するのはサーバだから、最新情報持ってるのはサーバだしね。
UOなんかこれだよね。
あとは、移動経路を(UOみたいに到着地点をマウスで指定させて)
どこ経由でどこまで行きたいとか指定させて、
方向転換する時は、サーバで同期できた場所から方向転換させる。
(つまり、方向転換したくても、その場ですぐには出来ない。)
って、うまく説明できない。もう少し考えてみます。
とまぁ、こんな感じで、あとは、パラメータ調整で
うまく見せられないでしょうかね?