कैरेक्टर स्प्राइट (एक्सप्रेशन और फ़ुल-बॉडी)

स्प्राइट आपके कैरेक्टर की किसी एक मूड वाली तस्वीर है, जैसे खुश या उदास। Marinara इसे चैट के सीन के ऊपर तैरती हुई दिखाता है। आप अपने स्प्राइट अपलोड कर सकते हैं, उन्हें AI से जेनरेट कर सकते हैं, उनके बैकग्राउंड साफ़ कर सकते हैं और तय कर सकते हैं कि वे कैसे दिखें।

शुरू करने से पहले: हर फ़ाइल का नाम मूड के नाम पर रखें, जैसे happy.png, ताकि Marinara उसे चुन सके। Roleplay चैट में स्प्राइट के लिए Expression Engine एजेंट (स्प्राइट चुनने वाला मददगार) भी चालू होना चाहिए। देखें चैट में स्प्राइट कैसे दिखते हैं।

स्प्राइट दो तरह के होते हैं:

स्प्राइट Roleplay मोड और Game Mode में स्क्रीन पर दिखते हैं, Conversation चैट में नहीं। अपलोड किसी भी मोड में कर सकते हैं, क्योंकि कैरेक्टर के स्प्राइट हर चैट में उसके साथ रहते हैं। पर्सोना में भी यही Sprites (स्प्राइट) टैब होता है।

Sprites टैब कहाँ मिलता है

  1. किसी कैरेक्टर (या पर्सोना) को उसके एडिटर में खोलें।
  2. Sprites टैब पर क्लिक करें।
  3. सबसे ऊपर एक श्रेणी चुनें: Facial Expressions, Full-body या Clips (क्लिप)।

नीचे के हिस्सों में Facial Expressions और Full-body की बात है। Clips कॉल फ़ीचर का हिस्सा है। देखें Conversation में ऑडियो और वीडियो कॉल।

अपने स्प्राइट अपलोड करना

आप PNG, JPEG, GIF, WebP, AVIF और SVG इमेज अपलोड कर सकते हैं। पारदर्शी PNG फ़ाइलें सबसे अच्छी लगती हैं, क्योंकि कैरेक्टर के आसपास की खाली जगह आर-पार दिखती रहती है। बदलने के लिए दी गई इमेज गलत हो, तो उसे ठुकरा दिया जाता है और सेव किया हुआ स्प्राइट बना रहता है।

एक या ज़्यादा स्प्राइट अपलोड करना

  1. Sprites टैब खोलें और Facial Expressions या Full-body चुनें।
  2. Add sprites पर क्लिक करें।
  3. Upload images पर क्लिक करें, अपने फ़ोल्डर में जाएँ और उसकी इमेज चुनें। आप एक साथ कई फ़ाइलें चुन सकते हैं।
  4. Import images डायलॉग में Import पर क्लिक करें। Cancel से कुछ नहीं जुड़ता।

हर फ़ाइल का नाम स्प्राइट का नाम (उसका लेबल) बन जाता है। बाद में नाम बदलना हो, तो स्प्राइट खोलें। नए स्प्राइट ग्रिड में, किसी फ़ोल्डर के बाहर दिखते हैं। सबफ़ोल्डर स्कैन नहीं किए जाते। इंपोर्ट किए गए स्प्राइट व्यवस्थित करने के लिए New folder इस्तेमाल करें।

पर्सोना एडिटर में एक स्प्राइट के लिए Add Sprite के नाम वाली फ़ील्ड और Upload बटन इस्तेमाल करें।

पूरा फ़ोल्डर अपलोड करना

पूरा फ़ोल्डर एक साथ अपलोड करने का विकल्प पर्सोना एडिटर में है। कैरेक्टर के लिए ऊपर बताया गया Upload images इस्तेमाल करें और अपने फ़ोल्डर के अंदर की इमेज चुनें।

  1. पर्सोना का Sprites टैब खोलें।
  2. Add Sprite बॉक्स में Upload Folder पर क्लिक करें।
  3. वह फ़ोल्डर चुनें जिसमें आपकी इमेज हैं।

