About
- views · 17 posts
萨满诺

萨满诺

玩法设计卡牌游戏AI 设计UNO多人对抗

灵感来源

《萨满诺》给 UNO 的颜色匹配规则添加了对战系统。出牌不只是颜色配对,也是攻击、防御、治疗和控制等战术行为的具体体现,每张手牌都能表现出玩家的战斗意图。

Engine Unity
Role 系统设计 / AI 逻辑设计
Focus 卡牌规则改造、战斗交互、AI 出牌逻辑
Goal 构建策略深度的卡牌对战体验

公元 503 年,萨满教派之间持续了 20 年的内战终于迎来了转折点。

四大教派(风、雨、火、雷)的首领对无休止的冲突和无谓的牺牲感到厌倦。他们决定用一种合理的方式来选出最适合领导萨满群体的教派。

经过 72 小时的会议(三天三夜),他们最终敲定了一个”合理的方式”:用卡牌游戏来一决高下。

他们给这个游戏取名为 Shamano

游戏一经推出,所有教派迅速学会规则并举行了选拔赛。他们约定一年后,每个教派派出最强的卡牌战士参加最后的总决赛。

游戏的灵感来自 UNO:保留了快速出牌的机制,同时加入了战斗系统,让手牌更多的玩家也能”击败”对手。这样既增强了翻盘的可能性,也增加了竞技策略的乐趣。

UNO
UNO

此游戏为game jam 参赛作品的后续更新版本(2023年腾讯在武汉组织的一次game jam,其主题为古代科技(Ancient Tech))。

在这个版本中,我参与设计了部分游戏规则,创建并编写了 AI 逻辑,修复了大量 Bug,优化了美术资源(如角色立绘、背景图片),增加了视觉提示(伤害数字、技能描述、攻击目标指示器),并制作了多种特殊视觉效果。

游戏场景

游戏场景 1 游戏场景 2 游戏场景 3
Scene Preview

UNO卡牌桌面对战

场景围绕四位萨满玩家的对战桌面展开,手牌区、角色头像与技能状态一目了然,让玩家聚焦于出牌策略与战斗反馈。

UI 设计

头像框悬停时闪烁,显示剩余卡牌数、HP 和护盾值。

头像框
头像框:显示剩余卡牌 / HP / 护盾

受击时显示伤害数字。

受击特效
"-2" — HP 减少值

角色回合时头像框轮廓会闪烁。

待机头像框
待机头像框状态
回合头像框
当前回合头像框高亮
头像框闪烁
头像框轮廓闪烁提示

无法出牌或结束回合时,显示护盾增加值或 HP 恢复值。

护盾增加值
护盾增加值反馈

持有跳过增益时跳过本回合。

跳过增益
跳过增益效果

使用贝塞尔曲线生成攻击引导线。

贝塞尔攻击引导
贝塞尔曲线攻击引导线

顺时针和逆时针旋转的箭头指示当前出牌方向。

顺时针出牌方向
顺时针出牌方向提示
逆时针出牌方向
逆时针出牌方向提示

右键点击头像框查看技能信息。

技能信息
右键查看技能详情

操作与玩法

游戏目标

玩家的目标是率先出完所有手牌击败所有其他玩家(将其 HP 降至 0)。

游戏流程

  1. 游戏开始前选择角色(每个角色拥有与 5 种颜色绑定的专属技能)。

  2. 你和所有其他玩家各从牌堆抽 7 张起始手牌。

  3. 首个玩家打出第一张非技能牌,之后按顺时针方向轮流。

  4. 轮到你时:打出一张与上一张牌颜色或数字匹配的牌,或使用万能牌。如果无法出牌,抽 1 张牌——如果能出则立即打出,否则跳过回合。

  5. 打出有效牌后:

    a. 数字牌:选择 1 名其他玩家,造成与牌面数字相等的伤害(可被护盾抵挡,护盾相应减少)。

    b. 功能牌:立即触发其效果。

    c. 技能牌:立即触发其技能效果。

  6. 如果你在你的回合中击败了一名玩家(HP 降至 0 或以下):

    • 如果还有 2 名或以上玩家:你的回合继续。
    • 如果只剩你一人:你获胜。
  7. 在你的回合结束阶段:

    • 如果没有活跃增益:清除上一回合的护盾。
    • 如果你手牌为 0:你获胜;否则进入下一玩家的回合。
游戏流程
游戏流程
Card System

机制详解

卡牌系统从 UNO 的简洁规则出发,为每种颜色赋予独立的战斗目标。红主攻、绿防守、蓝治疗、黄主控,让四色的选择变为战术中的一环。

