平衡掌控者-游戏数值战斗设计

一、有效生命值

1、计算公式

有效生命=生命值/(1-伤害减免率)/(1-闪避率)


2、前摇和后摇

对数值来说,战斗由两大模块组成,一个是战斗公式生效前的战斗攻击流程,一个是战斗公式与自身流程。

比如说:砍死一只兔子,需要0.5s去拔起斧子。砍死后需要0.5s拔出斧子,这就相当于前摇和后摇。之后才能进入到下一个攻击循环。


3、CD

在下一个攻击循环之前,还有一个冷却时间,CD。

如果计算1分钟之内不同情况下的攻击次数,以下是计算表格。

二、远程攻击前后摇

1、法师

以上内容所提到的 都是 战士。

因此展示的攻击 前摇、命中、后摇 都是一个线性的过程。

但是法师比较特殊,释放技能需要一个“吟唱”的过程,因此这个过程就是前摇。

但技能释放出去后,飞行时间==后摇时间。游戏设计中会尽量减小飞行时间。

图为法师攻击的前后摇图示。

注:飞行时间不可控。因此,后摇时间不一定会比后摇时间长。


2、公共冷却时间

设计原因:限制角色在单位时间内的指令量和输出量。

如果没有公共CD,输出量会不好控制,

3、攻速

衡量攻速快慢时,需要衡量单位统一。

游戏中,攻击速度会和武器挂钩,也有游戏会与敏捷挂钩。

攻速低的武器容易伤害高,但输出少 ;攻速高的武器容易伤害低,但输出稳定

三、战斗公式流程

一般是两种:a.圆桌理论 b.逐步判断理论、

1、逐步判断

也就是一步一步判断流程。

但这种方式有一定的缺点。如果是大型游戏,战斗时产生的结果比较多,那么控制数值就比较艰难了。

因此只适用于一些小型的战斗流程。

2、圆桌理论

一个圆桌的面积是固定的,如果几件物品已经占据了圆桌的所有面积,其他物品将无法再被摆上圆桌

也就是说,如果优先级高的各结果的和超过100%,会把优先级低的各种结果挤出桌面——即为“圆桌理论”。

a.未命中概率:30%

b.命中且暴击:(1-30%)×10%=7%。

注:此处的暴击率是命中的0.7的暴击率,要计算出命中时的暴击率,而不是百分百命中的暴击率

c.命中目标但未暴击产生了普通攻击,概率为(1-30%)×(1-10%)=63%。

注:就是用命中率乘以未暴击率,计算得出。

如果命中率改为20%。其他概率为多少?

暴击:7%=》2%   命中:63%=》18%

所以,相当于进行了等比稀释,这就是逐步判断公式的优势。

会将各种可能性维持在一个稳定的比例。


四、一级属性和二级属性

关于攻击力(Attack Power,下文简称AP)的计算公式如下。
猎人/盗贼:AP=角色等级×2+力量+敏捷-20
战士/圣骑士:AP=角色等级×3+力量×2-20
萨满:AP=角色等级×2+力量×2-20
德鲁伊:AP=力量×2-20
法师/牧师/术士:AP=力量-10

1、属性计算的次序


计算力量的公式比较复杂,有针对所有装备力量的百分比加成,也有针对所有力量的百分比加成。公式如下。
a.装备力量和=武器力量×(1+武器力量百分比加成)+头盔力量×(1+头盔力量百分比加成)……(计算所有装备力量和)

b.力量总值=装备力量和×(1+装备力量百分比)+加点系统力量和×(1+加点系统力量百分比)+升阶系统力量和×(1+升阶系统力量百分比)+人物自身力量×(整体力量百分比加成+预留位置)

2、闪避公式

闪避公式有两个核心属性:攻属性、防属性。

攻属性是命中,防属性是闪避。

闪避公式有两种思路方向:
·命中先减去闪避,由差距的大小来决定命中的概率有多大。这种做法相对较少。
·命中和闪避进行除法公式计算,最终决定概率有多大。


如果使用除法公式,会更有优势。

命中率=命中/(命中+闪避)

总结:

1.命中和闪避在前期的加点效果非常明显,玩家很容易从数值提升感受到战斗效果提升,从而对属性的需求变得强烈,进而促进消费。
2.命中和闪避在达到一定数值时,开始产生边际效应,但也不会完全无效,玩家依然有提升意义。

3、暴击公式

在暴击公式中,会遇到只有暴击值的情况

1.暴击减去抗暴击(如果没有防属性,那就直接算暴击),然后差值换算为暴击率。
2.暴击和抗暴击进行除法,计算出暴击率。

公式:暴击率=职业基础暴击率+暴击值转换暴击率

