के बारे में
ये वास्तव में एक में दो प्रश्न हैं। सबसे पहले मैं बड़ी मात्रा में टाइल डेटा को कुशलतापूर्वक संग्रहीत करने का एक तरीका ढूंढ रहा हूं। अन्य पहलू डेटा सेट की क्वेरी करने और टाइल्स प्रदर्शित करने से संबंधित है। पहले आपको कुछ बैकग्राउंड देता हूं।
हम एक ब्राउज़र आधारित मल्टीप्लेयर टाइकून खेल बना रहे हैं जो कैनवस को प्रस्तुत करने के लिए CraftyJS लाइब्रेरी का उपयोग कर रहा है। GUI की पृष्ठभूमि में हम PHP पर Yii फ्रेमवर्क चला रहे हैं और यह सभी पायथन रैंडम मैप जनरेटर और गेम इंजन से जुड़ता है।
यह पहला रफ़ मैप रेंडर कैसा दिखता है: http://i.imgur.com/khAXtl.png
मानचित्र डेटा संग्रहीत करना
खेल शुरू होने पर हर बार खेल की दुनिया बेतरतीब ढंग से उत्पन्न होती है। प्रत्येक खिलाड़ी के लिए आकार 100x100 हेक्सागोनल टाइल्स है। इसका मतलब है कि तीन खिलाड़ी खेल के लिए, 90.000 टाइल बनाई गई हैं। वर्तमान में मैं सिर्फ एक जावास्क्रिप्ट सरणी बनाता हूं जिससे मैं मानचित्र प्रस्तुत करता हूं।
यह प्रतिपादन के लिए ठीक काम करता है, लेकिन नक्शे के साथ किसी भी तरह की बातचीत के लिए हमें उस खिलाड़ी को संग्रहीत करने की आवश्यकता होती है जो टाइल का मालिक है, इसके शीर्ष पर किस तरह की संरचना का निर्माण होता है, यह वर्तमान कीमत और इतने पर क्या है। सबसे पहले, कम से कम प्रोटोटाइप के लिए, हम MySQL का उपयोग करना चाहते थे, लेकिन कुछ परीक्षण के बाद, यह उतना तेज़ नहीं है जितना मैं चाहता हूं। हो सकता है कि MongoDB जैसी ऑब्जेक्ट स्टोर SQL SQL टेबल के बजाय टाइल डेटा को स्टोर करने के लिए बेहतर अनुकूल हो। या शायद कुछ और?
नक्शा प्रदर्शित करना
एक और समस्या जो मुझे दिख रही है वह है मानचित्र के आसपास घूमना। वर्तमान में मैं प्रत्येक टाइल के लिए चालाक इकाइयां बना रहा हूं, भले ही यह व्यूपोर्ट में न हो। यह धीमा है, क्योंकि भले ही Crafty व्यूपोर्ट में केवल रेंडर करता है, यह स्टोर करता है और संभवतः प्रत्येक रेंडर इवेंट पर सभी टाइलों के माध्यम से पुनरावृत्त करता है। वर्तमान में मेरे पास एक खींचा हुआ जेनरेट किया गया नक्शा है, जो जब आप घूमते हैं तो लोड करने और रुकने में बहुत धीमा होता है, अब मैं इसे खेलने योग्य बनाना चाहूंगा।
मेरा पहला विचार उन टाइलों के प्रदर्शित सबसेट को लोड करना था जो व्यूपोर्ट में हैं। लेकिन जब कोई खिलाड़ी व्यूपोर्ट को एक खाली क्षेत्र में ले जाएगा, तो मुझे सर्वर को क्वेरी करने और प्रतिक्रिया की प्रतीक्षा करने की आवश्यकता होगी, तभी मानचित्र प्रस्तुत किया जा सकता है। यह एक देशी एप्लिकेशन में ठीक होगा, लेकिन यह एक वेब गेम में पिछड़ गया है।
नक्शे से निर्बाध प्रदर्शन प्राप्त करने का तरीका एक बड़ी मात्रा में टाइलों को एक जावास्क्रिप्ट सरणी में प्रीलोड करना और कैश के रूप में उपयोग करना हो सकता है। खिलाड़ी के पास कुछ स्क्रीन "कैश्ड" होती हैं और जब वह व्यूपोर्ट ले जाता है, तो मैं JS "कैश" पर अधिक टाइल लोड करूँगा।
क्या मैं सही दिशा में चल रहा हूं? मैं किसी ऐसे व्यक्ति से कुछ और जानकारी प्राप्त करना पसंद करूँगा जिसने कुछ ऐसा ही किया है। मैं खेल विकास के लिए नया हूं, लेकिन पिछले कुछ हफ्तों से बहुत सारे स्रोतों से गुजर रहा हूं।