इस प्रोजेक्ट के बारे में

Generals.io Bots, generals.io रणनीति खेल का एक उच्च-प्रदर्शन सिम्युलेटर है, जो Python में JAX के ऊपर लिखा गया है और सुदृढीकरण सीखने के अनुसंधान के लिए लक्षित है। यह एक तेज़, फंक्शनल वातावरण प्रदान करता है जहाँ एजेंटों को प्रशिक्षित और मूल्यांकित किया जा सकता है, साथ ही एजेंटों को लाइव generals.io सर्वर पर तैनात करने के लिए टूलिंग भी प्रदान करता है। परियोजना द्वारा वर्णित मुख्य विशेषताएँ: - बड़े पैमाने पर समानांतरता के लिए वेक्टरीकृत vmap समर्थन के साथ पूर्णतः JIT-संकलित JAX सिम्युलेटर। - अपरिवर्तनीय स्थिति और पुनरुत्पादनीय ट्रैजेक्टरीज़ के साथ शुद्ध फंक्शनल डिज़ाइन। - generals.io सर्वर के लिए लाइव तैनाती समर्थन। - खेलों को विज़ुअलाइज़ करने और एजेंट व्यवहार को डीबग करने के लिए अंतर्निहित GUI। इंस्टॉलेशन रिपॉज़िटरी को क्लोन करके और pip install -e . चलाकर किया जाता है। README में उल्लेख है कि सिम्युलेटर वर्तमान खेल नियमों का पालन करता है, और दावा किया गया है कि इसके माध्यम से दोबारा चलाए गए 10,000 रैंक वाले खेल हर मोड़ के बाद generals.io के अपने इंजन से मेल खाते हैं। शुरुआत करना: GeneralsEnv क्लास ग्रिड आयाम और एक ट्रंकेशन सीमा लेती है। एक reset कॉल एक ऑटो-रीसेट पूल और एक प्रारंभिक स्थिति लौटाती है। एजेंट एक act(observation, key) इंटरफ़ेस लागू करते हैं; README में RandomAgent और ExpanderAgent को उदाहरण के रूप में दिखाया गया है। गेम लूप प्रति खिलाड़ी ऑब्ज़र्वेशन प्राप्त करता है, क्रियाओं को स्टैक करता है, और वातावरण को स्टेप करता है, जो पूर्व-निर्मित पूल से ऑटो-रीसेट होता है। एक वेक्टरीकृत उदाहरण jax.vmap के साथ कई वातावरणों को समानांतर में चलाने का प्रदर्शन करता है, जिसमें साझा पूल और बैच्ड स्थितियों का उपयोग किया जाता है। वातावरण 1v1, N-खिलाड़ी फ्री-फॉर-ऑल और टीम खेलों का समर्थन करता है। टीमों के लिए, किसी टीममेट की सेल पर जाने पर सेनाएँ एकत्रित होती हैं और सेल स्थानांतरित हो जाती है; किसी जनरल पर कब्ज़ा करने पर पीड़ित की सेलें आधी सेनाओं के साथ स्थानांतरित हो जाती हैं और वह खिलाड़ी समाप्त हो जाता है; एक टीम केवल तभी हारती है जब उसके सभी जनरल गिर जाते हैं, और अंतिम बची टीम जीतती है। दृष्टि टीम के भीतर साझा होती है, और ऑब्ज़र्वेशन में सहयोगी सेलें, सहयोगी भूमि गणना और सहयोगी सेना गणना शामिल होती है, जिसमें प्रतिद्वंद्वी फ़ील्ड सभी दुश्मन टीमों को एक साथ कवर करते हैं। ऑब्ज़र्वेशन में armies, generals, castles, mountains, owned/opponent/neutral/fog cells, structures in fog, land और army counts, timestep, और allied फ़ील्ड जैसे फ़ील्ड शामिल होते हैं। as_tensor() हेल्पर पहले 14 फ़ील्ड को (14, H, W) टेंसर में स्टैक करता है, वैकल्पिक रूप से allied चैनल जोड़ता है। क्रियाएँ पाँच पूर्णांकों की सरणियाँ होती हैं: pass, row, col, direction, और split। एक compute_valid_move_mask हेल्पर वैध चालों को (H, W, 4) मास्क के रूप में लौटाता है। तैनाती generals.remote.autopilot का उपयोग करती है, जिसमें एजेंट, user_id और lobby_id होते हैं, ताकि लाइव generals.io सर्वर से जुड़ा जा सके। README में Matej Straka और Martin Schmid द्वारा 2025 के arXiv पेपर "Artificial Generals Intelligence: Mastering Generals.io with Reinforcement Learning" के लिए एक BibTeX उद्धरण शामिल है।