4、减法公式

伤害=攻击-防御

会造成强烈的差距感。

假设玩家初始攻击为10,此时新手村的弱鸡生命值为80。不难计算出空手情况下我们需要8次攻击才可以击杀弱鸡。此时我们做任务获得了一把攻击加5的武器,装备之后只需要6次攻击,弱鸡就会死掉,整整提升了33%的效率。而大部分国产游戏肯定会来一个类似1元送攻击加100的充值奖励。你充值之后,几乎在一定等级之内的怪物都可以被秒杀。这种效率的提升给玩家带来了巨大的诱惑。

5、乘除法公式

乘除法的伤害公式主要分两种。

a. 伤害=攻击 x (1 - 伤害减免百分比)

b. 伤害减免百分比=护甲/(护甲+人物等级 x K1 + K2)

另外的伤害计算公式:

伤害=攻击 X 攻击/(攻击+防御)

6、暴击伤害计算公式

公式如下:暴击伤害=普通伤害×(1+伤害暴击系数+特殊效果系数)+暴击后附加伤害

暴击后附加伤害是暴击之后直接附加的伤害,这是无视防御的。如果你想计算防御,那就把这个影响加在之前计算伤害的公式中并额外说明。


一般游戏在计算伤害的时候还会有两个系数,一个是伤害加成系数,一个是最终伤害减免系数。
最终伤害=伤害×(1+伤害加成系数)×(1-最终伤害减免系数)

五、属性价值

各个属性像不同国家货币一样,只要找到中间的汇率,这样就可以统一价值。

攻击属性我们是以提升了多少输出能力作为依据的;

防御属性我们是以提升了多少生存能力作为依据的;
输出能力是看属性可以提升多少每秒输出(DPS);

生存能力则是看属性可以提升多少有效生命值(EHP);

最终输出和生命的平衡看我们预期的战斗时长或回合次数;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95391.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用DataLoader加载本地数据 食物分类案例

目录 一.食物分类案例 1..整合训练集测试集文档 2.导入相关的库 3.设置图片数据的格式转换 3.数据处理 4.数据打包 5.定义卷积神经网络 6.创建模型 7.训练和测试方法定义 8.损失函数和优化器 9.训练模型,测试准确率 10.测试模型 之前我们DataLoader加载…

从零开始的python学习——函数(2)

ʕ • ᴥ • ʔ づ♡ど 🎉 欢迎点赞支持🎉 个人主页:励志不掉头发的内向程序员; 专栏主页:python学习专栏; 文章目录 前言 一、变量作用域 二、函数执行过程 三、链式调用 四、嵌套调用 五、函数递归 六、…

RAG 的完整流程是怎么样的?

RAG(检索增强生成)的完整流程可分为5个核心阶段:数据准备:清洗文档、分块处理(如PDF转文本切片);向量化:使用嵌入模型(如BERT、BGE)将文本转为向量&#xff1…

研发文档版本混乱的根本原因是什么,怎么办

研发文档版本混乱的根本原因通常包括缺乏统一的版本控制制度、团队协作不畅、文档管理工具使用不当以及项目需求频繁变化等因素。这些问题使得研发团队在日常工作中容易出现文档版本混乱的情况,导致信息的不一致性、沟通不畅以及开发进度的延误。为了解决这一问题&a…

ChartView的基本使用

