打印本文 打印本文  关闭窗口 关闭窗口  
游戏策划面试时问了很多 MMORPG 的问题是否从事游戏策划必须要懂 MMORPG?
作者:佚名  文章来源:本站原创  点击数  更新时间:2023/12/20 21:47:15  文章录入:admin  责任编辑:admin

  MMORPG核心算法之一就是AOI,本文主要从3个点来分析一下AOI算法的基本原理与实现步骤详解。

  假设MMORPG的一个单服游戏服务器上有3000个人在服务端的游戏地图上正在游戏,如果在理论上服务端要维持这3000人的游戏的数据与状态等, 客户端要创建3000个这样的玩家来在客户端上,接受服务端发来的3000个人中的玩家状态的变化,从而更新画面,同步状态。这样会导致一个问题,对于客户端而言,它要维持3000个角色个体的消息处理,动画等逻辑处理。对于服务端而言,每次有要给人状态有变化,要全部发给其它的2999个角色,这样带宽也会很高,新进来一个人登录到游戏服,要把所有的3000人的状态全部传送过去也是占用很大带宽。

  分析了MMORPG为什么要使用AOI,接下来聊下主流的AOI的算法与AOI代码编写前要理解的几个概念。目前主流的AOI算法有十字链表与九宫格算法。当MMORPG引入AOI管理后,就会多出几个概念:

  (1) EnterAOIEvent: 一个角色,怪物或NPC,进入A玩家的AOI区域内,服务器就会发送一个事件EnterAOI,告诉这个A玩家对应的客户端,这个客户端收到这个事件后,更具服务器的状态把角色创建出来;

  (2) LeaveAOIEvent: 一个角色,怪物或NPC,离开A玩家的AOI区域,服务器就会发送一个事件LeaveAOI, 告诉这个A玩家对应的客户端,这个客户端收到这个事件后把离开的角色怪物或NPC删除掉。

  本文我们的AOI算法采用的是九宫格算法,我们把整个可视范围(AOI)划成一个九宫格。如图:

  总结一下,基于九宫格,非常方便的能找到对玩家A状态变化感兴趣的人与玩家A对哪些人的状态变化感兴趣

  加上AOI以后,这样我们的每个客户端就只要同步它能看见的玩家的状态就可以了。

打印本文 打印本文  关闭窗口 关闭窗口