内容概要
分析《炉石传说》的卡牌、技能的静态数据组织。

【欢迎转载,请注明作者:燕良,原文出处:游戏程序员的自我修养

经过前面几次的尝试,我们对炉石的代码已经不陌生了。除了网络机制还没有了解以外,本机的逻辑已经比较熟悉了。

接下来继续向暴雪最NB的技能系统进发,我们的目标是:

静态数据组织

卡牌数据

<Entity version="2" CardID="CS1_042">
    <Tag name="CardName" enumID="185" type="String">闪金镇步兵</Tag>
    <Tag name="CardSet" enumID="183" type="CardSet" value="2" />
    <Tag name="CardType" enumID="202" type="CardType" value="4" />
    <Tag name="Faction" enumID="201" type="Faction" value="2" />
    <Tag name="Rarity" enumID="203" type="Rarity" value="1" />
    <Tag name="Cost" enumID="48" type="Number" value="1" />
    <Tag name="Atk" enumID="47" type="Number" value="1" />
    <Tag name="Health" enumID="45" type="Number" value="2" />
    <Tag name="AttackVisualType" enumID="251" type="AttackVisualType" value="1" />
    <Tag name="CardTextInHand" enumID="184" type="String"><b>嘲讽</b></Tag>
    <Tag name="DevState" enumID="268" type="DevState" value="2" />
    <Tag name="Collectible" enumID="321" type="Bool" value="1" />
    <Tag name="EnchantmentBirthVisual" enumID="330" type="EnchantmentVisualType" value="0" />
    <Tag name="EnchantmentIdleVisual" enumID="331" type="EnchantmentVisualType" value="0" />
    <Tag name="ArtistName" enumID="342" type="String">Donato Giancola</Tag>
    <Tag name="HowToGetThisGoldCard" enumID="365" type="String">圣骑士达到57级后解锁。</Tag>
    <Tag name="FlavorText" enumID="351" type="String">如果闪金镇都是由1/2的步兵把守的话,那它早在多年以前就被毁了。</Tag>
    <Tag name="Taunt" enumID="190" type="Bool" value="1" />
    <Power definition="54e57583-ce5c-46e3-899a-39bd2181468d" />
  </Entity>

卡牌实体

技能对象

总结一下

卡牌和技能相关的数据主要包括以上三种,其中EntityDef是使用“策划填表”或者类似的方式,而且卡牌和技能资源,则使用Unity编辑成Pefab。技能对象中用到了PlayerMaker插件。

本次分析涉及到的类,请详见下图。 UML

最后,按照惯例,还是秀一下战绩: GAME