游戏数值策划 伤害公式选择

article/2025/8/31 5:50:58

伤害公式的选择

这里讲的伤害公式,是和战斗公式存在一点差异的。战斗公式应该包含了造成伤害前的很多判断。
伤害公式通常可分为减法公式乘除法公式两大类。这里我们详细的讨论这两类公式的特点。然后在之后的工作过程中,根据需求选择最合适的战斗公式即可。

减法公式

伤害 = 攻击 -防御

减法公式是那么的清晰易懂。这里我们假设防御为10,看下伤害随攻击的变化。

伤害随攻击变化曲线

但存在一个大问题:当防御>攻击时,攻击毫无意义,极端情况下伤害变为0。这种设计会导致玩家过分堆积防御属性。也就是说防御属性和攻击属性严重的不等价。

早期游戏的解决方法简单粗暴,伤害最小值为1。想象一个场面,多名非R玩家围攻一个超R玩家时,不断产生的1的伤害飘字。不过如果你设计的就是一个以养鲸鱼用户为目的的游戏时未尝不是一种方式。这也是为什么国产页游多采取这种方式的原因。笑~

更进一步改进这个公式:先判断防御是否大于攻击的10%,如果大于则在1%~10%之间浮动,如果不大于则按照减法公式计算。这样就可以保证即使在不破防的前提下依然可以发挥1%~10%攻击力的效果。

上面这部分有很多小伙伴表示看不懂,这里我们以《梦幻西游》的物理伤害计算公式为例来解释。需要注意的是,实际《梦幻西游》的伤害公式还要考虑 修炼等级等一些其他的浮动参数。但这里为了方便理解无视了这些参数:
实际伤害 = 攻击力 - 防御力 + (攻击力*K1)

这里的参数K1作为1个调整系数,实际上就是给与攻击力一个保底值,假设这个参数是0.1,就表示在不破防的情况下依然可以打出10%攻击力的伤害。这在一定程度上保证了攻击力的效用。而K1可以在测试中根据实际情况进行调整。

这里再次提醒小伙伴们的是,公式的设计没有严格的标准答案,一定是按照具体的业务需求进行二次设计的。讲一些合适的参数加入到伤害计算公式中来满足游戏的需求也是数值策划最重要的工作内容之一
可以看出减法公式改进的方向都是针对于不破防的情况。
但是这里不要误会减法公式一无是处。减法公式实际上是我最喜欢的公式,因为数值敏感。设想一下你每增加1点攻击力,(在不会出现不破防前提下)伤害也会随之增加1点。这就是我在前文中说的属性的设计是明显的。
数值敏感性高,反馈明显,这也是很多策略游戏倾向减法公式的原因。

乘法公式

乘数法的公式有几种变种,这里我们主要解释两种。第一种是通过护甲计算出减免系数,第二种是通过攻击和防御一起计算出伤害。我们首先看一下第一种公式:
伤害 = 攻击 * (1-伤害减免百分比)
伤害减免百分比 = 防御/ (防御+人物等级* K1 + K2)
其中K1和K2是调整系数。这里我们按照K1=50,K2 = 200来查看伤害曲线如下图所示:

防御和减免百分比之间的关系

怎么理解这个曲线?随着防御力等比例提升,收益逐渐放缓。伤害减免百分比是无限接近于100%的。这就是为什么应用减法公式的游戏,玩家通常更关注防御力。而应用乘除法公式的游戏,玩家的注意力更多在攻击力上。
那么怎么理解K1和K2这两个参数?如果这两个参数均为0,那么伤害减免百分比就是100%。人物等级*K1实际上是使得人物等级(或者说角色成长)参与到计算公式中来,这实际上是对防御力转化为伤害减免百分比的变相削弱;而K2的作用则在于控制防御转换为伤害减免百分比的一个密度分布,这种在公式中留有控制参数的做法在数值设计工作中很常见。
这套伤害公式的应用以《魔兽世界》为代表。分析这款游戏为何使用这样的伤害公式,结合我们说的伤害公式的特点分析:魔兽世界中并没有非常多的人物战斗能力提升点(就是我们通常说的成长系统),等级和装备是最关键的战斗能力提升点。设计人员不希望游戏中出现所谓的"超级玩家"。魔兽世界希望玩家之间的属性相对公平,不会产生大差距。这里也再次说明了我的观点:采用什么样的伤害公式,要看游戏整体是怎样设计的,想要达到怎样的设计目的。

