位置: 编程技术 - 正文
推荐整理分享动作手游技术漫谈-网络方案(动作手游排行榜2020前十名),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:手游 动作类,动作手游好玩,动作手游游戏排行榜,手游 动作类,手游 动作类,动作手游技术漫画视频,动作手游什么意思,手游 动作,内容如对您有帮助,希望把文章链接给更多的朋友!
现如今能用心做单机游戏的开发商越来越少了,我们身边充斥着XX手游月入千万,XX手游公司估值几亿的神话。手机游戏是一种比较特殊的游戏,手机随身,玩起来方便,玩家随时随地都可以玩;它可以联网,但网络条件通常又不那么好,玩家可能有流量的限制,可能网络不稳定,可能网速不快。但是和单机游戏比网络确实可以给游戏增色不少,有网络才有社交的可能,伟大领袖曾说过,与人玩其乐无穷。
动作手游是选择弱联网还是长连呢?这个看具体的需求。所谓弱联网就是使用http协议,每次玩家操作需要数据的时候才通过http协议请求服务器,数据返回后连接断开,不维持Socket连接。所谓长连就是玩家登录后就和服务器建立Socket连接,直到玩家下线。对大多数手游来说长连是没有必要的。手游和服务器通信的主要目的有两个:一是同步玩家数据,一是广播消息。同步玩家数据,使用弱联网就可以了,玩家打开背包,请求服务器获取背包,玩家进入战斗,请求服务器扣除体力,成功则进入关卡,失败则提示体力不足,完全没有必要维持连接。广播消息的话涉及到服务器向前端推送数据,这时候确实有维持Socket的必要了。什么?还可以用前端轮询的方法?手游应该很少会这么做,花的是玩家的流量啊。
一般游戏用到广播消息的地方也就是聊天了,如果只是聊天的话可以单独做一个长连的聊天服务器,其他部分还是用弱联网的。为什么能不用长连就不用呢?从服务端来看,长连就意味着每个在线用户都需要维持socket连接而服务器的socket数量是有限制的,这就大大降低了每个服务器可以支持的玩家数。如果同时在线玩家数超过了服务器负载的话就要考虑Load Balance的机制了。长连还意味着玩家的请求都是有状态的,长连的消息中一般就只包含消息类型和极少的参数,服务器需要保存玩家当时的状态,例如玩家是在主城还是在战斗中呢?这会加大服务器开发的复杂度和出bug的可能性。长连还需要加入心跳来检测前端有没有断开socket,因为手游的网络环境很不稳定,说不定一会就非正常断开了,服务器如果不知道,就不能回收资源。从前端来看,长连的麻烦在于需要处理好手机端的各种异常,例如玩家在2G/3G信号不好的情况下,连接还在,但是却没有数据返回;玩家按下Home按钮;手机自动锁屏了;玩家断网之后如何重连等等。
如果游戏有主城,主城中又可以看到其他在线玩家,需要同步玩家的进出和走动,这个也是需要用到长连的,同样这部分也可以使用单独的长连服务器。不过手机端同屏的人数有限,太多肯定会引起手机的卡顿,一般同屏人就差不多了,同屏人以上密密麻麻也看不清楚。所以各位产品就不要指望去营造一个人山人海的氛围了。关于走动在技术上还是有些技巧的。首先是移动消息的设计,移动是一个连续的过程,但是消息的广播确是离散的。所以移动消息不可能只是发送一个坐标,收到消息的前端直接设置玩家的位置到那个坐标点,这样你看到的玩家都是会闪现技能的。比较长规的做法是使用预测同步,每个服务器同步消息中包含玩家当前的服务器位置和运动的方向,然后前端根据玩家客户端的位置和方向向服务器位置做插值,使玩家跑到指定位置而不是闪到指定位置,这样你可能看到玩家跑动有快慢,但是不会闪过去。其次是同步的频率,主城中有很多玩家,每个玩家以一个固定的频率向服务器发送自己的位置,服务器在收到这些位置数据后不是直接转发,而是需要打包后以固定的频率广播给其他玩家。
有的产品一谈到动作手游就会有做实时PVP的冲动。在手机上,目前的网络条件下,这基本没戏。别说实时PVP了,就是在关卡中服务器出怪和掉落都不行,因为手机的网络太不稳定了,有时候延时会高得惊人,我曾经遇到过s以上的wifi延迟,玩家看到的就是s不出怪(或者s怪物躺地上不消失)。玩家不会觉得这是网络问题,而觉得是你游戏的问题。因为他玩人家的游戏都是好好的。是啊,因为人家的游戏出怪和掉落都是前端直接计算的,不信你试试刀塔传奇,进了战斗断网照样能打。所以目前做手游,还是尽量把逻辑放到前端吧,玩家体验是第一位的。可能你的方案在测试的时候都是好的,可以接受的,但是到了玩家的网络环境下就不好了。如果你一定要做实时PVP,最好demo的时候就去地铁上试试。
Unity3d如何更新代码 CompileyourscriptinMonoDevelop/VisualStudioasa.dll,copyyourscript.dlltoAssetsfolderofyourUnityprojectandchangetheextensionfrom.dllto.bytes
Unity3D Vuforia Android 相机聚焦模式设置 使用了EasyTouch插件usingUnityEngine;usingSystem.Collections;publicclassInputController:MonoBehaviour{//UsethisforinitializationvoidStart(){}//UpdateiscalledonceperframevoidUpdate(){}//Subscribeto
关于Unity3d后台运行——Application.runInBackground 在项目中使用VS_Socket_UDP_Sender发送消息到Unity3d_UDP_Receiver,接收正常,并且测试得Unity在后台时是可以正常接收消息的。但是由于消息的内容是需要控
标签: 动作手游排行榜2020前十名
本文链接地址:https://www.jiuchutong.com/biancheng/378788.html 转载请保留说明!友情链接: 武汉网站建设