类似王者荣耀帧同步游戏的相关技术
游戏开发
王者荣耀属于典型的Moba类游戏,和英雄联盟属于同一种游戏类型,那么王者荣耀这种游戏是如何制作的?又需要学习哪些技术点呢?今天我们一起来分析一下。
这里有个教学视频可以学习一下, 或者加入Unity交流小组进行交流
Moba是什么
王者荣耀属于Moba类型游戏,Moba英文全称(Multiplayer Online Battle Arena)
缩写为Moba, 中文翻译为多人在线战术竞技游戏, 又称动作即时战略游戏, 这种游戏最重要的是玩家的手感,为了获得更好的玩家手感, 一般Moba类的游戏同步方式和传统MMORPG的状态同步方式不一样,采用的是帧同步,王者荣耀就是采用帧同步,也有使用状态同步的Moba游戏。
帧同步是什么
游戏服务器每隔一段时间(逻辑帧)采集各个客户端的玩家操作,然后把采集到的玩家操作,发往每个客户端,客户端自己来计算游戏逻辑,根据同样的玩家输入+同样的代码逻辑,得到同样的运行结果,这样每个客户端就同步了。
服务器每隔一段时间,这个一段时间是多长合适呢?原则上来说时间越短越好,时间越短,玩家操作响应反馈就越及时,但是随之而来的网络带宽和计算成本也增加了,于是就有了一个原则,在不影响玩家手感的情况下,越少越好,根据研究,玩家的反应时间约为50~100毫秒,所以帧同步设计为10~20帧,不会影响玩家手感, 据小道消息,暴雪的《守望先锋》每秒20帧。帧同步主要的业务逻辑全部都放客户端计算,所以服务器基本没有什么运算量, 性能好。由于所有的计算都放客户端,帧同步也有容易作弊的缺点。
帧同步比状态同步获得更好的手感
在网速正常的情况下,其实状态同步也能获得很好的手感,同时状态同步又是放服务器计算的更安全,为何我们不用状态同步做Moba而是用帧同步呢?状态同步和帧同步最大的区别在于网络波动的时候,网络经常会有波动,状态同步,如果服务器由于网络波动没有及时的发送状态数据包到客户端,这样客户端就会卡住(虽然时间很短,但影响手感),而帧同步就不一样,如果由于网络波动,帧同步客户端没有及时的收到玩家的操作,客户端还可以基于上一帧来做预测,因为玩家1秒能有3个不同操作就很不错了(一秒你能点几次按钮,自己可以测试一下),所以当网络波动的时候,通常基于上一帧的预测是非常准确的,所以帧同步应对网络波动的时候获得更好的手感。同时配合UDP的传送,能让手感更好。
王者荣耀采用了哪些技术?
王者荣耀整个分为:程序开发,美术设计,游戏策划。程序开发分为客户端与服务端两个部分,客户端采用的是现在应用比较广泛的3D游戏引擎Unity来开发,服务端采用的是C++来开发。一般像腾讯这些大公司都会获得Unity引擎的源码授权,每个项目开始的时候,都会自己定制渲染管线来获得最佳的游戏画面效果与性能,同时也会有自己的项目引擎框架。C++做服务器,性能非常的好,同时技术也非常的成熟,《王者荣耀》项目组也是之前做的一个项目转变而来,技术也积累了很久,服务端也有自己的一套框架。游戏美术分为游戏原画,角色建模,场景建模,动作粒子特效,游戏UI几个部分组成,原画负责设计每个英雄的美术风格,外形, 平面地图等,角色建模根据原画,把每个角色模型都建好,模型建好后,动作美术调好动画特效,游戏场景也类似,原画设计后,场景建模人员建3D场景模型,打上光照,最后烘培场景出来给程序使用。王者荣耀的策划做的很好,各职业的平衡也设计的非常好,这也是它受广大玩家喜欢的原因之一。
好今天的分享就到这里,喜欢王者荣耀,对王者荣耀技术感兴趣的同学,你们准备好自己开始做了么?^_^
————————————————
版权声明:本文为CSDN博主「Clank的游戏栈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:制作《王者荣耀》需要学习哪些技术?_voidinit的专栏-CSDN博客
类似王者荣耀帧同步游戏的相关技术相关推荐
- 帧同步游戏 服务器相关实现
每隔 LGOIC_FRAME_TIME 调用 on_logic_frame on_logic_frame里边主要是同步消息,做了以下几件事情 1:把过去的这一帧时间内收集的数据 插入到 match_f ...
- 从《王者荣耀》谈游戏的帧同步
转载:http://www.gameres.com/774540.html 农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示,<王 ...
- 类似于计算机的游戏,与王者荣耀相似的游戏盘点 类似王者荣耀游戏推荐
现在王者荣耀可以说是十分火爆,对于喜欢玩MOBA手游的玩家来说一定对其不陌生了.那么大家知道还有哪些和王者荣耀差不多的手游,同样能够让你体验到竞技乐趣吗?下面就跟小编一起去看看与王者荣耀相似的游戏盘点 ...
- Unity 帧同步游戏实现高光时刻
一.前言: 高光时刻这个功能,对于常玩游戏的应该都不陌生,比如王者荣耀的高光分享功能.以前很多人为了分享自己的游戏高光,还需要全程录制,然后自己截取,非常的麻烦,现在王者荣耀已经可以云端生成视频了,大 ...
- 帧同步游戏开发基础指南
最近一个月休了个假,体验了一下类似欧洲的田园生活.所以更新几乎荒废了,但是总结和积累是一直持续着的.根据前一阶段对于实时对战游戏的开发思考,写了这一篇入门级的文章,希望能记录下自己的想 ...
- (目录)[0]尝试用Unity3d制作一个王者荣耀(持续更新)-游戏规划
太得闲了于是想写个农药,虽然可能会失败但是还是要试一试. 因为是自学的不是Unity专业的可能表达语言会有些不标准!望见谅! 结构: 以组件式(比如说摇杆控制和玩家部分的编写是分离的,可以自由拼装)作 ...
- 2244小游戏HTML5小游戏,2244小游戏:王者荣耀干扰正常游戏扣多少分 举报不成功是什么意思...
王者荣耀干扰正常游戏扣多少分?干扰正常游戏故意演举报不成功是什么意思?玩家在游戏对战过程中,经常会遇到一些比坑的队友,玩家在举报的时候一般会选择其干扰正常游戏,怎么被举报了一般会扣多少分呢?接下来小编 ...
- 软件测试真假童子,19岁年薪千万,他打王者荣耀打成了“游戏圈的TFBOYS”
原标题:19岁年薪千万,他打王者荣耀打成了"游戏圈的TFBOYS" 成功都自有其道 争议不止不休 7月2日晚6点15分,江海涛吃完饭回到家里. 他的家位于四川乐山售价最高的小区之一 ...
- 极光大数据显示王者荣耀成为国民游戏已成定局
如果要选一款史上最火游戏,一定非腾讯旗下的<王者荣耀>莫属.依托微信及QQ两大社交平台与自身的卓越品质,<王者荣耀>从公测以来一路高歌猛进,长期霸占手游榜单渗透率.DAU等各项 ...
最新文章
- BZOJ 5064: B-number
- 【Python】又一个可视化神器Highcharts,Python版也有哦!
- haproxy的丰富特性简介
- 字段类型:mysql中int(3)与int(11)有什么区别吗?优化数据库字段占据磁盘的大小
- GitHub 超全机器学习工程师成长路线图,开源两日收获3700+Star!
- python之路-操作系统
- python中继承和组合的区别_Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类...
- JS计算GridView里的TextBox
- 谷歌地球 hosts文件_NO—谷歌地球===YESgt;gt;GoogleEarth
- java 200以内的素数_java200以内的素数每行每列7个代码怎么写?
- matlab如何实现波的叠加原理,什么是波的叠加原理?-王尚
- 很多次游戏的最后取胜实际上都有很强的偶然性
- java 密码 星号显示_Java多线程 例子 cmd窗口下 实现输入密码星号显示
- 从零开始做运营 进阶篇
- 马斯克辞任CEO,产品经理如何用项目协作软件武装自己?
- python爬取南京市房价_Python的scrapy之爬取链家网房价信息并保存到本地
- CNCC2019第三天 | 传统产业如何进行智能化升级?你踩雷了吗?
- 电子商务系统需求分析
- neo4j,MongoDB
- Wyn Enterprise 核心功能:行业领先的在线数据报表设计体验
热门文章
- 凸优化教程学习与理解(mark)
- Python爬虫解决验证码
- 国金股票自动交易接口怎么使用?
- linux关闭磁盘自检
- hdf heg 批量拼接_HEG安装教程(windows平台)
- iOS问题分析方法之【 打印视图布局、符号调试】
- 基于node.js + vant + vue-router + axios热点资讯H5移动端实现
- 用命令行查看mysql字符集_mysql查看字符集的方法和命令
- QQ 非绿钻如何上传本地歌曲 作为空间背景音乐
- matlab求勒让德多项式零点,有没有勒让德多项式导数 零点程序