Roblox Battle Royaleは、ユーザーが自身の構造物を築いて高所を確保し、より良い射撃角度を得たり、戦闘中に遮蔽物を提供するためのビルディングシステムを特徴としています。メニューを使用して、ユーザーは異なるタイルの種類を選択し、それを世界に配置できます。

整理された構造的なシステムを維持するために:
- 各タイルは他の既存のタイルまたは地面に接続する必要があります。
- すべてのビルディングタイルは、タイルが適切に接続し、重ならないように、3D世界と調整されたグリッド内に配置する必要があります。
タイル構成
ユーザーが新しいタイルを素早く簡単に作るためには、ビルディングシステムがどのタイルが互いに接続されているか、そして新しいタイルがグリッド上のどこに配置できるかを理解する必要があります。
タイルは3つのコンポーネントを使用します: タイルオブジェクトとして使用される視覚アセット、他の世界オブジェクトに関連するタイルが占有するスペースの情報、および追加のタイルが接続できるタイルの接続ポイントです。
アセット
アセットは、ReplicatedStorage/BuildingSystem/Assetsに配置されるBasePart(Part、MeshPartなど)であり、タイルが3D世界でどのように見えるかを表します。このBasePartには2つの子が含まれている必要があります:
占有
タイルがグリッドシステム内の正しい位置を占有することを確認することは重要であり、ビットマスクを使用して行うことができます。ビットマスクは、タイルタイプが基本的な世界空間、またはセルのセクション内で占有する物理的なスペースを表します。各ビルディングシステムタイル/オブジェクトは、グリッドセルの任意の面(前、左、後、右、上、下)や任意の八分音符を占有できます。ユーザーは、オブジェクトが占有するすべての面や八分音符がそのセル内で利用可能である場合にのみ、ビルディングシステムオブジェクトをセル内に配置できます。ビルディングシステムオブジェクトの占有は次のように定義されています:
| ビットインデックス | 意味 |
|---|---|
| 0 | セルの底面 |
| 1 | セルの上面 |
| 2 | セルの右面 |
| 3 | セルの後面 |
| 4 | セルの左面 |
| 5 | セルの前面 |
| 6 | +X, –Y, +Z セルの八分音符(中心が細胞の中心にある) |
| 7 | +X, +Y, +Z セルの八分音符(中心が細胞の中心にある) |
| 8 | –X, –Y, +Z セルの八分音符(中心が細胞の中心にある) |
| 9 | –X, +Y, +Z セルの八分音符(中心が細胞の中心にある) |
| 10 | –X, –Y, –Z セルの八分音符(中心が細胞の中心にある) |
| 11 | –X, +Y, –Z セルの八分音符(中心が細胞の中心にある) |
| 12 | +X, –Y, –Z セルの八分音符(中心が細胞の中心にある) |
| 13 | +X, +Y, –Z セルの八分音符(中心が細胞の中心にある) |
接続性
タイルは構造を作成するために互いに接続する必要があります。タイルタイプが触れているセルの面/エッジの部分を表すビットマスクを使用できます。ビルディングシステムタイル/オブジェクトの接続性は、セルの表面上の一連の接続ポイント、ビットによって表されます。これらはセルの面上に次のように配置されます:

ビルディングシステムオブジェクトは、セルの表面上で少なくとも2つの接続ポイントを共有する場合、グリッド内の他のビルディングシステムオブジェクトに接続されていると見なされます。
新しいタイルタイプを作成する
新しいタイルタイプを作成するには:
アセットをReplicatedStorage/BuildingSystem/Assetsに置きます。その際、上記で定義されたObjectTypeとStartingRotationの子を含む必要があります。

例えば、壁タイルタイプは次のように表現されます:
ObjectTypeConfigurations.Wall = {ASSET_OFFSET_FROM_CENTER = Vector3.new(0, 0, -CELL_DIMENSIONS.Z / 2),CONNECTIVITY = 0xFF8000, -- 0b 111 111 111 000 000 000 000 000OCCUPANCY = 0x20, -- 0b 00 00 00 00 1 0 0 0 0 0}
テレインと連携する
ビルディングシステムと完璧に整合する自由形式のテレインを持つマップを作成したい場合は、環境テレインで概説されているハイトマップインポートシステムを使用することをお勧めします。また、以下の詳細に注意してください:
Robloxのテレインは、各ボクセルが世界の4×4×4スタッドの立方体を占有する3次元配列で表現されます。このため、Roblox Battle Royaleでは、幅20×16×高さ20スタッドのグリッドセルサイズを使用し、壁タイルは20×16×1スタッド、床/天井タイルは20×1×20スタッドのサイズです。これにより、ビルディングタイルとテレインが適切に整合します。
ハイトマップ画像の各ピクセルは、X/Z平面上の1つのテレインボクセルを表す必要がありますので、5×5ピクセルの領域は、20×20スタッドの面積を占有する1つのビルディングシステムグリッドセルに対応します。
ハイトマップ画像内の各ピクセルの赤チャネルまたはグレーチャネルの値が、ビルディングシステムグリッドセルの高さで割り切れることを確認して、床タイルがテレインの上にうまく座るようにします。
ハイトマップをインポートする際には、次のように設定します:
Position (X, Y, Z) = 0, 0, 0Size (X, Y, Z) = heightmap_width × 4, 256, heightmap_length × 4
