Stage Whisper 'सर्वज्ञानी NPC' समस्या कैसे हल करता है: संदर्भ अलगाव वास्तुकला

NPC जो तीन सत्र पहले मेरे पात्र ने जो कहा था उसका उद्धरण दे सकते थे—यह देखना काफ़ी अच्छा था। स्मृति प्रणाली काम कर रही थी। NPC पिछली घटनाओं का संदर्भ दे रहे थे, मेरी कही बातों का उद्धरण दे रहे थे। लेकिन इसने एक अलग समस्या भी शुरू कर दी: NPC सर्वज्ञानी होने लगे।

हाल के एक सत्र का एक अंश, प्रासंगिक भाग हाइलाइट किया गया है:

"तो, वह कहती है, पत्तों की सरसराहट पर आसानी से सुनाई देने वाली उसकी आवाज़ के साथ, असली वजह क्या है कि तुम मुझे ढूँढने आए? जिज्ञासा, या तुम बस अपनी उस अव्यवस्थित डेस्क का बाकी हिस्सा खोलने से बचने की कोशिश कर रहे हो?"

यह एक पूरी तरह से अलग दृश्य की घटना का संदर्भ दे रहा था जिसमें यह पात्र शामिल नहीं था। पात्र के पास इसे जानने का कोई तरीका नहीं होना चाहिए था।

ऐसी छोटी असंगतताएँ विसर्जन-भंजक होती हैं। लेकिन अन्य मामलों में, यह खेल-भंजक हो सकती है। उदाहरण के लिए, मेरा एक अभियान है जहाँ मेरा पात्र एक गुप्त vampire है जो अनजान मनुष्यों की दुनिया में चलता है। NPC ने संयोग से संकेत देना शुरू कर दिया कि वे मेरा रहस्य जानते हैं—जिसने अचानक मेरे लिए संदेह के बिना दिन बिताना बहुत कठिन बना दिया। या अन्य उदाहरणों में, यदि मैंने किसी चोरी (heist) के दौरान एक कलाकृति चुराई, और फिर एक असंबद्ध पात्र संदिग्ध टिप्पणियाँ करता है।

AI ने मूलतः नाटकीय प्रभाव के लिए संदर्भ में उपलब्ध किसी भी और सभी रहस्यों का उपयोग करने का निर्णय लिया—जो वास्तव में केवल कभी-कभार ही कथानक कारणों से होना चाहिए।

तो मैं AI को ऐसा न करने के लिए क्यों नहीं कह सकता?

समस्या यह है कि आप एक नकारात्मक प्राप्त करने का प्रयास कर रहे हैं। "इस जानकारी का उपयोग करें।" यह मौलिक रूप से एक अलग और बहुत कठिन कार्य है, सकारात्मक मामले की तुलना में: जो जानकारी वहाँ है उसका उपयोग करें। किसी मॉडल को प्रासंगिक संदर्भ की अनदेखी करने के लिए प्रशिक्षित करने के लिए, आपको ऐसी स्थितियों के हज़ारों उदाहरण चाहिए होंगे जहाँ जानकारी स्पष्ट रूप से उपलब्ध थी लेकिन आउटपुट ने जानबूझकर उसका उपयोग नहीं किया। यह लगभग इसके विपरीत है जिसके लिए AI को डिज़ाइन किया गया है। अधिकांश कार्यों के लिए, उपयोगी संदर्भ की अनदेखी करना काम पर विफलता होगी।

कल्पना की जा सकती है कि एक मॉडल को रहस्यों पर कार्य न करने के और उदाहरणों के साथ प्रशिक्षित किया जा सकता है। लेकिन कथानक और रोल-प्ले मॉडल निर्माताओं के लिए अब तक बड़ा केंद्रबिंदु नहीं रहा है, इसलिए इस समस्या को वह ध्यान नहीं मिला जिसकी यह हकदार है।

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

जो मैंने खोजा वह यह था कि लगभग हर संभावित antagonist किसी तरह जानता था। भले ही मैंने कुछ भी उजागर नहीं किया था। और यह तुरंत कथानक-भंजक था। ऐसा लगता था मानो मेरे सिर के ऊपर एक बड़ा सा संकेत था जो बता रहा था कि मैं एक vampire हूँ। मेरा पात्र लगातार क्षति-नियंत्रण (damage control) कर रहा था, या ऐसा महसूस कर रहा था कि हर पात्र के पास मेरे पर leverage है।

