从为我们的游戏设定角色基础属性,以及设计战斗伤害的计算公式开始。

计算机里的一切问题都是数学问题。

这句话可能不太确切,但是目前一切利用计算机解决的问题,都必须先表达成数学形式,我想没有太多人会有意见。计算机游戏本质上也是一段交给计算机运行的程序,必须先转化成数学形式。这个转换过程无论是交给游戏策划来做还是给程序员来做,都无可避免。

转换的过程必然有损于原始设计初衷;策划做的时候往往不太能掌握数学语言,有失准确;而程序员总是刻板的追求形式上的统一,而失去细节(神韵?)。大多数人都趋向于游戏的表象而忽略本质,这不单是某一个人或某一类人常犯的错误。

扯点时间久远点的例子。我们知道中国人比古希腊人更早发现了勾股定理,但是西方人依旧把直角三角形直角边的平方和等于斜边的平方称为毕达哥拉斯定理。

杨辉三角形为每个程序员所熟知(大部分编程入门教材上都会用这个做编程习题),但是数学上,我们用的更多的对应名词是牛顿二项式定理,虽然中国人早了至少 300 年发现它。

抛开民族自豪感这些东西,当我们仔细比较上面两个例子中前后两者对同一数学定理的见解,我们会发现,它们其实是表象和本质的差别。只有我们用演绎的方法证明理解数学定理时,才能看透本质,并做出推广。摆脱事物的表象,用符号工具单纯的研究他们之间的关系,正是我们许多人思维中缺失的能力。

在我很小的时候,读数学科普读物。曾经嘲笑过毕达哥拉斯因为不能理解无理数而杀死他的学生;也没觉得负数是一个了不起的发现,而欧洲的数学家到 16 世界还不承认它。

直到中学时,接触到复数的概念,才觉得数学的神奇。然后回过头来思考,为什么一个小的数字减一个大的数字的结果是负数?负数到底是什么?问这些个问题时,我才明白,绝对不能轻视古人。看清事物的数学本质是件多么不容易的事情。明白自己其实什么都不懂只是一个开始。

扯远了,还是谈游戏。

拿魔兽世界(后面全简写作 wow )举例说事,恐怕是唯一不容易遭人非议的了。我们注意到, wow 之前有很多网络游戏,甚至暴雪之前也有一款很接近现代网游的游戏—— diablo 的 battle net 版,都采用了一种让玩家展现个性化角色的设计。那就是随着升级,为角色自由分配属性点,再由属性点影响角色的能力。

我可以举出长长的例子证明这一点,甚至电脑 RPG 的鼻祖,D&D ,也是有自由加点的设定的。虽然 D&D 里玩家可以加的点很少,暴雪在 diablo 里加强了这个设计。

为什么在这么多已有的网游中,大家都沿袭了这个设定,把它作为提供玩家个性化的必要手段时,暴雪绝然抛弃了它,把个性化转移到了天赋系统中。是为了创新吗?我不是暴雪的游戏设计师,我没有答案。但我们知道,暴雪从来不是一个以创新为名的游戏制作公司。而天赋树从外观上看,就是 diablo 中技能树的延续。

熟悉 wow 的玩家可能会说,是为了平衡。没错,但这是表象。我们需要进一步看清本质。

前段试玩了一个新出的网游,工作需要。可能是我已经厌倦了 wow ,对 wow like 的东西更提不起精神来。我试图说服自己,我觉得这个游戏比 wow 还无趣,是因为早先年打 wow 打累了。一丁点不如 wow 的地方都会被放大来看,甚至比 wow 做的好的,也会被忽略掉。

在公式化的游戏进程里,我玩到了游戏设计者“体贴”玩家的地方,比如升级飞快,轻松的接交任务等等。但是让我能理解,又觉得不可理喻的地方是,游戏依然保留着“传统”MMORPG 的设定,那就是每次升级都可以自由分配属性点。

亲身体验后,更加坚定了我的想法:自由分配属性点在大多数游戏中是一个极其鸡肋的设定。

或许是大部分游戏设计师认为,我们要提供给玩家一些自由度,而用户接受了自由加点这个设定,那么这就是一个廉价稳定的方案,我们也要提供它,没什么坏处,不是吗?

其实,大多数用户根本不知道他们真的需要什么,只是服务提供商对他们反复强化一些东西,这些东西反过来才成了必须品。在软件行业中,这样的例子比比皆是。“不要听用户的”是我去年听到的深合我意的一个声音。当然,千万不要曲解这句话。我从来没有否认过,用户调查,市场分析,等等这些对于游戏开发的重要性。

作为游戏设计人,我们到底想提供给用户多少自由度,怎样的自由度,这些都必须在设计时考虑在内。我们不是神,可以创造出简洁的自然法则构建出如此复杂的世界,任其发展。而且上百亿年了,其中的智能生物都无法完全了解这些规则。

