Amiga पर animation "woosh" स्क्रीन कोडिंग
(dansalva.to)Amiga पर animation "woosh" स्क्रीन कोड करना
- 1985 में लॉन्च के समय Amiga ने ग्राफिक्स और साउंड के मामले में अद्भुत अनुभव दिया।
- Amiga पर रंगीन इमेज दिखाना सरल है, लेकिन game engine के संदर्भ में इसमें कई चुनौतियाँ हैं।
चुनौती 1: RAM आवश्यकताएँ
- एक सामान्य Amiga 500 में 512KB "chip RAM" और 512KB expansion RAM होता है।
- केवल chip RAM का उपयोग ग्राफिक्स और साउंड दिखाने के लिए किया जा सकता है, इसलिए इसकी कीमत अधिक है।
- फुल-स्क्रीन character graphics (CG) 320x240 bitmap है जो 32 रंगों का उपयोग करता है, और uncompressed स्थिति में 48KB RAM लेता है।
- asset compression को सपोर्ट करने के लिए ZX0 compression format जोड़ा गया, जिससे CG compress होकर 8KB रह गया और इसे रखना संभव हो गया।
- level assets लोड होते समय compressed CG को expansion RAM में लोड किया जाता है, और display से ठीक पहले chip RAM में decompress किया जाता है।
- 48KB chip RAM अलग से खोजने के बजाय, screen memory के अन्य हिस्सों का पुन: उपयोग किया जाता है।
चुनौती 2: "screen split" प्रभाव
- शुरुआत में screen transition के लिए vertical wipe पर विचार किया गया।
- लेकिन उसे अच्छा दिखाने के लिए एक gradient wipe चाहिए था, जिसमें हर scanline पर color palette को समायोजित करना पड़ता।
- screen split effect को implement करना आसान है और सामान्य दर्शक को यह ज्यादा शानदार लगता है।
- Amiga की दो विशेष क्षमताएँ मिलकर इस effect को संभव बनाती हैं:
- coprocessor (copper) CPU के साथ parallel में काम करता है और उसे इस तरह निर्देशित किया जा सकता है कि वह screen की खास lines पर hardware registers बदले।
- hardware registers में screen pointers सेट करके screen memory को chip RAM के किसी भी हिस्से पर बदला जा सकता है।
चुनौती 3: "motion lines"
- animation effect को पूरा करने के लिए background में "woosh" करती lines चाहिए।
- lines खींचने के लिए sprites का उपयोग अच्छा विकल्प है, क्योंकि वे screen memory से स्वतंत्र रूप से draw और move किए जा सकते हैं।
- Amiga sprites बहुत सीमित और जटिल हैं।
sprite colors
- sprites bitplanes और color palette साझा करते हैं, इसलिए संभव हो तो कम से कम colors का उपयोग करना चाहिए।
- sprites केवल 3 colors का उपयोग करते हैं, जिससे CG के लिए 28 colors और background के लिए 1 color बचता है।
- अलग-अलग sprites palette में अलग colors का उपयोग करते हैं।
sprite graphics का पुन: उपयोग
- sprite graphics के पहले 4 bytes "control bits" होते हैं, जो sprite की position और height बताते हैं।
- जब एक ही graphics को कई positions पर draw करना हो, तो यह समस्या बन जाती है।
- इसके बजाय 8 fake sprites बनाए गए, जिनमें केवल control bits हैं, और sprite pointers को इन fake sprites पर सेट किया गया।
bitplanes बंद होने पर sprites draw नहीं होते
- CG के screen के शीर्ष तक पहुँचने से पहले, screen top और CG start के बीच काफी खाली जगह होती है।
- इस दौरान अगर bitplanes active रहें, तो screen पर garbage data draw हो जाता है।
- bitplanes को disable करने पर sprites भी draw नहीं होते।
- इसका समाधान है केवल 1 bitplane को active रखना और screen pointers को खाली data पर सेट करना।
निष्कर्ष
- शुरुआत में RAM आवश्यकताओं की वजह से यह निश्चित नहीं था कि game में CG शामिल किया जाए या नहीं।
- data compression लागू होने से यह साबित हुआ कि overhead काफी व्यावहारिक है।
- Amiga hardware की अनोखी विशेषताओं का उपयोग करना खास तौर पर दिलचस्प है।
GN⁺ की राय:
- यह लेख Amiga कंप्यूटर की graphics processing क्षमता और game development के दौरान memory optimization तकनीकों को अच्छी तरह दिखाता है।
- यह बताता है कि data compression और hardware की विशेष क्षमताओं का उपयोग करके सीमित संसाधनों में शानदार effects कैसे बनाए जा सकते हैं।
- Amiga जैसे classic computers के hardware को समझना और उसका उपयोग करना, retro game developers या computer history में रुचि रखने वालों के लिए बहुत दिलचस्प विषय है।
1 टिप्पणियां
Hacker News टिप्पणियाँ
"Racing the beam" पर टिप्पणी का सार:
Amiga 500 की memory configuration पर टिप्पणी का सार:
Amiga पर Japanese-style console games की संभावनाओं पर टिप्पणी का सार:
constraints के भीतर coding के आकर्षण पर टिप्पणी का सार:
Amiga के साथ व्यक्तिगत अनुभव और animation बनाने के तरीकों को साझा करने पर टिप्पणी का सार: