3-1. ScriptingのためのDataModelとService

ScriptingのためのDataModelとService

DataModelとは

DataModelはRobloxのゲーム世界を構成する根幹です。これにはRobloxが提供する組み込みServiceやエクスペリエンスを形作る様々なオブジェクトが含まれます。DataModelはツリー構造であり、この中にはScriptの管理や実行に関わる多くのサービスが含まれています。Scriptを効果的に実装するためには、これらのサービスの理解が不可欠です。Explorer(↑画像)はDataModelのツリーを表したものといえます。

DataModelの特徴

  • サービスの統合: DataModelはRobloxの様々な組み込みサービス(例えば、Players, Workspace, Lightingなど)を含んでおり、これらでゲームの基本的な機能や環境設定が可能になっています。
  • オブジェクトの管理: ゲーム内で生成されるオブジェクトやインスタンスはDataModel内で管理され、これによりスクリプトからのアクセスや制御が可能になります。
  • 全ての要素はInstance型: DataModel内の全てのオブジェクトはInstance型、またはその派生型です。これにより、一貫した方法でオブジェクトを操作し、管理することができます。
  • 階層的な構造: DataModelはツリー構造を形成し、各オブジェクトやサービスはノードとして存在します。この構造により、ゲームのさまざまな要素が統一的に管理され、効率的にアクセス可能となっています。

ScriptingのためのServiceを把握

Scriptを実装するためには、特にScriptingに関わるServiceの理解が重要です。これらのServiceはScriptの管理だけでなく、Scriptの実行ルールを決定する役割も担っています。したがって、サービスがサーバー向けなのか、クライアント向けなのかを正確に理解しておくことが重要です。(Script、LocalScriptについては次項参照)

Workspace

  • 概要: Workspaceはエクスペリエンス上で存在するオブジェクトを保持する環境全体です。ここに配置されたオブジェクトは、プレイヤーがいる3D世界で表示され、インタラクト可能となります。
  • Scriptの実行ルール: Scriptを実行

ServerScriptService

  • 概要: ServerScriptServiceはサーバー側で実行されるScriptを管理するサービスです。ここに配置されるScriptはサーバー上で実行され、全プレイヤーに影響を与える処理を担当します。
  • Scriptの実行ルール: Scriptを実行

ServerStorage

  • 概要: ServerStorageはサーバー専用のストレージです。ここに配置されたアイテムやScriptはクライアントからはアクセスできません。またストレージの役割のためScriptの実行はしません。
  • Scriptの実行ルール: 実行しない

ReplicatedStorage

  • 概要: ReplicatedStorageはサーバーとクライアント間で共有されるデータを格納するための場所です。ここにあるアイテムはクライアントに同期され、両方の環境からアクセス可能です。ストレージの役割のためScriptは実行しません。
  • Scriptの実行ルール: 実行しない

ReplicatedFirst

  • 概要: エクスペリエンスがロードされる際に最初にクライアントに送信されるコンテンツを保管する場所です。これにより、初期ロード時の画面や設定などをカスタマイズできます。
  • Scriptの実行ルール: LocalScriptを実行

StarterPlayer

  • 概要: 各プレイヤーがエクスペリエンスに参加した際にプレイヤーに適用するデフォルトプロパティを設定するサービスです。プロパティの変更や、Modelの配置などにより、プレイヤーの挙動から見た目に関する設定までカスタマイズ可能です。
  • Scriptの実行ルール: 実行しない(下記StarterPlayerScripts、StarterCharacterScriptsを利用)

StarterPlayerScripts

  • 概要: 各プレイヤーがエクスペリエンスに参加する際に自動的に実行されるスクリプトを保管する場所です。これらのスクリプトは、プレイヤーごとのクライアントサイド処理を配置します。
  • Scriptの実行ルール: LocalScriptを実行

StarterCharacterScripts

  • 概要: プレイヤーのキャラクターがスポーンされるたびに実行されるスクリプトを管理するサービスです。キャラクターの初期化や、挙動を定義するなどのクライアントサイド処理を配置します。
  • Scriptの実行ルール: LocalScriptを実行

StarterGui

  • 概要: プレイヤーに表示されるGUI要素を管理するサービスです。これにより、エクスペリエンス内のインターフェイスやメニューなどのUI要素を個々のプレイヤーに提供できます。
  • Scriptの実行ルール: LocalScriptを実行

StarterPack

  • 概要: プレイヤーがエクスペリエンスを開始する際に利用できるツールやアイテムを保管する場所です。ここに配置されたアイテムはプレイヤーが参加すると自動的にインベントリに追加されます。
  • Scriptの実行ルール: LocalScriptを実行

ScriptからDataModel・Serviceの利用

ScriptからDataModelへのアクセスは、 という変数を通じて行われます。上で見たツリー構成の通り、配下には各種Serviceが存在しアクセス可能です。
ServerScriptServiceの利用例

DataModelのInstance利用の基本

InstanceへのScriptからのアクセス

エクスペリエンスに登場するInstance(各オブジェクト)は、DataModelのツリー構造に基づく非常にシンプルなルールで直感的なアクセスが可能です。各サービスから、対応したパスを「.」などで指定することでアクセスできます。
また、ScriptもInstanceであり、DataModel上の任意の位置に配置できます。ただし実行されるかどうかは上述した通り各サービスのルールに則ります。Script内からは、自分のInstanceを変数でアクセスが可能で、これを起点にツリーを辿ることもできます。
以下が、Partの直下にScriptを配置し、その親を辿ってパーツを操作する、最も初歩的ともいえるプログラム例です。

InstanceのScriptからの生成

各種InstanceはScriptから各プロパティを設定して生成することができます。以下が生成例です。

DataModelのルールはすべての動作の土台

DataModelとService、またそれを構成するInstanceとその運用ルールは、RobloxでのScriptingにおいて基礎となる重要な要素です。まずはこれらの目的・用途を把握し適切に活用することで、効果的なScript実装が可能となります。

参照すべき情報