हर फ़ाइल का नाम, उसके सफ़िक्स के बिना, स्प्राइट का नाम बन जाता है। प्रोग्रेस की एक पंक्ति में "Uploading X/Y sprites" दिखता है। सबफ़ोल्डर वैकल्पिक स्प्राइट फ़ोल्डर बन जाते हैं। एक्सपोर्ट से मिली catalog.json फ़ोल्डर और बदले गए लेबल भी वापस ले आती है। फ़ोल्डर की गलत एंट्री की सूचना दी जाती है, और इस्तेमाल लायक इमेज फिर भी इंपोर्ट हो जाती हैं।

अगर यह काम नहीं किया: नाकाम या अधूरा इंपोर्ट शून्य इमेज वाली सफलता दिखाने के बजाय नाकामी की सूचना देता है। ऊपर दिए फ़ाइल टाइप जाँचें।

नाम के अलग-अलग रूप

फ़ाइल का नामइसका मतलब
happy_01.png, happy_blush.pngखुश मूड की दो तस्वीरें। दोनों नाम happy_ से शुरू करें।
happy_pajamas.pngखुश, पजामे में। पहले मूड रखें, फिर आउटफ़िट।
angry_formalwear_soaked_01.pngगुस्से में, फ़ॉर्मल कपड़ों में, भीगा हुआ। आखिर में लगा नंबर सिर्फ़ उसी तस्वीर का एक और रूप बताता है।

Expression Engine को एक्सप्रेशन (happy) और पूरा नाम (happy_pajamas), दोनों दिखते हैं। अगर कोई स्प्राइट हर शब्द से मेल न खाए, तो सबसे पहले आखिरी शब्द हटाया जाता है। इसलिए happy_pajamas_wounded न हो, तो happy_pajamas इस्तेमाल होता है, और फिर कोई भी happy स्प्राइट।

चैट में स्प्राइट कैसे दिखते हैं

स्प्राइट कब और कैसे दिखें, यह आप चैट की सेटिंग्स में तय करते हैं, कैरेक्टर एडिटर में नहीं।

Roleplay मोड

Roleplay में स्प्राइट का काम Expression Engine एजेंट संभालता है। एजेंट एक मददगार है जो जवाबों के साथ-साथ चलता है। देखें एजेंट: आपकी चैट में मदद करने वाले AI। यह हर संदेश का मूड पढ़ता है और उससे मेल खाता एक्सप्रेशन स्प्राइट चुनता है। इसे चैट में जोड़ें, और अगर यह आपके पास न हो, तो Agent Organizer (एजेंट ऑर्गनाइज़र) से इंस्टॉल करें। देखें डाउनलोड किए जाने वाले एजेंट का रेफ़रेंस।

स्प्राइट दिखने के लिए ये सब सही होने चाहिए:

Chat Settings → Agents (चैट सेटिंग्स → एजेंट) खोलें और Expression Engine कार्ड ढूँढें:

Game Mode

Game Mode में जो भी बोल रहा हो या लड़ रहा हो, उसका फ़ुल-बॉडी स्प्राइट अपने आप दिखता है। इसके लिए Expression Engine की ज़रूरत नहीं, बस उस कैरेक्टर के फ़ुल-बॉडी स्प्राइट चाहिए। देखें Game Mode: शुरुआत।

स्प्राइट को खिसकाना और उनका साइज़ बदलना

कोई स्प्राइट ओनर चालू होते ही Expression Engine कार्ड में Sprite Layout दिखता है।

  1. Arrange पर क्लिक करें, फिर हर स्प्राइट को मनचाही जगह पर ड्रैग करें।
  2. Done पर क्लिक करें।

Reset आपकी तय की हुई जगहें हटाकर अपने आप बनने वाले लेआउट पर लौटा देता है। Default Side Left या Right होता है, और Left से शुरू होता है। इसे बदलने पर आपका मौजूदा लेआउट पलट जाता है। Apply to से आप लेआउट सारे कैरेक्टर के लिए या किसी एक के लिए सेट कर सकते हैं।

