Outpost 2 फ़ाइल प्रारूप · bei.pm
इस पृष्ठ पर वर्णित फ़ाइल प्रारूप Dynamix, Inc. और Sierra Entertainment के बौद्धिक संपदा के तकनीकी विश्लेषण पर आधारित हैं।
आज बौद्धिक संपदा Activision Publishing, Inc. / Activision Blizzard, Inc. के अधीन है और वर्तमान में Microsoft Corp. के स्वामित्व में है।
जानकारियाँ रिवर्स इंजीनियरिंग और डेटा विश्लेषण के माध्यम से संग्रहित की गई हैं ताकि ऐतिहासिक डेटा के साथ संग्रहण और अंतःक्रियाशीलता सुनिश्चित हो सके।
किसी भी स्वामित्व या गोपनीय विशिष्टताओं का उपयोग नहीं किया गया है।
यह खेल वर्तमान में gog.com पर डाउनलोड के लिए खरीदा जा सकता है।
निम्नलिखित लेख श्रृंखला "आउटपोस्ट 2: डिवाइडेड डेस्टिनी" नामक वास्तविक समय की रणनीति खेल में डेटा प्रारूपों के बारे में मेरी अंतर्दृष्टियों का दस्तावेजीकरण करती है, जिसे 1997 में सिएरा द्वारा जारी किया गया और डायनामिक्स द्वारा विकसित किया गया।
मैंने लगभग 01 नवंबर 2015 से 14 नवंबर 2015 तक खेल के डेटा का विश्लेषण करने पर ध्यान केंद्रित किया - और इसके साथ क्या किया जा सकता है।
अब तक जो जानकारी मैंने प्राप्त की है, उसके अनुसार डायनामिक्स - जैसे कि कई वाणिज्यिक कंपनियाँ - ने कुछ डेटा प्रारूपों को विशेष रूप से आउटपोस्ट 2 के लिए नहीं बनाया, बल्कि अन्य विकासों जैसे कि मेकवारियर्स श्रृंखला में (संशोधित) उपयोग किया।
इससे अलग, यह भी देखा जा सकता है कि डेटा प्रारूपों की नवाचार क्षमता व्यावहारिक रूप से सीमित है और अक्सर सामान्य प्रारूपों जैसे JFIF और RIFF से लंबे समय से स्थापित अवधारणाओं पर आधारित होती है।
तालिकाओं और डेटा प्रारूपों की व्याख्या के लिए और जानकारी क्या है क्या? पर उपलब्ध है।
यहाँ दिए गए डेटा को सामान्यतः लिटिल एंडियन के रूप में समझा जाना चाहिए।
अंत में, यह कहा जा सकता है कि रिवर्स इंजीनियरिंग करना बहुत मजेदार था, भले ही यह पूरी तरह से नहीं है।
बिल्कुल, मैं भी केवल यह सिफारिश कर सकता हूँ कि खेल को स्वयं खेलें, क्योंकि यह दिलचस्प खेल यांत्रिकी प्रदान करता है।
परिचय
Outpost 2 द्वारा उपयोग किए जाने वाले डेटा फ़ॉर्मेट JFIF / PNG की तरह होते हैं - प्रत्येक डेटा ब्लॉक में हमेशा एक 8 बाइट का हेडर होता है। इसलिए मैं इसे छोड़ देता हूँ कि प्रत्येक हेडर को संबंधित विशिष्ट स्थानों पर दस्तावेज़ित करूँ और वहाँ केवल विचलनों को दस्तावेज़ित करता हूँ।
फ़ॉर्मेट हमेशा निम्नलिखित होता है; वास्तविक उपयोग डेटा इसमें निहित होते हैं:
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | यह जानकारी प्रदान करता है कि अगले डेटा ब्लॉक में क्या अपेक्षित है। ज्ञात मान:
|
0x0004 | uint(24) | ब्लॉक-लंबाई | यह जानकारी प्रदान करता है कि निम्नलिखित डेटा ब्लॉक का आकार (बाइट में) कितना है। यहां केवल वास्तविक उपयोगकर्ता डेटा का संदर्भ है - 8 हेडर बाइट इसमें शामिल नहीं हैं। |
0x0007 | uint(8) | झंडे? | यह ज्ञात नहीं है कि यह ब्लॉक किस लिए है। वॉल्यूम में यह मान अक्सर 0x80 होता है, जबकि अन्य फ़ाइलों में यह अक्सर 0x00 होता है। यह सुझाव देता है कि यह एक फ्लैग सेट हो सकता है। |
खंड
वॉल्यूम एक डेटा कंटेनर है जो खेल के लिए होता है, यह एक संग्रह प्रारूप की तरह है जैसे कि टारबॉल। कम से कम आउटपॉस्ट 2 में, यह प्रारूप केवल फ़ाइलों को पहचानता है - कोई फ़ोल्डर नहीं। हालांकि, इन्हें उचित फ़ाइल नामों के माध्यम से अनुकरण किया जा सकता है।
एक वॉल्यूम वॉल्यूम-हेडर और कई वॉल्यूम ब्लॉकों से बना होता है, जो विशिष्ट फ़ाइलों के अनुरूप होते हैं।
"वॉल्यूम" वे फ़ाइलें हैं जिनका विस्तार 'vol'
है खेल निर्देशिका में।
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे |
वॉल्यूम शीर्षक
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे |
वॉल्यूम हेडर में अपनी ओर से कोई उपयोगकर्ता डेटा नहीं होता है।
यह केवल एक कंटेनर के रूप में कार्य करता है।
वॉल्यूम हेडर में पहला डेटा वॉल्यूम स्ट्रिंग्स होना चाहिए; इसके बाद वॉल्यूम की जानकारी आती है।
वॉल्यूम स्ट्रिंग्स
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे |
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे | |
0x0008 | uint(32) | पेलोड-लंबाई | यह बताता है कि निम्नलिखित डेटा में से कितने बाइट वास्तव में उपयोगी डेटा हैं। वॉल्यूम-स्ट्रिंग सूची के बाकी बचे डेटा को स्पष्ट रूप से गंदगी के रूप में माना जाना चाहिए। जिस फ़ाइल की तारीख बाद में है, उसमें ये 'बचे हुए डेटा' 0x00 हैं, जो इस बात का संकेत हो सकता है कि खेल के विकास के दौरान टूलचेन में कुछ कमियाँ थीं, यानी कि एक डेवलपर ने बफर के सही प्रारंभ की ओर बहुत देर से ध्यान दिया, क्योंकि डेटा के प्रारंभित होने या न होने का खेल पर कोई प्रभाव नहीं पड़ता। |
0x000c | uint(8)[] | फाइल नामों की सूची | यह एक 0-बाइट समाप्ति सूची है जिसमें फ़ाइल नाम हैं, जो - कम से कम वर्तमान डेटा घटक में - केवल ASCII अक्षरों की अपेक्षा करते हैं। डेटा को पार्स करते समय इस डेटा ब्लॉक का अधिक गहराई से मूल्यांकन करना आवश्यक नहीं है, क्योंकि वॉल्यूम सूचना में सीधे फ़ाइल नामों के ऑफ़सेट संदर्भित किए जाते हैं। |
वॉल्यूम स्ट्रिंग्स एक सूची है फाइल नामों की, जो वॉल्यूम के भीतर शामिल हैं।
वॉल्यूम जानकारी
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे |
वॉल्यूम जानकारी फाइलों के बारे में अधिक विस्तृत जानकारी प्रदान करती है। यह एक तरह से FAT निर्देशिका प्रविष्टि (FAT = फ़ाइल आवंटन तालिका) के समान है।
फाइलों की संख्या ब्लॉक आकार को निर्देशिका प्रविष्टियों की लंबाई - 14 बाइट से विभाजित करके प्राप्त होती है।
व्यक्तिगत निर्देशिका प्रविष्टियों की संरचना इस प्रकार है:
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | फाइलनाम-ऑफसेट | यह दर्शाता है कि फ़ाइल नाम की सूची (वॉल्यूम-स्ट्रिंग्स) के भीतर फ़ाइल का नाम किस ऑफ़सेट (!) पर स्थित है। यह उपयोग डेटा ब्लॉक की शुरुआत से संबंधित है। |
0x0004 | uint(32) | फ़ाइल-ऑफसेट | यह बताता है कि पूरी वॉल्यूम फ़ाइल के भीतर फ़ाइल किस ऑफ़सेट पर स्थित है। |
0x0008 | uint(32) | फाइल का आकार | यह बताता है कि फ़ाइल का आकार बाइट में कितना है। |
0x000c | uint(16) | झंडे? | यह स्पष्ट रूप से फ़ाइल एन्कोडिंग के बारे में अतिरिक्त जानकारी प्रदान करता है।
|
वॉल्यूम ब्लॉक
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे |
एक वॉल्यूम-ब्लॉक एक कंटेनर है, जो फ़ाइलों को समाहित करता है। इसमें केवल एक बार - ब्लॉक प्रारूप के कारण - फ़ाइल का आकार दोहराया गया है और उसके बाद सीधे उपयोग डेटा आते हैं।
टाइल्स
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | जादुई बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे |
टाइल्स एक Outpost-2-विशिष्ट
Bitmap-ग्राफ़िक प्रारूप हैं। ये 13 टाइलसेट्स में फैले हुए हैं,
जिन्हें "वेल्स" कहा जाता है (well0000.bmp
से well0012.bmp
),
जो maps.vol वॉल्यूम के भीतर स्थित हैं।
इन टाइलसेट्स / वेल्स में निम्नलिखित शामिल हैं:
फाइल नाम | सामग्री |
---|---|
well0000.bmp | एक 32x32px आकार की नीली ग्राफिक - अपने इमेज लोडर के काम करने की जांच के लिए आदर्श |
well0001.bmp | हल्की चट्टान, हल्की चट्टान पर पर्वत श्रृंखलाएँ और हल्की चट्टान में अनगिनत प्रकार के क्रेटर |
well0002.bmp | हल्की चट्टान पर सजावटी तत्व - यानी ऐसे तत्व जो हल्की चट्टान पर सजावट के लिए (या जानबूझकर संरचना के रूप में, जैसे दीवारें) रखे जा सकते हैं, जिसमें वनस्पति भी शामिल है |
well0003.bmp | हल्की चट्टान पर एक परत जैसी संरचना |
well0004.bmp | गहरी चट्टान, गहरी चट्टान पर पर्वत श्रृंखलाएँ और गहरी चट्टान में अनगिनत प्रकार के क्रेटर |
well0005.bmp | गहरी चट्टान पर सजावटी तत्व - यानी ऐसे तत्व जो गहरी चट्टान पर सजावट के लिए (या जानबूझकर संरचना के रूप में, जैसे दीवारें) रखे जा सकते हैं |
well0006.bmp | गहरी चट्टान पर एक परत जैसी संरचना और हल्की और गहरी चट्टान के बीच संक्रमण |
well0007.bmp | लावा सहित 4-5 फ्रेम की एनीमेशन |
well0008.bmp | बालू और बालू में अनगिनत प्रकार के क्रेटर |
well0009.bmp | बालू पर सजावटी तत्व - यानी ऐसे तत्व जो बालू पर सजावट के लिए (या जानबूझकर संरचना के रूप में, जैसे दीवारें) रखे जा सकते हैं |
well0010.bmp | बालू से हल्की और गहरी चट्टान में 48 संक्रमण |
well0011.bmp | मैप के ध्रुवीय टोपी, गहरी चट्टान के तल पर |
well0012.bmp | मैप के ध्रुवीय टोपी, हल्की चट्टान के तल पर |
सटीक कार्यान्वयन के लिए यह उचित है कि टाइल्स को पहले से रेंडर न किया जाए ताकि उन्हें कैश किया जा सके, क्योंकि दिन/रात चक्र के लिए डेटा को अभी भी संसाधित करना होगा - और बहुत सारे डेटा उत्पन्न होंगे।
टाइल्स 32x32 पिक्सल के रिज़ॉल्यूशन के साथ इंडेक्स्ड पैलेट के 8bpp ग्राफ़िक्स हैं, जो एक-दूसरे के ऊपर व्यवस्थित होते हैं। एक ऐसे बने हुए टाइलसेट में हालांकि कहीं अधिक हो सकता है।
मुख्य कंटेनर में 2 सेक्शन होते हैं: head
और data
।
टाइल्स शीर्षक
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | जादुई बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे | |
0x0008 | uint(32) | संस्करण / ध्वज? | यहाँ यह फाइल फॉर्मेट का एक संस्करण संकेत हो सकता है; मेरे पास मौजूद सभी फाइलों में यहाँ मान |
0x000c | uint(32) | चौड़ाई (क्षैतिज रिज़ॉल्यूशन) | यह बताता है कि चित्र फ़ाइल की चौड़ाई कितनी है (पिक्सल में)। Outpost 2 के सभी वेल्स में यहाँ मूल्य |
0x0010 | uint(32) | ऊँचाई (ऊर्ध्वाधर संकल्पना) | यह बताता है कि छवि फ़ाइल की ऊँचाई कितनी है (पिक्सेल में)। Outpost 2 के सभी वेल्स में यहाँ मान |
0x0014 | uint(32) | रंग की गहराई? | इस मान का महत्व अज्ञात है। चूंकि यह सभी जांची गई फ़ाइलों में मान |
0x0018 | uint(32) | फार्बटिफ़े 2? | इस मान का अर्थ अज्ञात है। संभवतः यह एक 'लक्ष्य'-रंग गहराई है। |
इन विवरणों के अनुसार, एक मानकीकृत RIFF प्रारूप में प्रस्तुत पैलेट फ़ाइल भी होगी। सटीक स्पेसिफिकेशन - क्योंकि पैलेट अन्य स्थानों पर भी प्रकट होते हैं - पालेट्स पर उपलब्ध है।
टाइल्स डेटा
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | जादुई बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे |
आखिरकार, कच्चे पिक्सेल डेटा बाएं-ऊपर से पंक्ति दर पंक्ति दाएं-नीचे की ओर हैं।
आम तौर पर 8bpp-बिटमैप के रूप में मौजूद ग्राफिक्स में डेटा मान रंग पैलेट में रंग के अनुक्रमांक के बराबर होता है।
खेल इंजन टाइल्स को *संभवतः* मांग पर चित्रित करता है।
यह दिन-रात के चक्र के कारण प्रतीत होता है, जिसमें 32 अलग-अलग टाइल्स की संरचनाएँ हैं। इस प्रक्रिया में स्पष्ट रूप से प्रत्येक बार ब्राइटनेस वैल्यू से 'थोड़ा' घटाया जाता है। सटीक मान अभी तक निर्धारित नहीं किए जा सके हैं, मैं गणना के आधार पर काम कर रहा हूँ
v *= (daylight / 48) + 0.25;
पिक्सल के HSV डेटा के साथ, जहाँ daylight 0-31 का मान है और v 0-1 के बीच का मान है। इसके अलावा, यह ध्यान में रखना चाहिए कि मानचित्र पर प्रत्येक ओर 16 टाइल्स का एक किनारा होता है (जो इकाइयों के अदृश्य स्पॉनिंग के लिए होता है)।
इसके अतिरिक्त, दिन-रात का चक्र प्रति गेम साइकिल केवल मानचित्र का एक कॉलम अपडेट करता प्रतीत होता है।
एक तेज़ दिन-रात चक्र इस प्रकार दिखता है:
पीआरटी
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | पैलेट की लंबाई | सामान्य ब्लॉक प्रारूप के विपरीत, इस फ़ाइल में मिलने वाले पैलेट की संख्या को दर्शाता है - न कि ब्लॉक की लंबाई बाइट में। |
0x0007 | uint(8) | झंडे | संभवतः, जैसे कि आमतौर पर, ध्वज। हालांकि, मुझे कोई ध्वज ज्ञात नहीं हैं; क्योंकि मेरे द्वारा ज्ञात सभी मान |
PRT
का अर्थ मुझे ठीक से पता नहीं है; लेकिन यह संभव है कि इसका मतलब 'Palette and Resource Table' हो - क्योंकि यह फ़ाइल op2_art.prt के रूप में maps.vol में पाई जाती है, जो कि ऐसी ही एक फ़ाइल है, या यह कार्यक्षमता को काफी अच्छी तरह से वर्णित कर सकती है।
यह फ़ाइल एक पैलेट की सूची, सभी उपयोग की गई बिटमैप्स की तालिका, सभी एनीमेशन परिभाषाएँ और कुछ अज्ञात डेटा शामिल करती है। यह अब तक के कंटेनर प्रारूप का कुछ हद तक पालन करती है, क्योंकि सभी रिकॉर्ड इस स्कीमा का पालन नहीं करते हैं।
CPAL
सेक्शन (शायद पैलेट कंटेनर के लिए) केवल पैलेट डेटा को घेरता है, यह बताते हुए कि प्रत्येक सामान्यतः 1052 बाइट आकार के 8-बिट पैलेट्स में से कितने मौजूद हैं।
1052-बाइट का यह उल्लेख अनिवार्य नहीं माना जाता है, क्योंकि पैलेट प्रारूप संभावित रूप से विभिन्न पैलेट आकारों का समर्थन कर सकता है। यह केवल उन डेटा सेट के लिए मान्य है, जिनके साथ आउटपॉस्ट 2 वितरित किया जाता है।
पैलेट की सूचियों के बाद तुरंत और बिना किसी प्रारंभिक शीर्षक के, पहले से ही बिटमैप्स की सूची आती है; इसके तुरंत बाद एनीमेशन सूचियाँ आती हैं।
दोनों को क्रमशः एक uint(32) (या फिर uint24+uint8 फ्लैग?) के साथ शुरू किया जाता है, जो रिकॉर्ड की संख्या को दर्शाता है।
पालेट्स
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | पैलेट की लंबाई | सामान्य ब्लॉक प्रारूप के विपरीत, इस फ़ाइल में मिलने वाली पैलेटों की संख्या को दर्शाता है - न कि ब्लॉक की लंबाई बाइट में। |
0x0007 | uint(8) | झंडे | संभवतः, जैसे कि सामान्यतः, फ्लैग्स। हालांकि, मुझे कोई फ्लैग्स ज्ञात नहीं हैं; चूंकि सभी ज्ञात मान |
पैलेट जानकारी को पढ़ना बहुत आसान है।
यह प्रत्येक एक हेडर और एक डेटा खंड से मिलकर बनी होती है।
पैलेट शीर्षक
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | पैलेट की लंबाई | सामान्य ब्लॉक प्रारूप के विपरीत, इस फ़ाइल में मिलने वाली पैलेटों की संख्या को दर्शाता है - न कि ब्लॉक की लंबाई बाइट में। |
0x0007 | uint(8) | झंडे | संभवतः, जैसे कि सामान्यतः, फ्लैग्स। हालांकि, मुझे कोई फ्लैग्स ज्ञात नहीं हैं; चूंकि सभी ज्ञात मान |
0x0008 | uint(32) | पैलेट फॉर्मेट संस्करण? | संभवतः परिभाषित करता है कि कौन सा पैलेट फ़ॉर्मेट संस्करण पैलेट का पालन करता है। सभी Outpost2 पैलेट में संस्करण |
पैलेट डेटा
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | मैजिक बाइट्स | |
0x0004 | uint(24) | ब्लॉक-लंबाई | |
0x0007 | uint(8) | झंडे |
डेटा अनुभाग में प्रत्येक पैलेट प्रविष्टियाँ शामिल होती हैं। पैलेट प्रविष्टियों की संख्या ब्लॉक की लंबाई / 4 से प्राप्त होती है।
प्रत्येक प्रविष्टि का एक साधारण ढांचा होता है;
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(8) | लाल-घटक | रंग में लाल भाग का संकेत देता है |
0x0001 | uint(8) | हरा घटक | रंग में हरे भाग का अनुपात बताता है |
0x0002 | uint(8) | नीला घटक | रंग में नीला हिस्सा दर्शाता है |
0x0003 | uint(8) | अनजान - झंडे? | यह स्पष्ट नहीं है कि इस मान का क्या अर्थ है, क्योंकि यह मूल रूप से |
पैलेट के बारे में केवल इतना कहना है कि एनिमेशन के लिए उपयोग की जाने वाली पैलेट के लिए निम्नलिखित नियम लागू होते हैं:
- पहला रंग हमेशा पारदर्शी होता है, चाहे वहां कोई भी मान दिया गया हो।
-
पैलेट के प्रविष्टियाँ 1-24 को पैलेट 1-8 में खिलाड़ी के रंग के रूप में माना जाता है।
खिलाड़ी 1 के अलावा अन्य रंग कहाँ से आते हैं, यह मेरे लिए स्पष्ट नहीं है।
मैं अनुमान लगाता हूँ कि बाकी रंग हार्डकोडेड हैं।
बिटमैप्स
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | संरेखित चौड़ाई | पिक्सेल डेटा पंक्तियों की चौड़ाई को बाइट में दर्शाता है - क्योंकि ये 4-बाइट सीमाओं के अनुसार संरेखित होते हैं। इसलिए किसी विशेष छवि पंक्ति पर कूदना तेजी से संभव है। यह मूल्य अलग से क्यों संग्रहीत किया जाता है, जबकि इसे गणना की जा सकती है, यह स्पष्ट नहीं है। |
0x0004 | uint(32) | ऑफसेट | पहली पंक्ति का ऑफसेट बिटमैप में दर्शाता है |
0x0008 | uint(32) | ऊँचाई | छवि की ऊंचाई पिक्सेल में बताएं |
0x000c | uint(32) | चौड़ाई | छवि की चौड़ाई पिक्सेल में बताता है |
0x0010 | uint(16) | टाइप | यह चित्र के प्रकार को दर्शाता है। इसमें प्रतीत होता है कि यह एक बिटमास्क है:
|
0x0012 | uint(16) | पैलेट | निर्धारित करें कि PRT फ़ाइल से कौन सा पैलेट उपयोग किया जाना चाहिए |
PRT फ़ाइल की यह डेटा संरचना इस बात को दर्शाती है कि स्प्राइट्स के लिए उपयोग की जाने वाली बिटमैप्स कैसे बनाई गई हैं। ये बिटमैप्स एकल तत्व के रूप में कार्य करती हैं, जिनमें से कई को एक स्प्राइट के एनिमेशन फ्रेम में एक साथ जोड़ा जाता है।
वास्तविक चित्र डेटा खेल निर्देशिका मेंop2_art.BMP में छिपा हुआ है।
यह स्पष्ट नहीं है कि यह बिटमैप फ़ाइल एक (मुख्यतः सही) RIFF-बिटमैप हेडर क्यों रखती है। संभवतः आउटपॉस्ट 2 ग्राफिक्स को लोड करने के लिए सिस्टम-API का उपयोग करता है, इस हेडर को अस्थायी रूप से ग्रहण करके और संबंधित, भिन्न फ़ील्ड को अधिलेखित करके।
BMP फ़ाइल में पिक्सल डेटा उस स्थान पर पाया जा सकता है जहाँ ओफ़सेट + uint32-ओफ़सेट है, जो BMP फ़ाइल में पते 0x000A (RIFF-बिटमैप डेटा ओफ़सेट) पर स्थित है - और यह फिर से बाईं ओर से दाईं ओर नीचे की ओर पंक्तिबद्ध है।
मोनोक्रोम 1bpp ग्राफिक्स को इस प्रकार बनाया जा सकता है कि रंग 0 पूर्ण पारदर्शिता है, और रंग 1 एक अर्ध-पारदर्शी काला/ग्रे है, क्योंकि मोनोक्रोम ग्राफिक्स आमतौर पर एनिमेशन में वाहन और भवन की छायाएँ बनाने के लिए उपयोग की जाती हैं।
इससे पहले से ही कई ग्राफिक्स को जोड़ा जा सकता है।
एनिमेशन
अब हम आउटपोस्ट 2 डेटा फॉर्मेट्स के भीतर की विधाओं के शिखर वर्ग पर आते हैं:
एनिमेशन।
एनिमेशन सूचियों की शुरुआत एक वैश्विक हेडर के साथ होती है, जो मुख्य रूप से डेटा सत्यापन के लिए होती है। इसके बाद विशिष्ट एनिमेशन परिभाषाएँ आती हैं, जो 3 स्तरों में विभाजित होती हैं:
-
एनिमेशन
एनिमेशन सबसे ऊपरी स्तर है; यह एक इकाई, एक भवन या 'पार्टिकल-एनिमेशन' (धूमकेतु की टक्कर, मौसम, विस्फोट) की एक एनिमेशन को एक विशेष प्रारंभिक स्थिति में दर्शाता है। -
फ्रेम
एक फ्रेम एनिमेशन के भीतर एक एकल चित्र होता है। एक एनिमेशन में एक या अधिक फ्रेम हो सकते हैं। -
सबफ्रेम
एक सबफ्रेम यह जानकारी है कि एक निश्चित बिटमैप को कुछ मानदंडों के तहत एक फ्रेम की एक निश्चित स्थिति पर चित्रित किया जाना चाहिए। एक फ्रेम में एक या अधिक सबफ्रेम हो सकते हैं।
इसके बाद सीधे एनिमेशन परिभाषाओं का उल्लेख किया जाता है।
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | एनिमेशन की संख्या | कितने एनीमेशन डेटा रिकॉर्ड हैं |
0x0004 | uint(32) | फ्रेम की संख्या | कुल मिलाकर कितने फ्रेम होने चाहिए |
0x0008 | uint(32) | उपफ्रेमों की संख्या | कितने कुल सबफ्रेम्स होने चाहिए |
0x000c | uint(32) | वैकल्पिक प्रविष्टियों की संख्या | कितने "वैकल्पिक प्रविष्टियाँ" मौजूद हैं। |
एनिमेशन
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(32) | अज्ञात 1 | अज्ञात जानकारी |
0x0004 | uint(32) | बाउंडिंग बॉक्स: बाईं ओर | बाएँ प्रारंभ (पिक्सेल में) बाउंडिंग बॉक्स का निर्दिष्ट करता है। |
0x0008 | uint(32) | बाउंडिंग बॉक्स: ऊपर | ऊपर की शुरुआत (पिक्सल में) बाउंडिंग बॉक्स को दर्शाती है। |
0x000c | uint(32) | बाउंडिंग बॉक्स: चौड़ाई | यह बाउंडिंग बॉक्स की चौड़ाई (पिक्सेल में) को दर्शाता है। |
0x0010 | uint(32) | बाउंडिंग बॉक्स: ऊँचाई | यह बाउंडिंग बॉक्स की ऊँचाई (पिक्सल में) बताता है। |
0x0014 | uint(32) | ऑफसेट: X | एनिमेशन का क्षैतिज मध्य बिंदु दर्शाता है |
0x0018 | uint(32) | ऑफसेट: Y | एनिमेशन का ऊर्ध्वाधर केंद्र बताता है |
0x001c | uint(32) | अज्ञात 2 | अज्ञात जानकारी |
0x0020 | uint(32) | फ्रेम की संख्या | यह बताता है कि इस एनीमेशन में कितने एनीमेशन फ्रेम शामिल हैं |
0x0024 | uint(32) | खिड़कियों की संख्या | यह बताता है कि चित्रण करते समय कितने विंडो का उपयोग करना है |
ऊपर की परत के डेटा, जो कि एनीमेशन से संबंधित हैं, मुख्य रूप से प्रशासनिक डेटा हैं - Boundingbox उस चिह्न के चारों ओर के समन्वय को दर्शाता है जो वाहन/भवन के लिए है, जब इसे चुना गया है और यह भी बताता है कि कौन सा क्षेत्र क्लिक करने योग्य होना चाहिए।
ऑफसेट मुख्य रूप से "शून्य बिंदु" को निर्धारित करता है; वह बिंदु जो खेल के अंदर के समन्वयों में जोड़ने या घटाने के लिए है। इसे गणितीय रूप से भी कहा जा सकता है: इस संदर्भ में, ऑफसेट समन्वय का मूल बिंदु है।
विंडोज़ भी, ठीक वैसे ही जैसे कि ऑफसेट, प्रत्येक (प्रति विंडो) 4 uint(32)-मान हैं, जो एक क्षेत्र को निर्दिष्ट करते हैं, जो कि अलग-अलग सबफ्रेम के लिए उपयोगी माना जाता है। विंडोज़ के बाहर, यदि यह बिटमैप के लिए उपयुक्त है, तो नहीं बनाया जाना चाहिए।
फ्रेम
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(8) | सबफ्रेम की संख्या और वैकल्पिक 1, 2 के लिए टॉगल | इस मान में शामिल हैं:
|
0x0001 | uint(8) | अनजान 1 और वैकल्पिक 3, 4 के लिए टॉगल | इस मान में शामिल हैं:
|
0x0002 | uint(8) | वैकल्पिक 1 | अज्ञात |
0x0003 | uint(8) | वैकल्पिक 2 | अज्ञात |
0x0004 | uint(8) | वैकल्पिक 3 | अज्ञात |
0x0005 | uint(8) | वैकल्पिक 4 | अज्ञात |
सबफ्रेम
ऐड्र | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | कैरेक्टर | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ऑफसेट | डेटा प्रकार | नाम | व्याख्या |
---|---|---|---|
0x0000 | uint(16) | Bitmap-आईडी | यह बताता है कि इस सबफ्रेम के लिए कौन सा बिटमैप उपयोग किया जाना चाहिए |
0x0002 | uint(8) | अज्ञात 1 | यह अज्ञात है - हालांकि मुझे इस बात का मजबूत संदेह है कि यह एक रेंडर प्राथमिकता (जेड-लेयर) हो सकता है। |
0x0003 | uint(8) | सबफ्रेम-आईडी | यह बताता है कि हम किस सबफ़्रेम में हैं |
0x0004 | sint(16) | ऑफसेट - क्षैतिज | यह बताता है कि फ्रेम के भीतर उपफ्रेम कहाँ रखा जाना चाहिए, या बिटमैप को क्षैतिज रूप से कितने पिक्सल स्थानांतरित किया जाना चाहिए |
0x0006 | sint(16) | ऑफसेट - वर्टिकल | यह बताता है कि फ्रेम के भीतर सबफ्रेम कहाँ रखा जाना चाहिए, या बिटमैप को कितने पिक्सल ऊर्ध्वाधर रूप से स्थानांतरित किया जाना चाहिए। |
इससे हम अब व्यक्तिगत फ्रेम और संपूर्ण एनिमेशन को मिलाकर बना सकते हैं, यहाँ एक जटिल एनिमेशन, इंडेक्स 500 के एनिमेशन के उदाहरण के रूप में प्रदर्शित किया गया है।
एनिमेशन 500
एनिमेशन 500 दिखाता है कि एक Plymouth-ट्रांसपोर्टर, जो सामान्य खनिजों से भरा हुआ है, कैसे उतारा जाता है। यह उन कुछ एनिमेशनों में से एक है जो विंडोइंग कार्यक्षमता का उपयोग करती है।
इस प्रकार पूरी एनिमेशन को जोड़ा जा सकता है।
दुर्भाग्यवश, ऊपरी लोडिंग हैच के साथ अभी भी एक समस्या है, क्योंकि यहाँ ग्राफ़िक प्रकार की जानकारी में उपयुक्त बिट सेट नहीं किया गया है।
यहाँ खेल से कुछ और, सुंदर एनिमेटेड स्प्राइट्स हैं:
उपयोगकर्ता इंटरफेस
अब खेल का उपयोगकर्ता इंटरफ़ेस बाकी है, जो एक ब्रश किए हुए धातु लुक में है।
लेकिन यहाँ भी यह स्पष्ट है कि Dynamix को पहिया फिर से नहीं बनाना पड़ा; यहाँ केवल Windows द्वारा प्रदान की गई User32 और GDI32 एपीआई का उपयोग नहीं किया गया है - विशेष रूप से User32 के संसाधन प्रबंधन का भी उपयोग किया गया है।
उन्हें उदाहरण के लिए Angus Johnson द्वारा फ्रीवेयर के रूप में विकसित Resource Hacker जैसे कार्यक्रमों के माध्यम से निकाला जा सकता है, या - यदि आप Linux / Mac OS पर Wine का उपयोग नहीं करना चाहते हैं - तो icoutils में शामिल wrestool की मदद से।
फ़ाइल का नाम | सामग्री |
---|---|
Outpost2.exe | केवल खेल का आइकन शामिल है, जो New Terra के सामने स्थित अंतरिक्ष स्टेशन को दर्शाता है |
op2shres.dll | बॉर्डर, बटन, रेडियो बटन और चेकबॉक्स जैसे नियंत्रणों के लिए ग्राफ़िक्स के साथ-साथ संवाद पृष्ठभूमियाँ, कहानी मिशन पाठों के लिए सहायक चित्र और मुख्य मेनू की पृष्ठभूमि ग्राफ़िक्स शामिल हैं |
out2res.dll | इन-गेम विंडो सजावट, सामान्य और विशेष धातु के लिए आइकन, लोडिंग स्क्रीन, संवादों के लिए ग्राफ़िक्स और अन्य कर्सर ग्राफ़िक्स शामिल हैं, खेल निर्देशिका में एनिमेटेड के अतिरिक्त |