设计判断:颜色匹配是规则约束,战斗效果是策略回报。相同规则下,玩家因为手中颜色组合不同而有完全不同的战术路线,这是游戏的策略深度来源之一。

a. 数字牌

牌面上的数字 1-4 代表伤害值(对敌人造成相应伤害)。

红色数字牌
红色数字牌
蓝色数字牌
蓝色数字牌
黄色数字牌
黄色数字牌
绿色数字牌
绿色数字牌

b. 元素关联与增益效果

每种卡牌颜色对应一种元素(红色=火,黄色=雷,蓝色=雨,绿色=风),各有独特的增益效果:

  • 风(绿色):造成牌面数字的伤害 + 获得护盾(数值 = 卡牌数字 x 2;在你的下一回合结束时消失)。

  • 火(红色):直接造成牌面数字 x 2 的伤害。

  • 雨(蓝色):造成牌面数字的伤害 + 为自己恢复相同数值的生命值。

  • 雷(黄色):造成等于牌面数字的伤害(首先扣除目标的护盾值)。只有在扣除护盾后仍有剩余伤害时,目标才被迫抽 1 张牌。

风牌
风:护盾 = +2 x 2 = 4
火牌
火:伤害 = 4 x 2 = 8
雨牌
雨:治疗 = 3
雷牌 1
雷:黄色数字牌
雷牌 2
雷:护盾后的抽牌惩罚

c. 功能牌效果

  • 跳过(共 8 张,每种颜色 2 张):跳过下一名对手的回合。

  • 反转(共 8 张,每种颜色 2 张):反转出牌顺序。

  • +2(共 8 张,每种颜色 2 张):下一名玩家抽 2 张牌并跳过回合。该玩家可以出 +2/+4 来叠加效果。

  • +4(共 4 张):改变当前颜色 + 下一名玩家抽 4 张牌。该玩家可以出 +4 来叠加效果。

  • 万能牌(4 张黑色牌):参见下方的”黑色万能牌”。

跳过牌
跳过牌
反转牌
反转牌
+2牌
+2 牌
+4牌
+4 牌
万能牌
万能牌

d. 黑色万能牌

将当前颜色改为你选择的颜色 + 激活你的职业技能。

游戏开始前选择职业(游戏中不可切换);右键点击头像查看详情。

e. 技能牌

特点:只有颜色(没有数字);用于激活元素专属技能。

游戏开始前选择职业(游戏中不可切换);每个职业对不同元素有独特的技能。

火系技能牌
火系技能牌
雨系技能牌
雨系技能牌
雷系技能牌
雷系技能牌
风系技能牌
风系技能牌

f. 其他规则

  • 如果你有一张与上一张打出的牌颜色和数字都相同的牌:立即打出(回合移交给下一名玩家)。

  • 数字牌可以指定任意玩家为目标(不能是自己)。

  • +2/+4 可以叠加:

    • 被 +2 击中:打出 +2/+4 将效果传递下去。
    • 被 +4 击中:只能打出 +4 来传递效果。
+2 叠加规则
+2 / +4 叠加传递规则
+4 叠加规则
+4 叠加传递规则

角色与职业技能

角色选择界面
角色选择界面:四位萨满各有独特的元素技能组合

赫达 — 元素破坏者

  • :元素破坏 — 对 1 名玩家造成 5 点伤害;弃掉手牌中随机 1 张。
  • :元素回溯 — 恢复 5 点 HP + 抽 1 张牌。
  • :元素感应 — 顺时针:对其他人造成 5 点伤害;逆时针:其他人抽 1 张牌。
  • :元素转移 — 给 1 名玩家 1 张随机手牌 + 对其造成 5 点伤害。
  • 萨满技:元素驱散 — 给自己上增益:受到双倍伤害但免疫负面效果。

碧翠丝 — 元素魔术师

  • :火焰爆轰 — 对 1 名玩家造成等同于你手牌数量的伤害。
  • :积水成河 — 恢复等同于你手牌中蓝色牌数量的 HP。
  • :风回路转 — 对 1 名玩家造成等同于你手牌中绿色牌数量的伤害;给予他们等同于其手牌中绿色牌数量的护盾。
  • :电荷平衡 — 对 1 名玩家造成 4 点伤害;黄色牌较少的一方抽 1 张牌。
  • 萨满技:开个玩笑 — 所有玩家获得增益:抽牌数量翻倍。

奥罗拉 — 血之萨满

  • :生命燃烧 — 损失 4 点 HP,对 1 名玩家造成 8 点伤害。
  • :生命吸取 — 恢复 4 点 HP + 对 1 名玩家造成 4 点伤害。
  • :生命转化 — 移除 1 名玩家的所有护盾;恢复等同于移除护盾量的 HP。
  • :生命激活 — 损失 4 点 HP,对 1 名玩家造成 4 点伤害 + 抽 1 张牌。
  • 萨满技:生命互换 — 与指定玩家交换 HP。

