主题
构筑与开局
构筑文档
DeckList 由主国、盟国和若干 { card_id, count } 条目组成。validate_deck 展开并 验证后返回 ValidatedDeck,但不改动卡池或对局状态。
当前硬规则:
- 正好 39 张,不含总部;
- 主国必须具有主国资格;
- 盟国不能是中立、也不能与主国相同;
- 盟国卡至多 12 张;
- 仅生成卡不能构筑;
- 标准/限量/特别/精英副本上限分别来自卡面稀有度;
- 精英盟国卡不合法;
- 标准模式拒绝
reserved卡,预备模式允许。
流亡卡若同时匹配主国与盟国,优先按主国计算,避免虚增盟国额度。
创建对局
create_match(pool, spec) 会:
- 独立校验双方卡组;
- 创建两个 20 防系统总部;
- 为每张构筑卡创建唯一
CardInstId; - 按玩家建立牌库所有权;
- 以
MatchSpec.seed初始化状态随机数; - 调用主管线
start_game; - 洗牌、抽取起手并进入
Phase::Mulligan。
这一步只创建可推进的规则状态,不创建账号、房间、网络连接或存储记录。
同名卡拥有不同实例 ID。回手、转化、洗入牌库和跨区效果都以实例身份为准,不能用 “重新合成一张同定义牌”替代原实例,除非卡文明确要求生成副本。
双方换牌
换牌阶段可以同时要求 P0 和 P1 决策。每名玩家只观察自己的手牌与候选动作;一方先提交 不会提前公开另一方的选择。两边完成后进入正常回合。
会话生命周期
MatchSession 持有初始状态、当前状态和动作记录:
decisions返回当前全部决策方;advance执行一个明确Action;advance_index以状态指纹保护动作索引;records返回已执行步骤;trace生成可验证回放。
正常回合内没有额外阶段划分。当前行动方可以在合法动作中部署、移动、攻击、打出指令、 武装或解除反制、完成待选决策,最后结束回合。