Skip to content

希望 werhd 玩家接口开放更多能力:对局生命周期、战役目标与提示、事件、命令回执 #12

Open

Description

@CherryLover

你好!我们在用 window.werhd 做 AI 托管扩展(jev-helper),遭遇战和战役关卡都在跑。现在的接口已经能看局面、下命令,非常好用。跑了 25 局之后,我们发现有几类事情只能靠猜,想请你考虑再开放一些接口。

完整的需求草案(含每项的实战证据、接口草案和优先级)在这里:
https://github.com/CherryLover/jev-helper/blob/main/docs/game-api-requests.md
(同时在 ra2web/jev-helper#2 里提交)

公平原则

只请求玩家本来就能在屏幕、EVA 语音、雷达、侧栏上看到或听到的信息,而且在它出现在屏幕上的那一刻才给。

不要求:透视迷雾,查看敌方的钱、队列、命令,未探索区域的路径,触发器内容和未来剧情。战役的对手是电脑,可以按模式多给一些。

遇到的问题

  • 胜负:25 局里识别出的胜利是 0。战役胜利由任务触发器决定,扩展只能看 me().defeated 和「所有对手都倒下」。有 14 局只能记成「对局结束」,分不出输赢。
  • 战役目标:拿不到任务目标,只能让玩家手填,再按关键词猜是哪栋建筑。比如华盛顿地图的五角大楼其实是四座「RA2 Wash Pent A–D」。
    「用工程师占领盟军作战实验室」这关,我们占领成功后游戏立刻送了援军和建筑,实验室 6 秒后从我方消失,11 秒后判负。扩展不知道目标变了没有,也不知道为什么输。
  • 命令结果:命令没有回执。有一栋进不去的民房,扩展让士兵进了 497 次;一个占领目标重发了 89 次;白送了 16 个工程师,扩展都不知道原因。
  • 事件:「基地受攻击」「谁在打我」「单位死于什么」都只能用血量差和距离推算,误报过连续约 6400 拍。
  • 生命周期:werhd 离局就被摘掉,扩展分不清加载、简报、暂停、结算和下一关,也没法自动进入下一关。

最想要的十项(P0)

  1. 离局也常驻的入口,提供版本号、能力清单、对局阶段(大厅 / 加载 / 简报 / 进行中 / 暂停 / 结算)和 battleId
  2. 游戏结束事件 / outcome():结果、原因、相关目标
  3. missionInfo():模式、关卡 id、名称、简报原文、阵营、难度
  4. objectives() 和目标变化事件:文本、状态、类型、关联物体(只给可见或已揭示的)
  5. 屏幕消息事件:EVA、字幕、任务文本,含原文和字符串键
  6. 倒计时 timers() 和事件
  7. 统一事件流:受伤(攻击者可见时才给)、摧毁(含死因)、归属变化、援军、受攻击
  8. 命令回执:接受 / 拒绝原因 / 完成 / 失败
  9. 己方单位的当前命令和状态(在路上 / 在打谁 / 被堵住 / 已到达)
  10. 可达性 pathTo / reachable,以及桥的状态和修桥小屋的对应关系

另外两项开放成本很低:

  • rules() 补上 ini 里本来就有的 capturable、insignificant、techBuilding、displayName;
  • 放置建筑的结果、批量合法格和推荐位置。

事件方面,建议做成可回看的有序队列(events.since(seq)),并支持多个订阅者。onTick 只能挂一个回调、有 8ms 限制,异步决策时很容易漏事件。

如果只能先做一小部分

  1. 游戏结束事件(结果 + 原因)
  2. 屏幕消息事件(带字符串键和原文)
  3. missionInfo()(至少给关卡 id)
  4. 命令拒绝原因

有了这四项,我们就能按「关卡 id + 字符串键」维护每关的目标表,知道什么时候赢、为什么输,也能消掉实战里最大的几块浪费。

接口名和数据结构都只是草案,按你的实现方便来就行。也可以先告诉我们哪些能开放、哪些不打算开放,我们这边相应调整。谢谢!

Activity

  1. huangkaoya commented on Oct 10, 2026

    @huangkaoya
    Contributor

    会逐步安排。因为现在优先在做下一个大版本,所以会慢一些,还请理解

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions