देखें V2 में क्या नया है · नया इंटरफ़ेस, Crew, Blueprint से C++, मल्टीप्लेयर प्ले टेस्ट और एडिटर के अंदर अपडेट चेंजलॉग पढ़ें → The V2 giveaway winners are in · 10 accounts won 50M AI tokens each See the winners →
एडवांस्ड

PaperZD

सिर्फ़ माँगकर PaperZD में 2D कैरेक्टर एनीमेशन बनाएँ: स्प्राइट शीट से फ़्लिपबुक, एनीमेशन सोर्स, Animation Blueprints, स्टेट मशीन, खेलने लायक कैरेक्टर और एक प्ले चेक।

Critical Failure Studio का PaperZD वह एनीमेशन सिस्टम है जिसे ज़्यादातर Paper2D गेम इस्तेमाल करते हैं: फ़्लिपबुक कैरेक्टर के लिए एनीमेशन ग्राफ़ और स्टेट मशीन। यह Fab और GitHub पर मुफ़्त है।

PaperZD एक्सटेंशन के साथ, Ultimate Engine CoPilot ये सेटअप आपके लिए बनाता है, स्प्राइट शीट से लेकर ऐसे कैरेक्टर तक जो खेल में चलता और हमला करता है।

इसे Unreal Engine 5.7 पर PaperZD 2.2.4 के साथ टेस्ट किया गया है।


आपको क्या चाहिए

  • PaperZD, आपके प्रोजेक्ट में इंस्टॉल और चालू। यह Unreal का अपना Paper2D प्लगइन इस्तेमाल करता है, जिसे PaperZD अपने साथ चालू कर देता है।
  • आपके कैरेक्टर की एक स्प्राइट शीट, या पहले से बने फ़्लिपबुक।

साथ में Ultimate Engine CoPilot, जिसमें PaperZD एक्सटेंशन चालू हो।

PaperZD के बिना यह एक्सटेंशन कुछ भी नुकसानदेह नहीं करता। हर PaperZD टूल एक ही संदेश के साथ जवाब देता है, जो बताता है कि प्लगइन इंस्टॉल है, चालू है और लोड हुआ है या नहीं, और आगे क्या करना है।


इसे सेट अप करना

  1. Fab या GitHub से PaperZD इंस्टॉल करें और उसे अपने प्रोजेक्ट में चालू करें। अगर Unreal कहे तो एडिटर रीस्टार्ट करें।
  2. CoPilot में सेटिंग्स > विस्तार खोलें और PaperZD चालू करें। यह डिफ़ॉल्ट रूप से बंद रहता है।
  3. AI से PaperZD का स्टेटस जाँचने को कहें। वह बताता है कि PaperZD मिला या नहीं, और अगर नहीं, तो क्या गायब है।

आप क्या माँग सकते हैं

  • “यह मेरी knight की स्प्राइट शीट है, 6 कॉलम और 13 पंक्तियाँ। idle, walk और attack के लिए चारों दिशाओं में फ़्लिपबुक बनाओ और उसके लिए PaperZD सेट अप करो।”
  • “Idle, Walk और Attack वाली एक स्टेट मशीन जोड़ो। कैरेक्टर जब चल रहा हो तब Walk, रुकने पर वापस Idle, और Attack एक बार चले फिर Idle पर लौट आए।”
  • “एनीमेशन को उसी तरफ़ मुँह करवाओ जिधर कैरेक्टर चल रहा है।”
  • “एक खेलने लायक कैरेक्टर बनाओ जिसमें चलने के लिए WASD और हमले के लिए Space हो, उसके पीछे कैमरा हो, और एक गेम मोड हो जो उसे स्पॉन करे।”
  • “walk एनीमेशन में कदमों की आवाज़ जोड़ो।”
  • “गेम चलते समय कैरेक्टर को लाल पैलेट पर बदल दो।”