मैंने लंबे समय तक प्रॉम्प्ट के साथ प्रयोग किया। अंततः मुझे एहसास हुआ कि मुझे जानकारी को संदर्भ में शामिल ही नहीं करना होगा।

समाधान, तब, है संदर्भ अलगाव (context isolation)। यदि AI उसे देखकर उपयोग करने से रोका नहीं जा सकता, तो जानकारी वास्तव में वहाँ नहीं होनी चाहिए। यह Stage Whisper में प्राप्त करने योग्य है क्योंकि प्रत्येक दृश्य और स्मृति पहले से ही उन NPC के साथ टैग की जाती है जो उसमें प्रकट होते हैं, इसलिए हम आसानी से केवल उन पात्रों को शामिल करने के लिए फ़िल्टर कर सकते हैं जो वास्तव में वहाँ थे।

लेकिन यहाँ एक पेच है। कुछ रहस्य प्रमुख कथानक चालक होते हैं। आप उन्हें पूरी तरह हटा नहीं सकते, क्योंकि कहानी को अभी भी उनका हिसाब देना होगा। चाहे वह कोई चोरी हो, या गुप्त vampire—वे रहस्य कथानक के मूल में हैं, और उनके बिना वही कहानी नहीं रहेगी।

तो हमें अपने पाठ निर्माण को दो भागों में विभाजित करना पड़ा।

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

दूसरे भाग को मैं सीन डायरेक्टर कहता हूँ। यह स्टोरी डायरेक्टर द्वारा सौंपे गए दृश्य को "अभिनीत" करता है। इसकी पहुँच सभी प्रासंगिक NPC स्मृतियों और व्यक्तित्वों तक है, इसलिए इसके पास सभी NPC को निभाने और कुछ अंतरालीय कथन (interstitial narration) प्रदान करने के लिए पर्याप्त जानकारी है, लेकिन यह वास्तव में रहस्यों को नहीं जानता।

कुछ जानकारी को एक से दूसरे तक जाना चाहिए, ताकि वे एक ही कहानी पर काम कर सकें बिना एक-दूसरे के विरुद्ध काम किए।

स्टोरी डायरेक्टर एक सारांश (synopsis) उत्पन्न करता है जो सीन डायरेक्टर को वह सब कुछ बताता है जिसकी उसे आवश्यकता है। यह कुछ ऐसा दिखता है:

<synopsis>
  Elian, Maeve के साथ कक्ष 314 में लौटता है, परिचित गोपनीयता अभिमंत्रण (wards) उनके शानदार प्रदर्शन के दौरान एकत्रित ध्यान से संक्षिप्त राहत प्रदान करते हैं। Maeve की असामान्य दिन के बाद अध्ययन की आवश्यकता को भाँपते हुए, Elian अकेले अन्वेषण के लिए अपना कमरा छोड़ने का निर्णय लेता है
  <npc_list>maeve-corwin</npc_list>
  <location>room-314</location>
  <new_scene/>
</synopsis>

यह सीन डायरेक्टर को बताता है कि दृश्य में क्या चल रहा है, यह कहाँ है, इसमें कौन है, और क्या यह एक नया दृश्य है। खिलाड़ी पात्र की उपस्थिति मान ली जाती है। स्टोरी डायरेक्टर वैकल्पिक रूप से खिलाड़ी से पात्र के बाहर (out-of-character) बात उत्सर्जित कर सकता है, और अपने भविष्य के उपयोग के लिए विस्तृत प्रदर्शन नोट्स भी बना सकता है।

दोनों डायरेक्टर एक ही संदर्भ नहीं देखते। यहाँ विभाजन है:

स्टोरी डायरेक्टर देखता है:

यह वह सब कुछ है जो स्टोरी डायरेक्टर को रोचक, सुसंगत कथानक निर्णय लेने के लिए चाहिए। यह बहुत सारा डेटा है, लेकिन KV कैश लागत को प्रबंधनीय रखता है।

सीन डायरेक्टर देखता है:

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

दो पात्र पर्चियाँ

