游戏开发论坛

 找回密码
 立即注册
搜索
楼主: kk3987986

[求助] 【数值问题】,增减buff先后问题

[复制链接]

2

主题

4

帖子

20

积分

禁止发言

积分
20
发表于 2013-7-23 11:03:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

11

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2013-7-24 15:49:31 | 显示全部楼层
这种问题没有正义解,只要规则统一就可以了。

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2013-7-24 16:24:25 | 显示全部楼层
你确定你真的是策划~
这种问题还需要想?

一般来说一个属性如果有被状态影响,那么每一种状态在对象身上就会多附加一种属性~

类似 生命值 是一个属性
对象初始有一个 生命值 的属性
然后对生命值影响的效果有
生命值增加 生命值减少 生命值百分比增加 生命值百分比减少4个
那么他就需要附加4个属性,但是如果可以计算负数,那么只需要计算2个属性~

而这其中任何一个值改变都要重算生命值

类似 生命值 = 基本生命值 + 附加生命值增加 - 附加生命值减少 + 基本生命值*(附加生命值加成百分比) - 基本生命值*(附加生命值降低百分比)

这里面任何一个属性改变都需要重新计算这个公式,当然这里是比较简单的没有负数形式的计算,同时不考虑其他属性对最终属性影响以及程序优化

0

主题

30

帖子

411

积分

中级会员

Rank: 3Rank: 3

积分
411
发表于 2013-7-24 17:00:06 | 显示全部楼层
我理解的计算属性的任何式子,都可以表示为
最终值 = (基础值 + 基础加成1 + 基础加成2 + ……)*(1 + 百分比加成1 + 百分比加成2 + ……)+ 额外加成1 + 额外加成2 + ……
(debuff就是加成是负值)

三部分,其中 基础加成 和 额外加成都是数值,百分比就是百分比。。。

lz的意思是 那个数值不知道算基础值还是额外值,然后两种算出来的结果差很多?

这三部分,每一个部分内部都是没有顺序的(加法交换律),先+10再-20和先-20再加10没关系
两个部分之间,会有顺序的问题,但这只是运算上的(先乘除后加减,有括号先括号),是不随着策划意图改变的。也就没有应该不应该有顺序一说。策划设计buff的时候,反而要根据这个规则,再结合自己的意图,去告诉程序,这个buff(如果是个数值)是括号里面还是外面。你要还原的话,自己试验下吧,看看每个数值的buff是括号外面还是里面。

每次属性变化都是重算的,这个别人说的挺清楚了。

最后,我lol玩得不多,实际怎么样不知道。但是7楼举得这个例子,不能说明是有顺序的。
先buff后debuff:
(1 * (100% + 30%)) * (100% - 30%) = 0.91
先debuff后buff:
(1 * (100% - 30%)) * (100% + 30%) = 0.91
乘法交换律。。。。

不过这个也是一种计算属性的式子,就是百分比那里变成
其他 * (1 + 百分比加成1) * (1 + 百分比加成2) * ……
感觉这种用的比较少,因为debuff都太强大了。

8

主题

128

帖子

1057

积分

金牌会员

Rank: 6Rank: 6

积分
1057
 楼主| 发表于 2013-7-25 13:36:06 | 显示全部楼层
daofeng 发表于 2013-7-24 17:00
我理解的计算属性的任何式子,都可以表示为
最终值 = (基础值 + 基础加成1 + 基础加成2 + ……)*(1 + 百 ...

谢谢您的好意,不过真的是有先后公式的。这点已经弄清楚了,你举的例子只有百分比,所以结果一样,中间还有一个数值加成和负数值,结果肯定有差了。

8

主题

128

帖子

1057

积分

金牌会员

Rank: 6Rank: 6

积分
1057
 楼主| 发表于 2013-7-25 13:38:44 | 显示全部楼层
间谍飞碟 发表于 2013-7-24 16:24
你确定你真的是策划~
这种问题还需要想?

你真的确定你的公式是正确的嘛?

1

主题

6

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2013-7-26 16:05:28 | 显示全部楼层
个人觉得
主要是你对于BUFF这个功能的设计目是怎么样的。大多数情况同“猴子与花果山”同学的公式
a=(a+a_mod_plus)x(10000+a_plus_times)/10000。不管先后顺序,两种BUFF效果(价值)是同样的(如果这是你想要效果的话)
公式只是为你设计目的服务的。没有绝对的好坏和对错。

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2013-8-10 20:27:52 | 显示全部楼层
kk3987986 发表于 2013-7-25 13:38
你真的确定你的公式是正确的嘛?

我不单确定正确,还确定所有的游戏都是这样,不使用正负数是因为很多策划连 生命值附加这么个属性 填正是增加 填负是减少都弄不清楚~
更不用说,百分比生命值增加 百分比基本生命值增加 这些,自己都弄不清楚属性的作用就开始想公式,以为和 1+1=2一般,只是不知道为什么1+1=2

8

主题

128

帖子

1057

积分

金牌会员

Rank: 6Rank: 6

积分
1057
 楼主| 发表于 2013-8-10 22:52:01 | 显示全部楼层
间谍飞碟 发表于 2013-8-10 20:27
我不单确定正确,还确定所有的游戏都是这样,不使用正负数是因为很多策划连 生命值附加这么个属性 填正是 ...

好吧,您是大神。我就问一个,你的基本生命值直接和百分比挂钩。那么你的基本生命值还是基本生命值嘛?
额外生命值就不计入额外百分比计算了嘛?

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2013-8-12 13:05:38 | 显示全部楼层
kk3987986 发表于 2013-8-10 22:52
好吧,您是大神。我就问一个,你的基本生命值直接和百分比挂钩。那么你的基本生命值还是基本生命值嘛?
...

基本生命值 是基本生命值
基本生命百分比影响值是影响值

但是所有影响基本生命值 的计算都要计算 基本生命百分比影响值

结构类似这样


一级属性                     基本生命值
二级属性   基本生命值影响值 基本生命值百分比影响值
三级属性          生命值附加值 生命值附加值
四级属性 生命值值附加影响值 生命值值百分比附加影响值

从上到下,上级属性改变,下级属性必定改变重算,下级属性改变上级属性可以不用重算。这只是一个概念,实际使用的时候一般是直接重算所有的,但是如果计算量非常巨大和频繁会使用中间参数记录

例如 1级属性收到二级属性影响后的值作为 基本生命值(叫法和实际意义不同,要理解意义不是名字)

然后 基本生命值受到三级属性影响的作为 生命总值

最后一级再影响生命总值 得到最终的 生命加成总值 也就是 最大生命值(这个是上限)血量的变化不会超过这个值。

而这个值的变化可能会影响到血量,也就是当前生命值,一般见到那的做法是生命最大值下降到低于血量的时候,血量等于上限或者等于 血量乘上 下降后的最大值占下降前最大值的百分比.上升也一样

你定义的额外生命值要看是那一级的属性,计算都是一样的,顺序就是递进的,你的记不记入计算就看属性的层级~
还有增加血量的计算等等等等,你先理清楚属性的作用吧,别上来就问,自己多看看就不会被鄙视~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-27 04:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表