DBG神作《杀戮尖塔》手游版全球发布!为何人人都爱它?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBG神作《杀戮尖塔》手游版全球发布!为何人人都爱它?相关的知识,希望对你有一定的参考价值。

参考技术A

自从2017年在Steam上推出抢先体验后,《杀戮尖塔》(Slay the Spire)特殊的单机卡牌roguelike玩法,就在卡牌 游戏 市场中引起巨大反响。2019年推出正式版后,更是影响了无数同类型单机卡牌 游戏 的诞生,开创了一种被称为DBG的独特细分市场。

尽管 游戏 已经上线了两年有余,但凭借着roguelike+卡牌的创新玩法,《杀戮尖塔》在steam上仍屹立不倒。根据SteamDB的数据显示,在预估销量在200-500万套的情况下, 游戏 仍取得了96.15%的好评率。

随着手游时代的来临,粉丝对于《杀戮尖塔》手游化的呼声日益高涨。而就在6月14日,该 游戏 的手游版正式在全球发售,首次登录选择了ios平台,售价9.99美元,而《杀戮尖塔》的安卓版本也在研发当中,开发者尚未公布发售日。另外因版号问题,此次发售并不包括中国大陆地区。

在经过了4天的发酵后,《杀戮尖塔》手游版表现强劲,目前已进入全球23个国家地区的付费榜TOP10,日本排名第2、美区排名第5、韩国第2的位置,足以看出全球玩家对这款DBG 游戏 的喜爱程度。作为一款真正的以创新概念取胜的 游戏 ,《杀戮尖塔》手游的爆红,除了有 游戏 本身创新的玩法加持外,或许还有一些启发值得学习。

“Roguelike+DBG”的“魔性”组合

如果非要用什么词语来形容《杀戮尖塔》的话,“魔性”、“费时”两个词或许是最为契合的。这种魔性和费时正式来自于 游戏 中令人着迷的“Roguelike+DBG”的创新玩法。

在《杀戮尖塔》诞生前,市面上的卡牌 游戏 大多是采用TCG(Trading Card Game 集换式卡牌 游戏 )的玩法,其中的典型代表就是暴雪的《炉石传说》。在TCG 游戏 中,玩家需要通过升级或购买的方式收集卡牌,然后在 游戏 开始前再根据自身的策略来搭配相应的卡组。这样的玩法使得每个牌组的牌都是可预测的、固定的。

而DBG(Deck Building Game 牌库构筑 游戏 )则不同,其最鲜明的特点在于玩家按照 游戏 规则,利用 游戏 代币从公共牌库中购买自己需要的牌构建个人牌库并完成 游戏 目标。也就是说,在《杀戮尖塔》中,玩家搭配卡组的过程是在 游戏 战斗过程中逐步进行的,而非 游戏 开始前。二者最大的区别就在于卡牌的扩充和更新方式。

比起传统TCG中依据现有卡牌的构筑方式,加入了Roguelike元素的《杀戮尖塔》更讲究随机性和卡牌的取舍。由于战斗获胜后系统分配的每一张卡牌都是随机的,因此玩家几乎不会在两次 游戏 中构筑出相同的卡组,这就要求玩家必须对每一张卡牌的选取保持谨慎,不断审时度势,调整卡组。

这种将“Roguelike+DBG”结合的玩法所带来的新鲜感避免了传统TCG卡牌中“强力卡组”或“版本卡组”独占鳌头的情况出现,并使得 游戏 的重玩性十分高。这样的新鲜感其实正是近年来卡牌 游戏 过度同质化背景下,玩家需求回归本质的重要体现。

正如《斗地主》这款被称为国民经典卡牌 游戏 一样,玩家从公共牌堆里获取卡牌进行对战,并不需要考虑提前布局,其本质的乐趣正是在于如何打好手中的卡牌,而不是提前设计好一套完美的卡组确保最高胜率。

这样的经典玩法,一方面避免了TCG 游戏 中玩家需要对卡牌信息和搭配进行充分了解的硬性要求,降低了玩家 游戏 的准入门槛;另一方面Roguelike 游戏 单局变量无法预测的特性也使得玩家有“再来亿把”的冲动。

当然,仅仅为卡牌的分发和搭配方式添加了“随机”的要素,并不能让《杀戮尖塔》在卡牌市场中脱颖而出,吸引玩家不断尝试 游戏 的还有另外一个重要因素——卡牌多流派组合玩法。

如同许多卡牌 游戏 一样,《杀戮尖塔》的卡牌流派组合的玩法十分丰富,狂战流(堆力量)、盾反流(堆防御,然后以盾反伤)、抽牌流、叠毒流……各种新奇有趣的组合玩法在玩家一次次的尝试中被挖掘和尝试。每一种玩法都有着完全不同的 游戏 体验,无论是高伤秒杀,还是防御消耗,亦或是迂回策略,熟练搭配后都能给玩家带来满满的成就感。

