さてここで種明かし





奇妙な世界?の奇妙な?現象について考察してみましょう。




まず、世の中には

・ステータス変化を伴う、重要な動作 (攻撃・回復など)



・ステータス変化を伴わない、重要ではない動作 (/emoteなど)


2つがあることを認識してください。





■ベルが合わない・・・







ベルが合わないのは、単純に操作側の「ベルを鳴らしたよ」という情報が、FF11サーバを経由して「他のプレーヤー」に
伝わるまで時間がかかるせいです。
一見ほぼ同時になっている時があるように見えますが、零点何秒というレベルで
動作は遅れて伝わっています。





■どうして魔法が・・・・・・



では、魔法の詠唱が途中から早くなるのはなぜでしょう?



答えは「魔法の詠唱のスタイル」にあります。


魔法の詠唱はご存知のように2段階に分かれています。


・最初に構えるだけのモーション(白魔法だと両手を広げているモーション)

・実際の効果を伴ったエフェクト(白魔法だと腕を天に突き上げているモーション)



見た感じでは、「最初に構えるだけのモーション」は操作者側のほうが必ず早く見え、
「実際の効果を伴ったエフェクト」は他プレーヤーから見える方が早い場合があります。




「最初に構えるだけモーション」ステータス変化が伴わない、いわば「それほど重要ではない動き」なので
ベルと同じように、「他プレーヤー」側には遅れて伝わります。


ただし、重要なのは「次にサーバ側で魔法の成功判定を行う」という動作があります。



これは「ステータス変化を伴う、重要な動作はサーバ側で成功判定を行っているから」です。






ゲームなどでよく使われる「判定」とは、ある行為に対して「○」か「×」かを決める儀式

のことです。




魔法の詠唱を例に取りましょう



例えば「詠唱中に移動をしなかった」という条件がある場合、サーバ側の魔法の成功判定「魔法詠唱は成功した」
判定します。







ところが「詠唱中に移動をしてしまった」という条件がある場合、サーバ側の魔法の成功判定「魔法詠唱は失敗した」
判定を下します。



これが「判定」です。



また、アクションゲームやシューティングゲームでよく聞く「当たり判定」は、

自分と他の物が接触したかどうかを判定します。




例えば「ミスラさんのOPに指が触れたかどうか」という判定があるとします。

(そして、触れていた場合、1機失うという動作があるとします。)



上の場合、感情的にはアウトのような気もしますが、サーバで決めた「アウトとなる領域」には指は入っていないため
誰がなんと言おうと、判定的にはセーフです。





ところが、調子こいたとしましょう。あぁこれはいけません。完全にセクハラです。
サーバで決めた「アウトとなる領域」にも指が入っているため、判定的にはアウトです。






こうして(管)君は(社会的に)1機失うこととなりました。




なぜ「ステータス変化を伴う、重要な動作はサーバ側で判定を行っている」のか?
もうお分かりですね?





サーバ側で判定を行わないと、いくらでも不正ができるからです。








これでは何が正しいのか分からず、ミスラさんが1機失うことにもなりかねません。



それゆえ、サーバ側での判定は、世界の均衡を保つために無くてはならない動作なのです。






話を元に戻しましょう。







「実際の効果を伴ったエフェクト」は他プレーヤーから見える方が早い場合がある、のは
サーバ側での判定結果を各プレーヤーに伝える動作をしているためです。

この時、優先順位が決まっているわけではないので、多少の時間のズレが発生する場合があります。
他プレーヤーの方が情報を早く受信した場合、実際の詠唱者よりもモーションが早く見えることになります。




ここでちょっと実験。

詠唱途中に回線が切れるとどう見えるか・・・・?

これをご覧ください。



【動画を見る】

【動画を見る(テレポバージョン)】

他プレーヤーから見ると魔法は成功したように見えるのに、詠唱者側では詠唱し続けているように見える・・・・・・?

絵にすると以下の通りです。





まず最初に詠唱を行いますが、ここで回線を切断してしまいます。





ここでワザと詠唱者が移動を行って、魔法の詠唱を中断させようとしましょう。

しかし、回線が切れているので「サーバ側」には移動したという情報は伝わりません。

そのため、サーバは「移動しなかったもの」とみなし、「魔法の詠唱は成功した」と判定し、他プレーヤーに

情報を伝達します。


詠唱者側は回線が切れているので、魔法の成功判定の結果が伝わってこないため
まだ詠唱中のように見えます。







ここで回線を復活させましょう。

すると、サーバ側からは「詠唱に成功した」という結果が操作側に送られます。

また、詠唱者側からは「移動した」という情報がサーバに送られるので、他プレーヤーからも
移動したという状態が見えるようになります。










■動かないタルタル・・・・・・




キャラクターは現在の位置と、向いている方角をサーバに送信します。
しかし、この位置情報は(おそらく)一定間隔でしかサーバに送信されないので、
非常に短い時間でチョコマカ動いたという情報はカットされた状態で他のプレーヤーからは見えます。





■剣の振りが・・・・・・

武器の振り方も何パターンかありますが、これも非常にどうでもいい情報です。
「攻撃が成功した」という判定をサーバから送られてくるので、それをプレーヤー側でランダムで適当な
剣の振り方にして表示させています。「だれそれが攻撃した」ということが重要なのであって、
振り方なんてどうだっていいのです。






なぜこのように「プレーヤー側の処理」と「サーバ側の処理」分かれているかというと、
重要な情報(キャラクターのステータス)はサーバ側で一元管理する必要があるからです。

自分のクライアントと他人のクライアントでステータスの見え方が違っていたら大問題ですが、
剣の振り方が違うとかは、気にしない箇所、それこそ隣同士でプレイしていない限り
分からないような情報
なので、このようにしているわけです。

オンラインゲームはできるだけサーバやネットワークに負荷をかけない作りになっているので、
できるだけ不要な情報は「省く」ことになっています。
(サーバ・ネットワーク負荷を抑制すればするほど、1ワールドに住むことができる人口が増すため。)


また、たまに問題になる「移動ツール」などは、移動情報を勝手に書き換えたデータをサーバ側に
送信しているのです。そのため、やけに移動速度が速かったり、ワープしたりしているように
見えたりします。
(*最近では短時間に極端な移動を行うと検知されて、即お縄になるようです)




おまけでちょっと面白い動画を載せておきましょう。

■剣の振りが・・・・・・2

【動画を見る】

剣の振りが他プレーヤーのほうが速く見える動画です。
これは魔法詠唱と同じ話です。



■スライディングナイト

【動画を見る】

これはβのころからある「スライディング」現象です。
他プレーヤーから見ると、間のモーションが省かれているために、スライディングのように見えます。


■うしろさがり・タゲロック


【動画を見る】

【動画を見る】

タゲロックして後ろに下がると、他のプレーヤーからは普通に後ろに下がったように見えます。
これはコントローラー(キーボード)で「後ろ」と入力したものを、そのまま反映しているからだと思います。
止まる、または座る行為を行うと、向いている方角が更新されて、正常な方向に向くようになります。






以上、「真夏の怪談」と称しましたが、なんのことはない、処理の方法で見え方が
異なるよ、という話でした。作った方としてはそこそこ面白かったです。





しかし・・・このコンテンツ(最初の黒いところ)を作っている時に、スピーカーから怪音がしてマジでびびりました。

いやー、本当に違う世界に来たのかと思いましたよ。





元の世界に戻る。