说回属性点自由分配的设计,看似自由,比如一个小角色从1 级到满级可能得到上十点甚至上百点自由分配组合在 4 到 6 个不同的属性上。实际上,真正有用的组合方式寥寥无几。有天真的设计师,指望玩家可以摸索出超出自己想象的自由属性点组合方案吗?如果真的出现了,那么对游戏平衡一定是一个灾难。

如果你有信心对你没有预料到的东西做出合理的判断(不至于引起灾难),那么只有一种可能,那就是你做出了数值背后更深层次的规律的探索。可惜,大部分设计师没有这么做。

总结一下。如果你给了玩家一些自由度,让他们自由组合一些东西,达到个性化的目的,那么在设计阶段,作为设计师的你,就一定要全面列出所有的组合可能,并一一对其审视。

几十上百个的属性点自由分配的组合方案,从绝对数字上说实在是太大了。没有人会一一排到纸上演算。实际上也没有这个必要,因为大多数组合间是有规律的,不至于把量变堆积为质变。大量的组合方案在对玩家来说都是无意义的,没有人会那么组合,除非他犯错误,否则一定能找到一个达到他期望目的(PvP PvE 或者别的目的)的更优解。

从我信奉的 KISS 哲学上看,允许这么多理论上的属性点组合方案本身就是一个错误。如果我们希望玩家有 10 种个性化方案,就应该用最少的元素提供出 10 种这个数量级的变化规则。而不是提供上千种,让玩家从中选出 10 种。网络游戏中,提供自由度而存在的规则和设定不是为了考验玩家的智力(有时连智力都不需要,只需要机械性的忍受力)而存在的。

我相信很多人在接触一款新游戏时,都有过和我一样的迷茫:不知道升级后点该怎么加,只是无谓的犹豫不决,或是干脆一古脑把点全加在最需要的方面(比如物理攻击职业把点全堆在力量上)。

--------------------------------------------------------------------------------

再来看看,大家沿袭最多的 MMO 系统,还是暴雪的——装备系统。很多玩家迷恋于装备上 +20 力量,+10 敏捷这些属性点加成。

我想大家在开发网游的时候,也自然而然的把这个系统做进产品里去了吧。

提一个问题:为了暴雪在做的时候,不把 +20 点力量直接写成 + XXX 点伤害力呢?这样玩家不就可以直接知道这个东西对他有什么好处了。

在 diablo 的年代,属性点意味着高级技能学习的先决条件;而 wow 中,同样的属性点,对于不同职业的实际效果反应是不一样的。比如敏捷可以增加盗贼的攻击力,而对战士则没有这样的效果。即使是同样依赖力量增加战斗力的职业,一点力量意味的伤害力的增强也是不同的。

所以,本质上,wow 中属性点到实际伤害计算公式中参量的变换,是为同一装备对不同职业的效能差异服务的。如果 wow 中,每个职业都用他们各自专有的装备,互不影响,那么,属性点的设计就是多余的。至少没有必要展现给玩家看,只让它作为设计战斗公式时的辅助工具就够了。

--------------------------------------------------------------------------------

几年前,我曾经跟一个同事争论过一些游戏数值设定的方法。我坚持认为,一切都是数学公式,我们在设计时完全可以用 A B C D E 代替我们想要的东西,甚至一些公式也不用先定好具体函数是什么,而只需要根据最终的需要反过来推导。反正最终都是一些初等函数的变换,不可能跳出大框价。

但是很多设计师总期望先从现实中或是小说设定中找到对应物,非搞清楚为什么力量影响攻击力,根骨导致 HP 总量更长。那些名词到底是什么更为重要。以此可以展开更多的想象。

我说的名词还包括,“法师”、“战士”、“盗贼”、“牧师”这些……

最近我自己在做数值设定了,亲身感受后,果然合适的名词的确能辅助设计。没错,我们总需要借助一些更有意义的词来在头脑中建立起概念。但是,最终我也发现,一旦能克服对这些名词的依赖,纯数学的构建出基本的关系,无偏袒的,只为了数字上的平衡和变化去设计整体的框架。后期再根据需要找到合适的词并套入系统,以此展开细节上的联想,效果可能更好。更能帮助我们跳出玩过的前人的总总游戏的框架,找到新的东西。