再搭配上 游戏 随机的地图、事件、战略点、奖励牌等等。“下限低,上限高”的《杀戮尖塔》凭借以往卡牌 游戏 不曾有的魔力牢牢吸引着玩家,“一款 游戏 玩亿年”、“不推荐购买,买后或将失去睡眠时间”等调侃段子也层出不穷。

阴差阳错差点“夭折”,中国玩家来“救场”

《杀戮尖塔》的研发商是仅有两人组成的团队——Mega Crit Games。对于一个两人团队来说,由于缺乏 游戏 数据分析团队,卡牌 游戏 中的 游戏 平衡性成为研发过程中的一个重点和难点。为了解决这个难题,Mega Crit团队不得不采取大数据方式,即通过专门的服务器追踪玩家 游戏 内行为,然后根据卡牌胜率和使用率进行调整。

据Casey透露,该 游戏 的创意原型是在2015年做出来的,在两年的研发时间里,有一年半都是在测试版本,“当时每天都会做一个版本,根据玩家反馈调整、测试,然后再收集反馈意见”。

这种做法也让 游戏 的许多BUG显现出来,据开发者透露, 游戏 发布之前,玩家们反馈的不同建议和bug报告就达到2800多个,发布一个月之后迅速增长到3100多个。如此多的BUG给这个两人团队带来了极大的压力。但所幸在专业分类工具的帮助下,两人结合 游戏 实际分析,迅速有效地解决了问题。

诚恳用心的研发态度为Mega Crit团队赢得了不少玩家的好感,而相当一部分人是冲着开发商的态度而来的。实际上,在 游戏 发布到Early Access平台当晚,团队两人彻夜未眠,时刻盯着玩家的反馈。“我们不希望玩家们买到手之后就玩不了,所以希望第一时间解决bug”,也就是在发布当晚,两人解决了玩家们报告的35个问题。这样的态度得到了玩家的普遍好评。

在 游戏 发布不久后,团队却因宣传工作的不足,以及“偶遇”EA大作《星球大战:战争前线2》发售,导致 游戏 差点因销量不佳而夭折。Mega Crit创始人兼 游戏 创意总监Anthony Giovannetti在接受采访时表示,“你的销量大多数都在发布之后的2周之内,随后就会进入长尾期。通常来说,大多数的 游戏 销售表现都会从前两周看出是否盈利,可对我们而言,《杀戮尖塔》前两周的销量比较惨淡,随后才有了转机”。

这个转机的赠予者正是中国。Giovannetti最初通过Keymailer发放了一批产品密匙,该服务可以让发行商和开发商们把 游戏 免费送给 游戏 主播和其他感兴趣的人,他同时还给其他多人发送了密匙,但收到的反馈并不多。据团队透露,“当时发出去2000多个密匙,但只有不到300个人有反馈”,不过,中国地区的一名主播传播之后,《杀戮尖塔》迅速在中国市场成为了畅销 游戏 。

对于 游戏 本身来说,《杀戮尖塔》完美融合了Roguelike和DBG的长处,并在此基础上加以创新。这种创新再经过主播的进一步加工传播后,迅速在中国玩家群体中形成良好的口碑传播, 游戏 用户群得以迅速扩大。在中国玩家的帮助下, 游戏 排名逐渐升温,最终使得这款 游戏 开始越来越多地出现在Twitch主播的直播上。许多人开始意识到,一款重量级 游戏 即将崛起为王了。

结语

凭借玩法的创新,Mega Crit团队完成了一次华丽的转身,但两人并不满足于此,此次的《杀戮尖塔》手游版的推出便是团队接下来要重点发力的领域。由于卡牌 游戏 与手机有着天然的契合度,相信《杀戮尖塔》仍然拥有巨大的增长空间。

而这两人也再一次证明了,即便团队在美术、人数等各个方面不占优势,但依然能通过创新的玩法在竞争残酷的 游戏 市场脱颖而出。

iOS 开发中的 MVVM 模式——实用进阶篇(整理)

参考技术A

这篇文章主要介绍了实际应用 MVVM 的过程中的一些问题和解决方案

MVVM(Model View ViewModel)是一种 MVC(Model View Controller)的一种变型,来解决 MVC 中庞大复杂的 Controller 难以维护的问题。大致上讲 MVVM 有几个要求:

MVVM 和 MVC 有很多类似的特点,主要的不同有:

另外一点,MVVM 默认 View 和 View Controller 有一个一对一的关系,一般我们把这两个看做一个整体,会以 .swift 文件 和 Storyboard 的形式出现。

