Roblox Battle Royale verfügt über ein Bausystem, das es den Benutzern ermöglicht, eigene Strukturen zu bauen, um erhöhte Positionen für einen besseren Schusswinkel zu erreichen oder während des Kampfes Deckung zu bieten. Über ein Menü kann der Benutzer aus verschiedenen Fliesenarten auswählen und diese in der Welt platzieren.

Um ein ordentliches und strukturiertes System aufrechtzuerhalten:
- Jede Fliese muss mit einer anderen bestehenden Fliese oder mit dem Boden verbunden sein.
- Platzieren Sie alle Baufliesen innerhalb eines Rasters, das mit der 3D-Welt koordiniert ist, damit die Fliesen richtig verbunden sind und sich nicht überlappen.
Fliesenkomposition
Damit Benutzer neue Fliesen schnell und einfach erstellen können, muss das Bausystem verstehen, welche Fliesen miteinander verbunden sind und wo neue Fliesen im Raster platziert werden können.
Fliesen verwenden 3 Komponenten: das visuelle Asset, das als Fliesenobjekt verwendet wird, Informationen über den Raum, den die Fliese einnimmt im Verhältnis zu anderen Weltobjekten, und die Verbindungspunkte einer Fliese, die es ermöglichen, zusätzliche Fliesen mit den verfügbaren Kanten zu verbinden.
Asset
Ein Asset ist ein BasePart (Part, MeshPart usw.), das in ReplicatedStorage/BuildingSystem/Assets platziert wird und darstellt, wie die Fliese in der 3D-Welt aussieht. Dieses BasePart muss zwei Kinder haben:
- StartingRotation — Ein NumberValue mit einem Value der Anfangsrotation der Fliese, wenn ein Benutzer sie in der Welt platziert.
Belegung
Die Sicherstellung, dass eine Fliese den richtigen Standort in einem Rastersystem einnimmt, ist wichtig und kann mit einer Bitmaske erreicht werden. Eine Bitmaske repräsentiert den physischen Raum, den der Flisentyp innerhalb eines grundlegenden Abschnitts des Weltraums oder Zelle einnimmt. Jede Fliese/Objekt im Bausystem kann beliebige Anzahl von Flächen einer Rasterzelle (vorne, links, hinten, rechts, oben und unten) und beliebige Anzahl von Oktanten in einer Rasterzelle einnehmen. Ein Benutzer kann ein Bausystemobjekt nur in eine Zelle platzieren, wenn alle Flächen und Oktanten, die das Objekt einnimmt, in dieser Zelle verfügbar sind. Die Belegung für ein Bausystemobjekt ist wie folgt definiert:
| Bit-Index | Bedeutung |
|---|---|
| 0 | Unterfläche der Zelle |
| 1 | Oberfläche der Zelle |
| 2 | Rechte Fläche der Zelle |
| 3 | Rückfläche der Zelle |
| 4 | Linke Fläche der Zelle |
| 5 | Vorderfläche der Zelle |
| 6 | +X, –Y, +Z Oktant der Zelle mit Ursprung im Zentrum der Zelle |
| 7 | +X, +Y, +Z Oktant der Zelle mit Ursprung im Zentrum der Zelle |
| 8 | –X, –Y, +Z Oktant der Zelle mit Ursprung im Zentrum der Zelle |
| 9 | –X, +Y, +Z Oktant der Zelle mit Ursprung im Zentrum der Zelle |
| 10 | –X, –Y, –Z Oktant der Zelle mit Ursprung im Zentrum der Zelle |
| 11 | –X, +Y, –Z Oktant der Zelle mit Ursprung im Zentrum der Zelle |
| 12 | +X, –Y, –Z Oktant der Zelle mit Ursprung im Zentrum der Zelle |
| 13 | +X, +Y, –Z Oktant der Zelle mit Ursprung im Zentrum der Zelle |
Konnektivität
Fliesen müssen miteinander verbunden sein, um eine Struktur zu schaffen. Sie können eine Bitmaske verwenden, die darstellt, welche Teile der Flächen/Kanten der Zelle der Flisentyp berührt. Die Konnektivität eines Bausystemobjekts wird durch eine Reihe von Verbindungspunkten, Bits, auf der Oberfläche einer Zelle dargestellt. Sie sind auf folgende Weise auf den Flächen der Zelle angeordnet:

Ein Bausystemobjekt wird als mit einem anderen Bausystemobjekt im Raster verbunden betrachtet, wenn sie mindestens 2 Verbindungspunkte auf der Oberfläche einer Zelle teilen.
Neue Flisentypen erstellen
Um einen neuen Flisentyp zu erstellen:
Platzieren Sie das Asset in ReplicatedStorage/BuildingSystem/Assets. Denken Sie daran, dass es die Kinder ObjectType und StartingRotation wie oben beschrieben enthalten muss.

Definieren Sie die Belegung und Konnektivität für Ihren neuen Flisentyp in ReplicatedStorage/BuildingSystem/Libraries/Grid/ObjectTypeConfigurations:

Zum Beispiel wird der Flisentyp Wand wie folgt ausgedrückt:
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}
Mit Terrain arbeiten
Wenn Sie eine Karte mit freiformigem Terrain erstellen möchten, das perfekt mit dem Bausystem übereinstimmt, empfehlen wir, das Höhenkarten-Importsystem zu verwenden, wie in Environmental Terrain beschrieben, und folgende Details zu beachten:
Terrain in Roblox wird durch ein dreidimensionales Array von Voxeln dargestellt, von denen jeder einen Würfel von 4×4×4 Studs in der Welt einnimmt. Aus diesem Grund verwendet Roblox Battle Royale eine Rasterzellengröße von 20×16×20 Studs, mit Wandfliesen, die 20×16×1 Studs und Boden-/Deckenfliesen, die 20×1×20 Studs groß sind. Dies ermöglicht es, dass Baufliesen und Terrain richtig ausgerichtet sind.
Jedes Pixel in Ihrem Höhenkartenbild sollte ein Terrain-Voxel in der X/Z-Ebene darstellen, sodass ein 5×5-Bereich in Pixeln eine Rasterzelle des Bausystems darstellt, die ein 20×20-Stud-Bereich einnimmt.
Stellen Sie in Ihrem Höhenkartenbild sicher, dass der Wert für den Rotkanal oder Graukanal jedes Pixels durch die Höhe Ihrer Rasterzelle des Bausystems teilbar ist, damit die Bodenfliesen schön auf dem Terrain sitzen.
Wenn Sie Ihre Höhenkarte importieren, setzen Sie:
Position (X, Y, Z) = 0, 0, 0Size (X, Y, Z) = heightmap_width × 4, 256, heightmap_length × 4