चार स्लाइडर साइज़ और पारदर्शिता तय करते हैं। Expression Size और Full-body Size 5% से 200% तक चलते हैं। Expression Opacity और Full-body Opacity 0% से 100% तक चलते हैं। साइज़ और ओपैसिटी 100% से शुरू होते हैं।

AI से स्प्राइट जेनरेट करना

शुरू करने से पहले: एक इमेज जेनरेशन कनेक्शन जोड़ें। एनिमेटेड स्प्राइट के लिए वीडियो कनेक्शन भी चाहिए। देखें किसी AI प्रोवाइडर से कनेक्ट करना।

  1. Add sprites खोलें और Generate Sprite पर क्लिक करें। पर्सोना एडिटर में यह बटन Add Sprite में है। Generate Sprites विंडो खुलती है।
  2. सबसे ऊपर एक सोर्स चुनें: Expressions (Portrait) या Full-body।
  3. कोई Image Generation Connection चुनें।
  4. चाहें तो चार तक Reference Images जोड़ें, या मौजूदा अवतार को रेफ़रेंस बनाने के लिए बॉक्स पर टिक लगाएँ।
  5. Appearance Description लिखें। यह ज़रूरी है।
  6. चाहें तो Transparent sprite background चालू करें। Marinara बैकग्राउंड को आर-पार बना देता है। अगर सेवा ऐसा नहीं कर पाती, तो Marinara सादा हरा, मजेंटा या सियान बैकग्राउंड बनवाता है, जो आपके Appearance Description के रंगों से अलग हो, और फिर उसे हटा देता है।
  7. Expression Count (फ़ुल-बॉडी के लिए Pose Count) सेट करें और चुनें कि कौन से एक्सप्रेशन या पोज़ बनाने हैं।
  8. Generate पर क्लिक करें।

इमेज आने पर हर इमेज को चालू या बंद करें, उसका नाम बदलें और उसे क्रॉप करें। फिर चुनी हुई इमेज को कैरेक्टर के स्प्राइट में सेव करें। अगर उस श्रेणी में ठीक एक सेव किए हुए स्प्राइट का लेबल जेनरेट किए गए लेबल जैसा हो, तो सेव करने पर उसकी इमेज बदल जाती है और उसका फ़ोल्डर और हैंडल वही रहते हैं। जिस स्प्राइट का नाम आपने उस लेबल से बदलकर कुछ और कर दिया हो, वह बना रहता है। अलग-अलग फ़ोल्डर में एक जैसे लेबल हों, तो जिस स्प्राइट को बदलना है, उसे हाथ से बदलें।

Full-body सोर्स पर, अगर कैरेक्टर के पास पहले से पोर्ट्रेट एक्सप्रेशन हैं, तो हर एक्सप्रेशन नाम से मेल खाते फ़ुल-बॉडी पोज़ बनाने के लिए Match existing expression sprites पर टिक लगाएँ।

जेनरेशन में कुछ मिनट लग सकते हैं, और धीमी सेवाओं पर इससे ज़्यादा। दोबारा शुरू करने के बजाय इंतज़ार करें। कुछ डिवाइस पर, जैसे कुछ Android इंस्टॉल पर, AI स्प्राइट जेनरेशन और बैकग्राउंड की सफ़ाई उपलब्ध नहीं होती। तब बटन बंद रहता है और Marinara वजह दिखाता है।

एनिमेटेड पोर्ट्रेट

Expressions (Portrait) सोर्स पर Generate animated portraits छोटी चलती-फिरती क्लिप बनाता है और हर क्लिप को लूप होने वाले GIF स्प्राइट में बदल देता है। GIF एक ऐसी इमेज फ़ाइल है जो छोटा सा एनिमेशन चलाती है। यह इमेज कनेक्शन की जगह वीडियो कनेक्शन इस्तेमाल करता है। देखें एनिमेटेड एक्सप्रेशन।

स्प्राइट के बैकग्राउंड साफ़ करना

