前暴雪工程师复盘unity手机游戏《炉石传说》AI设计

2015年09月09日 14:29 0 点赞 0 评论 更新于 2025-11-21 18:59

《炉石传说》作为一款卡牌类休闲游戏,其表现无愧于暴雪出品的声誉。精致的动画与特效,丰富且具策略性的多种游戏模式,赋予了这款卡牌游戏极高的耐玩度。在2014年的GDC大会上,前暴雪工程师Brian分享了Unity手机游戏《炉石传说》AI制作方面的经历与想法。

自我介绍与游戏简介

大家好,我是Brian,在离开暴雪之前,我负责《炉石传说》AI引擎的设计。今天,我可能无法透露交换协议背后的秘密,也难以详述众多设计原则,但我可以分享一些实用的知识。如果你对《炉石传说》不太了解,这里简单介绍一下:它是一款卡牌对战游戏,玩家使用不同的卡牌与对手进行回合制游戏,出牌有资源(魔法)限制,玩家的主要目标是击败对方的英雄角色。

作为试验品的《炉石传说》

《炉石传说》是暴雪的一款试验性游戏。通常,暴雪的制作团队规模在70、80甚至100人以上,而《炉石传说》旨在用有限的资源创造出尽可能出色的游戏。我们想探索能否在资源匮乏的基础上开发出独特的游戏。最初,我们的团队仅有15人,包括4名美术师、5名程序员、2名制作人、2名策划,以及我(负责AI)和一名负责音乐的同事。我们接受了这一挑战,并坚信能够完成任务。

然而,《炉石传说》面临着诸多问题。首先,卡牌游戏的规则是固定的,许多游戏都是在实体卡牌规则的基础上进行优化和调整。若违反基本规则,游戏会显得很不合理。其次,我所设计的系统和AI必须能够接受大量修改。这既是暴雪的工作风格,也是为了对卡牌游戏进行尽可能多的平衡调整。最后,我们面临着团队、资源和时间有限的困难,AI、CPU以及预算也无法达到大型游戏的规模。

以游戏设计为主的研发模式

在游戏研发过程中,有一些理念贯穿始终。首先是以设计为主导,这是暴雪所有产品的主流做法。因此,我们必须确保游戏易于调整,能够对卡牌进行编辑。因为并非所有工作都能交给程序员,设计师需要负责卡牌设计,所以游戏系统必须方便修改。

我们还花费了大量时间来确定AI的投入程度。即使像《炉石传说》这样容易上手的游戏,也有新手教学环节。我们决定加入AI控制,让玩家通过与AI对战逐步熟悉游戏,从而掌握更多玩法。

AI的难度也是一个关键问题。许多卡牌游戏难以被玩家接受,往往是因为AI难度设置不合理。例如《万智牌》,由于卡牌数量众多、机制复杂,学习曲线过于漫长,导致很多玩家还未开始就选择放弃。因此,暴雪希望设计的AI既让玩家觉得聪明,又不会完全碾压玩家。玩家应该能够逐渐学习AI的策略,并最终超越它,从而获得成就感。

项目开始时,另一个较大的争议是是否采用数据驱动的研发方式。由于团队和资源的限制,很多人倾向于采用数据驱动的方式,因为这种方式实施起来较为顺畅。但我坚信这款游戏会流行起来。对于一款卡牌游戏而言,要想取得成功,最好的方法是不断推出更新,在发布后持续推出新卡牌。如果后期进行大规模改动,可能会导致游戏崩溃。因此,我们做出了妥协:卡牌设计采用数据驱动,因为我们有相应的工具,实施起来较为容易;而AI则主要由代码组成。我在这方面做出了许多决策,目的是让AI易于上手,吸引玩家持续游戏。

玩法系统

我们为游戏中的所有事物打上符号。由于规则限制,我们为卡牌添加了许多标签(Tag),如传说卡、军团、卡牌类型等,并且这些标签都可以进行调整,主要通过卡牌能力的改变来实现。另一个重要系统是状态更新,我们可以清除所有限制条件并重新开始,在触发技能或卡牌死亡时更新状态。在游戏中,同时最多调用24个符号,因此整体复杂度并不高。

