跳到主要内容

地图与视野

地形

每个格子恰好是一种地形:

类型Unit 可进入Core 可迁入阻挡视野阻挡 Ranger
EMPTY
RESOURCE
OBSTACLE

Core 和 Unit 占着格子,但它们不是地形。资源格是永久且无限的,采多少次都不会枯竭, 也不会变成别的地形。

中央资源梯度

世界中心是 [0, 0],富集度随曼哈顿距离衰减:

d = abs(x) + abs(y)
richness(d) = 1 + 256 / (256 + d)

中心的资源格密度是基础密度的两倍,往外平滑下降,最后停在永久的基础下限上。注意这个 梯度只影响资源密度,障碍密度到哪儿都一样。

视野值

对象曼哈顿半径
Core5
Worker3
Vanguard4
Ranger5

你当前的私有视野,是所有存活己方对象各自视野的并集。障碍遮挡走的是整数 supercover 直线:障碍格本身你看得见,它后面就看不见了;射线正好从两格共用的角穿过时,两侧都算 经过,任意一侧是障碍就会挡住。

Unit、Core 和资源格完全不挡视野,但 Unit 和 Core 会挡 Ranger 的射击——这是 另一条规则,很容易和视野混为一谈。

服务端发送什么

每份 state 里有:

  • 你自己全部的 Core 和 Unit,哪怕它们不在任何己方视野里;
  • 敌方 Core 和 Unit,但只有当前可见的;
  • 可见地形,合并成一个 OBSTACLE 对象和一个 RESOURCE 对象;
  • Champion Beacon 的坐标,这对所有人公开;
  • Beacon 的状态和 carrier ID,但只在它所在的格子可见时才有。

敌方对象带 controlled: false,不含任何 owner 信息。Worker 的 cargo 是私有的,只会 出现在你自己的 Worker 上。

探索记忆

服务端只发当前视野,不会替你重放去过哪儿。网页会在本地缓存这些。Agent 想要一张地图, 就得自己把看过的地形和对象存下来——换台设备重新连,你手上就只有当前视野。

旧知识可能过期

地形是永久的,所以记下来的地形一直作数。但你最后看到的那个 Unit、Core 或 Beacon 载体,很可能早就挪地方了。

Beacon 信息边界

坐标永远都在:

{"position": [0, 0]}

看得见它躺在地上时:

{"position": [0, 0], "status": "GROUND"}

看得见携带它的载体时:

{
"position": [0, 0],
"status": "CARRIED",
"carrier_id": "175f47f4-f7de-4785-b45c-9a2d2289a8ea"
}

carrier_id 依然不会告诉你载体属于谁。