すべての場所はデータモデルで表現され、場プレースに関するすべてを記述するオブジェクトの階層です。データモデルには、部品、地形、照明、その他の環境要素など、3D 世界を構成するすべてのオブジェクトが含まれています。また、プロパティを変更するスクリプト、呼び出しメソッドと機能、動的な動作と相互性を有効にするイベントに応答するオブジェクトなど、実行時の動作を制御できるオブジェクトも含まれています。
Roblox エンジンは、場プレースの状態の真実のソースとしてデータモデルを使用し、クライアントデバイスでシミュレートしてレンダリングできます。For more information on how the Roblox エンジンがデータモデルを解釈する方法については、クライアント-サーバーランタイム を参照してください。
オブジェкт
データモデルにオブジェクトを配置して整理して、Roblox で場所を説明します。Roblox のすべてのオブジェクトは、Instance クラスから継承し、すべてのオブジェクトに共通の汎用プロパティ、メソッド、およびイベントを定義します。オブジェクトは、オブジェクトが提供する機能に応じて、自分の特性を定義します。多くのカテゴリのオブジェクトがあり、多様な用途がありますが、一般的にパーツとスクリプトと呼ばれる BasePart および LuaSourceContainer オブジェクトで頻繁に作業します。
Roblox エンジンのすべての機能の包括的なリストについては、参照ドキュメント を参照してください。
3D ビルディングブロック
BasePart は、世界の物理的にシミュレートされた 3D ビルディングブロックのコアクラスです。位置、サイズ、方向などのプロパティを持つすべての物理オブジェクトに共通のプロパティとメソッドを定義します。
オブジェкт | 説明 |
---|---|
Part | ブロック、ボール、シリンダー、ウェッジ、またはコーナーウェッジの形状をとることができるプリミティブな パーツ。 |
MeshPart | Maya や Blender などの 3D モデリングソフトウェアからインポートされた メッシュ。 |
TrussPart | キャラクターが梯子のように登ることができるトラスビーム。 |
理論的には、単純なパーツだけで完全に機能する Roblox 体験を作成できますが、メッシュをインポートし、ソリッドモデリングでプリミティブなパーツを組み合わせて、より複雑なオブジェクトや構造を作成します。
スクリプト
場プレースの 3D 世界に対話性と動作を追加し、スクリプトでロジックを定義できます。Luau プログラミング言語でスクリプトを書いて、部品を移動したり、他のスクリプトを呼び出したり、イベントに応答したりすることができます。Roblox はクライアントサーバーモデルで動作するため、サーバー、クライアントでスクリプトを実行したり、ネットワーク境界を越えて通信させることができます。
- A Script オブジェクトは、サーバーでしか実行できないスクリプトを表示します。
- A LocalScript オブジェクトは、クライアントでしか実行できないスクリプトを表示します。
- A ModuleScript オブジェクトは、サーバーとクライアントスクリプトの両方から require() 使用できる再利用可能なスクリプトを表します。
スクリプトが適切に動作するには、データモデルの正しいコンテナに配置する必要があります。詳しくは、サーバー と クライアント セクションを参照してください。
オブジェクト組織
データモデルを整理する方法には多くの柔軟性がありますが、Roblox エンジンは、特定のオブジェクトが特定の コンテナサービス にあることを期待しています。これは、特定の動作を持ち、含まれるオブジェクトの動作に影響を与えることができるオブジェクトです。コンテナサービスの主なカテゴリには、次があります:
- ワークスペース - Workspace は、3D 世界でレンダリングされるすべてのオブジェクトを保存します。
さらに、次のオブジェクトでオブジェクトをさらに整理できます:
- フォルダ - A Folder は組織目的であり、どのような振る舞いも定義しませんたとえば、フォルダを使用して、サーバーストレージのスクリプトセットのような同様のオブジェクトをグループ化できます。
- モデル - A Model は主に、椅子、テーブル、ランプを含むデスクセットをグループ化するなど、パーツの幾何学的グループ化を目的としています。より複雑なセットを整理するには、モデル内にモデルをネストすることもできます。
ワークスペース
Workspace には、場プレースの 3D 世界を構成するすべてのオブジェクトが含まれています。ベースパーツ、メッシュパーツ、モデルなど、ワークスペースにオブジェクトを追加して 3D 世界をカスタマイズできます。クライアントは、このコンテナに表示されるすべてと、その外の何ものもレンダリングし、ユーザーがあなたの場プレースで見て交流するものを制御できます。実際にレンダリングされていないものの、関連するパーツやモデルに親属するスクリプトを追加することもできます。デフォルトでは、ワークスペースは Terrain および Camera オブジェクトでプリフィル充電されます。
カメラ
Camera は、クライアントが 3D 世界を見る方法を決定します。デフォルトでは、ワークスペースにカメラが 1つありますが、異なる視点とビューを作成するために複数のカメラオブジェクトを追加できます。すべてのクライアントはこれらの設定を受け取り、サーバーが直接変更できない独自のカメラビューを作成します。
たとえば、カメラを設定してユーザーの動きに従ったり、特定の場所に固定したりできます。また、視野、距離、角度を調整して、ユーザーが 3D 世界を見る方法の異なる視覚効果を作成できます。
詳しくは、カメラをカスタマイズするを参照してください。
地形
Terrain は、あなたの場プレースの景観を作成できます。地形に材料を適用して、草、水、砂、またはカスタムマテリアルなど、望む自然環境をシミュレートできます。3D ワールドに対して 1つの地形オブジェクトしか持てず、その地形に 1つの素材を適用できるにもかかわらず、地形エディタ を使用して、地形の領域を編集できます。
詳しくは、環境地形 を参照してください。
環境
照明と音響効果は、3D ワールドをより没入感と現実感のあるものにすることができます。これらの効果を場プレースに追加する必要はありませんが、視覚的および音響的により魅力的にすることができます。
照明
Lighting には、大気効果のシミュレーションのための Atmosphere や、環境内の太陽、月、星を変更するための Sky など、場プレースのグローバルライティング設定を制御するオブジェクトが含まれています。
詳しくは、照明 を参照してください。
サウンド
SoundService は、子供の Sound オブジェクトのボリュームと再生設定を制御し、バックグラウンドミュージックまたは環境音効果のために再生できます。
詳しくは、サウンドを参照してください。
レプリケーション
レプリケーション は、サーバーが接続されたすべてのクライアントとあなたの場所の状態を同期するプロセスです。Roblox エンジンは、多くの場合、サーバーとクライアント間のデータ、物理、チャットメッセージを賢く自動的に複製しますが、特定のオブジェクトを指定して、特定のコンテナに配置することで、複製することもできます。
リプリケート最初
ReplicatedFirst には、クライアントがあなたの場プレースに参加するときに複製したいオブジェクトが含まれています。通常、クライアント側の LocalScript オブジェクトやスクリプトに関連するオブジェクトなど、プレイヤーを初期化するのに不可欠なオブジェクトが含まれています。このコンテナ内のすべてのコンテンツは、サーバーからクライアントに一度だけ複製されます。
リプリケートストレージ
ReplicatedStorage には、サーバーと接続されたクライアントの両方に利用可能なオブジェクトが含まれています。クライアント上で発生する変更はすべて持続しますが、サーバーにレプリケートされません。サーバーは、一貫性を維持するために、クライアントの変更を上書きできます。このコンテナは、通常、ModuleScript 共有および両方の Script (サーバー側) および LocalScript (クライアント側) オブジェクトにアクセスする必要があります。また、このコンテナを使用して、必要に応じて 3D 世界に存在する必要がないオブジェクトを複製できます、例えば、すべての受信するキャラクタモデルをクローンして親にするための ParticleEmitter 。
For more information on how replication works, see クライアント-サーバーランタイム.
サーバー
データモデルは、クライアントに決してレプリケートされない、サーバー側のみのオブジェクトの専用コンテナを定義します。これにより、サーバーはサーバーのオブジェクトやロジックをクライアントに露出させずに、クライアントの動作と状態に影響を与えることができます。
サーバースクリプトサービス
には、 オブジェクト、サーバースクリプトに必要なオブジェクト、およびサーバー使用のみを目的とする他のスクリプト関連オブジェクトが含まれています。スクリプトが他の非スクリプトオブジェクトを必要とする場合、ServerStorage に配置する必要があります。このコンテナ内のスクリプトは、クライアントに決してレプリケートされず、安全なサーバー側ロジックを持つことができます。
サーバーStorage
ServerStorage には、サーバー使用のみを目的としたオブジェクトが含まれています。このコンテナを使用して、実行時にワークスペースまたは他のコンテナにクローンして親にしたいオブジェクトを保存できます。たとえば、マップなどの大きなオブジェクトをこのコンテナに保存し、必要になるまでこのコンテナに移動し、必要なときにのみワークスペースに移動できます。これにより、最初の参加時にクライアントネットワークトラフィックを減少できます。
クライバー
クライアントコンテナサービスは、接続されたすべてのクライアントにレプリケートされるオブジェクト用です。このカテゴリのコンテナは、すべての接続されたクライアントにレプリケートし、通常 3D オブジェクトと関連する LocalScript オブジェクトを含みます。これらのコンテナに格納するすべてのオブジェクトは、セッション間で非永続であり、クライアントが再接続するたびにリセットされます。プレイヤーのGUI、クライアント側のスクリプト、クライアントに関連する他のオブジェクトなど、これらのコンテナにオブジェクトを配置できます。
クライアントがサーバーに接続すると、Players コンテナサービスは、あなたの場所に参加するユーザーをリスニングし、すべてのクライアントに対して Player オブジェクトを作成します。サーバーは、編集データモデルのクライアントコンテナからオブジェクトを、対応する実行時データモデル内の Players オブジェクトにコピーします。次の表は、コンテナが保存されているコンテナと、クライアントにコピーされる結果のコンテナを説明します:
データモデルを編集 | ランタイムデータモデル | ノート |
---|---|---|
StarterPack | プレイヤー.バックパック | プレイヤーのインベントリを設定し、一般的に Tool オブジェクトを含むスクリプトですが、多くの場合、ローカルスクリプトも含まれています。 |
StarterGui | プレイヤー.PlayerGui | プレイヤーのローカル GUI を管理できるスクリプト。プレイヤーがリスポーンすると、PlayerGui の内容が空になります。サーバーは StarterGui 内のオブジェクトを PlayerGui にコピーします。 |
StarterPlayerScripts | プレイヤー.PlayerScripts | クライアントの汎用スクリプト。たとえば、特定の条件が満たされたときにクライアントに特殊効果を作成したい場合は、このコンテナにローカルスクリプトを配置してそれを行うことができます。サーバーはこのコンテナにアクセスできません。 |
StarterCharacterScripts | プレイヤー.キャラクタ | スクリプトは、スポーン時にクライアントにコピーされます。これらのスクリプトは、プレイヤーがリスポーンすると残りません。 |
ReplicatedFirst | このコンテナの内容は、他の何よりも先に、すべてのクライアントにレプリケートされます(ただし、サーバーに戻ることはありません)。 |
チャチャット
テキストチャットサービス
TextChatService は、チャネルの管理、メッセージの装飾、テキストのフィルタリング、コマンドの作成、カスタムチャットインターフェイスの開発など、さまざまな経験のテキストチャットタスクを処理するサービスを表します。
詳しくは、体験内テキストチャットシステムを参照してください。
ボイスチャットサービス
VoiceChatService は、他のユーザーとの距離に基づいて現実的なコミュニケーションをシミュレートする近接ベースのボイスチャット機能を表します。このサービスを使用して、機能をオンとオフに切り替えることができます。
詳しくは、ボイスチャットを参照してください。
フォルダとモデル
データモデルでオブジェクトをグループ化するための 2つの主要な方法があります: フォルダ と モデル 。両方ともオブジェクトのコンテナですが、目的が異なります。
- フォルダ は、ロビーや戦闘アリーナなどの環境のセクションを保存するのに最適です。
- モデル は、椅子、テーブル、ランプを含むデスクセットなどのオブジェクトのセットに使用されます。より複雑なセットを整理するには、モデル内にネストモデルを配置します。
オブジェクトには常に説明的な名前を付ける必要があります。これにより、後で必要に応じてオブジェクトを簡単に見つけ、変更できます。