Qt ChartView(准确类名 QChartView)是 Qt Charts 模块里最常用的图表显示控件。一句话概括:“它把 QChart 画出来,并自带缩放、平移、抗锯齿等交互能力”。QML ChartView 简介(一句话先记住:ChartView 是 Q…

系统扩展策略

1、核心指导思想:扩展立方体 在讨论具体策略前,先了解著名的扩展立方体(Scale Cube),它定义了三种扩展维度: X轴:水平复制(克隆) 策略:通过负载均衡器&#…

HBuilder X 4.76 开发微信小程序集成 uview-plus

简介 本文记录了在HBuilder中创建并配置uni-app项目的完整流程。 首先创建项目并测试运行,确认无报错后添加uView-Plus组件库。 随后修改了main.js、uni.scss、App.vue等核心文件,配置manifest.json并安装dayjs、clipboard等依赖库。 通过调整vite.c…

第4章:内存分析与堆转储

本章概述内存分析是 Java 应用性能调优的核心环节之一。本章将深入探讨如何使用 VisualVM 进行内存分析,包括堆内存监控、堆转储生成与分析、内存泄漏检测以及内存优化策略。通过本章的学习,你将掌握识别和解决内存相关问题的专业技能。学习目标理解 Jav…

面经分享一:分布式环境下的事务难题:理论边界、实现路径与选型逻辑

一、什么是分布式事务? 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 一个典型的例子就是跨行转账: 用户从银行A的账户向银行B的账户转账100元。 这个操作包含两个步骤: 从A账户扣减100元。 向B账户…

C++的演化历史

C是一门这样的编程语言: 兼顾底层计算机硬件系统和高层应用抽象机制从实际问题出发,注重零成本抽象、性能、可移植性、与C兼容语言特性和细节很多,学习成本较高,是一门让程序员很难敢说精通的语言 C是自由的,支持5种…

Qt6实现绘图工具:12种绘图工具全家桶!这个项目满足全部2D场景

项目概述 一个基于Qt框架开发的专业绘图工具,实现了完整的2D图形绘制、编辑和管理功能。该项目采用模块化设计,包含图形绘制、图层管理、命令模式撤销重做、用户界面等多个子系统,是学习现代C++和Qt框架的最佳实践。 核心功能特性 12种专业绘图工具 多图层绘制系统 完整的…

Linux驱动开发学习笔记

第1章 Linux驱动开发的方式mmap映射型设计方法。【不推荐】将芯片上的物理地址映射到用户空间的虚拟地址上,用户操作虚拟地址来操作硬件。使用文件操作集(file_operatiopns)设计方法。【极致推荐】platfrom总线型设置方法。【比较流行】设备树。【推荐】第2章 Linux…

mac中进行适用于IOS的静态库构建

前沿: 进行C开发完成之后,需要将代码编译成静态库,并且在IOS的手机系统中执行,因此记录该实现过程. 1主要涉及内容 1.1 整体文件架构 gongyonglocalhost Attention % tree -L 2 . ├── build │ ├── __.SYMDEF │ ├── cmake_install.cmake │ ├── CMakeCache…

C++二维数组的前缀和

C二维数组的前缀和的方法很简单&#xff0c;可以利用公式res[i][j]arr[i][j]res[i-1][j]prefix[i][j-1]-res[i-1][j-1]。输入4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16输出1 3 6 10 6 14 24 36 15 33 54 78 28 60 96 136#include<bits/stdc.h> using namespace std; int…

Wifi开发上层学习1:实现一个wifi搜索以及打开的app

Wifi开发上层学习1&#xff1a;实现一个wifi搜索以及打开的app 文章目录Wifi开发上层学习1&#xff1a;实现一个wifi搜索以及打开的app背景demo实现1.添加系统权限以及系统签名2.布局配置3.逻辑设计3.1 wifi开关的实现3.2 wifi扫描功能3.3 连接wifi总结一、WiFi 状态控制接口二…

【DSP28335 入门教程】定时器中断:为你的系统注入精准的“心跳”

大家好&#xff0c;欢迎来到 DSP28335 的核心精讲系列。我们已经掌握了如何通过外部中断来响应“外部事件”&#xff0c;但系统内部同样需要一个精准的节拍器来处理“内部周期性任务”。单纯依靠 DELAY_US() 这样的软件延时&#xff0c;不仅精度差&#xff0c;而且会在延时期间…

从零开始:用代码解析区块链的核心工作原理

区块链技术被誉为信任的机器&#xff0c;它正在重塑金融、供应链、数字身份等众多领域。但对于许多开发者来说&#xff0c;它仍然像一个神秘的黑盒子。今天&#xff0c;我们将抛开炒作的泡沫&#xff0c;深入技术本质&#xff0c;用大约100行Python代码构建一个简易的区块链&am…

网络通信IP细节

目录 1.通信的NAT技术 2.代理服务器 3.内网穿透和内网打洞 1.通信的NAT技术 NAT技术产生的背景是我们为了解决IPV4不够用的问题&#xff0c;NAT在通信的时候可以对IP将私网IP转化为公网IP&#xff0c;全局IP要求唯一&#xff0c;但是私人IP不是唯一的。 将报文发给路由器进行…

国内真实的交换机、路由器和分组情况

一、未考虑拥挤情况理想状态的网络通信 前面我对骨干网&#xff1a; 宜春城区SDH网图分析-CSDN博客 数据链路层MAC传输&#xff1a; 无线通信网卡底层原理&#xff08;Inter Wi-Fi AX201&#xff09;_ax201ngw是cnvio转pci-e-CSDN博客 物理层、数据链路层、网络层及传输层…

atomic常用类方法

Java中的java.util.concurrent.atomic包提供了多种原子操作工具类&#xff0c;以下是核心类及其方法&#xff1a;‌1. AtomicBoolean‌‌方法‌&#xff1a;get()&#xff1a;获取当前值set(boolean newValue)&#xff1a;强制设置值compareAndSet(boolean expect, boolean upd…