当前位置: 首页 > news >正文

玉林网站优化wordpress联系表单

玉林网站优化,wordpress联系表单,wap网站前台,wordpress站群主机1. 客户端地图格子的相关知识在2.5D的MMO游戏里#xff0c;角色是通过3D的方式渲染#xff0c;2D的地图是通过2D的方式显示#xff0c;所以在客户端一般会有三个坐标系#xff1a; a) 3D坐标系#xff1a;所有需要3D渲染的角色和光效#xff0c;都以3D坐标系中定位。 b) …1. 客户端地图格子的相关知识在2.5D的MMO游戏里角色是通过3D的方式渲染2D的地图是通过2D的方式显示所以在客户端一般会有三个坐标系 a) 3D坐标系所有需要3D渲染的角色和光效都以3D坐标系中定位。 b) 2D坐标系用来定位和绘制固定的2D地图元素比如草皮、马路等。 c) 3D坐标里的格子坐标系用来实现打掩码、自动寻路和进行一些坐标配置(比如NPC和怪物初始的位置)。使用格子坐标一是为了方便打掩码和进行自动寻路的计算经典的A*寻路二是为了更方便查找坐标的具体位置。 端游使用的格子大小一般为(64, 32)手游的精确度要求低一些可以用(100, 50)即3D坐标系里长为100宽为50的矩形即是格子坐标系里的一个坐标。示例图如下 2. 服务器同步大格子9宫格MMO游戏里玩家要能看到地图上所有角色的行为这就需要将其它玩家的动作都通过网络数据同步过来。同步一般使用9宫格来确定哪些玩家的数据要同步过来然后自己的行为要同步给哪些玩家。 服务器大格子的大小以3*3的格子要总比客户端显示范围要大一点为原则。比客户端大一点是为了预留资源加载的时间。 如下图所示绿色表示手机客户端的显示区域当角色A在格子6中时他可以看到1,2,3,5,6,7,9,10,11这9个格子里的内容那么当他的状态发生变化时就需要同步给在这9个格子里的所有玩家同样当这9个格子里的有玩家或者怪物的状态改变时也需要都同步给角色A。 当角色A移动到角色B所在的格子(7)则他将不再看到1,5,9这三个格子里的内容玩家和怪物同时他将新看到4,8,12这三个格子里的地图内容。所以这个过程中服务器要下发消息删除角色A所在的客户端里的1,5,9这三个格子里的地图内容同时下发消息新增4,8,12这三个格子里的地图内容类型一。 推荐大格子具体的大小按客户端iPhone4S的960*640分辨来制定取屏幕长宽的1/2大一些可以定为640*360。 3. 角色的移动同步地图上角色的同步可以分为位移的同步和行为比如放技能的同步。这里主要讨论位移的同步方式。 位移同步的目的是为了将自己的位置变化发给服务器然后由服务器通过9宫格的方式转发给周围的其他玩家。 有的端游是以客户端格子的基本单位进行同步当玩家从一个格子移动到了另一个格子时就发消息通知给服务器。这种方式的缺点就是 一、同步的延迟。玩家从一个格子开始移动移动到另一个格子后才发消息给服务器服务器再转发给其它客户端那其它客户端的玩家位置总会有一点延后。 二、当网络不稳定的时候很容易看到其它玩家不是均速的移动比如玩家位置没动然后一下子瞬移到了下一个格子。 我们采用的方式是同步状态的变化然后由客户端来触发服务器对大格子跨越的判断 d) 当玩家点击地图上某个地方或者改变了摇杆方向玩家的运行状态就变化了即向某个坐标点移动。状态变化的时候客户端就立即给服务器发消息然后服务器进行转发。这样如果忽略了网络的延迟那这个角色在所有客户端上几乎是同时开始移动。 如果移动过程中没有其它变化则整个移动过程中只有一次消息同步。这里需要处理一个问题就是服务器需要知道这个角色什么时候跨越了服务器的同步大格子当角色跨越了同步大格子时服务器就需要进行第二节里类型一的操作。 e) 如何判断角色的移动过程中跨越了同步大格子有的游戏里采用服务器判断的方式即根据角色的移动速度和方向计算出跨越的时刻然后使用一个Timer来触发。同时如果服务器要取这个角色的当前位置则需要通过运动公式来进行计算。这个方案相对精确一些但比较复杂服务器也需要为每一个移动的角色设定一个Timer对服务器的性能有所影响。 我们采用的方式是由客户端判断角色每移动一小段距离然后发消息通知服务器服务器不对这个消息进行转发而只是判断是否跨越了大格子同时记录下这个坐标作为角色的当前位置。这一小段距离可以取100左右值取得越大时消息发送频率越小但服务器的同步大格子跨越判断和角色当前位置就越不精确。 因为是直接同步的运行状态所以客户端发给服务器的坐标单位是3D坐标系里单位而不是3D坐标系格子的坐标单位。这样就更加精确一点点距离的移动都能准确同步。 f) 同步运动状态的一个问题是如果玩家操作很频繁比如快死了逃跑时疯狂地点地图这时运动状态变化的非常快如果每个状态的变化都同步给服务器再加上广播那消息量是很大的。 所以需要设置一个状态同步的最短时间当运动状态变化很快时则将状态变化的消息缓存在客户端同时加一个Timer跟踪。当马上有新的状态变化消息出来时则进行替换同时更新Timer。当没有状态变化的消息出来时Timer到时间了就会触发将缓存的状态变化的消息发给服务器。 这样通过消息缓存加上Timer的处理既实现了运行状态同步的最短时间限制也保证了最后有效的运行状态会稍晚一点点发送给服务器。 4. 怪物的同步怪物的同步在传统的端游里是完全由服务器的怪物AI系统触发客户端只是纯粹的接受服务器下发的怪物状态数据。对于手机游戏里由于手机上很难出现像PC里那样的外挂所以怪物的AI可以考虑放在客户端触发同时减少怪物的状态同步。详细说明如下 a) 怪物的随机移动不同步 在地图上怪物都会有一个固定的位置。怪物没有进入战斗状态时就会在这个固定位置的周围走来走去随机的移动。这个随机的移动由每个客户端自己控制这样怪物的随机移动就不用消息广播进行同步了。 由于客户端自己控制怪物的随机走动所以会出现不同客户端里怪物位置不一样的问题。但由于怪物随机移动的范围较小所以这个问题不是很明显在手机上是可以接受的。角色打怪时是扇形的伤害范围所以即使怪物坐标在不同的客户端有点不一致打怪的效果也是可以接受的。 b) 怪物的行为同步 当有角色攻击被动怪物或者进入主动怪物的视野范围内时怪物的AI就被这个角色所在的客户端锁定了同时怪物进入攻击状态。攻击的判断完全由锁定怪物AI的客户端进行处理同时这个客户端会将这个怪物的行为上发到服务器由服务器广播给周围的其他玩家。 怪物的AI锁定使用抢占式即谁最先发消息给服务器申请怪物的AI锁定谁就获得了怪物的控制权直到怪物死亡或脱离战斗状态。 怪物可以每进行一次攻击客户端就发一个消息给服务器。这样做消息还是有点多特别是一群怪围着几个角色进行攻击时消息广播还是有点多。所以可以将状态的概念向上扩大只同步怪物在攻击哪个玩家而不同步每一次的攻击然后由每个客户端根据怪物固定的攻击速度各自去表现。这样一个怪去攻击一个玩家就会只有一次消息广播了。 c) 精英怪和BOSS怪的AI 精英怪和BOSS怪由于数量较少而且比较重要所以不能由客户端来申请AI控制权而是服务器根据某种策略来控制。所使用的策略可以考虑角色的伤害值、防御值、角色与BOSS的距离远近等根据这些因素服务器计算出BOSS怪当前最适合攻击的对象比如血量最少的玩家最脆弱的法师等然后将AI控制权发给那个客户端由那个客户端控制攻击行为同时通过消息让服务器同步给其他玩家。 总结怪物的同步方式的选择就是要尽量减少消息的广播同时让游戏效果在可接受的范围内。怪物AI的这个处理方式实际上是同时省去了游戏服务器的怪物AI模块端游一般是专门用的一个进程或者另外一台物理服务器来进行怪物AI的计算从而简化了MMO游戏的开发难度同时保证了较好的游戏体验。
http://www.zqtcl.cn/news/452475/

