分享一下Arena Hero实时监控地图和两个决策

Whitree 2026-08-14 18:12 1

@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):反应式流水线(自己用垃圾模型搓的,比较简陋但是有时候还挺好用)



  1. 换局检测:Core 位置大幅变化 → 丢弃上局脏地图/障碍数据。

  2. 记忆更新:地图记忆 + 敌方记忆(含到达消失点且周围无敌人的接触取消)。

  3. 信标搬运工 plan_beacon_worker:人口达阈值后,无论多远都派最近工人去抢冠军信标(全图行军),Core 会朝信标迁移。

  4. 全局就近派单:把地图资源指派给最近空背包工人(保留探索工产能)。

  5. 专职探索小队:工人够多时抽一部分做定向探索(不同航向错开扇形散开);信标进军期 80% 探索工偏向信标方向、20% 维持全向覆盖。

  6. 工人采集循环 plan_worker_collect:采集 → 交付 → 探索,闭环。

  7. 战斗决策 plan_combat:反应式,遇敌交战 / 劣势撤退。

  8. 威胁判定:Core 周围 20 格内出现敌方进攻单位 → 触发防御调配(只认进攻单位,工人/敌核心不触发死守)。

  9. 防御按比例召回:巡逻组数量 < 敌数才召回最近探索组支援,不无脑全召。

  10. 探索组交战评估 + 求援:探索组遇敌评估「进攻/跟踪」,兵力劣势时调最近巡逻单位支援,反超即转进攻。

  11. 巡逻 plan_patrol:有威胁→死守(进攻+封堵绝不后撤);无威胁→普通巡逻,范围内见敌直接追打。

  12. 进攻派遣:从探索池抽最近 V+R 组去打已确认的「可进攻」敌 Core。

  13. 迷雾猎杀编组:探索战斗单位以 V+R 组钻迷雾寻敌;游侠主动靠到先锋同格「叠组」后才一起推进(先锋无游侠搭档则自由行动)。

  14. 工人回防封堵 / Core 动作(恢复+生产)/ 回血 / 事件日志




三、两套策略差异速览











































维度 新决策(heuristic) 旧决策(arena_agent)
架构 集中式全局规划,按角色分发 反应式流水线,每 tick 顺序 ~14 步
信标 就近抢占(限搜索半径) 全图行军(达人口阈值即派)
攻击 按敌方人数 ×2 包围,聚齐才打 V+R 编队遇敌交战,劣势求援
探索 工人环带 + 先锋限距 专职探索小队 + 信标方向偏置
防御 固定守家预留 + 攻城屏障 按比例召回 + 工人回防封堵
巡逻 idle 三圈巡逻 巡逻池死守 / 普通巡逻

最新回复 (1)
  • hxy 08-14 22:00
    1

    500 ldc 付款码放一下,今天到限额了明天给

* 帖子来源Linux.do
返回