Minecraft एक ऐसा खेल है जो काफी हद तक एक ऊंचाई पर आधारित है और दुनिया को रोशनी से भर देने के लिए उस हीगेटमैप की जानकारी का उपयोग करता है। मेरी समझ से ऊंचाई में उच्चतम बिंदु सूरज की रोशनी से प्रभावित क्षेत्र का अंत है। ऊपर की सब कुछ जो सूरज की रोशनी से जलाया जाता है, उसके नीचे सब कुछ बस 8 ब्लॉकों के त्रिज्या में पास के प्रकाश से प्रभावित होता है।
इस प्रकार यदि आपके पास अपनी दुनिया के शीर्ष पर एक तैरता द्वीप है, तो नीचे दी गई हर चीज को एक गुफा के रूप में देखा जाएगा। जब दो रोशनी एक ही बिंदु को प्रभावित करती हैं तो उज्जवल प्रकाश जीतता है (उस बारे में अनिश्चित)।
किसी भी तरह से मिनीक्राफ्ट प्रकाश मॉडल के साथ कुछ समस्याएं हैं: सबसे पहले, यदि आपकी दुनिया में एक ऊंचाई नहीं है, तो यह पता लगाने के लिए मुश्किल हो जाता है कि वास्तव में सूर्य के प्रकाश का उत्सर्जन करना क्या है और क्या नहीं। एक सरल तरीका यह माना जाएगा कि दुनिया (मेरे मामले में) एक तैरती चट्टान है और फिर दोनों दिशाओं से प्रत्येक धुरी को पार करती है और यह पता लगाती है कि चट्टान कहाँ शुरू होती है और समाप्त होती है। लेकिन यह पूरी तरह से समस्या को खत्म नहीं करता है क्योंकि चट्टान में डेंट अंधेरे में नहीं माना जाता है।
Minecraft खुद एक खंड की सामग्री के बारे में जानकारी के साथ प्रकाश जानकारी को अपने विखंडू में कैश करेगा। इस प्रकार केवल अगर दुनिया को संशोधित किया जाता है तो प्रकाश को अद्यतन करना होगा। दुर्भाग्य से यह प्रक्रिया अभी भी अपडेट पर बहुत धीमी है और त्वरित प्रकाश परिवर्तनों पर एक प्रकाश पीछे रह सकता है। यह विशेष रूप से सच है अगर बहुत सारे ब्लॉक बदलते हैं (टीएनटी, सूर्यास्त आदि) और आप सबसे तेज कंप्यूटर नहीं चला रहे हैं (या मैक पर जावा)।
3 डी ग्राफिक्स की मेरी अभी भी सीमित समझ से दुनिया भर में मिनीक्राफ्ट की तरह प्रकाश करना सबसे बड़ा मुद्दा नहीं होना चाहिए। आप समस्या से कैसे निपटेंगे?
मुझे लगता है कि एक voxel दुनिया में प्रकाश व्यवस्था के लिए बुनियादी आवश्यकताएं होंगी
- तेजी से अपडेट करें कि यह एक फ्रेम में हो सकता है। एक ग्राफिक्स डिवाइस में प्रकाश व्यवस्था करने में सक्षम हो सकता है और परिवर्तित प्रकाश जानकारी को मुख्य रैम पर डाउनलोड कर सकता है।
- मुख्य खेल तर्क के लिए प्रकाश की जानकारी जल्दी से उपलब्ध होनी चाहिए ताकि पूरी तरह से ग्राफिक्स डिवाइस पर आधारित न हो: तर्क: प्रकाश घास के विकास को प्रभावित करता है, राक्षसों की स्पॉनिंग आदि।
- लाइट अपडेट को एक स्थान पर स्थानीय होना चाहिए या कुछ अन्य सीमाएं होनी चाहिए ताकि किसी को पूरी दुनिया को न छुड़ाना पड़े जो आकार में बहुत बड़ा हो।
मुख्य विचार यह होगा कि प्रकाश अपडेट तेजी से किए जाएं, जरूरी नहीं कि यह अधिक सुंदर हो। सामान्य प्रकाश प्रतिपादन प्रदर्शन में सुधार के लिए एक SSAO को आसानी से जोड़ा जा सकता है जिसके परिणामस्वरूप बहुत अच्छे संसार बनने चाहिए।