文档章节

数值设计

F
 FaintX
发布于 2015/03/10 12:28
字数 1416
阅读 28
收藏 0

数值设计

标签(空格分隔): GameDesign


游戏中的数值设计,主要是三点:

  1. 归纳、抽象设计目的。
  1. 用数学表达设计目的。
  2. 优化及调整数值表现。

数学知识只要知道等差、等比、常用公式的函数图、概率论,就满足需求了。

一 归纳、抽象设计目的

很多时候,设计目的不是自己的看法,而是许多人的意见汇总(也有可能主要来源于老板、超级人民币战士等)。这些意见:

  • 可能是零散的(不成系统);
  • 可能对立(不同人提出的意见之间的冲突);
  • 可能矛盾(可能一个意见自身就是有冲突的);
  • 可能是感性的(如仅仅是提出了某种心情描述);
  • 可能是模糊的(提出者自己都无法描述自己想要什么);
  • 可能是错误的(提出者因为一些原因,描述出错,甚至是沟通有误差);
  • 可能是指向性的(仅仅提供方向),等等。

将这些意见融合,加上完善的思考,形成完整的体系是最重要的。很多时候,数值被同事质疑,往往是这一步没做到位,而不是数学不行。

如何归纳设计目的

1 罗列意见,并标注设计目的

很多时候意见矛盾的背后,有相同的设计目的。

2 归纳意见列表

  1. 将相同的意见合并。
  2. 将复杂的意见拆分(标准如:主语只能有一个,动词只能有一个)。
  3. 将相近的意见区分。
  4. 将矛盾的意见根据设计目的进行进一步分析是否真的矛盾。
  5. 将上面内容整理,逐条考虑设计目的合理性。
  6. 在合理性之后,考虑每条是否都有优化空间。
  7. 将矛盾的意见根据设计目的的优先级进行筛选。
  8. 将列表向意见提出人进行征询确认。

3 用自然语言抽象意见列表

如:

一些战斗表现的意见可能可以抽象成: 随着攻击方攻击的线性增长,防御方受到的伤害线性增加; 随着防御方防御的线性增长,防御方受到的伤害线性减少。

类似这样描述,后面公式就可以写成 攻击方.攻击 - 防御方.防御 = 伤害

抽象是为了理清公式设计的目的和步骤,如同代码的伪代码步骤。对于新手,这步帮助会比较大。

4 检查复杂度

这里要先插入一段关于复杂度的说明。当一个系统的设计目的意见列表形成后,就好像生活中一件事情可以有很多做法、次序一样,抽象的方法也有很多种。

原则上来说,单纯最简的方法是不存在的。设计目的既定,那么必然有那么多约束需要进行(一个目的要实现,至少需要一个甚至多个规则去约束它)。这些约束可能分布在多个模块当中,比如:

战斗的设计目的:随着角色的成长,战斗的回合数保持不变。 那么做法可能有:

  1. 成长线性,伤害用减法 A - B = C
  2. 成长线性,伤害用乘法 A * A / ( A + B ) = C (这个公式 A / (A + B)的意思是让B按比例去削弱A)

做法2的乍看上去,复杂度比较高。 但实际上做法1有几个问题:

  1. B大于A后,C小于0,伤害小于0自然是没办法接受的。所以公式需要加一层逻辑判断。
  2. 需要在角色成长模块约束B成长和基值的结果要小于A。 所以复杂度实际上移动一部分到角色成长模块当中。

也就是说,从MMO角度来说,做法2的复杂度远大于做法1。

所以当做公式之前,抽象意见列表时,需要着重考虑复杂度。

二 用数学表达设计目的

下面3个是按次序执行的。一般情况下不应作省略。

1 用数学图形表述模块

比如一个满级的角色,他的总数值当中,有多少比例是装备带来的,多少比例是自身成长带来的,多少比例是预留给状态的。

饼状图可以较好的表述模块的设计目的。

2 用数学曲线表述成长

记忆一般公式的曲线,比如: y = a + level * k 是一条直线。 在实际需要的时候,一般套用类似的公式原型,并修改参数即可。

3 用数学公式表达

如何抽象公式很难有个最优的做法,需要根据设计目的去实际操作。 但设计完数学公式后,记得检查各种极端情况。

三 优化及调整数值表现

测!测!!测!!!大量的测试,是优化的前提。 测到问题,在改之前,需要先将上面的步骤过一次,如果有意见或者设计目的的更改,需要立即更新,才能进行修改。 所以文档以及文档历史需要尽可能的完善、详尽,比如包括谁在什么时候提出了什么样的意见,据此抽象了什么样的规则,相应做出了哪些更改。这样实际工作能够救你很多次,也能节省很多时间!

© 著作权归作者所有

F
粉丝 2
博文 10
码字总数 5378
作品 0
厦门
私信 提问
滑动条设计:拇指法则

原文出处:nngroup 译文出处:百度mux 即使滑动条的设计再细致,用户的操作技巧再精准,用滑动条做准确的数值设定也是件困难的事情。如果对操作界面上的参数设置要求非常精确的话,那么建议设...

nngroup
2015/11/26
0
0
原码、反码、补码、移码和数值计算

欢迎访问我的个人站点,老廖的个人博客。 前言   计算机的数值编码和运算应该是本科一年级就会学习的基础知识。从软件开发这个角度来说,很多时候这些知识没有在开发过程中得到有效的利用和...

钓叟
2018/11/28
0
0
每条数据 条件 都不相同,该怎么设计 数据库?

每条数据 条件 都不相同,一个或 多个,该怎么设计 数据库? 先说 一般的情况: 三碘甲状腺原氨酸; 1.6~3.0nmol/L;偏高:疾病 A;偏低:疾病B 这是 一条检查指标 数据, 有一个 数值范围,...

Inszt
2016/11/20
489
9
项目开发总结

项目开发关键词: (设计层面) : 表设计 表间关系设计 (技术层面) : 不同数据类型的获取,转换,传递(字符型 , 数值型 , 日期型 , 文件型 ) 前端:(不同数据类型(字符型 , 数值型 , 日期型 , 文件...

noteman
2015/12/16
48
0
C Primer Plus 第9章 函数 9.11 编程练习答案

1、设计函数min(x,y)返回两个double数值中较小的数值,同时用一个驱动程序测试该函数。 2、 设计函数chline(ch,i,j),实现指定字符在i列到j列的输出,同时用一个驱动程序测试该函数。 3、编写...

idreamo
2016/07/19
355
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部