A research-grade multi-agent battle royale. Agents built by different teams enter the same arena, under partial observation, deciding in real time against opponents they have never seen before. The last agent standing wins.
یک بتل رویال چندعامله در سطح پژوهشی. ایجنتهایی که تیمهای مختلف ساختهاند، همزمان وارد یک میدان مشترک میشوند؛ با دید محدود، و در برابر حریفهایی که هرگز ندیدهاند تصمیم میگیرند. آخرین ایجنت باقیمانده، برنده است.
StrikeForce is an open-source, partially observable 2D battle-arena environment built in C++17 — a testbed for imitation learning, reinforcement learning, and multi-agent research, disguised as a playable survival shooter. It ships a full client–server networking protocol, deterministic seeded simulation with frame-level replay logging, an account and progression system, and a pluggable agent-plugin interface so a research policy can be swapped in without touching the simulation core.
Agents see a bounded local window of the map, not the full game state — fog of war is a first-class design constraint.
Every match can be logged frame-by-frame and re-run exactly, for debugging, auditing, and dataset collection.
A dedicated match server authenticates players, assigns teams, and arbitrates the match, with support for networked battle royale.
An agent plugin implements predict, update, and is_manual. Everything else is up to the team.
StrikeForce یک محیط نبرد دوبعدی متنباز با مشاهدهی جزئی است که با C++17 نوشته شده — یک بستر پژوهشی برای یادگیری تقلیدی، یادگیری تقویتی، و تحقیقات چندعامله، در قالب یک بازی بقا و تیراندازی قابلبازی. این محیط یک پروتکل کامل client-server، شبیهسازی دترمینیستیک با seed مشخص و replay در سطح فریم، سیستم حساب کاربری و پیشرفت، و یک رابط Plugin برای agent داراست که با آن میتوان یک policy پژوهشی را بدون دستزدن به هستهی شبیهسازی جایگزین کرد.
ایجنتها فقط یک پنجرهی محلی محدود از نقشه را میبینند، نه کل وضعیت بازی را.
هر Match میتواند فریمبهفریم لاگ شود و دقیقاً دوباره اجرا شود، برای دیباگ، بررسی و جمعآوری دیتاست.
یک سرور اختصاصی بازیکنها را احراز هویت میکند، تیمبندی میکند، و Match را داوری میکند.
یک Agent Plugin سه متد predict، update و is_manual را پیاده میکند. باقی چیزها دست خود تیم است.
This is not each team scoring separately against the environment. All agents are dropped into the same battle royale and play each other directly — opponent behavior is part of the problem, not a fixed backdrop. Every agent runs locally, CPU-only, on its own team's laptop; the competition server just runs the authoritative simulation and relays actions.
اینجا قرار نیست هر تیم جدا جدا در برابر محیط امتیاز بگیرد. همهی ایجنتها با هم وارد یک بتل رویال مشترک میشوند و مستقیماً با هم بازی میکنند — یعنی رفتار حریف بخشی از خود مسئله است. هر ایجنت بهصورت لوکال و فقط روی CPU، روی لپتاپ خود تیم اجرا میشود؛ سرور مسابقه فقط شبیهسازی رسمی را اجرا میکند و اکشنها را رله میکند.
Every submission is reviewed and integration-tested against the official competition build before the event — not on-the-spot.
The verified submission is hash-locked, so what is tested is exactly what runs on match day.
Inference is CPU-only, on the participant's own laptop, over an isolated competition network.
Every match is logged frame-by-frame and fully replayable, so any disputed result can be re-examined.
هر submission قبل از رویداد بررسی و روی build رسمی مسابقه integration-test میشود — نه سر صحنه.
نسخهی تأییدشده hash-lock میشود، تا همان چیزی که تست شده، دقیقاً روز مسابقه اجرا شود.
Inference فقط روی CPU، روی لپتاپ خود participant، و روی شبکهی ایزولهی مسابقه انجام میشود.
هر Match فریمبهفریم لاگ و کاملاً قابل Replay است، تا هر نتیجهی مورد اعتراض قابل بازبینی باشد.
An agent plugin is a class the simulation loop talks to through three methods. Observation encoding, action mapping, network architecture, and heuristic logic all live inside the team's plugin. Pointing two indirection headers (selected_agent.hpp and selected_custom.hpp) at an alternative implementation swaps the policy without modifying the simulation core.
یک Agent Plugin یک کلاس است که حلقهی شبیهسازی از طریق سه متد با آن حرف میزند. انکودینگ مشاهده، نگاشت اکشن، معماری شبکه، و منطق heuristic همگی داخل پلاگین خود تیم قرار میگیرند. با اشارهی دو هدر واسط (selected_agent.hpp و selected_custom.hpp) به یک پیادهسازی جایگزین، میشود policy را بدون دستزدن به هستهی شبیهسازی عوض کرد.
class Agent { public: Agent(bool training = true); // Called once the plugin's encoder has produced the observation. int predict(const std::vector<float>& obs); // Called after a command is applied to the environment. void update(int action, bool imitate); // Queried each frame to decide human input vs. plugin output. bool is_manual(); };
StrikeForce already has research behind it. Three studies use it as their testbed, and all are part of the same broader project this competition grows out of.
StrikeForce از قبل پشتوانهی پژوهشی دارد. سه مطالعه از این محیط بهعنوان testbed خود استفاده کردهاند، و همه بخشی از همان پروژهی بزرگتری هستند که این مسابقه از دل آن بیرون آمده.
The environment paper itself: documents the world, observation and action spaces, software architecture, networking protocol, checkpoint-transfer service, and measured CPU/memory footprint.
A decoupled imitation-learning architecture that removes BPTT from the perception backbone: a Future-Action Predictor trained only to forecast the expert's next actions, feeding a bounded-window Transformer aggregator through a stop-gradient boundary.
Studies correcting a specific, identified failure in an already-trained StrikeForce policy without retraining from scratch, combining parameter-space (EWC) and output-space (KD) preservation, and formalizing the case where the anchor set used for preservation is not itself failure-free.
خودِ مقالهی محیط: دنیا، فضاهای مشاهده و اکشن، معماری نرمافزار، پروتکل شبکه، سرویس انتقال checkpoint، و ردپای CPU/حافظهی اندازهگیریشده را مستند میکند.
یک معماری Imitation Learning جداشده که BPTT را از بکبون ادراکی حذف میکند: یک Future-Action Predictor که فقط برای پیشبینی اکشنهای بعدی خبره آموزش دیده، که خروجیاش از پشت یک مرز stop-gradient وارد یک Transformer aggregator با پنجرهی محدود میشود.
بررسی تصحیح یک خطای رفتاری مشخص در یک policy ازپیشآموزشدیدهی StrikeForce، بدون آموزش دوباره از صفر؛ با ترکیب preservation در فضای پارامتر (EWC) و فضای خروجی (KD)، و صورتبندی حالتی که مجموعهی anchor مورد استفاده برای preservation خودش هم عاری از خطا نیست.
Everything you need to read the code, run the environment, follow the research, and access the checkpoints.
هر چیزی که برای خواندن کد، اجرای محیط، دنبالکردن پژوهش و دسترسی به checkpointها لازم دارید.