@HenryXiaoYang 佬的游戏,本来是为了注册码的,结果玩的有点上头,活都差点忘干了 【狂撒LDC和注册码兑换码中】我做了一个人类,AI ,算法同场对抗的游戏:Arena Hero - 福利羊毛 - LINUX DO
Arena Hero · 双策略 AI 决策逻辑
一、实时地图监控(monitor.html + bridge_stream.py)
大图如下:

迷雾与探索:已探索常驻、未探索全黑,蓝色是单位视野范围;切换决策地图也不会重置,是公用的

单位方向标和目标:每个单位都有目标线条和下一步的走向标

资源记录和采集:视野内实心绿点 / 记忆绿色菱形,工人优先自动采集地图上已记录资源(采空后清除标记,或者视野范围内没有也会清除)

敌方核心预测:通过地图上的多个敌方单位预测敌方核心

事件流和设置:右侧实时滚动采集 / 交付 / 接敌 / 移动事件以及一些设置和信息

参数调整:每决策模式可调搜索、探索半径等等参数,有缓存刷新不重置(应该吧 ^-^)

二、新决策(heuristic.py):集中式启发式规划(忘记是哪个佬的项目上改的了,致歉)
每个 tick 由 decide() 统一完成「感知 → 全局规划 → 按角色分发指令」。单位分四种角色:工人 WORKER(经济)、先锋 VANGUARD(近战)、游侠 RANGER(远程)、核心 CORE(大本营)
1. 采集经济(工人)
- 采集交付:工人采到资源后直接回 Core交付;Core 已满时带货待命、等生产消耗;Core 迁移中则跟随 Core 走
- 发现即采:空载工人视野内看到资源直接过去采。
- 集中派单 + 收益驱动:无近处资源时由全局分配器指最近目标;目标带 12 tick 粘性,但只有「新目标收益明显更优(省 > 切换成本,且越接近完成越不愿换)」才切换,防止决策层抖动
- 防死锁细节:空载工人站在 Core 格会让出避免早晚高峰牛马堵车 ^-^;洞内空载优先出洞让出交货通道
2. 探索
- 工人侦察:按 uid 固定方向槽扫 10/20/30 环带,到达即换下一环,目标优先「久未看」的格(顺带发现补给资源)。
- 先锋空闲侦察:空闲时向最近未访问格探索,但限离家半径(战斗单位是防线,跑太远=防御空虚+送死)
- 覆盖潜力评估:用 rollout 估算「去这个点能覆盖多少新区域」,替代「最近未访问」,避免指向死胡同/孤格
3. 巡逻
- 空闲战斗单位不分到具体任务时,进入 巡逻圈(半径递增),持续绕圈巡防,而不是在 Core 门口扎堆
4. 攻击(先锋 / 游侠)
- 贴身必打:相邻格有敌人立即 攻击,不浪费确定命中。
- 全局进攻计划
_plan_combat:每 tick 把可见敌方战斗单位按距离聚成「簇」;每个簇 N 个敌人 → 派遣 2×N 我方单位(优先 1 先锋 + 1 游侠配 1 敌,二打一、不挤人);先派单位在簇周围均匀布成包围环,全员到位后才正式开火,未聚齐前只包围、绝不提前少打多;兵力不足 2× 则跳过不接战。
- 突袭敌 Core:确认静止的敌方核心时,抽调 strike group 去打,守卫留守。
- 游侠:2 HP、射程 ≤3(八方向),在火力位
SHOOT;与先锋「合体」后同步移动避免串行。
5. 防御与守家
- 永久守家预留:家(Core)周边固定留
HOME_VANGUARD + HOME_RANGER,不参与外派。
- 攻城屏障:有威胁时牺牲少量空载工人占「敌→Core 连线前格」延缓推进;部分先锋去拦截。
- 威胁比例触发:Core 周围敌方进攻单位逼近、且我方兵力劣势时,远处工人可自毁腾人口造游侠。
6. 信标与迁移
- 信标就近抢占:冠军信标在搜索半径内才派最近工人去抢(非全图行军)。
- 资源枯竭迁移:长期采不到资源且已探索面积足够时,向未访问方向小步迁移,找新资源区。
7. 记忆系统
- 资源记忆:看到资源写入
resource_memory;视野重新覆盖某格但该格已无资源 → 自动清除(不留幽灵图标)。
- 敌方记忆:追记忆中的敌人超过 25 tick 未确认 → 遗忘,防反复横跳。
- 地图合并:多决策共享
map.json,切换不丢探索进度。
二、旧决策(arena_agent.py):反应式流水线(自己用垃圾模型搓的,比较简陋但是有时候还挺好用)
- 换局检测:Core 位置大幅变化 → 丢弃上局脏地图/障碍数据。
- 记忆更新:地图记忆 + 敌方记忆(含到达消失点且周围无敌人的接触取消)。
- 信标搬运工
plan_beacon_worker:人口达阈值后,无论多远都派最近工人去抢冠军信标(全图行军),Core 会朝信标迁移。
- 全局就近派单:把地图资源指派给最近空背包工人(保留探索工产能)。
- 专职探索小队:工人够多时抽一部分做定向探索(不同航向错开扇形散开);信标进军期 80% 探索工偏向信标方向、20% 维持全向覆盖。
- 工人采集循环
plan_worker_collect:采集 → 交付 → 探索,闭环。
- 战斗决策
plan_combat:反应式,遇敌交战 / 劣势撤退。
- 威胁判定:Core 周围 20 格内出现敌方进攻单位 → 触发防御调配(只认进攻单位,工人/敌核心不触发死守)。
- 防御按比例召回:巡逻组数量 < 敌数才召回最近探索组支援,不无脑全召。
- 探索组交战评估 + 求援:探索组遇敌评估「进攻/跟踪」,兵力劣势时调最近巡逻单位支援,反超即转进攻。
- 巡逻
plan_patrol:有威胁→死守(进攻+封堵绝不后撤);无威胁→普通巡逻,范围内见敌直接追打。
- 进攻派遣:从探索池抽最近 V+R 组去打已确认的「可进攻」敌 Core。
- 迷雾猎杀编组:探索战斗单位以 V+R 组钻迷雾寻敌;游侠主动靠到先锋同格「叠组」后才一起推进(先锋无游侠搭档则自由行动)。
- 工人回防封堵 / Core 动作(恢复+生产)/ 回血 / 事件日志。
三、两套策略差异速览
维度 |
新决策(heuristic) |
旧决策(arena_agent) |
|---|
架构 |
集中式全局规划,按角色分发 |
反应式流水线,每 tick 顺序 ~14 步 |
信标 |
就近抢占(限搜索半径) |
全图行军(达人口阈值即派) |
攻击 |
按敌方人数 ×2 包围,聚齐才打 |
V+R 编队遇敌交战,劣势求援 |
探索 |
工人环带 + 先锋限距 |
专职探索小队 + 信标方向偏置 |
防御 |
固定守家预留 + 攻城屏障 |
按比例召回 + 工人回防封堵 |
巡逻 |
idle 三圈巡逻 |
巡逻池死守 / 普通巡逻 |