云风:游戏数值公式的表象与本质相关推荐

  1. go hive skynet_云风的skynet在国内外来看究竟算什么水平?可以一统国内游戏服务端框架吗?...

    它和云风过往放出来的东西一样,是非常具有实践性的,可以解决实际开发问题的.目前我所在的手游项目使用 Erlang 进行服务器端开发的,如果重新开始,我会选择使用 skynet. 游戏服务器开发中的难点 ...

  2. 云风skynet-如何用skynet手撕万人同时在线游戏丨actor模型详解

    如何用skynet手撕万人同时在线游戏 1. 多核并发编程 2. actor模型详解 3. 游戏实现 视频讲解如下,点击观看: 云风skynet-如何用skynet手撕万人同时在线游戏丨actor模型 ...

  3. Ejoy2D:“风魂”游戏引擎作者云风的又一力作

    摘要:Ejoy2D是一款图形引擎.基于OpenGL ES的图形库.Ejoy2D是国内简悦(EJOY)游戏公司所开发的一款游戏图形引擎,旨在帮助开发人员轻松地嵌入到游戏引擎中,方便开发者定制自己所需的功 ...

  4. 【云风skynet】详解skynet的多核高并发编程丨actor模型丨游戏开发丨游戏服务端开发丨多线程丨Linux服务器开发丨后端开发

    skynet中多核高并发编程给我们的启发 1. 多核并发编程 2. actor模型详解 3. 手撕一个万人同时在线游戏 视频讲解如下,点击观看: [云风skynet]详解skynet的多核高并发编程丨 ...

  5. 读程序员网游专题云风的文章有感

    本文作者:sodme 本文出处:http://blog.csdn.net/sodme 如有转载,请标明如上信息,以示尊重!! 1.勇于承认失败 国内的游戏厂商,让人觉得能有大家风范的少之又少,炒作.随 ...

  6. 网络游戏服务器构架设计(四):云风的轨迹

    最近闲着没事把云风的< 开发笔记>看了个遍,希望能从大牛的开发轨迹中得到一些启发.但可能是因为本人level太低,一遍看下来还是云里雾里,不甚明白.没办法只好再看一遍,希望能对他们的服务器 ...

  7. 云风开发笔记(1) 背包系统

    折腾了好久,终于可以开始正式项目开发了. 之前的这段日子,我们陷落在公司的股权分配问题中,纠结于到底需要几个人到位才启动:更是反复讨论,到底应该做个怎样的游戏.林林总总,终于,在已经到位的几位同学的摩 ...

  8. 对云风 cstring 第二次解析

    前言 从明天起 关心粮食和蔬菜 我有一所房子 面朝大海 春暖花开 本文前提条件 1.了解 posix 线程 2.了解 原子操作 3.具备简单C基础,或者 你也敲一遍. 如果上面不太清楚,你可以翻看我以 ...

  9. MMO游戏数值框架概述(偏模拟方向)

    - 作者:雪焰  2011-8-14 转载:http://bbs.gameres.com/thread_171173.html 概述: 本文讨论了以下几个模块: 1.国内游戏数值的现状 2.游戏数值策 ...

  10. 云风:不加班、不炫技,把复杂的问题简单化

    小学时跟随母亲去成人大学学习编程,初中开始参加信息学奥赛,高中写出人生中第一个成熟软件--Cview,大学发布开源软件风魂系列,后用于网易开发的<大话西游><梦幻西游>等热门游 ...

最新文章

  1. 安徽自考计算机基础考试时间,安徽2021年4月自考考试时间
  2. 美国科学院报告《无止境的前沿:科学的未来75年》
  3. linux select 异步,Linux上用select()实现异步的Echo服务器
  4. 新视野教育计算机题库,校园网.新视野教育计算机等级考试《二级公共基础》课后习题答案...
  5. 局域网ARP协议和欺骗技术及其对策
  6. jdk 1.8 java.policy,JDK1.8 导致系统报错:java.security.InvalidKeyException:illegal Key Size
  7. SAP CRM Long text unit test preparation
  8. Bent Normal
  9. 前端对所有文件请求添加header_【前端面试必问】浏览器缓存原理?送你满分答案...
  10. java oracle sql 参数_oracle pl/sql之在java中调用带有输入输出参数的oracle存储过程...
  11. C语言 system
  12. 线程安全的Singleton模板
  13. 免费讲座:数据库工程实施中的性能保证
  14. The Seven Tools of Causal Inference, with Reflections on Machine Learning
  15. ectouch之文件结构
  16. 完全小白级DataX安装配置过程详解
  17. ODAC Windows 安装
  18. 使用Inkscape制作网易云音乐LOGO
  19. 中标麒麟系统下(Neokylin7)达梦数据库(DM8)图形化安装
  20. CCNet: Criss-Cross Attention for Semantic Segmentation论文解读

热门文章

  1. 忘记Windows服务器密码怎么办
  2. 导线电感、走线电感、过孔电感计算公式
  3. TM1620 LED 驱动控制 程序
  4. 免校准的电量计量芯片_请问电能计量芯片CS5463增益如何校准?
  5. Windows NT操作系统
  6. Cause: java.io.IOException: Could not find resource com/itheima/po/CustomerMapper.xml
  7. 2021年,我已经说服 27 个人不上培训机构了
  8. 你知道直方图都能干啥?
  9. ASP.NET Core 引用其他程序集项目里面的 Controller 控制器
  10. 微信小程序input禁止输入特殊符号