佐伊 — 天气祭祀

  • :火焰之雨 — 对所有其他玩家造成 3 点伤害。
  • :治愈之雨 — 为其他人恢复 1 点 HP + 为自己恢复 5 点 HP。
  • :破盾之风 — 对所有其他人的护盾造成 8 点伤害。
  • :幸运之雷 — 随机攻击 1 名玩家(包括自己)造成 8 点伤害;其他人受到 1 点伤害。
  • 萨满技:真空领域 — 给自己上增益:所有以你为目标的加牌效果反弹给施放者。

制作过程

编程

贝塞尔曲线

贝塞尔曲线
使用贝塞尔曲线生成攻击引导线

技能优化

技能优化
技能逻辑优化

AIManager:管理所有角色 AI。

AI 管理器
AIManager 代码结构

AI 设计(行为树)

了解基本卡牌类型后,需要定义 AI 的行为策略。关键问题包括:AI 应该如何选择当前颜色和攻击目标?当有多个选项时,哪种颜色优先?

要回答这些问题,首先要明确目标游戏体验:尽可能减少运气的影响,放大玩家策略在结果中的作用,增强玩家的掌控感。因此,AI 遵循以下优先级:控制 > 攻击 > 护盾 > 治疗。这样 AI 会打乱玩家的出牌节奏,优先攻击低 HP、少手牌的玩家,让其他人可以精心规划出牌顺序,即使在劣势中也能打出惊人的翻盘。

AI 使用所有玩家的 HP、护盾值和剩余手牌数,赋予权重来计算目标概率,如下方公式所示:

AI 目标概率公式
AI 目标概率计算公式

计算命中概率并选择卡牌玩家进行控制。

AI 命中概率
命中概率计算与目标选择

行为树:

行为树
AI 行为树结构

特效制作

使用 Amplify Shader + 粒子系统生成特效。

屏幕特效:

屏幕特效
屏幕特效

闪光效果:

闪光效果
闪光效果

阵亡头像框效果:

阵亡头像框
阵亡头像框效果

玩家反馈与优化方向

缺乏反制机制

  • 玩家反馈:受伤后无法反制,先被攻击的玩家处于劣势。建议增加受伤量表或伤害调整机制。

  • 核心问题:受伤玩家无法反制;早期被集火的玩家体验差,过早退场。

  • 优化方案受伤能量积累

    • 增加”受伤量表”:积累等于所受伤害的能量。
    • 在你回合前连续被击中:后续能量翻倍。
    • 你的回合:消耗能量激活”伤害调整”(提升 X 点伤害 / 抵消 X 点伤害;X 不超过当前能量值)。
  • 优化目标:平衡早期集火攻击;给受伤玩家反制或防御的选择。

颜色控制难度过高

  • 玩家反馈:颜色容易被”劫持”,战术难以执行。避免直接锁定颜色,增加预测奖励。

  • 核心问题:颜色主导权容易丧失;直接锁定会破坏万能牌的价值。

  • 优化方案万能牌颜色预测

    • 触发时机:在玩家打出万能牌/万能 +4 并宣布颜色改变之前。

    • 流程:其他玩家在 3-5 秒内预测颜色(线下:手势或预测卡)。

    • 奖励/惩罚:

      • 预测成功:获得”颜色锁定权”(下次使用万能牌/万能 +4 时锁定颜色 1 回合)。
      • 预测失败:跳过你的回合(不能出牌)。
      • 不做预测:正常进行。
  • 优化目标:提高颜色控制能力;保留万能牌的价值;增加策略性。

资源系统构建问题

  • 玩家反馈:增加资源条,通过伤害积累点数(连续击中翻倍),满条可兑换一张自选颜色的技能牌。

  • 核心问题:技能牌获取不稳定;受伤只有负面效果(没有风险回报平衡)。

  • 优化方案受伤 → 资源 → 技能 联动

    • 资源条上限:20 点(仅通过受伤积累;共享量表规则)。
    • 积累方式:点数 = 伤害值;连续击中后续点数翻倍。
    • 消耗方式:满条可兑换 1 张技能牌(风/雨/火/雷任选)。
    • 补充规则:满条后(未消耗)不再从受击中获得点数。
  • 优化目标:将伤害转化为资源;形成反制循环;丰富策略选择。

可能的迭代方向

  • 增加多人模式,进行全面的玩家测试和反馈收集。
  • 通过 UI 元素、特效和视觉提示增强技能可读性。
  • 为不熟悉 UNO 的新玩家增加友好的上手引导流程。
Resources

Links & Resources