Roblox Battle Royale, kullanıcıların daha iyi bir nişan açısı elde etmek için kendi yapılarınızı inşa etmelerine veya savaş sırasında siper sağlamalarına olanak tanıyan bir yapı sistemi içerir. Bir menü kullanarak, kullanıcı farklı karo türlerinden seçim yapabilir ve bunları dünyaya yerleştirebilir.

Düzgün ve yapılandırılmış bir sistemin sürdürülebilmesi için:
- Her karo, başka bir mevcut karo veya yere bağlı olmalıdır.
- Tüm yapı karolarını, karoların düzgün bağlanmasını ve üst üste binmemesini sağlamak için 3D dünyayla koordine edilmiş bir ızgara içinde yerleştirin.
Karo bileşimi
Kullanıcıların yeni karoları hızlı ve kolay bir şekilde inşa edebilmeleri için, yapı sisteminin hangi karoların birbirine bağlı olduğunu ve yeni karoların ızgarada nerelere yerleştirilebileceğini anlaması gerekir.
Karolar, 3 bileşen kullanır: Karo nesnesi olarak kullanılan görsel varlık, karonun diğer dünya nesnelerine referansla kapladığı alan hakkında bilgi ve ek karoların mevcut kenarlarla bağlantı kurmasına izin veren bir karonun bağlantı noktaları.
Varlık
Bir varlık, 3D dünyadaki karonun nasıl göründüğünü temsil eden BasePart (Part, MeshPart vb.) türünde bir nesnedir ve ReplicatedStorage/BuildingSystem/Assets içinde yer almalıdır. Bu BasePart iki çocuğa sahip olmalıdır:
- StartingRotation — Kullanıcı karoyu dünyaya yerleştirdiğinde karonun başlangıç rotasyonunun Value'sine sahip bir NumberValue.
Kapasite
Bir karonun ızgara sistemi içinde doğru konumda yer almasını sağlamak önemlidir ve bu bir bitmask kullanılarak yapılabilir. Bir bitmask, bir karo türünün, temel bir dünya alanı bölümü veya hücresinde kapladığı fiziksel alanı temsil eder. Her yapı sistemi karo/nesnesi, bir ızgara hücresinin herhangi bir yüzünü (ön, sol, arka, sağ, üst ve alt) ve bir ızgara hücresindeki herhangi bir sekizgeni kaplayabilir. Bir kullanıcı, bir yapı sistemi nesnesini bir hücrede yalnızca, nesnenin kapladığı tüm yüzler ve sekizgenler o hücrede mevcut olduğunda yerleştirebilir. Bir yapı sistemi nesnesinin kapasitesi aşağıdaki gibi tanımlanır:
| Bit indeksi | Anlamı |
|---|---|
| 0 | Hücrenin alt yüzü |
| 1 | Hücrenin üst yüzü |
| 2 | Hücrenin sağ yüzü |
| 3 | Hücrenin arka yüzü |
| 4 | Hücrenin sol yüzü |
| 5 | Hücrenin ön yüzü |
| 6 | +X, –Y, +Z sekizgeni hücrenin merkezi ile |
| 7 | +X, +Y, +Z sekizgeni hücrenin merkezi ile |
| 8 | –X, –Y, +Z sekizgeni hücrenin merkezi ile |
| 9 | –X, +Y, +Z sekizgeni hücrenin merkezi ile |
| 10 | –X, –Y, –Z sekizgeni hücrenin merkezi ile |
| 11 | –X, +Y, –Z sekizgeni hücrenin merkezi ile |
| 12 | +X, –Y, –Z sekizgeni hücrenin merkezi ile |
| 13 | +X, +Y, –Z sekizgeni hücrenin merkezi ile |
Bağlantı
Karoların birbirine bağlanması, bir yapı oluşturmak için gereklidir. Karo türünün hücrenin yüzleri/kenarları ile hangi parçalarını temas ettiğini temsil eden bir bitmask kullanabilirsiniz. Bir yapı sistemi karo/nesnesinin bağlantısı, hücrenin yüzeyinde bir dizi bağlantı noktası, bit ile temsil edilir. Bunlar, hücrenin yüzlerinde aşağıdaki gibi düzenlenir:

Bir yapı sistemi nesnesi, ızgarada başka bir yapı sistemi nesnesi ile bağlantılı sayılır, eğer hücrenin yüzeyinde en az 2 bağlantı noktası paylaşıyorlarsa.
Yeni karo türleri oluşturma
Yeni bir karo türü oluşturmak için:
Varlığı ReplicatedStorage/BuildingSystem/Assets içine yerleştirin. Unutmayın ki, yukarıda tanımlanan ObjectType ve StartingRotation çocuklarına sahip olmalıdır.

Yeni karo türünüz için ReplicatedStorage/BuildingSystem/Libraries/Grid/ObjectTypeConfigurations içinde Kapasite ve Bağlantıyı tanımlayın:

Örneğin, Duvar karo türü aşağıdaki gibi ifade edilir:
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}
Arazi ile çalışma
Eğer serbest formda arazi ile, yapı sistemi ile mükemmel uyum sağlayacak bir harita oluşturmak istiyorsanız, Çevresel Arazi altında özetlendiği gibi yükseklik haritası içe aktarma sistemini kullanmanızı öneririz ve aşağıdaki ayrıntılara dikkat etmenizi tavsiye ederiz:
Roblox'taki arazi, her biri dünyada 4×4×4 çakış alanı kaplayan üç boyutlu bir voxel dizisi ile temsil edilir. Bu nedenle, Roblox Battle Royale, 20×16×20 stüd boyutunda bir ızgara hücresi kullanır ve duvar karoları 20×16×1 stüd, zemin/çatı karoları ise 20×1×20 stüd boyutundadır. Bu, yapı karolarının ve arazinin düzgün hizalanmasını sağlar.
Yükseklik haritası görüntünüzdeki her piksel, X/Z düzlemindeki bir arazi voxelini temsil etmelidir; bu nedenle 5×5 piksel alanı, 20×20 stüd alan kaplayan bir yapı sistemi ızgara hücresini temsil eder.
Yükseklik haritanızda, her pikselin kırmızı veya gri kanal değerinin, yapı sistemi ızgara hücenizin yüksekliği ile tam bölünebilir olmasını sağlamalısınız, böylece zemin karoları arazinin üstünde düzgün durur.
Yükseklik haritanızı içe aktardığınızda, aşağıdaki ayarları yapın:
Position (X, Y, Z) = 0, 0, 0Size (X, Y, Z) = heightmap_width × 4, 256, heightmap_length × 4