Salvo · مادة للتفكير
تحت الفعل البسيط المتمثل في النقر على الخلايا يكمن محرّك حتمي يُجسّد أساطيل مخفية، واستدلالًا مرجَّحًا بالاحتمالات، والمبارزة الكلاسيكية بين الإخفاء والاكتشاف. 3
كُتب وحُرِّر بالإنجليزية. أُنتجت هذه النسخة العربية بالترجمة الآلية؛ وحيثما كانت الدقة مهمة، فالأصل الإنجليزي هو المرجع المعتمد. اقرأ الأصل بالإنجليزية ←
في قلب اللعبة يجلس زوج من كائنات Board، يمثّل أحدهما موقعك المخفي ويمثّل الآخر موقع الخصم المخفي. يحمل كل لوح أسطولًا من السفن موضوعة على شبكة مسطَّرة، لكن مواقعها تبقى مخفية عن الطرف الآخر. تطلق النار على شبكة العدو بينما يطلق الذكاء الاصطناعي النار على شبكتك، وكل رمية إما تصيب سفينة أو تسقط في ماء فارغ. تُرسي هذه البنية ذات اللوحين عدم التماثل المعلوماتي الأساسي في مبارزة الأساطيل المخفية: يعرف كل طرف لوحه معرفة تامة، لكنه لا يستطيع استنتاج تشكيل الطرف الآخر إلا من نمط رمياته. 3
تماثل هذا الإعداد هو ما يمنح اللعبة طابعها. لا يرى أي من الطرفين سفن الآخر مباشرة. بل يتعيّن على كلا الطرفين بناء نموذج ذهني للشبكة المخفية من التغذية الراجعة الشحيحة للإصابات والإخفاقات. تصبح كل رمية بيانات، وكل إصابة تُضيّق الاحتمالات، وكل إخفاق يستبعد مساحة من الاعتبار. يدير منسّق اللعبة في المحرّك هذين اللوحين، ويضمن تسجيل الرميات، ونسب الإصابات على نحو صحيح، وألّا تنتهي اللعبة إلا حين يُغرَق أسطول أحد الطرفين بأكمله. 3
قبل أن يبدأ اللعب، يستدعي المحرّك randomFleet لنشر سفن الذكاء الاصطناعي بطريقة عشوائية. هذه العشوائية ليست اعتباطية؛ فهي مبذورة، أي إن قيمة بذرة معيّنة ستنتج دائمًا النشر نفسه. هذه الحتمية المبذورة خيار تصميمي يجعل اللعبة قابلة لإعادة الإنتاج وللاختبار. إذا شغّلت اللعبة بالبذرة نفسها، فستحصل على مواضع السفن نفسها، والتسلسل نفسه من قرارات الذكاء الاصطناعي، والنتيجة نفسها. هذه الخاصية قيّمة لتصحيح الأخطاء ولفهم كيف يتصرّف الذكاء الاصطناعي في ظروف مختلفة. 3
بمجرد نشر الأسطول، تصبح القواعد التي تحكم اللعب ثابتة وحتمية. لا يرمي الذكاء الاصطناعي النرد، ولا يُدخل المحرّك عشوائية في منتصف اللعبة. كل قرار يتخذه الذكاء الاصطناعي ينبع من نموذج الاحتمالات الذي يحتفظ به، وكل رمية تطلقها تُسجَّل وتُحلَّل. مصدر التباين الوحيد هو البذرة التي تحدّد الموضع الأولي للأسطول. وهذا يعني أن اللعبة في نهاية المطاف لغز: في ظل قيود القواعد والتغذية الراجعة من الرميات، هل تستطيع استنتاج التشكيل المخفي قبل أن يستنتج الذكاء الاصطناعي تشكيلك؟ 3
عندما تطلق رمية، يسجّلها المحرّك على اللوح المستهدف ويتحقق مما إذا كانت الرمية قد أصابت أم أخفقت. يتم ذلك عبر الدالة fire، التي تحدّث حالة اللوح وتحدّد النتيجة. تُعلّم الإصابة الخلية بوصفها مشغولة بسفينة، بينما يُعلّم الإخفاق الخلية بوصفها ماءً فارغًا. ثم يتحقق المحرّك مما إذا كانت السفينة التي تحتوي تلك الخلية قد أُغرقت بالكامل بفحص جميع خلاياها. إذا أُصيبت كل خلايا السفينة، تكون السفينة قد غرقت، وتُبلَّغ هذه المعلومة لكلا الطرفين. 3
شرط الفوز بسيط لكنه حاسم. يفوز الطرف عندما تغرق كل سفن الخصم. يُتحقق من ذلك عبر الدالة allSunk، التي تفحص ما إذا كانت كل سفينة على لوح الخصم قد أُصيبت بالكامل. تنتهي اللعبة فورًا عند تحقق هذا الشرط. طبيعة شرط الفوز هذه القائمة على مبدأ كل شيء أو لا شيء تعني أن كل رمية مهمة، وأن الضغط لإغراق السفن بسرعة يُوازَن مع الحاجة إلى تجنّب كشف تشكيلك أنت. 3
الخصم في هذه اللعبة ليس راميًا عشوائيًا بسيطًا. إنه ذكاء اصطناعي يستهدف بالاحتمالات، يزن مدى احتمال أن تحتوي كل خلية مخفية على سفينة. يحتفظ الذكاء الاصطناعي بنموذج احتمالي لشبكة العدو، ويحدّثه مع إطلاق الرميات وتلقّي التغذية الراجعة. تُعلَّم الخلايا التي لا يمكن أن تحتوي على سفن بسبب قيود مواضع السفن المتبقية بوصفها غير مرجّحة، بينما تُعلَّم الخلايا التي يجب أن تحتوي على سفن لاستيعاب المواضع المتبقية بوصفها مرجّحة. ثم يطلق الذكاء الاصطناعي النار على الخلية ذات الاحتمال الأعلى، محوّلًا التخمين الأعمى إلى بحث مستنير. 3
يستند هذا النموذج الاحتمالي إلى رياضيات الأرجحية، حيث تُوصف الأحداث بأعداد بين الصفر والواحد 2. احتمال يساوي صفرًا يعني أن الحدث لا يمكن أن يقع، بينما احتمال يساوي واحدًا يعني أنه لا بد أن يقع. يستخدم الذكاء الاصطناعي هذه الأوصاف العددية لتوجيه رمياته، مفضّلًا الخلايا التي يكون فيها احتمال العثور على سفينة هو الأعلى. هذا النهج هو ما يميّز الذكاء الاصطناعي عن رامٍ عشوائي بحت ويمنحه سلوك المطاردة المميّز له.
يمكن وصف سلوك الذكاء الاصطناعي في مرحلتين: المطاردة والاستهداف. في مرحلة المطاردة، يبحث الذكاء الاصطناعي عن السفن بإطلاق النار على الخلايا التي يُرجَّح أن تقبع فيها السفن غير المكتشفة. هذا بحث واسع يهدف إلى إيجاد أول تماس مع سفن العدو. وبمجرد تسجيل إصابة، ينتقل الذكاء الاصطناعي إلى مرحلة الاستهداف، حيث يركّز على الخلايا المجاورة للإصابة لإتمام إغراق تلك السفينة. يعكس هذا النهج ذو المرحلتين الطريقة التي يتعامل بها اللاعبون البشر مع اللعبة: اعثر على السفن أولًا، ثم أغرقها. 3
يتحدّد الانتقال بين المطاردة والاستهداف بحسب ما إذا كانت الرمية الأخيرة إصابة أم إخفاقًا. إذا أخفقت الرمية الأخيرة، يعود الذكاء الاصطناعي إلى وضع المطاردة ويبحث عن الخلايا ذات الاحتمال الأعلى. وإذا أصابت الرمية الأخيرة، يدخل الذكاء الاصطناعي وضع الاستهداف ويطلق النار على الخلايا المجاورة للإصابة. هذه القاعدة البسيطة، مقترنة بنموذج الاحتمالات، تُنشئ استراتيجية متماسكة توازن بين الاستكشاف والاستغلال. يستكشف الذكاء الاصطناعي الشبكة للعثور على السفن ويستغل معرفته بإصابة ما لإغراق تلك السفينة بكفاءة. 3
للذكاء الاصطناعي ثلاثة مستويات قوة من الصعوبة تضبط سلوكه. تؤثر هذه المستويات في كيفية وزن الذكاء الاصطناعي للاحتمالات واتخاذه للقرارات. في المستويات الأدنى، قد يرتكب الذكاء الاصطناعي أخطاء أكثر أو يكون أقل شراسة في استهدافه. وفي المستويات الأعلى، يكون الذكاء الاصطناعي أكثر اتساقًا في حساباته الاحتمالية وأكثر ضراوة في استهدافه. يتيح هذا التنوع في المستويات للاعبين إيجاد مستوى التحدي الذي يناسبهم، من اللعب العرضي إلى المنافسة الجادة.
يقيم التنفيذ الدقيق لهذه المستويات في مكوّن الذكاء الاصطناعي في المحرّك، أي الفئة SalvoAI. تعدّل مستويات الصعوبة كيفية تفسير الذكاء الاصطناعي لنموذج الاحتمالات وكيفية موازنته بين الاستكشاف والاستغلال. يتيح هذا التصميم للذكاء الاصطناعي أن يكون في متناول اللاعبين العرضيين ومتحدّيًا لذوي الخبرة في آن واحد، من دون تغيير الآليات الأساسية للعبة. 3
فوق القواعد الكلاسيكية تقبع لمسة جديدة: نبضة السونار. تتيح هذه القدرة لأحد الطرفين كشف قراءة بحجم 3×3 من شبكة العدو مقابل التضحية برمية ذلك الدور. تكشف نبضة السونار ما إذا كانت كل خلية في منطقة 3×3 تحتوي على سفينة أم أنها ماء فارغ. يمكن أن تكون هذه المعلومات لا تُقدَّر بثمن لحصر موقع السفن، لكنها تأتي بثمن خسارة رميتك في ذلك الدور. 3
قرار استخدام نبضة السونار قرار استراتيجي. متى تستحق المعلومات ثمنها؟ إذا كنت تكافح للعثور على السفن، فقد توفر لك نبضة السونار الاختراق الذي تحتاجه. وإذا كنت على وشك إغراق سفينة، فقد يكون ثمن خسارة رميتك باهظًا جدًا. تضيف نبضة السونار طبقة من إدارة الموارد إلى اللعبة، إذ تُجبر اللاعبين على الموازنة بين قيمة المعلومات وقيمة الفعل. 3
لمسة أخرى على القواعد الكلاسيكية هي إعادة التموضع مرة واحدة في كل لعبة. يجوز لكل طرف أن يحرّك إحدى سفنه مرة واحدة أثناء اللعبة. هذه المراوغة الدفاعية لا تكلّف دورًا، أي إنك تستطيع إعادة التموضع ثم إطلاق رمية في دورك. تتيح لك قدرة إعادة التموضع إبعاد سفينة عن الخطر عندما تكون مهددة، أو نقلها إلى موقع أسهل في الدفاع عنه. 3
قدرة إعادة التموضع خيار يُستخدم مرة واحدة، وهذا ما يجعلها ثمينة. متى ينبغي أن تستخدمها؟ إذا كانت سفينة على وشك الغرق، فقد تنقذها إعادة التموضع. وإذا كنت واثقًا من موقعك الحالي، فقد تكون إعادة التموضع هدرًا. قرار إعادة التموضع قرار استراتيجي يتطلب دراسة متأنية للحالة الراهنة للعبة والأفعال المرجّحة لخصمك. 3
تحت كل هذه الآليات تكمن القاعدة الكلاسيكية: رمية واحدة في كل دور. يطلق كل طرف رمية واحدة بالضبط في كل دور، بالتناوب ذهابًا وإيابًا. تُرسي هذه القاعدة إيقاع اللعبة وتضمن أن يحظى كلا الطرفين بفرصة متساوية للتصرف. قاعدة الرمية الواحدة في كل دور هي ما يجعل اللعبة مبارزة ذكاء لا سباق سرعة. 3
هذه القاعدة الكلاسيكية هي ما يرسّخ اللعبة في تقليد «حرب السفن»، وهي لعبة تخمين استراتيجية للاعبَين تُلعب على شبكات مسطَّرة حيث يُخفى أسطول كل لاعب عن خصمه 1. قاعدة الرمية الواحدة في كل دور هي ما يجعل اللعبة اختبارًا للاستنتاج والاحتمالات لا اختبارًا لردود الفعل. إنها قاعدة بسيطة، لكنها القاعدة التي تمنح اللعبة طابعها وتحدّيها.
المحرّك نقي وحتمي مبذور، يحرّكه مولّد الأعداد العشوائية المبذور الخاص به. وهذا يعني أن كل جانب من جوانب اللعبة يتحدّد بقيمة البذرة المقدَّمة في البداية. بالبذرة نفسها، ستنتج اللعبة دائمًا التسلسل نفسه من الأحداث، من الموضع الأولي للأسطول إلى الرمية الأخيرة. تجعل هذه الخاصية اللعبة قابلة للاختبار، إذ يمكن إعادة إنتاج السيناريو نفسه وفحصه. 3
للحتمية المبذورة أيضًا تبعات على فهم اللعبة. إذا أردت أن تفهم كيف يتصرّف الذكاء الاصطناعي في سيناريو معيّن، فيمكنك تشغيل اللعبة ببذرة محددة ومراقبة النتيجة. وإذا أردت اختبار استراتيجية معيّنة، فيمكنك تشغيل اللعبة مرات عدة بالبذرة نفسها ومعاينة أدائها. هذه القابلية لإعادة الإنتاج ميزة قيّمة للاعبين والمطوّرين على حد سواء.
Board with a hidden fleet, the human fires at the enemy fleet and the AI at the human's, one shot per turn (classic rules), fire records a hit or miss, and a side wins when the opponent's ships are all sunk (allSunk); the opponent is a probability-targeting SalvoAI with three difficulty strengths that "hunts" for ships by favouring the cells where an undiscovered ship is most likely to sit and then "targets" the neighbours of a hit to finish it; two twists sit on the classic rules, a sonar ping reveals a 3×3 ship/empty readout but costs that turn's shot, and each side may reposition one of its own ships once per game (a dodge that does not cost the turn); and the engine is pure and seeded-deterministic.