找回密码
 点一下
查看: 2636|回复: 2

炉石传说规则实现简析

[复制链接]
发表于 2017-1-18 22:55:56 | 显示全部楼层 |阅读模式
本帖最后由 priceles 于 2017-2-26 16:34 编辑

相信很多人都玩过《炉石传说》,对于游戏很多机制也了解,有些机制很特别,例如奥秘和伊利丹。奥秘的触发总在战吼后,而伊利丹触发总在战吼前。这里就说明一下如何实现这些机制吧。
这里就以《炉石传说》基本卡牌和经典卡牌作例,说明《炉石传说》是如何运作的。
游戏里的元素:角色、卡牌、冲锋、战吼、亡语、武器等。
首先说明游戏执行机制:
游戏执行类似于编译器,执行完一行再到下一行(或者是清空当前行),而使用卡牌就是添加字段。例如你使用火球术,那么它就会添加3行:
法术开始
6点的法术伤害
法术结束
游戏就会去解释这些行,为了实现一些特殊的机制,可能火球术只有两行,没有服务器端数据在这里不能得知。法术开始
火球术
在执行火球术后再添加造成伤害、法术结束,这样就能实现一些特殊的效果。法术开始和法术结束都是通知效果,法术开始会通知法力浮龙,法术结束可以通知炎术士。这样做是为了法术反制后不会触发一些效果。


实际上游戏执行起来会更复杂,因此引入“效果”这个概念,因为一行可能有多个动作。
例如你对苦痛侍僧使用火球术,那你使用火球术的时候只有两行:
法术开始
火球术

而执行的时候
法术开始
火球术

6点的法术伤害
抽一张牌
法术结束
死亡通知
这个6点的法术伤害带来了“抽一张牌”效果,而这个效果可能带来更多的效果。(根据某次在线修正得知死亡通知应该是预定的而不是伤害效果带来的,而且火妖、炎术士可能不会造成死亡通知效果)
伊利丹的召唤和加基森的抽牌触发不存在区别,仅仅只区分卡牌类型。
类似的,进行攻击和按下回合结束按钮等都会有通知效果。
治疗效果只会验证是否有未被沉默且存活的奥金尼。


接下来说明角色:
每个角色有个唯一的编号,英雄、随从、武器、法术、英雄技能都要占用一个编号(即使未使用),即使死亡仍然存在,这是为了让出牌看起来是连贯的。
而使用召唤随从(不包括从手牌打出)、复制卡牌、卡牌的复制洗入牌库效果会增加编号。
每个角色会包含许多值,例如:是否死亡、是否在牌库、亡语、生命、攻击、风怒、冲锋、被沉默、种族、所有者、受到伤害效果、进行攻击效果、造成伤害效果等。
许多效果都需要去遍历所有的角色,例如:复活、偷牌。而场上的那些单位被单独做出一个组来看待(有其他的编号)。


发表于 2017-2-25 21:11:06 | 显示全部楼层
说吧
回复

使用道具 举报

 楼主| 发表于 2017-3-24 23:10:18 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-21 16:45 , Processed in 0.091785 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表