自定义开局
用户可以通过设置传入给 的初始化 config
来实现自定义开局游戏场景。通过 custom_init
字段的相关内容可以分别设置食物球、荆棘球、孢子球和玩家的分身球的相关细节。
对于食物球、荆棘球、孢子球,我们开放了位置和半径的设置接口,对于玩家的分身球,除了位置和半径以外,用户还需要指定该球所属的玩家名称和队伍名称。注意,玩家名称和队伍名称的命名需要符合游戏的习惯,例如,在某局由 4 个队伍,每个队伍 3 名玩家组成的游戏中,如果要进行自定义开局设计,则玩家的名称的取值范围是从 0 到 11 的 str 类型,队伍名称的取值范围则是从 0 到 3 的 str 类型。如果相关的玩家没有被设置,他将会随机以最小半径出生在地图中。
另外,在设置好开局之后,游戏将会继续按照配置表中的参数进行迭代。例如,如果玩家设定的开局只有 100 个 食物球(远低于我们在配置表中所设置的食物球初始化数量),那么开局之后食物球数量将会按照规则增加。
我们有时候会碰到以下的情况:
这个时候可以使用我们提供的接口来重载对局以达到上述目标!在传入 server
的初始化 config
中,有几个字断需要设置:
如上所示。要使用重载对局的功能,我们需要在第一局设置 save_bin
为 ,这样第一局的信息将会保存在用户提供的 save_path
下,以 .pkl
为文件后缀。因此这一局结束之后,我们可以假设得到了名称为 /path/to/d11355d8-4c4e-11ec-8503-b49691521104.pkl
的信息文件。假设我们在第二局想要加载第一局的前300个动作帧,那么可以进行如下设置:
那么在用户调用 server.reset()
的时候,我们会加载第一局文件信息中的前300帧,并将游戏停在300帧结束的位置。此时用户可以在此基础上继续 step
或者 。
为了解决这个问题,首先,我们在第301次step的时候,传入 save_frame_full_path
参数并将值设为文件保存路径(必须是文件路径,包含文件名称)。如下所示。
然后这次step结束之后,我们可以找到对应保存的文件,即这一帧内所有单位的信息。为了复现该帧,我们在传入 server
的初始化 config
中,新增了一个字段:
该字段需要我们刚才得到的保存的文件的路径(包括文件名称)。如果设为 ''
,则意味着不进行跳跃。否则,将会把 server
的初始状态设置为对应帧的状态。
注解