全球热讯:答粉丝来信
以下为粉丝来信原文:
最优解的意义
(资料图)
可以说大多数游戏的设计还是为了一个中心、一个故事服务,那么流程就是一个逃不开的问题。
所谓游玩也就是利用游戏资源推进流程。
那么如何利用游戏资源就是玩家的课题,而思考玩家可能的行为已设计资源与流程就是作者的问题。(为什么纯沙盒不在讨论中?因为他们更接近程序员思维)
研究最优解的意义在于,他可以加强作者对每一种资源与设计的把控,不至于出现“教玩家玩”“倒着看画”。可以让作者更准确地通过游戏设计传递信息、加强节奏把控。
基本思路
以明日方舟为例(这里不便直接论证举例说明。)
我们可以用数学方式列出一个干员的总输出:攻速x伤害x持续时间。(*伤害指实际伤害。)
这个式子本身并不能直接运用在游戏中,但它可以告诉我们解决一些问题的思路与方法。比如他很好地解释了为什么高攻速干员吃拐上限更高——因为攻速是一个单独拎出来的面板数。
回到MC,数学可以计算出玩家单位时间内的最大操作次数,而游戏设计可以决定何种操作最有利。即:数学提供思路,游戏提供解法。
对最小单位的注解
讲到最优解实操,就要引入最小单位以进行计算。这里很重要一点是游戏中最小单位不能为0,例如MC中合成、换装备的时间消耗不能计做0,可以以一帧或直接视为单位一,否则会有很多的游戏行为会被误认为可行。但也有例外,例如早期FPS中子弹飞行时间对于游戏时间为0,有部分游戏中存在一些执行时间为0时的操作,需另行计算。
*原文为手写拍照,上述为我打字转述版。可能存在少量辨识错误。
以下为我的回复
很感谢你分享你的思考。从字迹来判断的话,你的年龄不大,能在这个年龄试着对游戏的本质与规律做出分析,不论结果对错都难能可贵。你的每一寸思考都会转化为前进的力量。
【游戏不是写作文】
不过,游戏与写作文不一样。写作往往是为了表达一个观点,或者叙述一篇故事,但游戏并不只是剧情与故事。如果说非要讲游戏的设计为的是什么,那大概可以分为两种,一种是艺术性游戏,为了营造一种体验;另一种是商业性,为了赚更多的钱。你看到的多数网络游戏和手机游戏,都是商业游戏,他们并不追求讲一个故事,只追求赚更多的钱。它们呈现的故事、角色、画面,都是这个目标的附属品。【如果恶心玩家能赚更多的钱,那就果断恶心玩家。此态度乃商业游戏之根本。】当然,这里有长期和短期收益影响的问题,但那就是后话了。
举例来说,一些手游会在开服的时候制造虚假的排队弹窗。从体验来讲,延迟玩家进入游戏的时间肯定是负面的,但是这能营造一种“游戏很火爆”的假象,于是就故意在不需要排队的时候制造虚假的排队,卡住玩家等待一段时间。还有的时候,手游运营者会故意放着bug不修复,激起玩家讨论,进而提升热度。这也是一种手段。
【资源与状态机】
关于资源我想指出一点,游戏的种类很多,有一些游戏没有什么资源可言。比较典型的例子是AVG,视觉小说,也称为文字冒险游戏。典型的例子是《命运石之门》(Steins;Gate)。在整个过程中,玩家只能在几个对话选项之中选择,其余的时候都在欣赏画面、配音与剧情文字,没有可以累积的资源。
如果你要分析游戏的流程,那么用状态机的模型更加合适,虽然“状态机”的具体数学概念,可能要等你大学才会学到,但这不重要。简单来说,就是玩家可以从一个状态,进入另一个状态。这种概念就是状态机。
当你刚进入Minecraft这个游戏(的生存模式)时,你处于一无所有、没有居所,夜晚会很危险的的状态;当你盖了个房子,或者找了个村庄,或者挖了个地洞,那么你进入了晚上有地方可住,不容易被怪物袭击的安全状态。挖到石头后,处于可以挖掘铁的状态;挖到铁后,处于可以挖掘钻石的装态。穿上铁甲、手持铁剑之后,你处于一个具有较高战斗力的状态。去地狱之前,你处于无法制作药水的状态;去地狱拿到地狱疣之后,你处于可以酿造药水的装态。玩家在这些状态间的转移过程,就是这个游戏的流程。对于创造模式来说,状态基本只有造东西之前、造东西之后两种,此时的Minecraft更接近于一个绘图的工具,而非一个游戏。
生存模式的MC,或者说塞尔达,虽然它们是沙盒,但他们仍然适合从流程和资源的角度去分析,只不过它们的流程更加开放,没有其他的游戏规定得那么死罢了。
顺便一提,分析状态的时候,一般一次只从一两个角度去看,不会直接试图建立与游戏实际状态面面俱到的模型,那样的复杂模型不利于分析。一次只需要分析“是不是有房子可住”“装备如何”之类的就行。
资源量的分析,可以认为是状态分析的一个角度。最简单的抽象就是“没资源”、“资源少”、“资源多”,对应MC可以是“没铁锭”、“铁锭少”、“铁锭多”,对应明日方舟可以是“没费用”、“费用少”、“费用多”,或者是“40费以上”这样更精确地划分。用状态机取代资源量的分析会对你有所帮助。这样一来,你就可以去分析那些没有什么资源可言的文字冒险游戏,比如“第一个分支选了第二个选项”,或者说“没有选择上车”之类的作为状态,而不会陷入无法分析资源的困境。
那么,用从状态机的角度来看,你就能更舒服地去思考最优解了。比如,同样是达成通关结局,玩家可以选择成功率最高,或者是最快的路线。
我不确定你说的“倒着看画”是什么意思,不过我大概能猜到你说的“教玩家玩”是指那些过于刻板的教程,尤其是必须完全按照教程指引的强制教程。这一类教程中的代表我选择手游《最强蜗牛》。它开篇就说了,自己强制玩家走一章的强制指引,因为他也想不出有什么更好的法子,水平有限。实际上,如果没有更好的方法,强制指引也还算简单有效,不算什么可耻的事。当然,对于艺术性游戏来说,还是轻轻地暗示最有效果。比如《塞尔达传说:王国之泪》开头的场景里有一把旧剑,洞穴的出口被干枯的藤蔓所阻挡,这时候暗示玩家用剑去劈开前路,就是很隐晦的一种教学。
通过游戏传递设计、加强节奏把控,这两点确实很重要,不只是通过最优解、最优路线,有各种方式去控制玩家达成这一点。你能意识到这一点,可以说是非常超前了。
【明日方舟吃拐】
“DPS = 攻速 x 单次实际伤害”
这个东西本身和高攻速干员吃拐上限高、攻速是单独拎出来的面板数之间……的逻辑关系,要么是你没有叙述清楚,要么是没有你没有想清楚。“攻速是单独拎出来的面板数”,这件事并不能推导出“高攻速干员吃拐上限高”。单次的伤害,和攻速,这两个东西都是单独拎出来的,单从你的式子来看攻速与单次伤害,它们两个完全对等,不应该推导出任何一个比对方更优的结论。
“高攻速干员吃拐上限高”这句话本身的含义,肯定是相对于另外一类东西吃拐上限低而谈的,没有“低”来对比的“高”毫无意义。
我猜你想说的有两种可能,一种是“攻击相同时,攻速高的干员吃拐上限更高”,另一种是“DPS相同时,一个低攻高速,一个高攻低速,这俩干员相比,前者的吃拐上限更高。”
第一种说法肯定是对的,同样的攻击力,高攻速的肯定完爆低攻速的,这个没什么解释的必要,大家都能理解。
第二种说法有点问题。“吃拐上限”这件事比较抽象,还是得回到具体的问题分析。
这句话一种理解是“在单次伤害增加固定值的时候,高攻速的干员收益更大”。这个很好理解,假如某个辅助系角色是让角色攻击力固定+300,那么攻速高的情况下就能多利用几次这个+300的收益,这显然没什么问题。
另一种理解是跟明日方舟的防御计算公式有关系。方舟的防御计算是减法,除非低于破防线,否则不论多少单次伤害打过来,伤害单次的减少量都一样。比如防御是700,一拳1000打过来就只剩1000-700=300;一拳2000打过来就是2000-700=1300。假如你的辅助系角色不是增加固定值伤害,而是增加攻击者百分比的攻击力,比如攻击力+50%,那么在对方防御为0的时候,高攻速和高攻击角色吃拐的收益是一样的。当然,假如有个干员叫深湖1号,攻击力100,他的效果是“给目标附加深湖1号攻击50%的攻击力”,那还是固定值加成,因为不论被加的人攻击原本多少,都是加同样的值——50点。
比如你有个2000攻击,每秒1次的干员A;和一个1000攻击,每秒2次的干员B。他们在无辅助、无防御的情况下,每秒都是造成2000伤害。
假如这时候来了个能给输出者按比例增加50%攻击的干员,那么AB两位输出手每秒钟造成的伤害都是3000,没有区别。但是,在目标有防御的情况下就大为不同了,最直观地来看,假如有一个敌人的大盾兵,防御值为500,前者每秒钟只能造成(1000-500)x2 = 1000点伤害,后者则是(2000-500)x1=1500点伤害。
这时候同等提升他们的攻击50%。前者变成了(1500-500)x2=2000点伤害,后者变成了(3000-500)x1=2500点伤害。你可以看到,前者直接提升了一倍,后者提升不足一倍,但仍然是后者的总伤害更高。这种情况下就跟攻击速度是一个单独乘区没什么关系了,纯粹是减法防御公式带来的影响。假如明日方舟的防御500点代表“伤害-50%”,就类似于法术抗性那样的意思,那么情况又截然不同,两者吃拐前后的效率会变得完全一样。
你得理解“吃拐上限更高”到底指的是什么,以及它的原理是什么,切莫自以为搞懂了。比如“今天会下雨是因为我要出门”,这显然是错误的推论。这种错误的归结分析对你会有很大的害处,会产生误导,结果上看还不如不分析。“守株待兔”就是典型的例子,故事的主角错误地以为一直会有兔子撞过来,以至于一直什么都不做,就干等着。当你觉得自己理解了一件事之后,可以试着举例来看到底是不是这样,通过实践去验证你的结论。
【关于游戏刻,以及最小单位】
我不确定是不是你前面“一切以资源消耗为分析角度”的思路把你给限制住了,又或者是你过于执着把你最近学到的东西给套进来,这里你突然引入了一个最小单位的概念。实际上,我们一般不会太在乎最小单位的事。就像你去买肉,可以买到一斤、一斤半、1.25斤、1.225斤,只不过付费的最小货币单位是0.01人民币元,以至于太精确的测量没有意义罢了。
我们分析东西不一定非要去在乎单位是多少。对于那种明确可以计数的情况,比如钻石的个数,那自然最小单位就是“1个”。对于金锭这种能拆成9个金粒的物品,你选择锭或者粒作为单位去分析都可以,完全取决于你想分析什么。比如你想分析一个玩家想用金子造房子,那么用锭、乃至于块去分析就比较合理。但如果你想分析玩家做药水的消耗,由于八个金粒就能做一个闪烁西瓜,你选择粒作为单位去分析就比较合理,不然就会面临各种九分之八个金属锭的问题。
然后就是关于帧的事。逻辑帧和渲染帧容易被混为一谈,在汉语语境下,都会用“帧”这个词。不过,对于MC,我们有更严格的表述方式。
游戏内,一秒钟最多执行20个逻辑帧,这个逻辑帧我们被称为“刻”,或者“游戏刻”,也就是tick。
游戏内,一秒钟渲染的帧数没有上限,基本取决于电脑显示相关的性能,这个我们称为“帧”。以“帧”作为代价,一般只会发生在讨论游戏性能问题上,所以我猜你说把换时间的装备消耗要算作一帧,实际上是想说“算作一刻”。
“单位一”,这种奇怪的词汇,大概是你在小学数学里学习整数运算时接触的。小学数学里经常与纯数字打交道,所以经常会以“1”作为单位。在做整数运算的时候,“1”就是不可分割的最小单位。实际上,在之后你学到更多的数学后,你会发现所谓的单位一没那么重要。
2比1大,1小时比1分钟大,没错;那么,1米和1秒哪个大?没法比较。因为这两者有着不同的量纲,或者说不同的计量类型。1米是长度计量单位,1秒是时间计量单位,他们之间没有可比性。实际上我们在研究分析的时候,都会与具体的计量类型一起讨论,不会只抽象地讨论数字。试图衡量1个钻石和1秒哪个更大是没有意义的。
另一方面,在国际标准单位制中,米和秒都是标准计量单位,但这不意味这不存在比他们更小的量。假如说平均玩家每分钟能挖一个钻石,那每秒钟就是能挖六十分之一个钻石,这个分析过程没有什么问题,不必拘泥于单位。等你到了中学会学到有理数与数轴的概念,从0到1之间有无数个数可以取到,所谓1我们只不过是一个惊鸿一瞥的标准罢了,没有那么重要,也绝对不是最小的非负数。
认为mc中合成、换装备的时间,你可以估算为1秒,或者0.3秒,这都无所谓,没有必要折合成整数个游戏刻,或者非抽象成一个新的单位,叫它“一”也好,或者“次”也好,都大可不必。假如你把一个3个游戏刻的事情抽象成了单位1,那么6个游戏刻就是两个单位1,对,没问题;那你要怎么去分析花5个游戏刻、7个游戏刻的事情呢?实际上,就算认为合成消耗的时间是0也没什么问题。比如,你想研究玩家一小时能合成多少附魔台,那么这时候,在底下挖掘黑曜石、钻石的时间,远多于玩家打开界面去点击合成消耗的时间,你认为合成的时间是0也没什么问题。舍去比较小的量,这个思想是微积分的基础,也是再正常不过的事。但如果你要去分析玩家造出木镐所消耗的时间,那么就有可能要具体估算合成的耗时。如果合成要花0.8秒,挖一块木头要1秒,那这个合成的时间成本还是不要舍去为好。
你现在接触的数学,只是数学中的沧海一粟,也是科学中的沧海一粟。后面你还会接触到物理、化学等其他定量分析的自然学科。你大可不必把数学和游戏分的那么开,也大可不必认为数学是分析一切的最好方式。就目前来说,实数与集合论可以描述绝大多数你见到的事物,只不过是运算量大小的问题。等你后面继续进修数学,你还会学到函数,矩阵,马尔科夫链这种不再单纯是“数”的东西,那个时候你就算说“万物皆数”,也不是不行。
感谢你的来信,我还有事要忙,就先说到这里。
又及:如果有下次,请务必不要再手写了。手写的文稿修改起来很麻烦,阅读起来也更加慢,不如电子版文档。如果你不方便用电脑,那你用qq发长消息刷屏,或者自己发b站专栏,也比这样手写强。
关键词: