Roblox Battle Royale memiliki sistem bangunan yang memungkinkan pengguna membangun struktur mereka sendiri untuk mencapai ketinggian yang lebih baik untuk sudut tembakan, atau untuk memberikan perlindungan selama pertempuran. Dengan menggunakan menu, pengguna dapat memilih dari berbagai jenis ubin yang berbeda dan menempatkannya di dunia.

Untuk mempertahankan sistem yang teratur dan terstruktur:
- Setiap ubin harus terhubung ke ubin lain yang sudah ada atau ke tanah.
- Tempatkan semua ubin bangunan dalam grid yang terkoordinasi dengan dunia 3D sehingga ubin terhubung dengan benar dan tidak tumpang tindih.
Komposisi Ubin
Agar pengguna dapat dengan cepat dan mudah membangun ubin baru, sistem bangunan perlu memahami ubin mana yang terhubung satu sama lain dan di mana ubin baru dapat ditempatkan pada grid.
Ubin menggunakan 3 komponen: aset visual yang digunakan sebagai objek ubin, informasi tentang ruang yang ditempati ubin dalam referensi terhadap objek dunia lainnya, dan titik sambungan dari sebuah ubin yang memungkinkan ubin tambahan terhubung ke tepi yang tersedia.
Aset
Sebuah aset adalah BasePart (Part, MeshPart, dll.) yang ditempatkan di ReplicatedStorage/BuildingSystem/Assets yang merepresentasikan apa yang terlihat dari ubin di dunia 3D. BasePart ini harus memiliki dua anak:
- StartingRotation — Sebuah NumberValue dengan Value dari rotasi awal ubin saat pengguna menempatkannya di dunia.
Ruang yang Ditempati
Memastikan bahwa sebuah ubin menempati lokasi yang benar dalam sistem grid adalah penting dan dapat dilakukan menggunakan bitmask. Sebuah bitmask merepresentasikan ruang fisik yang ditempati tipe ubin di dalam bagian dasar ruang dunia, atau sel. Setiap ubin/objek sistem bangunan dapat menempati sejumlah wajah sel grid (depan, kiri, belakang, kanan, atas, dan bawah) dan sejumlah okta dalam sel grid. Seorang pengguna hanya dapat menempatkan objek sistem bangunan dalam sel jika semua wajah dan okta yang ditempati objek tersedia dalam sel tersebut. Ruang yang ditempati untuk objek sistem bangunan didefinisikan sebagai berikut:
| Indeks bit | Arti |
|---|---|
| 0 | Wajah bawah sel |
| 1 | Wajah atas sel |
| 2 | Wajah kanan sel |
| 3 | Wajah belakang sel |
| 4 | Wajah kiri sel |
| 5 | Wajah depan sel |
| 6 | +X, –Y, +Z okta dari sel dengan asal di pusat sel |
| 7 | +X, +Y, +Z okta dari sel dengan asal di pusat sel |
| 8 | –X, –Y, +Z okta dari sel dengan asal di pusat sel |
| 9 | –X, +Y, +Z okta dari sel dengan asal di pusat sel |
| 10 | –X, –Y, –Z okta dari sel dengan asal di pusat sel |
| 11 | –X, +Y, –Z okta dari sel dengan asal di pusat sel |
| 12 | +X, –Y, –Z okta dari sel dengan asal di pusat sel |
| 13 | +X, +Y, –Z okta dari sel dengan asal di pusat sel |
Konektivitas
Ubin perlu terhubung satu sama lain untuk menciptakan sebuah struktur. Anda dapat menggunakan bitmask yang merepresentasikan bagian mana dari wajah/tepi sel yang dihubungi oleh tipe ubin. Konektivitas ubin/objek sistem bangunan direpresentasikan oleh serangkaian titik sambungan, bit, di permukaan sel. Mereka diatur dengan cara berikut pada wajah sel:

Sebuah objek sistem bangunan dianggap terhubung ke objek sistem bangunan lain di grid jika mereka berbagi setidaknya 2 titik konektivitas di permukaan sel.
Buat tipe ubin baru
Untuk membuat tipe ubin baru:
Tempatkan aset di ReplicatedStorage/BuildingSystem/Assets. Ingatlah bahwa aset tersebut harus memiliki anak ObjectType dan StartingRotation seperti yang didefinisikan di atas.

Definisikan Ruang yang Ditempati dan Konektivitas untuk tipe ubin baru Anda di ReplicatedStorage/BuildingSystem/Libraries/Grid/ObjectTypeConfigurations:

Sebagai contoh, tipe ubin Dinding dinyatakan sebagai berikut:
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}
Bekerja dengan medan
Jika Anda ingin membuat peta dengan medan bentuk bebas yang sejajar sempurna dengan sistem bangunan, kami merekomendasikan agar Anda menggunakan sistem impor heightmap seperti yang dijelaskan dalam Medan Lingkungan dan memperhatikan detail berikut:
Medan di Roblox direpresentasikan oleh array tiga dimensi voxel, masing-masing menempati kubus 4×4×4 stud di dunia. Karena ini, Roblox Battle Royale menggunakan ukuran sel grid 20×16×20 stud, dengan ubin dinding yang berukuran 20×16×1 stud dan ubin lantai/langit-langit yang berukuran 20×1×20 stud. Ini memungkinkan ubin bangunan dan medan sejajar dengan baik.
Setiap pixel dalam gambar heightmap Anda harus merepresentasikan satu voxel medan di bidang X/Z, sehingga area 5×5 dalam piksel merepresentasikan satu sel grid sistem bangunan yang menempati area 20×20 stud.
Dalam gambar heightmap Anda, pastikan nilai saluran merah atau saluran abu-abu untuk setiap piksel dapat dibagi oleh tinggi sel grid sistem bangunan Anda sehingga ubin lantai dapat ditempatkan dengan rapi di atas medan.
Saat Anda mengimpor heightmap Anda, setel:
Position (X, Y, Z) = 0, 0, 0Size (X, Y, Z) = heightmap_width × 4, 256, heightmap_length × 4