ऐसे बॉट जो सब एक जैसा नहीं बोलते
नियमित खिलाड़ियों की हर पंक्ति छह वाक्यों में से एक थी। अब सैकड़ों हैं, हर पात्र का अपना अंदाज़ है, और जब तक पिछली पंक्ति स्क्रीन पर है तब तक कुछ नहीं दोहराया जाता।

आसान शब्दों में
लॉबी में नियमित खिलाड़ियों के आने के दो दिन बाद ही शिकायत साफ़ दिखने लगी: वे सब एक ही बात कहते थे। एक ने एक ही शाम में "quick game anyone", "lets play", "quick game anyone", "need one more", "need one more" लिखा। दूसरे ने नब्बे मिनट में तीन बार "anyone up for a game" कहा।
डेटाबेस ने साफ़ बता दिया: उनमें से किसी की भी हर पंक्ति उन्हीं छह वाक्यों में से एक थी। गेम के भीतर भी यही हाल था — एक निकनेम ने "had to have it" नौ बार कहा। और एक तीसरा संकेत भी था जिसकी शिकायत किसी ने नहीं की: बारहों बिलकुल एक ही अंदाज़ में लिखते थे — छोटे अक्षर, कटी-फटी पंक्तियाँ, कोई विराम-चिह्न नहीं — जबकि उसी कमरे में इंसान "Hi guys!", "Someone wanne play?" और "Let’s goooooooooo!" टाइप कर रहे थे।
अब हर नियमित खिलाड़ी की अपनी आवाज़ है, जो इस पर आधारित है कि वह कौन है — हर बार यूँ ही चुनी नहीं जाती। पूरे समूह में इसका अर्थ है:
- कुछ छोटे अक्षरों में लिखते हैं, कुछ पूरे वाक्यों में — और वे वैसे ही बने रहते हैं;
- कुछ ख़ूब विराम-चिह्न लगाते हैं, कुछ बिलकुल नहीं;
- हर एक के पास दो-तीन इमोजी हैं जो वह सचमुच इस्तेमाल करता है, साझा भंडार नहीं;
- कुछ शब्द खींचते हैं, कुछ संक्षेप लिखते हैं, कुछ से कभी-कभी टाइपिंग की ग़लती होती है;
- और वे जो कहते हैं वह कमरे से मेल खाता है: चार सीटें ख़ाली हों तो कोई "एक और चाहिए" नहीं कहता।
वे हर जगह केवल अंग्रेज़ी में लिखते हैं — यही निर्णय गेम में बॉट के बाक़ी व्यवहार पर भी लागू है।
तकनीकी जानकारी
यह संग्रह मंशा के अनुसार व्यवस्थित है — अभिवादन, गेम की तलाश, एक और खिलाड़ी की ज़रूरत, अभी-अभी शामिल होना, मोड पर टिप्पणी, इंतज़ार, हँसी-मज़ाक, हौसला-अफ़ज़ाई, दोबारा मुक़ाबला — और इनमें से दो मंशाएँ असली कमरे से भरी जाती हैं, इसलिए वाक्य उस बात का खंडन नहीं कर सकता जो खिलाड़ी सामने देख रहा है।
पात्र की आवाज़ उसके निकनेम से निकाली जाती है, संग्रहीत नहीं की जाती — इसलिए पात्र-टाइप में किसी नए फ़ील्ड की ज़रूरत नहीं और प्रक्रिया पुनः आरंभ होने पर भी वह वैसी ही रहती है:
// botChat.voice.ts — the voice is a pure function of the nickname
const rng = createRng(`voice:${persona.nickname}`);
return {
sentenceCase: rng.float() < 0.34,
punctuation: pick(rng, ['none', 'light', 'heavy']),
emoji: pickN(rng, EMOJI_POOL, rng.int(2, 3)), // habitual, not shared
elongation: rng.float() * 0.2,
typoRate: rng.float() * 0.06,
};दोहराव को एक छोटी स्मृति सँभालती है जिसका दायरा कमरे और पात्र दोनों तक सीमित है, इसलिए वही पंक्ति तब तक नहीं लौट सकती जब तक वह स्क्रीन पर है, और एक ही कमरे के दो पात्र एक-दूसरे की नक़ल नहीं कर सकते।
दिलचस्प बग टाइपो वाले रूपांतरण में था। बॉट चैट सर्विस रोल से लिखी जाती है, जो उस अपशब्द फ़िल्टर को सीधे पार कर जाती है जिससे इंसानी संदेश गुज़रते हैं — इसलिए एक "वास्तविक" टाइपो कोई प्रतिबंधित शब्द बना सकता था ("and" ग़लती से "nad" सूची में है)। 2,600 नमूनों वाला परीक्षण आराम से पास हो गया; समस्या सामने आने में लगभग 68,000 ड्रॉ लगे। अब परीक्षण लगभग 260,000 संभावित स्ट्रिंग्स की सम्पूर्ण गणना करता है, 1.4 सेकंड में चलता है, और वही जनरेटर बुलाता है जिन्हें चैट परत इस्तेमाल करती है — पहली कोशिश ने उन्हें दोबारा लिखा था और तुरंत असल कोड से हट गई।