स्प्राइट तब सबसे अच्छा लगता है जब सिर्फ़ कैरेक्टर दिखे। सेवा सपोर्ट करती हो, तो जेनरेट किए गए स्प्राइट नेटिव पारदर्शिता इस्तेमाल करते हैं। वरना Marinara सपाट अडैप्टिव बैकग्राउंड रंग को नरम किनारे के साथ हटाता है, और उस रंग को बालों, कपड़े और बाकी आधे-पारदर्शी पिक्सेल से भी साफ़ कर देता है। पुराने सफ़ेद बैकग्राउंड वाले स्प्राइट अब भी काम करते हैं।

एक स्प्राइट हाथ से साफ़ करना

कैरेक्टर स्प्राइट का प्रीव्यू खोलें और उसका वैंड वाला सफ़ाई बटन इस्तेमाल करें, या पर्सोना स्प्राइट की तस्वीर पर क्लिक करें। सफ़ाई वाले एडिटर में आप बैकग्राउंड मिटा सकते हैं, मिटे हिस्से वापस पेंट कर सकते हैं, और नतीजे को गहरे, हल्के और शतरंज जैसे बैकड्रॉप पर जाँच सकते हैं। आप अनडू कर सकते हैं, मूल इमेज पर रीसेट कर सकते हैं, और काम पूरा होने पर लागू कर सकते हैं।

एक साथ कई स्प्राइट साफ़ करना

  1. कैरेक्टर एडिटर में Select पर क्लिक करें और स्प्राइट चुनें। पर्सोना एडिटर में सफ़ाई वाला बटन चुने हुए स्प्राइट पर लागू होता है, और कुछ न चुना हो तो दिख रही श्रेणी पर।
  2. Clean Backgrounds पर क्लिक करें।
  3. Cleanup strength स्लाइडर सेट करें, Soft से Aggressive तक, यानी 0 से 100। यह 35 से शुरू होता है। ज़्यादा वैल्यू ज़्यादा बैकग्राउंड हटाती है, पर कैरेक्टर का हिस्सा भी काट सकती है।
  4. पुष्टि करें।

Marinara एक सुरक्षित कॉपी रख लेता है। एक पंक्ति में "Last cleanup has a restore point" दिखता है, साथ में Undo Cleanup। हर प्रभावित स्प्राइट को पहले जैसा करने के लिए उस पर क्लिक करें।

सफ़ाई PNG, JPG, JPEG, WEBP और AVIF पर काम करती है। GIF या SVG पर यह काम नहीं करती।

अपने आप होने वाली सफ़ाई पहले इमेज की जाँच करती है। तेज़ बिल्ट-इन सफ़ाई सपाट रंग और पुराने सफ़ेद बैकग्राउंड संभाल लेती है। अगर किनारा एक जैसा न हो, तो Marinara वैकल्पिक AI बैकग्राउंड रिमूवर को फ़ॉलबैक की तरह इस्तेमाल कर सकता है, अगर वह इंस्टॉल हो। भरे-भरे सीन के लिए, या ऐसे कैरेक्टर के लिए जिसके रंग बैकग्राउंड से मिलते हों, हाथ से सफ़ाई वाला एडिटर सबसे सुरक्षित रास्ता है।

स्प्राइट मैनेज करना

कैरेक्टर का कोई स्प्राइट खोलें, तो उसका प्रीव्यू और उसके बटन दिखते हैं। पर्सोना स्प्राइट के बटन टाइल पर ही रहते हैं।

फ़ोल्डर और चुनाव

New folder पर क्लिक करने से unnamed नाम का एक बंद फ़ोल्डर बनता है। नाम बदलने के लिए उसके नाम पर डबल-क्लिक या डबल-टैप करें, और खोलने के लिए शेवरॉन तीर इस्तेमाल करें। एक्सप्रेशन और फ़ुल-बॉडी स्प्राइट के फ़ोल्डर अलग-अलग होते हैं। फ़ोल्डर बिना फ़ोल्डर वाले स्प्राइट के ऊपर रहते हैं, और उनका क्रम ड्रैग करके बदला जा सकता है।