View Model 的工作是处理所有的展示数据的逻辑。如果一个 model 中有一个 NSDate 对象, NSDateFormatter 就会在 View Model 中用来设置日期的展示形式。

View Model 不能接触任何用户界面的部分,View Model 文件中不应该 import UIKit ,View Controller 会观察 View Model 去了解什么时候显示新的数据(通过 KVO 或者 FRP(Functional Reactive Programming))

MVVM 和 MVC 有一个共同的弱点:没有清楚的定义应该把网络请求部分放在哪里。在实际操作过程中,我会把网络请求放在 View Model 文件里面,但之后我打算把网络请求放在自己独立的一个类中,View Model 文件会拥有这个对象。

下面我们主要谈一谈实际应用 MVVM 过程中一些挑战:

例如你想构造这样一个常用的界面,有一个 segment control 在屏幕顶部,屏幕的其他部分是一个 collection view,选择不同的 segment,就会展示不同样式的 collection view,元素的排列顺序。我们定义了一个 enum 来枚举所有的排列样式:

那么这个 enum 在 MVVM 模式中应该放在哪里呢?因为这个 enum 决定了数据排列的顺序,每个 cell 中的文字和按钮的 title,这些都属于展示的逻辑,所以这个 enum 看起来应该放在 view model 中。

然而,这些 layout 并不改变要展示的数据,只是决定了要呈现的数据的排列方式和排列顺序,从这个角度上来说 enum 又应该放在 view controller 中。

我的解决方法是把 enum 放在 view model 中,然后在 view model 中加一个对外的 Observable 或者 Signal 来表示使用了哪个 layout,基于用户选择的 segment,view model 更新这个值,然后在 view controller 中根据相应的 layout 改变 collection view 的样式,view controller 也可以根据这个值来决定用哪个 cell reuse identifier

iOS 开发者在用 MVVM 和 FRP 写应用的时候最常见的问题可能就是 ViewModel 怎么把数据展现给 ViewController。当 Model 层的数据发生变化更新的时候,ViewController 需要得到通知然后做出相应的 UI 更新,我们一般会用到两种机制:

第一个选项很吸引人,因为可以在 View Controller 中决定怎么选择观察那些 property。然而,我不推荐在 Swift 中使用第一个选项,因为 Swift 在 KVO 中没有类型检查,你需要对 AnyObject 强制转换类型很多次。

第二个选项是比较 Swift 的方式,基于 Swift 的 generics 特性,signals,sequences,observables 可以支持编译过程中的类型检查。

但有时候在 view model 增加这些 Signals 或者 Observables 有些困难。Swift 的初始化方法对于什么时候对 property 赋值有非常明确的规定。Signals 或者 Observables 需要使用 view model 内部的状态,所以它们必须在 super.init() 之后才能创建,但是另一方面,我们在调用 super.init() 之前保证所有 property 已经被赋值了,包括那些 Signal/Observable property。

这是个先有鸡还是先有蛋的问题。

我采用比较简单的解决方法:定义成 var 的隐式可选类型,这样就可以在 super.init() 之后才给 property 赋值。这不是一个完美的解决办法。我们可以用 lazy var property 的闭包赋值来代替上面的方法。在 Swift 不断完善和更新的过程中,大家也可以探索其他更好的办法。

举一个很常用的例子,用户点击 collection view 中的一个 cell,跳转到详情页面。用户点击的操作应该在 view controller 中处理,具体内容是展现一个新的详情页面。但是 view controller 不能直接接触 models,我们要如何用 MVVM 模式实现这样的用户交互呢?

我的解决方案是利用 Swift 的闭包。首先在 view model 中定义一个闭包:

然后在 view model 中添加一个 property:

接着我需要调用闭包,在 view model 中定义一个view controller 可以调用的函数,这个函数的参数是可以决定使用什么数据,一般情况下常用 index path:

现在当用户选中一个 cell,会调用 view model 中的这个函数,并且传入 index path 参数,view model 决定使用哪个数据,并调用在 view controller 中定义的闭包,例如:

最后一个问题是怎么创建这个 view model。我们需要传递一个闭包给view model 的初始化函数,然后用 lazy loading 来调用 view model 的初始化函数。

以上是关于DBG神作《杀戮尖塔》手游版全球发布!为何人人都爱它?的主要内容,如果未能解决你的问题,请参考以下文章

英雄联盟手游拉起苹果支付失败怎么办

unity实战之lol技能释放范围

手游直接上架Steam? BlueStacks蓝叠:PC游戏流量平台将为手游敞开

HMC Core 6.0全球上线图形计算服务新插件,助力高画质3D手游创新

HMC Core 6.0全球上线图形计算服务新插件,助力高画质3D手游创新

2019 hdu 第四场补题 (1 ,签到题