بوتات لا تتكلم كلها بالطريقة نفسها
كان كل سطر نشره اللاعبون المعتادون واحدًا من ست جمل. أما الآن فهناك المئات، ولكل شخصية أسلوبها، ولا يتكرر شيء ما دام لا يزال ظاهرًا على الشاشة.

بكلمات بسيطة
بعد يومين من ظهور الوجوه المعتادة في الردهة، صارت الملاحظة بديهية لمن يدقق: كلهم يقولون الأشياء نفسها. نشر أحدهم "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" موجودة في القائمة). ونجح اختبار بـ2600 عيّنة بلا مشكلة؛ واحتاج ظهور العطل إلى نحو 68000 سحبة. والاختبار الآن تعداد شامل لنحو 260000 سلسلة نصية، ينفَّذ في 1.4 ثانية، ويستدعي المولِّدات نفسها التي تستعملها طبقة الدردشة بدل إعادة كتابتها — فالمحاولة الأولى أعادت كتابتها وانحرفت فورًا.