游戏的主要玩法是收集所有可能的出牌选项并提供给玩家选择,根据玩家的选择执行相应的能力,然后更新游戏状态。为了让玩家更容易理解,我们使用不同的颜色进行区分,例如绿色表示玩家可以使用这些牌。这样减轻了AI的压力,因为它无需判断哪些卡牌可用,哪些不可用,一切都有固定的规则。玩家使用特定卡牌会触发相应的能力,AI的负担因此大大减轻。

《星际争霸2》的Galaxy编辑器

接下来介绍符号编辑器。最初,我们的设计师与《星际争霸2》项目的人员共同开发Galaxy编辑器,他希望我们对其进行改进。从图中可以看到,原始的编辑器非常复杂,我们对其进行了简化,使用高级语言实现了多功能调用。因此,《炉石传说》的脚本语言更加自然、简单。我们对Hearth编辑器也采取了同样的做法,使用了简洁的代码。

AI系统的打造

我们最初的目标是将AI的水平设定为中等玩家水平。为此,我们采访了大量玩家,包括卡牌游戏玩家和非卡牌游戏玩家,并将采访结果的中间值作为中等玩家水平的参考。按照传统分类,新玩家了解游戏玩法,中等玩家掌握战术,高级玩家则能进行更高级的技能组合。实际上,我们采访的高级玩家能够在有限的卡牌数量内进行技能组合,而中等玩家主要关注卡牌数值和游戏内资源。因此,我将游戏内资源分为不同的组,例如玩家手中可用的资源、可用于攻击的卡牌数量等。

我们采用了简单的计分系统,无论是攻击消耗的HP、造成的伤害,还是被消灭的卡牌,都通过计分系统进行评估。同时,我们不允许玩家一上来就击败对手,因为要给对方一定的反击时间,这样双方的战斗才会更有趣。

游戏中的锁定机制很少使用,因为在游戏中使用锁定机制容易导致复杂情况和意外情况的发生。当出现这种情况时,代码需要明确锁定卡牌的原因,这增加了出错的概率。因此,我们尽可能减少锁定机制的使用。

另一个策略是难度升级,主要体现在玩家对AI反应的猜测难度、AI攻击机制的随机性以及AI卡组的可调整性上。由于魔法资源的限制,游戏初期玩家和AI的行动都受到一定限制。而且,由于无法看到对方手中的牌,只有熟悉游戏的玩家才能更准确地猜测对方的策略。随着游戏回合的增加,AI可以获得更多的卡牌,设计师可以决定AI获得的卡组,从而更容易调整游戏难度。

此外,我们还会对AI的表现进行一些细微调整。例如,根据剩余HP判断对方在几个回合内可能赢得比赛,并据此进行策略微调。

有待改进之处与成功经验

当然,我们的研发过程也存在一些不足之处。首先,代码开发初期进展缓慢,因为初期主要是设计阶段,很多想法在代码实现时会遇到困难。其次,工具的成熟度不足。由于人手、资源和资金有限,我们开发的很多工具不够完善,如果有更成熟的工具,研发过程可能会更快。

不过,我们也采取了一些行之有效的做法。首先,我们花费了一年时间进行设计修改,这不仅反复验证和调整了玩法的可行性,也增强了开发者与游戏之间的默契。通过多次讨论和修改,游戏最终变得更加稳定。其次,我们使用Flash制作创意原型。这种方式简单易行,后期修改时无需调整代码,能够快速便捷地进行修改。

我们还做出了一个明智的决定,即延迟游戏发布日期,延长封测和公测时间。在这个过程中,我们发现了许多问题,例如触发机制在初测期间修改了3次,需要重新编写很多底层代码。但这也为游戏发布后的稳定运行减少了很多隐患。另外,AI的性能表现良好,游戏的整体表现也超出了我们的预期。

作者信息

洞悉

洞悉

共发布了 3994 篇文章