इन अनुरोधों के पीछे AI ये कर सकता है:

  • स्प्राइट शीट को एनीमेशन में काटना। एक कॉल एक शीट को स्प्राइट्स, फ़्लिपबुक, एनीमेशन सीक्वेंस, एक एनीमेशन सोर्स और एक Animation Blueprint में बदल देती है। कई दिशाओं वाले एनीमेशन एक multi-directional सीक्वेंस बन जाते हैं।
  • एनीमेशन ग्राफ़ बनाना। Play sequence, स्टेट मशीन, direction, override slot, bool, नंबर या enum से चुनने वाले, random player और cached animation नोड्स बनाना और उन्हें जोड़ना।
  • स्टेट मशीन बनाना। स्टेट्स, conduits और jumps, ऐसे ट्रांज़िशन के साथ जो किसी वेरिएबल पर, मौजूदा एनीमेशन के ख़त्म होने पर, हमेशा या कभी नहीं चलते हैं, एक प्राथमिकता के साथ और एक वैकल्पिक transitional सीक्वेंस के साथ।
  • नोटिफ़ाई जोड़ना। टाइमलाइन पर कस्टम इवेंट, आवाज़ें और Niagara या पार्टिकल इफ़ेक्ट, जहाँ कस्टम नोटिफ़ाई ऐसे फ़ंक्शन बन जाते हैं जिन्हें आप भर सकते हैं।
  • स्किन जोड़ना। हर एनीमेशन के लिए बदले हुए फ़्लिपबुक, आउटफ़िट या पैलेट स्वैप के लिए, जो गेम चलते समय लागू होते हैं।
  • कैरेक्टर बनाना। Animation Blueprint से चलने वाला एक नया PaperZD कैरेक्टर, या किसी मौजूदा एक्टर को उससे जोड़ना। यह किसी Level Sequence में PaperZD ट्रैक भी जोड़ सकता है।
  • खेल में जाँचना। पढ़ना कि कौन सा सीक्वेंस चल रहा है, वह कितना आगे बढ़ा है और एनीमेशन वेरिएबल्स की वैल्यूज़ क्या हैं, और किसी ट्रांज़िशन को हाथ से टेस्ट करने के लिए किसी एनीमेशन को चलाना, रोकना या उस पर कूदना।

यह किन गलतियों से बचता है

PaperZD में कुछ जाल हैं जो साफ़ कंपाइल हो जाते हैं और फिर भी कुछ नहीं करते। AI उन्हें जानता है:

  • नए ट्रांज़िशन का नियम “never” होता है जब तक उसे सेट न किया जाए, इसलिए कैरेक्टर कभी Idle से बाहर नहीं निकलता।
  • जिस वेरिएबल को कोई नियम पढ़ता है, उसे कहीं लिखा जाना ज़रूरी है, आम तौर पर Animation Blueprint के tick में। साफ़ कंपाइल इस बात का सबूत नहीं कि नियम कभी बदलता है, इसलिए AI खेल में जाँचता है।
  • एक सीक्वेंस सिर्फ़ अपने ही एनीमेशन सोर्स के Animation Blueprint में चलता है, इसलिए वह हर कैरेक्टर के एसेट्स को एक साथ रखता है।
  • स्टेट्स और ट्रांज़िशन एक ही बैच में कंपाइल होते हैं, बदलावों के एक समूह के आख़िर में, हर बदलाव के बाद नहीं।
  • स्प्राइट शीट की ग्रिड ऊपर से बाएँ से दाएँ पढ़ी जाती है, इसलिए AI सेल्स को उसी तरह गिनता है जैसे PaperZD गिनता है।

सुझाव और ट्रिक्स

ये PaperZD और CoPilot के साथ एक छोटा खेलने लायक गाँव बनाने से मिले हैं: एक हीरो, एक गाँववाला, skeleton दुश्मन और भटकते भेड़िये। इसे Unreal Engine 5.7 पर PaperZD 2.2.4 के साथ टेस्ट किया गया था।

सबसे ज़रूरी तीन बातें:

  1. AI को अपनी शीट का असली पंक्ति लेआउट बताएँ। पंक्तियों को 0 से गिनें, बताएँ कि कौन सी पंक्तियाँ एनीमेशन हैं और कौन सी पंक्ति कुछ और है, और जाँचने के लिए हर फ़्लिपबुक का पहला फ़्रेम खोलें।
  2. एक्टर को कभी न घुमाएँ। फ़्लिपबुक एक सपाट कार्ड है, इसलिए दिशा इस बात से तय होनी चाहिए कि कौन सा एनीमेशन चलता है, एक्टर को घुमाने से नहीं।
  3. साफ़ कंपाइल पर भरोसा न करें। ऐसा प्ले टेस्ट माँगें जो मौजूदा एनीमेशन और उसके वेरिएबल्स बताए।

शीट का सटीक वर्णन करें

AI यह नहीं देख सकता कि आपकी शीट की कौन सी पंक्ति में कौन सा एनीमेशन है। यह आपको बताना होगा।

  • PixelLab से एक्सपोर्ट की गई शीट में 92 पिक्सेल के सेल्स की 6 कॉलम और 13 पंक्तियाँ होती हैं, हर एनीमेशन में चार दिशाएँ इस क्रम में: दक्षिण, पश्चिम, पूर्व, उत्तर। पंक्ति 0 rotation poses की पंक्ति है, एनीमेशन नहीं।
  • एक्सपोर्ट के साथ एक लेआउट फ़ाइल आती है जो बताती है कि किस पंक्ति में कौन सा एनीमेशन है। उसका इस्तेमाल करें। क्रम हर कैरेक्टर में अलग होता है: गाँव में हीरो और mage में walk पहले था, skeleton में attack पहले और भेड़िये में idle पहले।
  • 0 से गिनें और rotation पंक्ति का नाम लें। एक सेशन में प्रॉम्प्ट में लिखा था “पंक्तियाँ 1 से 4 walk हैं”। AI ने 1 से गिना, इसलिए हर एनीमेशन एक पंक्ति खिसक गया और हीरो ग़लत तरफ़ मुँह करके खड़ा था।

