跳到主要内容

观测空间

每个 tick,智能体会收到一个包含结构化游戏状态的 GameObservation

顶层字段

FieldType说明
tickint当前游戏 tick
episode_idstring唯一回合标识符
donebool游戏是否已结束
rewardfloat奖励信号
resultstring"win""lose""draw"""
available_productionstring[]玩家当前可生产的项目

经济

FieldType说明
cashint当前现金余额
oreint矿仓中的矿石
power_providedint总发电量
power_drainedint总耗电量
resource_capacityint最大矿石存储容量
harvester_countint活跃矿车数量

军事

FieldType说明
units_killedint击毁的敌方单位数
units_lostint损失的己方单位数
buildings_killedint摧毁的敌方建筑数
buildings_lostint损失的己方建筑数
army_valueint现役部队总价值
active_unit_countint现役单位数量
kills_costint击毁敌军的价值总计
deaths_costint己方损失的价值总计
assets_valueint总资产价值(单位 + 建筑)
experienceint玩家经验值
order_countint已下达的命令总数

单位(unitsvisible_enemies

每个单位提供以下信息:

FieldType说明
actor_iduint32唯一 Actor 标识符
typestring单位类型(如 "e1""1tnk""harv"
pos_x, pos_yint世界坐标(WPos)
cell_x, cell_yint网格坐标(CPos)
hp_percentfloat生命值 0.0–1.0
is_idlebool当前是否空闲
current_activitystring当前活动名称
ownerstring玩家内部名称
can_attackbool是否具备攻击能力
facingint朝向(WAngle 0–1023)
experience_levelint老兵等级
stanceint0=不开火, 1=还击, 2=防御, 3=主动攻击
speedint移动速度
attack_rangeint最大攻击范围(WDist)
passenger_countint载员数(不适用时为 -1)
ammoint弹药数(不适用时为 -1)
is_buildingbool对于单位始终为 false

建筑(buildingsvisible_enemy_buildings

FieldType说明
actor_iduint32唯一 Actor 标识符
typestring建筑类型(如 "powr""barr""weap"
pos_x, pos_yint世界坐标
cell_x, cell_yint网格坐标
hp_percentfloat生命值 0.0–1.0
ownerstring玩家内部名称
is_producingbool当前是否在生产
production_progressfloat生产进度 0.0–1.0
producing_itemstring正在生产的项目
is_poweredbool是否有电力供应
is_repairingbool是否正在维修
sell_valueint出售退款金额
rally_x, rally_yint集结点坐标(无集结点时为 -1)
power_amountint提供的电力(正值)或消耗的电力(负值)
can_producestring[]该建筑可生产的项目列表

生产队列

FieldType说明
queue_typestring"Building""Infantry""Vehicle""Aircraft"
itemstring正在生产的 Actor 类型
progressfloat0.0–1.0
remaining_ticksint距完成剩余的 tick 数
remaining_costint剩余费用
pausedbool生产是否暂停

空间地图

一个 9 通道的空间张量,以二进制 float32 数据编码在 spatial_map 字段中。

通道索引说明
Terrain0地形类型
Height1海拔高度
Resources2矿石/宝石密度
Passability3移动通行性
Fog of War4可见度(战争迷雾)
Own Buildings5己方建筑位置
Own Units6己方单位位置
Enemy Buildings7可见敌方建筑位置
Enemy Units8可见敌方单位位置

维度map_height x map_width x 9(行优先,通道在最后)

Python 解码方式

import numpy as np
import base64

spatial_bytes = base64.b64decode(obs.spatial_map)
spatial = np.frombuffer(spatial_bytes, dtype=np.float32)
spatial = spatial.reshape(obs.map_info.height, obs.map_info.width, obs.spatial_channels)