Roblox में प्रक्रियात्मक डंगियन निर्माण: BSP कमरे, डेलाउने रास्ते और चंक स्ट्रीमिंग

2026-09-29 • DopaBrain Roblox Procedural Architecture Team • DopaBrain Engineering

Featured DopaBrain Interactive Tools

Roblox पर रॉगलाइक और आरपीजी गेम्स के लिए प्रक्रियात्मक जनरेशन मुख्य आधार है। सही एल्गोरिदम के बिना गेम में मेमोरी क्रैश और लैग की समस्या आती है।

कमरे बांटने के लिए BSP, प्राकृतिक रास्तों के लिए Delaunay त्रिकोणीकरण और परफॉर्मेंस के लिए `StreamingEnabled` का उपयोग करके असीमित डंगियन बनाए जा सकते हैं।

1. बाइनरी स्पेस पार्टिशनिंग (BSP) द्वारा कमरों का निर्माण

नक्शे के संतुलित विभाजन के लिए गणितीय विधि:

2. प्राकृतिक गलियारे: डेलाउने त्रिकोणीकरण और MST

कमरों को सुचारू रूप से जोड़ने का तरीका:

3. ग्रिड आधारित गलियारे और टाइल असेंबली

रेखाचित्र को वास्तविक 3D ब्लॉक में बदलना:

ServerScriptService.Dungeon.BSPGenerator
-- बाइनरी स्पेस पार्टिशनिंग (BSP) मॉड्यूल
local BSPNode = {}
BSPNode.__index = BSPNode

function BSPNode.new(x, z, width, depth)
    local self = setmetatable({}, BSPNode)
    self.X, self.Z = x, z
    self.Width, self.Depth = width, depth
    self.LeftChild = nil
    self.RightChild = nil
    self.Room = nil
    return self
end

function BSPNode:Split(minSize)
    if self.LeftChild or self.RightChild then return false end
    local splitHorizontal = math.random() > 0.5
    if self.Width > self.Depth and (self.Width / self.Depth) >= 1.25 then
        splitHorizontal = false
    elseif self.Depth > self.Width and (self.Depth / self.Width) >= 1.25 then
        splitHorizontal = true
    end
    local maxDimension = (splitHorizontal and self.Depth or self.Width) - minSize
    if maxDimension <= minSize then return false end
    local splitPos = math.random(minSize, maxDimension)
    if splitHorizontal then
        self.LeftChild = BSPNode.new(self.X, self.Z, self.Width, splitPos)
        self.RightChild = BSPNode.new(self.X, self.Z + splitPos, self.Width, self.Depth - splitPos)
    else
        self.LeftChild = BSPNode.new(self.X, self.Z, splitPos, self.Depth)
        self.RightChild = BSPNode.new(self.X + splitPos, self.Z, self.Width - splitPos, self.Depth)
    end
    return true
end

return BSPNode

4. मेमोरी प्रबंधन और StreamingEnabled आर्किटेक्चर

कम रैम वाले मोबाइल फोनों पर भी सुचारू संचालन:

5. सीड (Seed) सिंक्रोनाइज़ेशन और सर्वर नियंत्रण

बिना किसी लैग के निष्पक्ष और सुरक्षित गेमप्ले:

Frequently Asked Questions

साधारण यादृच्छिक प्लेसमेंट की तुलना में BSP क्यों बेहतर है?

BSP कमरों को व्यवस्थित तरीके से बांटता है जिससे कमरे आपस में नहीं टकराते और खाली जगह भी नहीं छूटती।

Delaunay और MST का क्या फायदा है?

यह सभी कमरों के बीच सबसे छोटा और प्राकृतिक रास्ता बनाता है जिससे कोई भी कमरा अलग-थलग नहीं रहता।

StreamingEnabled क्यों महत्वपूर्ण है?

यह केवल खिलाड़ी के आस-पास का इलाका लोड करता है, जिससे बड़े नक्शे भी मोबाइल पर आसानी से चलते हैं।

बिना लैग के नक्शा कैसे सिंक करें?

सर्वर और क्लाइंट के बीच एक ही सीड नंबर शेयर करके दोनों जगह बिना डेटा ट्रांसफर के एक जैसा नक्शा बन जाता है।

Explore More Interactive Tests & Guides

Discover personalized cognitive assessments, stress evaluations, and game psychology tools on DopaBrain.

Go to Portal Hub