2-1. Robloxにおけるクライアント・サーバーモデル

Robloxにおけるクライアント・サーバーモデル

クライアント・サーバーモデルの基本

Robloxはクライアント・サーバーモデル型のアーキテクチャでエクスペリエンスを動かします。クライアント・サーバーモデルでは、サーバー(ゲームの中心的な処理を行う部分)とクライアント(プレイヤーのデバイス上で実行される部分)が明確に分かれて連携して処理を行います。

サーバー側

サーバーは、ゲームの主要なロジック、データ管理、プレイヤー間の同期などを担当します。これには、プレイヤーのアクションに基づくゲーム状態の更新や、全プレイヤーに対する情報の一貫性維持などが含まれます。
後項の サーバー処理 にて詳細・具体例を示しています。

クライアント側

クライアントは、プレイヤーのデバイス上で実行され、主にユーザーインターフェイスやレンダリング処理などを担当します。クライアントはサーバーからのデータを受け取り、それを基にユーザーに視覚的なフィードバックを提供します。
後項の クライアント処理 にて詳細・具体例を示しています。

クライアント・サーバーを同じプロジェクト上で実装

Robloxのクライアント、サーバーそれぞれの実装は、1つのRoblox Studioのプロジェクト上で実装されます。クライアントとサーバーはそれぞれ別なプロセスですが、コードは一元化された管理・開発が可能となっています。これにより、コードの管理や再利用性が向上し、ネットワークゲームの開発がしやすい環境が提供されています。
一元的な管理で実装可能なため、Scriptは以下のようなルールがあり、実行されるルールなどが異なります。
  • サーバー用、クライアント用といったScriptのタイプ分けがある
  • プロジェクト上のScriptの配置場所に依存した実行ルールがある
実装の際はこれらScriptが実行されるルールを理解し、適切なタイプ、配置、で実装していくこととなります。このScriptのルールは次章の Scriptが動くルール にて詳しく解説しています。

クライアント・サーバーで適切な処理をする

クライアント・サーバーモデルを適切に実装することは、ゲームのセキュリティとパフォーマンスに直結します。サーバー側での処理は、チートや不正行為を防ぎ、ゲームの整合性を保つのに役立ちます。また、クライアント・サーバーそれぞれで適切な処理をすることでパフォーマンスが最適化されユーザー体験を向上させることができます。
主に以下のような要素を考慮して適切な実装としていきます。
  • セキュリティ対策: サーバー側でのデータ検証と処理により、不正行為のリスクを低減します。
  • 応答性の高い処理: クライアントは、画面表示や入力反応などのローカル処理を行い、応答性を高めます。
  • 処理の分散: クライアントで処理を行うことでサーバーの一極集中負荷を下げ効率的な処理を可能とします。
  • データの同期: サーバーは全プレイヤーのゲームの状態を管理し、必要に応じて全クライアントとデータを同期します。

クライアント・サーバーモデルにおける注意点

クライアント・サーバーモデルで実装する際には、一般的に以下のような注意点があり、Robloxのエクスペリエンス実装においても重要となります。
  • ネットワークの遅延: クライアントとサーバー間の通信には遅延が生じるため、これを考慮した設計が必要です。
  • セキュリティの確保: クライアントからの入力やデータは常に信頼できないとみなし、サーバー側で適切に検証する必要があります。
  • リソースの最適化: クライアント・サーバー共にCPUやメモリリソースには上限があり、これを見極めた適材適所での処理が必要です。

参照すべき情報

必要に応じて以下の公式ドキュメント等の内容を参照しましょう。