सार्वजनिक बनाम पूर्ण खिलाड़ी पात्र पर्ची के बीच का अंतर केंद्रीय है। स्टोरी डायरेक्टर को कहानी बनाने के लिए पूर्ण विवरण और सभी रहस्य जानने की आवश्यकता है। लेकिन सीन डायरेक्टर को वे विवरण नहीं जानने चाहिए। उसे अभी भी यह जानना चाहिए कि खिलाड़ी पात्र शारीरिक रूप से कौन है, वह कैसा दिखता है, उसकी सार्वजनिक प्रतिष्ठा क्या है—वे चीज़ें जो कोई भी NPC सिर्फ़ उसके आसपास रहकर उठा सकता है। एक अलग सार्वजनिक पर्ची बनाए रखने का मतलब है कि सीन डायरेक्टर के पास हमेशा वह संदर्भ रहता है, बिना कभी रहस्यों तक पहुँच की आवश्यकता के।

स्मृतियों को दृश्य के अनुसार फ़िल्टर करना

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

परिणाम एक सीन डायरेक्टर है जो वास्तव में उन चीज़ों को नहीं जान सकता जो दृश्य के पात्र नहीं जानते। इसलिए नहीं कि उसे बताया गया था कि न करे, बल्कि इसलिए कि वह जानकारी भौतिक रूप से वहाँ नहीं है।

मैं एक ऐसा अभियान चला रहा हूँ जहाँ मेरा पात्र एक मानव महिला है जिसे परिवार के छोटे कुलीनता (minor nobility) के खिताब को सुरक्षित रखने के लिए लिंग-संबंधी कानूनों के कारण खुद को एक पुरुष के रूप में वेश में रहना पड़ता है। यह एक हल्की-फुल्की कॉमेडी अभियान है, और इसमें कुछ कॉमेडी परिदृश्य हैं जो उस लिंग भ्रम से उत्पन्न होते हैं।

इस प्रणाली के बिना, आम तौर पर NPC को आश्चर्यचकित करने का कोई तरीका नहीं है। वे सब ऐसे व्यवहार करते हैं मानो उन्हें कुछ संदेह हो। शायद सीधे तौर पर नहीं, लेकिन जिस तरह से वे आपसे बात करते हैं उसमें हमेशा "जानने" की एक धार होती है। इसे कठिन शब्दों में बताना मुश्किल है, लेकिन आप इसे महसूस कर सकते हैं। गुप्त पहचान का नाटकीय तनाव बस वहाँ नहीं होता।

लेकिन इस प्रणाली के साथ, NPC इसे पूरी तरह सीधा खेलते हैं। उन्हें कोई अंदाज़ा नहीं है। और जिन दृश्यों में बड़ा खुलासा होता है, वे सचमुच असर करते हैं—क्योंकि उस बिंदु तक उसकी कोई भी अप्रत्यक्ष मंशा नहीं होती। कॉमेडी काम करती है क्योंकि दर्शक, NPC, सचमुच इसे आते हुए नहीं देखते।

एक किनारे का मामला (edge case) है। क्योंकि सीन डायरेक्टर को सटीक रहस्य नहीं पता होता, यह कभी-कभी शारीरिक रूप से गलत विवरण बना देता है। इसे टालना कठिन है, क्योंकि सीन डायरेक्टर एक सार्वजनिक पात्र पर्ची से काम कर रहा है जिसमें वे विवरण शामिल नहीं हैं। समाधान एक तीसरा चरण जोड़ना होगा: स्टोरी डायरेक्टर आउटपुट होने से पहले उत्पन्न दृश्य की समीक्षा करता है, ऐसी किसी भी विसंगति को पकड़ने के लिए। इससे लागत और विलंब जुड़ता है, इसलिए यह रोडमैप पर है लेकिन अभी लागू नहीं हुआ है।

एक बात जिसने मुझे आश्चर्यचकित किया: जब कोई रहस्य खेल में उजागर होता है, तो यह स्वाभाविक रूप से फैलता है। सीन डायरेक्टर पहले उत्पन्न दृश्यों को रखता है, इसलिए एक बार जब कोई NPC किसी दृश्य में कुछ सीखता है, तो वह अगले टर्न के लिए उनके संदर्भ का हिस्सा बन जाता है। दृश्यों के अंत में, वे दृश्य NPC के लिए स्मृतियाँ बन जाते हैं। सत्रों के अंत में, NPC पर्चियाँ अद्यतन हो जाती हैं। इन दोनों का अर्थ है कि किसी व्यक्तिगत NPC का किसी रहस्य का ज्ञान दर्ज हो जाता है, और कहानी अब उस NPC के साथ वास्तव में जानकार में (in the know) होकर जारी रह सकती है।

