SDL中文论坛
标题:
设置多人对战势力时相关变量
[打印本页]
作者:
ancientcc
时间:
2020-9-4 08:45
标题:
设置多人对战势力时相关变量
注:对加入玩家来说,它会把AI玩家的控制模式认为是CNTR_NETWORK。
std::vector<connected_user> users_:存储账号玩家信息。变量类型见之下的“
struct connected_user
”。
std::vector<std::pair<std::string, int> > player_types_:存储普通版的玩家类型。
std::vector<std::pair<std::string, int> > player_xtypes_:存储增强版的玩家类型。
std::string side::player_id_:玩家标识。它对应“创建势力”窗口中玩家栏显示的内容。和那里不同的是,
在控制模式小于CNTR_LAST时player_id_值是空
。
struct connected_user
name:账号。实例:ancientcc、laji431。
controller:控制模式。实例:CNTR_LOCAL、CNTR_NETWORK。
值不会超过CNTR_LAST。
connection:连接套接字。实例:2、3、4。
group:团队。它不是引用是克隆出的对象。
side:分配到的势力索引。实例:0、1、2、3
users_何时增加单元
1、初始增加本地玩家
2、收到[side]块
3、收到[observer]块
player_types_、player_xtypes_中的std::vector<std::pair<std::string, int> >
first:玩家标识串。网络玩家、本地玩家、电脑玩家、空位、ancientcc
second:类型索引。CNTR_NETWORK(0)、CNTR_LOCAL(1)、CNTR_COMPUTER(2)、CNTR_EMPTY(3)。
player_types_中的不会超过CNTR_LAST;player_xtypes_中的和player_types_一致的部分不会超过player_xtypes_,多出的则一定超过CNTR_LAST。
增强版和普通版区别:增强版增加了本地、网络玩家映射。在随机地图时,两个变量是同一内容。网络对战时,因为肯定存在本地玩家,增强版的尺寸至少要比普通版多1,有网络玩家加入时再增加的则视网络玩家数量。
增强版尺寸 = 普通版尺寸 + users尺寸
复制代码
作者:
ancientcc
时间:
2020-9-4 08:46
标题:
创建者需发向加入者的数据
在启动游戏前,创建者需要把关卡数据发向加入玩家。
数据
位置
描述
random_seed
[scenario]块下
伪随机种子(注1)
注
关卡中有些单位是各方独立(即不通过一方的恢复包)产生,像一开始时的城市、城外部队。由于是独立生成,必须保证它们使用相同的伪随机种子,否则生成的像特质就可能出现不同步。
由于不是恢复包产生,构造这些单位时需使用game_state中的随机数产生器,具体参考game_state::build_team(const config& side_cfg, ...)
。为杜绝意外,level_to_gamestate要求level必须设置“random_seed”,即使单机可不需要这字段,但为防止联机时漏掉赋值,强制要求单机也给出一个值。
“random_calls”是个和“random_seed”关联的字段。在新战役中,“random_calls”是0,因而创建者可不发送此字段,“存档”时则必须发送它。
欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/)
Powered by Discuz! X3.3