W grze Roblox Battle Royale znajduje się system budowania, który pozwala użytkownikom budować własne struktury, aby osiągnąć wyższy grunt dla lepszego kąta strzelania lub zapewnić osłonę podczas bitwy.Używając menu, użytkownik może wybrać z wielu różnych typów płytek i umieścić je na świecie.

Aby utrzymać uporządkowany i zstrukturyzowany system:
- Każda płytka musi połączyć się z inną istniejącą płytką lub z ziemią.
- Umieść wszystkie płytki budowlane w siatce skoordynowanej z światem gry, aby płytki prawidłowo się połączyły i nie pokryły się.
Kompozycja płytek
Aby użytkownicy mogli budować nowe płytki szybko i łatwo, system budowania musi zrozumieć, które płytki są ze sobą połączone i gdzie można umieścić nowe płytki na siatce.
Płytki wykorzystują 3 komponenty: element wizualny , który jest używany jako obiekt płytek, informacje o przestrzeni, którą zajmuje płytka, w odniesieniu do innych obiektów świata, oraz punkty połączenia płytki, które pozwalają na połączenie dodatkowych płytek z dostępnymi krawędziami.
Aktywum
Aktywem jest BasePart ( Part , MeshPart , itp.) umieszczony w ReplicatedStorage/BuildingSystem/Assets reprezentujący wygląd płytki w świecie gry.Ten BasePart musi mieć dwoje dzieci:
- Typ obiektu — A z nazwą typu płytki.
- Początkowa rotacja — A z początkową rotacją płyтки, gdy użytkownik umieści ją w świecie.
Zajętość
Zapewnienie, że płytka zajmuje właściwe położenie w systemie siatki jest ważne i można to zrobić za pomocą bitmaski.Bitmask reprezentuje przestrzeń fizyczną, którą rodzaj płytek zajmuje w podstawowej sekcji przestrzeni świata lub komórki.Każda płyta/obiekt systemu budowlanego może zajmować dowolną liczbę twarzy komórki siatki (przód, lewo, tył, prawo, góra i dół) oraz dowolną liczbę octantów w komórce siatki.Użytkownik może umieścić obiekt systemu budowlanego tylko w komórce, jeśli wszystkie twarze i octanty, które zajmuje obiekt, są dostępne w tej komórce.Dostępność dla obiektu systemu budowlanego jest określona w następujący sposób:
Indeks bitów | Znaczenie |
---|---|
0 | Dolna twarz komórki |
1 | Najwyższa twarz komórki |
2 | Prawe oblicze komórki |
3 | Tylna strona komórki |
4 | Lewe oblicze komórki |
5 | Przód komórki |
6 | +X, –Y, +Z półokrąg komórki z centrum komórki |
7 | +X, +Y, +Z półokrąg komórki z centrum komórki |
8 | –X, –Y, +Z półokrąg komórki z centrum komórki |
9 | –X, +Y, +Z półokrąg komórki z centrum komórki |
10 | –X, –Y, –Z octant komórki z pochodzeniem w centrum komórki |
11 | –X, +Y, –Z półokrąg komórki z centrum komórki |
12 | +X, –Y, –Z ośmiokąt komórki z centrum komórki jako miejscem pochodzenia |
13 | +X, +Y, –Z ośmiokąt komórki z centrum komórki jako miejscem pochodzenia |
Połączenie
Płytki muszą się połączyć, aby stworzyć strukturę.Możesz użyć bitmaski, która reprezentuje, jakie części twarzy/krawędzi komórki dotyka rodzaj płytek.Połączenie systemu budowlanego/obiektu jest reprezentowane przez serię punktów połączenia, bitów, na powierzchni komórki.Układają się w następujący sposób na powierzchni komórki:

Obiekt systemu budowlanego jest uważany za połączony z innym obiektem systemu budowlanego na siatce, jeśli dzieli co najmniej 2 punkty połączenia na powierzchni komórki.
Twórz nowe rodzaje płytek
Aby utworzyć nowy wpisywaćpłytek:
Umieść zasób w ReplicatedStorage/BuildingSystem/Assets. Pamiętaj, że musi zawierać ObjectType i StartingRotation dzieci zdefiniowane powyżej.
Określ zajętość i połączenie dla nowego typu płytek w >:
Na przykład typ płyty ściennej Ściana jest wyrażony w następujący sposób:
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}
Pracuj z terenem
Jeśli chcesz stworzyć mapę z dowolną formą terenu, która pasuje idealnie do systemu budowlanego, zalecamy użycie systemu importowania mapy wysokościowej zgodnie z opisem w Teren środowiskowy i obserwację następujących szczegółów:
Teren w Roblox jest reprezentowany przez trójwymiarową matrycę wokseli, każdy z których zajmuje kostkę o wymiarach 4×4×4 w świecie.Z tego powodu Roblox Battle Royale używa rozmiaru komórki siatki 20×16×20 szpilkami, z płytkami ścianowymi, które są 20×16×1 szpilkami, i płytkami podłogowymi/sufitowymi, które są 20×1×20 szpilkami.Umożliwia to budowanie płytek i terenu w prawidłowy sposób.
Każdy piksel w obrazie mapy wysokości powinien reprezentować jeden terenowy voxel w planie X/Z , więc obszar 5×5 w pikselach reprezentuje jedną komórkę siatki systemu budowlanego, która zajmuje obszar 20×20 w studach.
W obrazie mapy wysokości upewnij się, że czerwona kanał lub szara wartość kanału dla każdego piksela jest dzielna przez wysokość komórki siatki systemu budowlanego, aby płytki podłogowe pięknie leżały na terenie.
Gdy importujesz mapę wysokości, ustawiać:
Position (X, Y, Z) = 0, 0, 0Size (X, Y, Z) = heightmap_width × 4, 256, heightmap_length × 4