पंक्तियाँ इस तरह लिखें:

हर शीट 92 पिक्सेल के सेल्स की 6 कॉलम और 13 पंक्तियाँ है। पंक्तियों को 0 से गिनें। पंक्ति 0 rotation वाली पंक्ति है, उसे छोड़ दें। पंक्तियाँ 1 से 4 walk हैं (दक्षिण, पश्चिम, पूर्व, उत्तर, 6 फ़्रेम), पंक्तियाँ 5 से 8 attack, पंक्तियाँ 9 से 12 idle (4 फ़्रेम)।

ज़रूरी सेटिंग्स

  • Pixel art चालू। टेक्सचर nearest फ़िल्टरिंग और बिना mips के इस्तेमाल करते हैं, ताकि पिक्सेल तेज़ रहें।
  • Pivot नीचे बीच में। हर फ़्रेम में पैर उसी जगह रहते हैं।
  • फ़्रेम प्रति सेकंड। जो स्पीड चाहिए वह माँगें। AI ने सब कुछ 15 पर रखा, जिससे 4 फ़्रेम का idle लगभग एक चौथाई सेकंड में लूप हो गया। Idle 6, walk 12 और attack 14 सही लगे।
  • दिशा का क्रम। एक multi-directional सीक्वेंस ऊपर से घड़ी की दिशा में चलता है: उत्तर, पूर्व, दक्षिण, पश्चिम।
  • लेवल में रखे एक्टर की वैल्यूज़ जीतती हैं। लेवल में रखे एक्टर पर सेट किया गया cooldown या स्पीड Blueprint के डिफ़ॉल्ट से ऊपर चलता है, इसलिए जब कोई बदलाव कुछ करता न दिखे तो रखी हुई कॉपियाँ जाँचें।

स्प्राइट को कैमरे की तरफ़ रखें

इस सेटअप ने स्प्राइट को मुड़ने, झुकने या किनारे पर आने से रोका:

  • एक्टर रोटेशन बंद करें। Controller yaw बंद, orient rotation to movement बंद, controller desired rotation बंद। चालू छोड़ने पर कार्ड एक्टर के साथ घूमता है और किनारे पर आ सकता है।
  • Yaw 0 के साथ स्पॉन करें। 180 का स्पॉन yaw कार्ड को दुनिया में स्थिर कैमरे से दूर झुका देता है।
  • Spring arm को दुनिया से बाँधें। Pawn control rotation बंद, pitch, yaw और roll inherit करना बंद, collision test बंद। -40 का pitch और -90 का yaw काम आया।
  • कार्ड को एक बार झुकाएँ। जब कैमरा 40 डिग्री नीचे देख रहा हो, तो स्प्राइट को -40 का roll दें, और उसे ऊपर उठाएँ ताकि पैर फ़र्श को छुएँ।
  • दुनिया की अक्षों में चलें, एक्टर के forward या right वेक्टर के साथ नहीं।
  • Set Directionality से दिशा दिखाएँ। इसे Facing नाम का Vector2D वेरिएबल दें। Facing को हर tick पर velocity से लिखें और कैरेक्टर के रुकने पर आख़िरी वैल्यू बनाए रखें।

उस कैमरे के साथ कीज़ ऐसे मैप होती हैं:

  • D +X की ओर चलाता है, Facing (1, 0)।
  • W -Y की ओर चलाता है, Facing (0, 1)।
  • A -X की ओर चलाता है, Facing (-1, 0)।
  • S +Y की ओर चलाता है, Facing (0, -1)।

अगर बाएँ-दाएँ या ऊपर-नीचे उलटे निकलें, तो Facing के उस हिस्से का चिह्न पलट दें। भरपाई के लिए एक्टर को न घुमाएँ।

