アピリッツの知識共有サイト「ナレッジベース」で公開されている内容をアピスピでも紹介します。こちらはES部のエンジニア・清水則雄さんによる記事です。
通信ゲームのイメージ
よく、オンラインゲームを作ってるというと「同期とか大変でしょ」や、「ずれているとおかしい」などと言われる気がしています。
端末を2台以上置いて比べた時には「完全に〇秒後に両プレイヤーの状態が一緒」もしくは少しラグがあるくらい、というイメージを持ってる人が多い気がします。
実はオンラインゲームは主観的に見られている
ただ、実際にオンラインゲームをプレイしている人たちは相手の端末を見ることがほぼ無く。自分の画面をみてプレイしていることがほとんどです。
「そんなので一緒に遊んでる感じあるの?」という疑問があるのですが、実は相手の動きが変化していることを見て、主観的な「体感」として一緒に遊んでる 、と感じ取れていると思います(錯覚・勘違いともいう)。
逐次相手の変化が自分の世界に影響している、と感じると、「マルチプレイしてるんだな」って自分の中で感じ取っている状態です。
プレイヤーは客観的に世界を体験していない
実際に端末の差を見てみると、「敵の向きが違う」「雑魚の位置がバラバラ」「エフェクトが端末によってでるタイミングと場所が違う」などとずれている事が多いです。
極端にいうと、プレイヤーAの世界とプレイヤーBの世界では起承転結でいうと”起”と”結”だけが僅かなラグを含んだ同期をしているだけで、経緯の部分を客観的にみると全く違う世界が動くようになっていますが、それでも「ひとつの世界を共有している」と感じ取っています。
ユーザーのゲーム体験が大事
大事なことはプレイヤーが、ポイントポイントで事象を共有していることで、そこまでのプレイヤー各々の経緯に関しては大きく考慮しない、というのがあると思います。
ネットワークの性質上、不安定、遅延などはある部分なので、客観的に正しいかというよりは 1プレイヤーが主観的に見たときにおかしくないか? を考える方が楽にオンラインゲームの設計をできる気がしています。
余談:チャット
最近ソーシャルゲームにおいてもリアルタイムチャットを実装する機会が増えている気がします。
リアルタイム web も流行ってきているので、このあたりの同期性を気にする場合も多いですが、個人的にはプレイヤーの体験としてどうすればいいのか?が重要視されるべきで、ゲーム性によって設計を考える部分ではあると思います(ホーム画面に秒を刻んだチャットの同期がいるのか?など)。