व्यापार-बंदी (tradeoff)

यह दृष्टिकोण मुफ़्त नहीं है। लागत बढ़ जाती है, हालाँकि लगभग दोगुनी नहीं, क्योंकि सीन डायरेक्टर का संदर्भ अपेक्षाकृत हल्का है। प्रॉम्प्ट कैश भी काफ़ी मदद करता है। जैसे-जैसे दृश्य आगे बढ़ता है, नए टर्न संदर्भ के अंत में जुड़ते हैं, जिसका अर्थ है कि प्रॉम्प्ट का 90% कैश से आ सकता है बजाय हर बार नए सिरे से उत्पन्न होने के।

वर्तमान में यह सभी अभियानों के लिए सक्षम है। वास्तुकला परिवर्तन काफ़ी महत्वपूर्ण हैं कि इस सेटअप को बायपास करने वाला कोई रास्ता प्रदान करना समझ में नहीं आता। अधिकांश अभियानों के लिए व्यापार-बंदी इसके लायक है, भले ही आपकी कहानी में प्रमुख रहस्य न हों, क्योंकि NPC सुसंगता हर हाल में मायने रखती है।

यह क्या अनलॉक करता है: गेम डायरेक्टर

दो-चरणीय पाइपलाइन एक उपयोगी बात प्रदर्शित करती है: कार्यों को अधिक विशिष्ट AI के बीच, अनुकूलित संदर्भों के साथ विभाजित करना एक AI से सब कुछ करवाने से बेहतर परिणाम देता है। यह एक स्वाभाविक तीसरे चरण की ओर ले जा रहा है।

मैं इसे गेम डायरेक्टर कहता हूँ। इसका काम TTRPG यांत्रिकी को संभालना है: पासे का फेंक, कौशल परीक्षण, स्थिति ट्रैकिंग। इसका संदर्भ अन्य से अलग रूप से अनुकूलित किया जा सकता है, क्योंकि इसे कथानक इतिहास से कम और खेल नियमों और खेल स्थिति से अधिक परवाह है।

गेम डायरेक्टर जोड़ने का एक अप्रत्याशित लाभ है। चूँकि यह हर टर्न पर चलता है—यदि खिलाड़ी कुछ ऐसा करने का प्रयास करता है जिसके लिए कौशल-परीक्षण की आवश्यकता हो—तो यह यह भी तय कर सकता है कि खिलाड़ी इनपुट अंतिम दृश्य का विस्तार है या कुछ नया है। यदि खिलाड़ी बिना कथानक को आगे बढ़ाए सिर्फ़ NPC से बात कर रहा है, तो गेम डायरेक्टर स्टोरी डायरेक्टर को पूरी तरह छोड़ सकता है और सीन डायरेक्टर को दृश्य अपने आगे बढ़ाने दे सकता है। सीन डायरेक्टर के पास NPC पर्चियाँ हैं और वह स्मृति खोज कर सकता है, इसलिए वह पूर्ण स्टोरी डायरेक्टर कॉल के ओवरहेड के बिना ऐसे संवाद को जारी रख सकता है।

वास्तुकला इसी दिशा में जा रही है: एक तीन-चरणीय पाइपलाइन जो क्रमशः अधिक विशिष्ट होती जाती है, हर परत में लागत-बचत अनुकूलन अंतर्निहित होते हैं।

Stage Whisper उन लोगों के लिए बनाया गया है जो एक लंबे-चलने वाले अभियान की गहराई और सुसंगता के साथ सोलो TTRPG खेलना चाहते हैं। स्मृति प्रणाली, इस संदर्भ अलगाव वास्तुकला सहित, वही है जो इसे संभव बनाती है। यह व्यवहार में कैसे काम करता है देखने के लिए शुरू करें या हमारे Discord से जुड़ें

Stage Whisper की स्मृति प्रणाली के बारे में अधिक के लिए, देखें भाग 1: कथानक-सुसंगता और भाग 3: NPC का स्वप्नन