除法公式

除法公式是在乘法公式的基础上进化得来的。
伤害 = 攻击 * 攻击/(攻击 + 防御)
这里我们依然看一下这个公式的伤害曲线,假设防御力是100保持不变。伤害随着攻击的提升:

伤害随攻击变化曲线

有意思的是,当我们将其和减法公式对比时发现。此公式很好的解决了减法公式很头疼的防御>攻击的情况,并且在攻击力提高时逐渐趋近于减法公式的效果。不过这个公式还是有改良的地方,正如我们上文中所说,我们可以通过加入参数的方式来让这个攻势更灵活。这里就不多说了,读者朋友们可以根据业务需求自行改进。

属性价值

各种属性就好像各国货币一般,要衡量货币的价值,就要找到货币之间的“汇率”。
攻击能力可以抽象为每秒钟造成的伤害数值,简称秒伤DPS;
生存能力则可以抽象成提供多少有效生命值EHP(这里要注意有效生命值和我们通常所说的生命值是有区别的。)
而攻击能力和生存能力的平衡,就是通过我们预期的战斗时长(回合制游戏中的回合次数)T:

EHP = DPS * T

但随着游戏时间推移,属性也在不停成长。但战斗时长实际上是不会发生改变的(或者说不会有大的改变,不会出现1级时打怪需要10秒,60级时打怪需要10分钟的情况)因此,在任何一个时期,都可以说EHP和DPS的对应关系时保持不变的。这是属性价值评定的基础。


http://chatgpt.dhexx.cn/article/UbSElCAq.shtml

相关文章

游戏数值策划

游戏数值 - 拆解方法篇 大家好,我是Alice,一名喜欢捣腾数字的游戏数值策划 12345~ o(* ̄▽ ̄*)ブ工作中我会经常拆解游戏数值,通过数值理解市面上优秀游戏的设计思路。 今天想在这里跟大家分享一下我研究游戏数值的流程…

游戏数值策划入门教程

关注公众号 风色年代(itfantasycc) 500G游戏开发资料随便拿! 来自:http://cq.gamfe.com/news/60345.html 1. 卷首语 数值计算简述   以天堂为例的韩国的网游的入侵,把网游界的画面要求提高到一个境界,画面…

游戏数值策划入门介绍

网上有很多关于数值策划入门的文章了,也有很多精品,但是却鲜有提及如何认识数值策划这个岗位,我说的是思想上。这正如一本书介绍Excel,一味的介绍函数、VBA,操作技巧快捷键,却不告诉你应当如何看待函数、VB…

使用 docker 启动 nginx