स्प्राइट को किसी फ़ोल्डर में ड्रैग करें, या फ़ोल्डर वाले स्प्राइट को बिना फ़ोल्डर वाले हिस्से में ड्रैग करके उसे फ़ोल्डर से निकालें। फ़ोन पर ड्रैग शुरू करने के लिए टाइल को दबाकर रखें। सामान्य स्वाइप से स्क्रीन अब भी स्क्रॉल होती है। फ़ोल्डर सिर्फ़ व्यवस्थित करते हैं: वे कभी कोई सक्रिय सेट नहीं चुनते और न ही चैट या एजेंट से इमेज छिपाते हैं। फ़ोल्डर डिलीट करने पर उसके स्प्राइट बिना फ़ोल्डर के बने रहते हैं।

चेकबॉक्स और Select all sprites दिखाने के लिए Select पर क्लिक करें, फिर चुने हुए स्प्राइट एक साथ ड्रैग करें या सफ़ाई और डिलीट इस्तेमाल करें। Cancel से चुनने का मोड बंद होता है। सर्च दिख रहे स्प्राइट को फ़िल्टर करता है। किसी सर्च में कुछ न मिलने का मतलब यह नहीं कि लाइब्रेरी खाली है।

Character Sheet

कैरेक्टर एडिटर की Character Sheet पंक्ति Manage से खुलती है। वहाँ शीट बनाएँ या अपलोड करें। कैरेक्टर की शक्ल-सूरत के लिए उसे प्राथमिकता देने के लिए Use as reference image चालू करें।

स्प्राइट एक्सपोर्ट करना

  1. Sprites टैब खोलें।
  2. कैरेक्टर ग्रिड के ऊपर, या पर्सोना के Add Sprite बॉक्स में, Export पर क्लिक करें।
  3. मौजूदा श्रेणी एक्सपोर्ट करने के लिए Expressions only या Full-body only चुनें, या सब कुछ एक्सपोर्ट करने के लिए All sprites।

आपको एक ZIP फ़ाइल मिलती है, जिसमें स्प्राइट फ़ाइलें और लेबल व फ़ोल्डर के लिए एक catalog.json होती है। नेटिव कैरेक्टर और पर्सोना एक्सपोर्ट और प्रोफ़ाइल बैकअप भी यह डेटा बनाए रखते हैं।

मिलती-जुलती गाइड

डेवलपर के लिए रेफ़रेंस: स्प्राइट API और लिंक

GET /api/sprites/:ownerId हर स्प्राइट लौटाता है, चाहे वह फ़ोल्डर में हो या नहीं। GET /api/sprites/:ownerId/catalog उन टूल के लिए फ़ोल्डर और सदस्यता भी जोड़ता है जो एक बार में एक फ़ोल्डर इंपोर्ट करते हैं। हर स्प्राइट में एक स्थिर expression हैंडल, बदला जा सकने वाला label, एक folderId और एक URL होता है। सदस्यता के लिए फ़ोल्डर ID इस्तेमाल करें। folders ऐरे सेव किया हुआ क्रम है, जिसे एडिटर उलटा दिखाता है ताकि नए फ़ोल्डर सबसे पहले दिखें। फ़ोल्डर का क्रम एजेंट की प्राथमिकता या उपलब्धता तय नहीं करता।

चैट का एसेट ब्राउज़र बदले गए लेबल दिखाता है, लेकिन ठोस card://sprites/<ownerId>/<filename> लिंक डालता है, जो नाम बदलने के बाद भी काम करते हैं। card://sprites/facial/joy.png जैसे चैट-स्तर के लिंक बदले गए लेबल को भी पहचान सकते हैं। अगर उसी नाम की फ़ाइल पहले से मौजूद हो, तो उसे प्राथमिकता मिलती है।

वैकल्पिक मेटाडेटा न हो या पढ़ा न जा सके, तब भी इस्तेमाल लायक इमेज छिपती नहीं हैं। बदलाव खराब मेटाडेटा को बदलने के बजाय मना कर देते हैं। सिर्फ़ पढ़ने वाली लिस्ट पहुँच से बाहर की लाइब्रेरी छोड़ देती हैं, और एक्सपोर्ट और लिखने वाले रास्ते लिंक किए गए ओनर फ़ोल्डर को मना कर देते हैं।