相关文章:

  • 国际物流公司网站建设浏览器正能量网站免费图片
  • 河南做外贸网站的公司怎么做家庭网站
  • 知名营销类网站互联网软件开发是什么工作
  • 做网站前新闻录入网站模板
  • 网站域名做跳转要收费吗科技信息期刊
  • 登别的网站应怎么做网站推广广告词大全集
  • 漯河城乡建设管理局网站wordpress icon class
  • 买空间哪个网站好广州多少网络科技有限公司
  • 网站的网络推广方案营销型网站建设论文
  • 苏州做网站便宜的公司哪家好门店管理系统app
  • 学校多语言网站建设网络维护网站建设培训
  • Wordpress外贸网站搭建公司建站系统的应用场景
  • 网站推广网络推广方wordpress汉语公益
  • 长沙做网站的公司有哪些宁波奉化建设局网站
  • 温岭专业自适应网站建设承德招聘信息网
  • 做公司网站的模板下载wordpress e
  • 网站建设基本知识wordpress 没有小工具
  • 北京完美建设有限公司网站酒店加盟
  • 山东网络推广网站德州市建设局质监站网站
  • api模式网站开发网站打开后显示建设中
  • 排名好的郑州网站建设免费营销培训
  • 美橙互联网站网站主要应用
  • 淘宝客网站做appuv推广平台
  • 网站公司可以做英文网吗图片加字制作免费
  • 海口个人建站模板精品课程云网站建设
  • 阿里网站空间莱芜新闻视频回放
  • 高清网站建设的好处wordpress 房产模板
  • 在建工程查询网站怎么自己开发网站
  • 旧电脑怎么做网站如何自己弄个免费网站
  • 聊城网站营销WordPress工作发布