arpg怎么做战斗回放

2024-06-19 19:48
文章标签 怎么 回放 战斗 arpg

本文主要是介绍arpg怎么做战斗回放,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

游戏一般需要做战斗回放功能,这大多是回合制游戏。arpg虽然比较少,但有些情况下还是需要的。

那么如何实现arpg战斗回放呢?

如果是回合制,那么应该是容易的,因为回合制本身就是一个队列指令不断被执行。这个指令中包括每个回合的

动作以及动作的结果。那么假设一场战斗有20个回合,那么其实也就20个回合的指令存储一下,然后重播这个队列就好了。

但arpg不同,arpg并没有按照队列执行的概念(或许他是有一个队列),你只是赋予了非玩家操作角色一个ai,而玩家可控制角色就按照

你的操作去执行指令。那么为什么不能像回合制一样保存指令去执行呢?

假设我们按照回合制的思路去思考,那么马上就会发现几个问题:

1.指令数量中很多都是无效指令。 玩家疯狂的点击一个点,其实真正被执行的只有几个有效指令。一般战斗回放不能太大,不然你直接录像好了。

像魔兽争霸星级争霸 一场比赛半个小时下来 整个replay压缩后不超过1M. 所以我们可以想象这肯定不是记录所有玩家的指令,这样效率低下。或许你可以

去判断只保存有效指令。但这毫无疑问增加了工作量,毕竟你无法知道到底会有多少种不同的指令,而“有效”又作何定义?如果不小心遗漏了指令导致结果

看上去比较奇怪,那也不是我们想要的结果。

2.单纯执行指令结果可能导致和实际结果不一致。arpg的技能一般都是根据实时位置来判断是否命中,而技能本身也包含一些随机性。那么问题来了,

我不可能只执行指令而让这次能和上次一模一样。所以肯定需要保存结果。那么接下来的问题就是,我知道了指令和结果,怎么去配合播放呢?假设我指令

让a和b去打c,第一次是a走前面,但第二次执行却是b走前面(这可能是寻路算法引起的),但是结果你保存的是a首先打到c,所以你看的replay是这样的:

a远远的播放攻击动作,c在扣血,而b却停顿了一下才攻击。当然后面也许会回复正常。这个例子应该只是小问题,但你无法保证不会有其他问题。

3.可维护性差。arpg中的技能是灵活多变的,也许每次设计一个新技能,你就不得不思考replay播放问题。但这非常奇怪,明明你是一个做技能的功能,

却要被replay干扰。

所以其实一开始的思路不应该把自己框住在指令队列里。

仔细思考你就会发现,其实回放的东西无非就两种: 物体和物体的位置以及状态。我们这么假设,我们每一帧都记录物体的位置和物体的状态,包括

角色怪物特效等等。这样似乎就和游戏本身是arpg还是回合制没关系了,应该这么说,任何东西都可以按照这个思路去做replay,不过每个东西都可以根据

自己的实际情况进行变形和优化。比如回合制,可以单纯按照指令执行会更加简单。而arpg,则需要回归到这个基本的思路。

有了这个思路,让我们看看具体怎么实现。

1.角色怪物特效弹道等,都有位置信息。我们只要每一帧都记录这些信息,那么从位置上,我们就可以完美还原原来的场景。当然这需要优化,如果角色不

在可视范围内,那么其实不用记录(假如你不是魔兽争霸那种可以自己拖位置去看任何地方的情况的话)。

2.角色怪物的状态,比如攻击,死亡。这你不应该用每一帧记录。首先没帧记录角色动作播放到哪一帧信息量过多,而且从实现角度上说,你还原战斗需要不断

让角色去播放那一帧动作。这其实没必要,你只要知道角色在那一帧播放哪一个动作就好了。如果已经在播放这个动作了,那么你啥都不用做。

3.弹道特效,这里我要特别说明,我本来是用指令去执行弹道和特效的,因为我觉得应该够用了,但实际发现,弹道和特效经常会配合技能而有各种各样的特殊情况,

比如追踪弹道,随机特效。所以我建议将弹道和特效按照角色怪物的方式处理。这样不会与技能产生不必要的耦合。

好了,接下来就很简单了。将所有的战斗回放接口封装起来。做技能的人压根不用考虑战斗回放的东西。因为只要有了上述机制,神马奇葩技能都能够还原。

这篇关于arpg怎么做战斗回放的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075985

相关文章

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

禁止复制的网页怎么复制

禁止复制的网页怎么复制 文章目录 禁止复制的网页怎么复制前言准备工作操作步骤一、在浏览器菜单中找到“开发者工具”二、点击“检查元素(inspect element)”按钮三、在网页中选取需要的片段,锁定对应的元素四、复制被选中的元素五、粘贴到记事本,以`.html`为后缀命名六、打开`xxx.html`,优雅地复制 前言 在浏览网页的时候,有的网页内容无法复制。比如「360