खेल में टेस्ट करें

  • कोई ट्रांज़िशन तब तक कुछ नहीं करता जब तक उसका नियम बदल न सके। नया नियम “never” होता है, और जो नियम किसी वेरिएबल को पढ़ता है उसके लिए कुछ ऐसा चाहिए जो उस वेरिएबल को लिखे, आम तौर पर Animation Blueprint का tick। ऐसा प्ले टेस्ट माँगें जो मौजूदा एनीमेशन बताए।
  • Facing को शुरुआती वैल्यू दें। यह सिर्फ़ तब लिखा जाता है जब कैरेक्टर चलता है, इसलिए पहले कदम से पहले का attack शून्य पढ़ता है। दक्षिण का डिफ़ॉल्ट इसे ठीक कर देता है।
  • हीरो को निशाने की तरफ़ मुँह कराएँ। अगर attack को किसी एक तरफ़ की चीज़ पर लगना है, तो AI से कहें कि वार से पहले Facing को सबसे नज़दीकी दुश्मन की ओर सेट करे।

एक असली सेशन

collab क्लिप CoPilot चैट में चार प्रॉम्प्ट में बनाई गई, Claude Code एजेंट के साथ। AI ने अपने प्ले टेस्ट खुद चलाए और जो मिला उसे ठीक किया। समय एक ही मशीन के हैं।

  1. दो कैरेक्टर इम्पोर्ट हुए, idle, walk और attack स्टेट मशीन के साथ: लगभग 2.5 मिनट।
  2. एक खेलने लायक हीरो (चलने के लिए WASD, हमले के लिए Space), एक spring-arm कैमरा, एक गेम मोड और तीन बिंदुओं के बीच चलता एक गाँववाला: लगभग 7 मिनट।
  3. एक skeleton दुश्मन जो पीछा करता और हमला करता है, हिट पॉइंट्स और स्क्रीन पर हेल्थ काउंटर: लगभग 7 मिनट।
  4. भटकते भेड़िये, इकट्ठा करने वाली जड़ी-बूटियाँ और जड़ी-बूटी काउंटर: लगभग 7 मिनट।

लुक एक अलग काम है

AI एनीमेशन और गेमप्ले बनाता है। क्लिप का लुक लेवल में सेट किया गया था, AI ने नहीं:

  • गर्म धूप और लालटेन की रोशनी।
  • Bloom, एक vignette और tilt-shift जैसा एहसास देने के लिए कम depth of field।
  • कैरेक्टरों पर एक unlit emissive मटीरियल।

Unlit मटीरियल और तय एक्सपोज़र से शुरू करें। कई राउंड तक आँख से एक्सपोज़र ट्यून करने में जितना मिला उससे ज़्यादा समय गया।

सीमाएँ

  • AI को नहीं पता कि आपकी शीट की हर पंक्ति में कौन सा एनीमेशन है। आपको उसे बताना होगा।
  • दुश्मन सीधे हीरो की ओर चलते हैं, सामान के आसपास कोई pathfinding नहीं है।
  • ठीक 45 डिग्री के कोण पर दो अक्ष बराबर हो जाते हैं और एनीमेशन पूर्व चुनता है।
  • हेल्थ 0 पर रुक जाती है। जब तक आप मौत न माँगें, कुछ और नहीं होता।
  • यह किसी कुंजी के दबे रहने के बीच में एनीमेशन स्टेट नहीं पढ़ सका, और उसने अंदाज़ा लगाने के बजाय यह बता दिया।

अनुमतियाँ

पढ़ना मुफ़्त है: किसी एसेट, ग्राफ़ या चल रहे एनीमेशन की जाँच कभी नहीं पूछती। बदलाव आपकी Ask Before Edit या Auto Edit सेटिंग के हिसाब से चलते हैं, ठीक बाकी हर टूल की तरह।


यह कैसे काम करता है

  • प्लगइन्स के बीच कोई लिंक नहीं। एक्सटेंशन PaperZD तक सिर्फ़ reflection के ज़रिए पहुँचता है, इसलिए Ultimate Engine CoPilot PaperZD इंस्टॉल हो या न हो, एक जैसा बनता और चलता है, और एक्सटेंशन उसी डिज़ाइन के PaperZD वर्ज़नों में काम करता रहता है। अगर कोई अपडेट किसी चीज़ का नाम बदल दे, तो टूल अंदाज़ा लगाने के बजाय गायब फ़ील्ड का नाम बताता है।
  • हर जगह एक साथ। टूल्स CoPilot की चैट में, Claude Code और Cursor जैसे बाहरी MCP क्लाइंट्स में, और कोडिंग एजेंट्स में काम करते हैं। देखें MCP इंटीग्रेशन।
  • 39 टूल्स। सोर्स, सीक्वेंस, नोटिफ़ाई, स्किन, Animation Blueprints, ग्राफ़, स्टेट मशीन, कैरेक्टर और Sequencer के लिए ऑथरिंग, निरीक्षण और प्ले-टाइम टूल्स।

एक्सटेंशन कैसे काम करते हैं, इसके लिए एक्सटेंशन देखें, और AI चल रहे गेम को कैसे जाँचता है, इसके लिए प्ले टेस्टिंग देखें।