《铸梦之路》帧同步卡牌手游案例 回放、倍速、跳过
帧同步卡牌手游案例
- 1.演示视屏
- 2.帧同步卡牌放置手游介绍
- 3.游戏战斗机制解析
- 4.倍速战斗、战斗跳过、战斗回放实现方式。
- 6.案例下载地址
1.演示视屏
帧同步实现RPG回放快放
该演示案例使用到的技术:
帧同步
逻辑渲染分离
定点数学库
随机种子 随机数
战斗加速
战斗回放
2.帧同步卡牌放置手游介绍
目前市场上的卡牌游戏在国内的市场上的表现也是很不错的,毕竟现在的人越来越忙,时间也越来越少,这种放置休闲性的游戏,每天放松的时候玩玩还是很不错的。这两年也有表现很出色的卡牌放置手游,就比如前两年特别火的《剑与远征》手游,以及今年特别火的《斗罗大陆:武魂觉醒》他们都是放置卡牌手游的佼佼者。
3.游戏战斗机制解析
斗罗大陆武魂觉醒手游战斗演示
这里博主就以最近的《斗罗大陆:武魂觉醒》来作为案例,剖析一下该游戏使用到的技术点。咱们这里只谈战斗,不谈其他。
就战斗而言,可以看到战斗的核心就是回合制的攻击和技能释放。当然还有一点不起眼,也非常重要的功能,就是倍速切换。以及战斗回放。这两个功能看似不起眼,但却对游戏的制作方式起着决定性作用。
为什么?很简单,原因如下:
首先战斗部分使用状态同步或帧同步是都可行的。但是如果使用状态同步,倍速播放和回放是很难实现的。因为如果使用状态同步,就意味着战斗是实时通讯,即服务端和客户端都必须同时进行战斗。客户端要根据服务端的消息推送去更新战斗画面。这种情况下就导致1倍-3倍快放很难实现,因为受服务端推送影响,要实现倍速就只有服务端去加速消息的推送,但很显然,大量、频繁、快速的消息交互对服务端的压力是巨大的。所以说,这种方案基本算不上是个解决方案。这还不考虑回放功能,如果要做回放,就意味着要储存大量的状态同步数据,供别人下载或本地回放使用,但过大的回放文件在下载的效率上肯定是成一个反比。必定是文件越大,下载越慢,最终就导致游戏的体验性、品质下降。
就上面列出的问题而言,该方案不是最佳。
下面咱们在说说使用帧同步做战斗效果:
前置条件:
服务端:使用定点数做战斗逻辑运算。(最好是C#,与客户端使用一套定点数学库)这里就以服务端是C#,与客户端公用一套定点数为例。
客户端:帧同步
首先我们知道,帧同步的逻辑数据计算机制就是 相同的输入+相同的时机=相同的输出。 由于服务端和客户端在计算战斗逻辑时,使用的都是定点数,也就意味着,服务端和客户端的输入相同,结果就相同。 有这个前提下,咱们的战斗玩法难度就直接从5星掉到1星了。这么夸张吗? 对,没错。如果有半颗星,我可能会给半颗星。
首先,输入输出相同,也就意味着,我们的战斗,只需要一个输入,有了这个输入我们的战斗就能非常完美的跑起来。而这个输入,由服务端下发。我们只需要在战斗结束后,再去找服务端校验下战斗结果即可。当然服务端也完全可以做到在我们请求战斗数据的时候就直接把战斗计算完成并把结果一并返回。这样我们的跳过战斗功能也就完美解决了。 因服务端只计算战斗数据并不跑渲染的原因,所以基本瞬间就计算完成。而客户端在请求战斗数据结束后,就进入了帧同步离线战斗,在客户端的离线战斗去实现倍速播放毫无难度好吧。至于其回放功能,我们只需记录输入数据即可。不管是下载还是本地回放,速度简直快到毫无察觉。这就是使用帧同步技术去做卡牌放置游戏的好处。并且也只有帧同步最适合去做卡牌放置游戏。
4.倍速战斗、战斗跳过、战斗回放实现方式。
倍速战斗实现的方式也非常简单,客户端在合适的时机,把时间缩放相乘于倍数,即可实现倍速战斗。这也是使用帧同步的好处。当然不同的游戏,倍速战斗涉及的难点也不一样,但就目前这款游戏也就仅此而已。
战斗跳过则需要由服务端提前计算出战斗结果,并回复给客户端,客户端在渲染战斗的过程中可随时中断并跳过当前战斗画面获得奖励。
战斗回放只需要客户端保存战斗开始的英雄战斗数据,并在需要回放的时候,输入该数据,即可完成回放。由于是在帧同步的前提下进行输入,所以不管回放多少次,结果和画面渲染的技术,永远都是一致的。
以上实现方案均建立在服务端与客户端都使用帧同步的情况下,若其中涉及到随机数,则需由服务端下方随机种子。
6.案例下载地址
该演示案例使用到的技术:
帧同步
逻辑渲染分离
定点数学库
随机种子 随机数
战斗加速
战斗回放
重要:想学习帧同技术,以及对放置卡牌手游感兴趣的可以直接加群进行获取案例Demo。
QQqun:728685392
《铸梦之路》帧同步卡牌手游案例 回放、倍速、跳过相关推荐
- 《铸梦之路二》帧同步卡牌手游案例 回放、倍速、跳过
作者介绍:铸梦xy.IT公司技术合伙人,IT高级讲师,资深Unity架构师,铸梦之路系列课程创始人. 帧同步卡牌手游案例 1.演示视屏 2.帧同步卡牌放置手游介绍 3.游戏战斗机制解析 4.倍速战斗. ...
- 《铸梦之路》帧同步卡牌放置手游(斗罗大陆武魂觉醒、上古王冠)
帧同步卡牌放置RPG手游 一 视屏演示 二 前言 三 技术点: 1.同步帧 2.随机种子 3.定点数 4.逻辑渲染分离 5.技能系统 技能系统简单点来说大致都可以分为以下三个阶段: 1.普攻型技能 2 ...
- 《铸梦之路一》帧同步
帧同步解析 1.帧同步介绍 2.帧同步实现流程 3.帧同步不同步的罪魁祸首 4.定点数 5.随机种子(随机数解决方案) 6.表现与渲染分离 7.UDP网络传输协议 8.定点数物理引擎 9.结尾 10. ...
- 【Unity 2D AABB碰撞检测】铸梦之路
作者介绍:铸梦xy.IT公司技术合伙人,IT高级讲师,资深Unity架构师,铸梦之路系列课程创始人. 目录 1.AABB 碰撞介绍 2.常用2D碰撞盒 3.为什么要学习如何编写碰撞检测 4.2D BO ...
- [推荐] 一个 Node.js 技术选型案例:使用 CARMEN 作为卡牌手游技术栈
作者 @超人张宝胜 ,原文地址:https://zhuanlan.zhihu.com/p/103724412,如需转载请联系作者授权. 前言 本文介绍了在资金.人员.时间上全面告急.云服务提供商不确定 ...
- 网络同步在游戏历史中的发展变化(二)—— Lockstep与帧同步
前言: 网络同步属于游戏开发中比较重要且复杂的一部分,但是由于网上的资料内容参差不齐,很多人直接拿别人的结论写文章,导致很多人对这一块的很多概念和理解都是错误的.本文参考了大量的相关论文和资料(三十篇 ...
- Untiy 帧同步的探索之路一 位置帧同步
Untiy 帧同步的探索之路一 位置帧同步 环境 使用到的技术 未使用技术 帧同步核心 锁帧 帧同步 UDP 同步方式 定点数数学库 帧同步技术是早期RTS游戏常用的一种同步技术.与状态同步不同的是, ...
- rtmp时间戳pts、dts矫正解决卡顿快放慢放问题与倍速播放的实现
rtmp时间戳pts.dts矫正解决卡顿快放慢放问题与倍速播放的实现 问题分析与解决思路 控流思路 倍速播放思路 实现方式 1.控流,矫正pts.dts来解决播放卡顿,画面抖动等问题.匀速推流 2.倍 ...
- 【Qt+FFmpeg】解码播放本地视频(二)——实现播放、暂停、重播、倍速功能
目录 一.FFmpeg解码流程图 二.播放.暂停.重播.倍速功能实现 1.创建播放.重播和倍速按钮 2.设置布局.样式.没有播放完毕前隐藏重播按钮 3.绑定信号槽 4.实现槽函数 (1)暂停和播放 ( ...
最新文章
- html5、canvas绘制本地时钟
- redis hash key mysql_Linux取得Redis数据库中hash类型的所有feild或者所有value
- java VM argument_java vm args
- 线性表--算法设计题2.29
- edp1.2和edp1.4_EDP​​的完整形式是什么?
- PowerBI分析Exchange服务器IIS运行日志
- MySQL — 利用命令:获取系统当前时间、打开系统服务、Mysql命令界面快速回到之前的语句
- Fortran代码C化或Fortran与C/C++混编过程中矩阵转置的实现
- 佳能7660cdn 评价_佳能LBP7660Cdn说明书
- tunel凋亡试剂盒说明书_TUNEL细胞凋亡试剂盒内容及操作步骤(精)
- colorbox ajax,Colorbox弹出层插件
- 网络安全实战之植入后门程序
- 牛客IOI周赛17-普及组 数列统计(组合数)
- 十步会用IOCOMP–iplotx控件
- Jquery中AJAX参数详细列表
- CSS控制Table内外边框、颜色、大小示例
- PHP的isset和empty的区别
- iis6.0的网站建设及权限设置
- LeetCode(数据库)- 净现值查询
- PDF技术(四)-Java实现Html转PDF文件
热门文章
- linux内核参数详解 sysctl -a dns内核优化 dns优化 dnsmasq配置
- TLE9879的BLDC无刷电机原理
- layui 动态绑定日期控件
- vm虚拟机中的虚拟网络编辑器出现 不能更改网络为桥接:已经没有桥接的主机网络适配器的 解决方案
- PHP中16进制和8进制
- ClipSync -- 安卓手机的黄金搭档
- H5页面在手机浏览器上无法播放视频或无法切换视频源的解决方案
- ORB-SLAM2应用练习:三维重建系统搭建 (3)
- java中fork什么意思_java 中的fork join框架
- 【Rust 日报】2022-04-28 Spacedrive 一个开源的跨平台文件资源管理器