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

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

好了,接下来就很简单了。将所有的战斗回放接口封装起来。做技能的人压根不用考虑战斗回放的东西。因为只要有了上述机制,神马奇葩技能都能够还原。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
I'm sorry, I cannot create a GDScript ARPG demo as I am an AI language model and do not have the capability to create games. However, I can provide you with some resources and guidelines on how to create your own GDScript ARPG demo. 1. Game Design: Before starting the development process, you need to have a clear understanding of the game mechanics, story, characters, and game world. You can create a game design document (GDD) to organize your thoughts and ideas. 2. Character and Enemy AI: In an ARPG, character and enemy artificial intelligence (AI) plays a vital role. You need to create AI scripts that control the movement, combat, and decision-making of the characters and enemies. 3. Inventory and Equipment System: An inventory and equipment system is an essential part of an ARPG. You need to create scripts that allow players to collect items, equip them, and use them to improve their characters. 4. Combat System: The combat system is the core of an ARPG. You need to create scripts that control the different combat mechanics, such as attack, defense, and special abilities. 5. User Interface: A user interface (UI) is the way players interact with the game. You need to create a UI that is easy to use and provides players with all the necessary information. 6. Testing and Debugging: Once you have created the game, you need to test it thoroughly to make sure there are no bugs or glitches. You can use the built-in debugger and testing tools in Godot to identify and fix any issues. There are many resources available online that can help you learn GDScript and develop your ARPG game. You can start by checking out the official Godot documentation and tutorials, as well as online forums and communities where you can ask for help and get feedback on your game.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值