Salvo · विचार के लिए भोजन
खानों पर क्लिक करने के सरल कार्य के नीचे एक नियतात्मक इंजन है जो छिपे हुए बेड़ों, प्रायिकता-भारित तर्क और छिपाव और खोज के क्लासिक द्वंद्व का मॉडल बनाता है। 3
अंग्रेज़ी में लिखा और संपादित। यह हिन्दी संस्करण मशीनी अनुवाद से तैयार किया गया है; जहाँ सटीकता महत्वपूर्ण हो, वहाँ अंग्रेज़ी मूल ही प्रामाणिक है। मूल अंग्रेज़ी में पढ़ें →
खेल के केंद्र में Board ऑब्जेक्ट्स की एक जोड़ी होती है, जिनमें से एक आपकी छिपी हुई स्थिति का प्रतिनिधित्व करता है और दूसरा प्रतिद्वंद्वी की छिपी हुई स्थिति का। प्रत्येक बोर्ड पर एक रेखांकित ग्रिड पर रखे जहाज़ों का एक बेड़ा होता है, लेकिन उनके स्थान दूसरे पक्ष से छिपे रहते हैं। आप दुश्मन के ग्रिड पर गोली चलाते हैं जबकि AI आपके ग्रिड पर गोली चलाता है, और प्रत्येक गोली या तो किसी जहाज़ पर लगती है या खाली पानी में गिरती है। यह द्वि-बोर्ड वास्तुकला छिपे बेड़े के द्वंद्व की मूल सूचना-असममिति स्थापित करती है: प्रत्येक पक्ष अपने बोर्ड को पूरी तरह जानता है, लेकिन दूसरे पक्ष के विन्यास का अनुमान केवल अपनी गोलियों के पैटर्न से ही लगा सकता है। 3
इस सेटअप की सममिति ही खेल को उसकी विशेषता देती है। कोई भी पक्ष दूसरे के जहाज़ सीधे नहीं देखता। इसके बजाय, दोनों पक्षों को हिट और मिस की विरल प्रतिक्रिया से छिपे ग्रिड का एक मानसिक मॉडल बनाना पड़ता है। प्रत्येक गोली डेटा बन जाती है, प्रत्येक हिट संभावनाओं को संकुचित करता है, और प्रत्येक मिस विचाराधीन क्षेत्र को घटा देता है। इंजन का खेल-समन्वयक इन दो बोर्डों का प्रबंधन करता है, यह सुनिश्चित करते हुए कि गोलियाँ दर्ज की जाएँ, हिट का सही श्रेय दिया जाए, और खेल तभी समाप्त हो जब एक पक्ष का पूरा बेड़ा डूब चुका हो। 3
खेल शुरू होने से पहले, इंजन randomFleet को कॉल करता है ताकि AI के जहाज़ों को यादृच्छिक ढंग से व्यवस्थित किया जा सके। यह यादृच्छिकता मनमानी नहीं है; यह सीड की गई है, जिसका अर्थ है कि कोई दिया गया सीड मान हमेशा वही लेआउट उत्पन्न करेगा। यह सीड-आधारित नियतात्मकता एक डिज़ाइन चयन है जो खेल को पुनरुत्पादन योग्य और परीक्षण योग्य बनाता है। यदि आप खेल को उसी सीड के साथ चलाते हैं, तो आपको जहाज़ों की वही व्यवस्था, AI निर्णयों का वही क्रम और वही परिणाम मिलेगा। यह गुण डीबगिंग के लिए और यह समझने के लिए मूल्यवान है कि AI विभिन्न परिस्थितियों में कैसे व्यवहार करता है। 3
एक बार बेड़ा व्यवस्थित हो जाने के बाद, खेल को नियंत्रित करने वाले नियम निश्चित और नियतात्मक होते हैं। AI पासे नहीं फेंकता, और इंजन खेल के बीच में यादृच्छिकता नहीं जोड़ता। AI द्वारा लिया गया प्रत्येक निर्णय उस प्रायिकता मॉडल से निकलता है जिसे वह बनाए रखता है, और आपकी चलाई गई प्रत्येक गोली दर्ज और विश्लेषित की जाती है। विविधता का एकमात्र स्रोत वह सीड है जो प्रारंभिक बेड़े की व्यवस्था निर्धारित करता है। इसका अर्थ है कि खेल अंततः एक पहेली है: नियमों के प्रतिबंधों और गोलियों से मिली प्रतिक्रिया को देखते हुए, क्या आप छिपे विन्यास का निष्कर्ष उससे पहले निकाल सकते हैं जब AI आपके विन्यास का निष्कर्ष निकाल ले? 3
जब आप गोली चलाते हैं, तो इंजन उसे लक्ष्य बोर्ड पर दर्ज करता है और जाँचता है कि गोली हिट हुई या मिस। यह fire फ़ंक्शन के माध्यम से किया जाता है, जो बोर्ड की स्थिति को अपडेट करता है और परिणाम निर्धारित करता है। हिट उस खाने को जहाज़ द्वारा अधिकृत के रूप में चिह्नित करता है, जबकि मिस उसे खाली पानी के रूप में चिह्नित करता है। फिर इंजन उस जहाज़ के सभी खानों की जाँच करके यह देखता है कि जिस जहाज़ में वह खाना है, वह पूरी तरह डूब गया है या नहीं। यदि किसी जहाज़ के सभी खाने हिट हो चुके हैं, तो जहाज़ डूब जाता है, और यह जानकारी दोनों पक्षों को बताई जाती है। 3
जीत की शर्त सरल है लेकिन निर्णायक। एक पक्ष तब जीतता है जब प्रतिद्वंद्वी के सभी जहाज़ डूब जाते हैं। यह allSunk फ़ंक्शन के माध्यम से जाँचा जाता है, जो यह देखता है कि प्रतिद्वंद्वी के बोर्ड पर प्रत्येक जहाज़ पूरी तरह हिट हो चुका है या नहीं। जब यह शर्त पूरी होती है, तो खेल तुरंत समाप्त हो जाता है। जीत की शर्त की यह सब-या-कुछ-नहीं प्रकृति का अर्थ है कि प्रत्येक गोली मायने रखती है, और जहाज़ों को तेज़ी से डुबोने का दबाव अपने विन्यास को उजागर होने से बचाने की आवश्यकता के साथ संतुलित रहता है। 3
इस खेल में प्रतिद्वंद्वी कोई साधारण यादृच्छिक निशानेबाज़ नहीं है। यह प्रायिकता के आधार पर लक्ष्य साधने वाला AI है जो यह आँकता है कि प्रत्येक छिपे हुए खाने में जहाज़ होने की संभावना कितनी है। AI दुश्मन के ग्रिड का एक प्रायिकता मॉडल बनाए रखता है, और गोलियाँ चलने और प्रतिक्रिया मिलने के साथ उसे अपडेट करता रहता है। जिन खानों में शेष जहाज़ों की व्यवस्था के प्रतिबंधों के कारण जहाज़ नहीं हो सकते, उन्हें असंभाव्य चिह्नित किया जाता है, जबकि जिन खानों में शेष व्यवस्थाओं को समायोजित करने के लिए जहाज़ होना अनिवार्य है, उन्हें संभाव्य चिह्नित किया जाता है। फिर AI सबसे अधिक प्रायिकता वाले खाने पर गोली चलाता है, जिससे अंधा अनुमान सूचित खोज में बदल जाता है। 3
यह प्रायिकता मॉडल संभाव्यता के गणित पर आधारित है, जहाँ घटनाओं को शून्य और एक के बीच की संख्याओं द्वारा वर्णित किया जाता है 2। शून्य प्रायिकता का अर्थ है कि घटना नहीं हो सकती, जबकि एक प्रायिकता का अर्थ है कि वह अवश्य होगी। AI इन संख्यात्मक वर्णनों का उपयोग अपनी गोलियों के मार्गदर्शन के लिए करता है, और उन खानों को प्राथमिकता देता है जहाँ जहाज़ मिलने की प्रायिकता सबसे अधिक होती है। यही दृष्टिकोण AI को एक पूर्णतः यादृच्छिक निशानेबाज़ से अलग करता है और उसे उसका विशिष्ट शिकार-व्यवहार प्रदान करता है।
AI के व्यवहार को दो चरणों में वर्णित किया जा सकता है: शिकार और लक्ष्य। शिकार चरण में, AI उन खानों पर गोली चलाकर जहाज़ खोजता है जहाँ अनखोजे जहाज़ों के होने की संभावना सबसे अधिक है। यह एक व्यापक खोज है जिसका उद्देश्य दुश्मन के जहाज़ों से पहला संपर्क बनाना है। एक बार हिट दर्ज होने पर, AI लक्ष्य चरण में प्रवेश करता है, जहाँ वह उस जहाज़ को डुबोने का काम पूरा करने के लिए हिट के पड़ोसी खानों पर ध्यान केंद्रित करता है। यह द्वि-चरण दृष्टिकोण उसी तरीके को प्रतिबिंबित करता है जिससे मानव खिलाड़ी खेल को अपनाते हैं: पहले जहाज़ खोजें, फिर उन्हें डुबोएँ। 3
शिकार और लक्ष्य के बीच संक्रमण इस बात से निर्धारित होता है कि आखिरी गोली हिट थी या मिस। यदि आखिरी गोली मिस हुई, तो AI शिकार मोड में लौट जाता है और सबसे अधिक प्रायिकता वाले खानों की खोज करता है। यदि आखिरी गोली हिट हुई, तो AI लक्ष्य मोड में प्रवेश करता है और हिट के पड़ोसी खानों पर गोली चलाता है। यह सरल नियम, प्रायिकता मॉडल के साथ मिलकर, एक सुसंगत रणनीति बनाता है जो अन्वेषण और दोहन के बीच संतुलन बनाए रखती है। AI जहाज़ खोजने के लिए ग्रिड का अन्वेषण करता है और उस जहाज़ को दक्षता से डुबोने के लिए हिट के अपने ज्ञान का दोहन करता है। 3
AI में तीन कठिनाई शक्तियाँ हैं जो इसके व्यवहार को समायोजित करती हैं। ये शक्तियाँ इस बात को प्रभावित करती हैं कि AI प्रायिकताओं को कैसे तौलता है और निर्णय कैसे लेता है। निचली शक्तियों पर, AI अधिक गलतियाँ कर सकता है या लक्ष्य साधने में कम आक्रामक हो सकता है। ऊँची शक्तियों पर, AI अपनी प्रायिकता गणनाओं में अधिक सुसंगत होता है और लक्ष्य साधने में अधिक निर्मम होता है। शक्तियों की यह विविधता खिलाड़ियों को अपने अनुकूल चुनौती स्तर खोजने देती है, चाहे वह हल्का-फुल्का खेल हो या गंभीर प्रतिस्पर्धा।
इन शक्तियों का सटीक कार्यान्वयन इंजन के AI घटक, SalvoAI क्लास, में रहता है। कठिनाई स्तर इस बात को संशोधित करते हैं कि AI प्रायिकता मॉडल की व्याख्या कैसे करता है और अन्वेषण और दोहन के बीच संतुलन कैसे बनाता है। यह डिज़ाइन खेल की मूल यांत्रिकी को बदले बिना AI को सामान्य खिलाड़ियों के लिए सुलभ और अनुभवी खिलाड़ियों के लिए चुनौतीपूर्ण, दोनों बनाता है। 3
क्लासिक नियमों के ऊपर एक मोड़ है: सोनार पिंग। यह क्षमता किसी पक्ष को उस बारी की गोली की कीमत पर दुश्मन के ग्रिड का 3×3 रीडआउट प्रकट करने देती है। सोनार पिंग यह प्रकट करता है कि 3×3 क्षेत्र के प्रत्येक खाने में जहाज़ है या खाली पानी। यह जानकारी जहाज़ों की स्थिति का दायरा सीमित करने के लिए अमूल्य हो सकती है, लेकिन इसकी कीमत उस बारी की अपनी गोली खो देना है। 3
सोनार पिंग का उपयोग करने का निर्णय एक रणनीतिक निर्णय है। जानकारी कब उसकी कीमत के लायक होती है? यदि आप जहाज़ खोजने में संघर्ष कर रहे हैं, तो सोनार पिंग आपको वह सफलता दिला सकता है जिसकी आपको ज़रूरत है। यदि आप किसी जहाज़ को डुबोने के करीब हैं, तो अपनी गोली खो देने की कीमत बहुत अधिक हो सकती है। सोनार पिंग खेल में संसाधन प्रबंधन की एक परत जोड़ता है, जो खिलाड़ियों को जानकारी के मूल्य को कार्रवाई के मूल्य के विरुद्ध तौलने के लिए बाध्य करता है। 3
क्लासिक नियमों पर एक और मोड़ प्रति खेल एक बार का स्थान-परिवर्तन है। प्रत्येक पक्ष खेल के दौरान अपने किसी एक जहाज़ का स्थान एक बार बदल सकता है। इस रक्षात्मक बचाव में बारी खर्च नहीं होती, जिसका अर्थ है कि आप स्थान बदल सकते हैं और फिर भी अपनी बारी में गोली चला सकते हैं। स्थान-परिवर्तन की क्षमता आपको किसी जहाज़ के खतरे में होने पर उसे खतरे से बाहर निकालने, या उसे अधिक सुरक्षित स्थान पर ले जाने देती है। 3
स्थान-परिवर्तन की क्षमता एक बार का विकल्प है, जो इसे क़ीमती बनाता है। आपको इसका उपयोग कब करना चाहिए? यदि कोई जहाज़ डूबने वाला है, तो स्थान-परिवर्तन उसे बचा सकता है। यदि आप अपनी वर्तमान स्थिति को लेकर आश्वस्त हैं, तो स्थान-परिवर्तन व्यर्थ हो सकता है। स्थान बदलने का निर्णय एक रणनीतिक निर्णय है, जिसके लिए खेल की वर्तमान स्थिति और आपके प्रतिद्वंद्वी की संभावित कार्रवाइयों पर सावधानीपूर्वक विचार आवश्यक है। 3
इन सभी तंत्रों के नीचे प्रति बारी एक गोली का क्लासिक नियम है। प्रत्येक पक्ष बारी-बारी से प्रति बारी ठीक एक गोली चलाता है। यह नियम खेल की लय स्थापित करता है और सुनिश्चित करता है कि दोनों पक्षों को कार्रवाई करने का समान अवसर मिले। प्रति बारी एक गोली का नियम ही खेल को गति की दौड़ के बजाय बुद्धि का द्वंद्व बनाता है। 3
यही क्लासिक नियम खेल को बैटलशिप की परंपरा में स्थापित करता है, जो दो खिलाड़ियों के लिए रणनीति-प्रकार का एक अनुमान-खेल है, जिसे रेखांकित ग्रिडों पर खेला जाता है और जिसमें प्रत्येक खिलाड़ी का बेड़ा प्रतिद्वंद्वी से छिपा रहता है 1। प्रति बारी एक गोली का नियम ही खेल को सजगता की परीक्षा के बजाय निगमन और प्रायिकता की परीक्षा बनाता है। यह एक सरल नियम है, लेकिन यही खेल को उसकी पहचान और उसकी चुनौती देता है।
इंजन शुद्ध और सीड-आधारित रूप से नियतात्मक है, जो अपने ही सीड किए गए यादृच्छिक-संख्या जनित्र से संचालित होता है। इसका अर्थ है कि खेल का हर पहलू शुरुआत में दिए गए सीड मान से निर्धारित होता है। वही सीड दिए जाने पर, खेल हमेशा घटनाओं का वही अनुक्रम उत्पन्न करेगा, प्रारंभिक बेड़े की व्यवस्था से लेकर अंतिम गोली तक। यह गुण खेल को परीक्षण योग्य बनाता है, क्योंकि उसी परिदृश्य को पुनरुत्पादित और परखा जा सकता है। 3
सीड-आधारित नियतात्मकता का खेल को समझने पर भी असर पड़ता है। यदि आप समझना चाहते हैं कि AI किसी विशेष परिदृश्य में कैसे व्यवहार करता है, तो आप खेल को एक विशिष्ट सीड के साथ चला सकते हैं और परिणाम देख सकते हैं। यदि आप किसी विशेष रणनीति का परीक्षण करना चाहते हैं, तो आप खेल को उसी सीड के साथ कई बार चला सकते हैं और देख सकते हैं कि वह कैसा प्रदर्शन करती है। यह पुनरुत्पादन-क्षमता खिलाड़ियों और डेवलपर्स दोनों के लिए एक मूल्यवान विशेषता है।
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.