运行如下命令: docker container run --publish 80:80 nginx上述命令可以不加 container ,为旧的命令格式: docker run --publish 80:80 nginx发布端口的格式如下,--publish 也可以简写成 -p --publish 本地端口:容器端口( 如果出现 bin…

Windows下Nginx的启动、停止等命令

Windows下Nginx的启动、停止等命令 可以进入到nginx的安装根目录,执行nginx.exe -h 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等,下面我就进行一些简单…

window批处理命令启动nginx

【README】 本文阐述了编写window批处理命令启动,停止nginx; 【1】启动nginx 文件: nginx-start.bat d: cd d:\temp\nginx nginx -s stop taskkill /im nginx.exe /f ping 127.0.0.1 -n 3 -w 1000 > nul start nginx pause 补充&#…

Linux启动nginx

Linux启动nginx 一、下载并解压安装包 1.首先我们需要安装nginx所需要的依赖 yum install pcre pcre-devel gcc openssl openssl-devel zlib zlib-devel2.在/usr/local/下创建文件nginx文件 mkdir /usr/local/nginx/3.进入/usr/local/nginx/ cd /usr/local/nginx/4.在网上…

Centos7 安装 Nginx及启动命令

1、卸载nginx 如果安装过请先卸载干净重新安装 首先输入命令: ps -ef | grep nginx检查一下 nginx 服务是否在运行。如果在运行就停止运行,需要在 nginx 的安装目录下的 sbin 执行,进入目录的命令如下: cd /usr/local/nginx/sbin如果配置…

nginx 启动命令

启动操作 nginx -c /usr/local/nginx/conf/nginx.conf -c参数指定了要加载的nginx配置文件路径 停止操作 停止操作是通过向nginx进程发送信号来进行的 步骤1:查询nginx主进程号 ps -ef | grep nginx 在进程列表里 面找master进程,它的编号就是主进程号…

Linux安装Nginx并配置启动命令

安装前准备工作 因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来 yum install gcc-cNginx的http模块需要使用pcre来解析正则表达式,需要安装pcre yum install -y pcre pcre-devel安装依赖的解压包 yum install…

nginx启动命令以及与配置systemctl

一.配置systemctl之前的启动方式 进入sbin目录下执行以下命令: 1 启动nginx的命令为 /usr/local/nginx/sbin/nginx 2 3 停止nginx的命令为 /usr/local/nginx/sbin/nginx -s stop 4 重启nginx的命令为 /usr/local/nginx/sbin/nginx -s reload 二.配置sys…

nginx启动命令和停止命令

进入nginx的sbin目录下 cd /usr/local/nginx/sbin/ 1、启动nginx ./nginx 2、停止nginx两种方式 #待nginx进程处理任务完毕进行停止。 ./nginx -s quit #先查出nginx进程id再使用kill命令强制杀掉进程。 ./nginx -s stop 3、查看nginx端口 ps aux|grep nginx 4、查看ng…

Nginx服务的启动和停止

使用Nginx的过程中,我们可能总是需要修改nginx配置文件,然后不停地启动或者停止nginx服务。 这里简单讲一下nginx的相关命令行。 找到nginx的安装路径 whereis nginx 此文章 /usr/local/nginx/sbin/ 是我本地nginx的安装路径 一、启动nginx服务 在…

Nginx常用命令(启动、重启、关闭、检查)

提示:我的nginx安装目录为:/usr/local/nginx 一、Nginx自身命令 1.启动 #启动 #1.直接启动 #进入nginx目录,执行启动命令 cd /usr/local/nginx/sbin ./nginx # 或者直接 /usr/local/nginx/sbin/nginx #2.指定配置文件方式启动 #进入nginx…

Python 开发环境Spyder介绍 【初学者友好】

好久没发基础类文章啦! 今天来发一个—— Spyder简介 Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境, 提供高级的代码编辑、交互测试、调试等特性, 支持包括 Windows、Linux 和 OS X 系统。 菜单栏(Menu bar…

Spyder安装教程只需三步_保姆式无基础 2020/11/7最新版

Spyder安装教程只需三步——保姆式无基础 2020/11/7最新版 Spyder较适合数据分析流&#xff0c;界面与Rstudio相似。如从事非数据分析流工作不建议安装Spyder,可以搜索<python开发环境>关键词选择其他开发环境。 看了目前的Spyder安装教程&#xff0c;有些看不懂有些太复…

Python IDE Spyder的简单介绍

最近深度学习发展非常迅猛&#xff0c;大有一统江湖的趋势。经过一段时间学习&#xff0c;发现自己对这种神奇的玄学非常感兴趣&#xff0c;希望能够进一步的研究。而这种研究性学科单纯地看论文比较难以明白&#xff0c;所以希望能够跟进大牛们写的代码深入学习。我发现很多大…

Python下Spyder安装方法

1.下载spyder ide&#xff0c;网址如下&#xff1a; https://bitbucket.org/spyder-ide/spyderlib/downloads/ 进行正常的安装即可&#xff0c;没有什么特别需要注意的地方&#xff1b; 2.安装后&#xff0c;运行桌面的快捷方式&#xff0c;发现报错&#xff0c;错误如下&…

spyder使用笔记

问题1&#xff1a;spyder无法调试 具体现象&#xff1a;可正常运行程序&#xff0c;点击调试后卡在第一行&#xff0c;点击下一步无反应&#xff0c;不能调试 spyder4.1.8、spyder5.1.5都出现这样的问题 原因&#xff1a;spyder软件本身的问题&#xff0c;GitHub上有人提出了…

Spyder控制台的简单使用

看前提示&#xff1a;笔者仅是刚刚接触Spyder和Python&#xff0c;使用方法仅局限于表面。刚开始的界面&#xff1a; 在In [1]: 后输入a input() 然后按下回车键 这里光标处可以输入你想给a赋的值&#xff0c;举个例子&#xff1a;给a复制1024 再按下回车键&#xff1a; 之…