2011-05-26 18 views
5

मैं इंजन 1 के नाम से वेब के लिए एक नया गेम इंजन बना रहा हूं। मैंने वर्तमान में दो प्रोटोटाइप तैयार किए हैं। अब तक मैं सक्षम हूं:क्या मुझे अपने जावास्क्रिप्ट गेम इंजन में एक छाया डोम के रूप में एक डोम खंड का उपयोग करना चाहिए?

  1. कैनवास का उपयोग करके sprites के पारदर्शी पिक्सल मानचित्र करें।
  2. स्पिइट्स के अपारदर्शी पिक्सेल में ईवेंट को बाध्य करें।
  3. एक सेट एफपीएस के साथ एक गेम रनटाइम विकसित करें।
  4. परिवर्तनीय फ्रेम समय पर एनिमेट sprites।
  5. चेतन तत्व आंदोलन, प्रसिद्धि
  6. और फ्रेम आधारित गति ट्वीन साथ द्वारा दोनों
    1. फ्रेम

मैं अपने प्रगति के साथ खुश हूँ, लेकिन मैं बिना आगे बढ़ने के साथ असहज होने लगते हैं डोम प्रदर्शन में एक विशेषज्ञ से परामर्श।

वर्तमान में जब कोई तत्व बनाया जाता है, तो इसे एक डोम खंड में जोड़ा जाता है जिसे मैं "छाया डोम" कहता हूं। इस फ्रेम "छाया डोम" एचटीएमएल की प्रतिलिपि बनाई गई है और पृष्ठ के शरीर (या वर्तमान दृश्य पोर्ट) में डाली गई है।

मैंने इसे इस तरह से सेट कर दिया है क्योंकि मैं ब्राउज़र के एक पुन: प्रवाह में पृष्ठ पर सबकुछ जोड़ सकता हूं।

मेरी चिंता यह है कि प्राप्त किए गए प्रदर्शन को ब्राउज़र की सामग्री को फिर से चलाने की आवश्यकता से ऑफसेट किया जाएगा, भले ही पृष्ठ के केवल कुछ हिस्सों को बदल दिया जाए।

इसके अलावा, ईवेंट बाध्यकारी अधिक जटिल हो जाता है।

कोई विचार?

क्या मुझे "छाया डोम" का उपयोग करना चाहिए?

क्या बड़ी संख्या में तत्व प्रस्तुत करने का कोई बेहतर तरीका है?

क्या ब्राउज़र बॉडी में "छाया डोम" से मतभेदों की प्रतिलिपि बनाने का कोई तरीका है?

+0

यह छाया डोम तकनीक मुझे डबल बफरिंग की याद दिलाती है। क्या यही है? – Spidey

+0

हां, लगता है कि डबल बफरिंग सही शब्द है। –

+2

आपको शायद यह पता होना चाहिए कि सवाल पूछने के बाद से छाया डोम एक वास्तविक चीज़ में बदल गया है: https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html। भविष्य के पाठकों को सलाह दी जानी चाहिए कि यह प्रश्न इस विशिष्टता से संबंधित नहीं है। –

उत्तर

0

डीओएम के बड़े हिस्से को बदलना महंगा हो सकता है। आम तौर पर डीओएम होता है जहां बाधाएं होती हैं। डीओएम के कौन से हिस्सों को आप संशोधित और अद्यतन कर रहे हैं, इसका ट्रैक रखना बेहतर होगा। आप या तो एक अलग डेटा संरचना में ऐसा कर सकते हैं जिसे आप अद्यतन करते समय डोम में बदलते हैं, या आपके जैसे छाया डोम का उपयोग करते हैं। यदि परिवर्तन व्यक्तिगत रूप से बड़े होते हैं तो छाया डीओएम का उपयोग करना एक अच्छा विचार हो सकता है। यदि वे छोटे हैं (जैसे कि पाठ मानों को अपडेट करना) तो यह एक अलग प्रकार की डेटा संरचना का उपयोग करने के लिए और अधिक समझदारी होगी।

किसी भी मामले में आपको परिवर्तनों का ट्रैक रखने के लिए किसी तीसरे ऑब्जेक्ट की आवश्यकता होती है।

मैंने बहुत समय पहले Cactus Templates लिखा था। आप इसे एक डोमेन ऑब्जेक्ट के साथ एक डोम स्ट्रक्चर को बाध्य करने के लिए उपयोग करते हैं जो अपडेट को किसी भी तरफ से दूसरे तरफ फैलता है। यह स्वचालित रूप से निर्दिष्ट स्थानों पर ईवेंट को जोड़ता है (डोमेन में प्रमुख मान पथ और डीओएम में एचटीएमएल वर्ग के नाम)। यह वही हो सकता है जो आप खोज रहे हैं लेकिन शायद आप इससे कुछ विचार प्राप्त कर सकते हैं।

+0

सहायक, सलाह। धन्यवाद। मैं अपना परिदृश्य हूं, मुझे गेम डेवलपर्स को फ्रेम आधार पर फ्रेम पर बनाए गए तत्वों का कम से कम 80% एनिमेट करने की उम्मीद करनी है। मुझे लगता है कि मुझे "सबकुछ बदलना" विधि से चिपकना चाहिए। –

संबंधित मुद्दे