![Hero background image](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fbce5183c75b0929ad2ef84fcbc7bce482def09c3-1920x1080.png&w=3840&q=100)
入門
私たちの目標は、マルチプレイヤーエクスペリエンスの作成と運用に必要な教育とツールを提供することで、ゲーム開発を民主化することです。このガイドでは、マルチプレイヤーゲーム開発で考慮すべき8つの要素を取り上げます。
マルチプレイヤーゲーム開発における8つの重要な要素
どのマルチプレイヤーソリューションにも、開発計画に織り込まなければならないトレードオフがある。多人数でのプレーを実現するには、まずそれぞれの要素におけるゲームの目標を理解する必要がある。
![タイマー](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fb0a7ca1b7450e5866f4fce6a99e90031005f3c89-810x455.jpg&w=3840&q=75)
ネットワークの待ち時間は、伝送路の距離やネットワークの性能によって変化する。他のプレーヤーと一緒にプレーしているときは、相手のデバイスが情報を送信してくるのを待たなければならない。
ゲームの種類によって、ゲームの進行速度に対する要求が異なるため、各ゲームはネットワーク遅延に対する許容範囲を設定する必要があります。予測やリコンシリエーションなどのテクニックでレイテンシを隠せるからだ。
![トレンド上昇アイコン](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fff4b9f1771389c61978df7291fa132c239206a7d-810x455.jpg&w=3840&q=75)
シングルプレイヤーゲームをうまく運営し、一人でも楽しめるようにするには、多くのことが必要です。技術的には、接続はネットワークモデルによって制限され、クライアント・サーバーの方がピアツーピアよりも簡単に同時接続数を処理できる。
ゲームに参加するプレーヤーが多ければ多いほど、同期が必要なネットワーク・アクティビティも多くなる。フレームレートを維持するためにアセットの詳細レベルを下げることができるように、より多くのプレーヤーをサポートするためにピア間で伝達される情報のレベルを変更することもできる。
![同期アイコン](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fb26343a8a21e17e8d658b8223d383ae4307ee554-810x455.jpg&w=3840&q=75)
ゲームでは、シミュレーションのある部分がすべてのプレーヤーと同期していなくても、それがプレーの結果に不可欠な要素でなければ構わない。プレイヤーデバイスと専用サーバーマシンのリソースは有限であるため、これは最適化である。
同期シミュレーションの規模を縮小するのに役立つその他の緩和策には、次のようなものがある:ホストのデータ更新頻度を下げ、世界を更新可能なエリアに分割し、プレイヤーに興味のあるものについてのみ更新を購読させる。
![精密アイコン](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Ffd3cbe3991a14b208764cf3638ce6b9a9e86aac5-810x455.jpg&w=3840&q=75)
ゲームの精度のニーズは、世界情勢とそのアクターの計算に関連するすべてのシステムに影響する。より正確な結果を求めるのであれば、これらの演算を処理するためのリソースが必要になり、メモリフットプリントも大きくなる。
マルチプレイでは、精度はネットワークフットプリントのオーバーヘッドやサーバーの実行速度にも影響します。
すべてに精密さが必要なわけではないので、ゲームのルールセットと結果にとって重要なものを分けることが重要だ。残りの部分については、全体的なパフォーマンスを節約するために、次数の低い近似値を使うことができる。
![お金のアイコン](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fe24d81f9771c01f35b047cb97e447c96d3273c33-810x455.jpg&w=3840&q=75)
あなたのゲームや選手層に適したモデルを選ぶには、たくさんの考慮すべき点がある。
ソロやインディーズの開発者は、より手頃な価格のサーバーレス・ソリューションに惹かれることが多いが、ロックイン(下記)やチート増加の可能性により、作ったゲームの全体的な収益の可能性が制限される可能性があるため、注意が必要だ。
接続性、サーバー容量、およびレイテンシーを改善するためにサービスを利用する場合、サービスがピーク時の同時接続ユーザー数に基づいて消費課金を行うことが多いことを理解することは、タイトルに対してどのような選択を取るのが最適かを理解する上で役立ちます。
![複雑なネットワーク・アイコン](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F38893a37714d51b70597d8a7d487b88bd8f8f1e6-810x455.jpg&w=3840&q=75)
多人数プレイヤーの開発は、さまざまなネットワークモデル、総プレイヤー数、レイテンシーの範囲、優れた同期シミュレーションスケールの設計など、複雑な問題を解決する必要があるため、困難なものになる可能性がある。
このような問題に対する解決策は存在するが、すべてが使いやすく、理解しやすいわけではないので、スタジオが最初にすべてを適切に評価し、後でネットワークの専門家が必要にならないようにすることが重要だ。
優れたドキュメント、わかりやすいサンプル、活発なサポート・コミュニティが付属しているソリューションは、こうした本質的な複雑さを克服する努力をはるかに容易にします。
![ロックアイコン](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F5e92bd4c099fd662ad55f1b6a52185b64292083f-810x455.jpg&w=3840&q=75)
プレーヤーを集めて一緒にプレーさせると、不公平なアドバンテージを得たり、システムをごまかしたり、単に混乱や無秩序を引き起こしたりするために、ゲームやネットワークトラフィックを改ざんしたくなる者が出てくる。
カジュアルで協力的なタイプのゲームには不正行為をする動機はそれほどないが、対戦型のゲームはしばしば破壊的なプレイヤーに狙われる。ゲームの評判を守るためには、こうした行為に対抗するためのチート緩和機能が重要です。
クライアントのローカルマシンにある情報は、いずれ悪用される可能性が高いので、不正行為に脆弱なゲームタイプは、クライアント以外のハードウェアでサーバーロジックをホスティングすることを検討すべきです。
![行き止まりの標識](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F991bd49591feb0c7fa8d2a2017beb0be3c7f2ccf-810x455.jpg&w=3840&q=75)
最後の考慮要素は、ロックイン、つまり一度決めたら将来のオプションが制限されることである。一つのネットワークモデルを選択した場合、ゲームがより高度な機能(チート管理など)を必要としたときに、他のモデルに変換するのが非常に厄介になる可能性があります。
アップグレードが容易なソリューションを選択することは、多くのゲームの将来の成功にとって重要である。例えば、ピアツーピア・モデルの場合、クライアント・サーバー・モデルに移行するためには、ほとんどの場合、完全な書き換えが必要になる。しかし、クライアントとサーバーの間の移動は、ゲームデザインで前もって計画すれば、より実現可能です。