服务器AOI

简介:

 这两天优化了一下一个Java页游服务器的AOI。其实这个优化纯属迫不得已,因为项目已经很久了,当时很多怪物还都是暗雷!!玩家在杀任务怪的时候,需要去地图里面乱转以碰见怪物。

      根据策划的要求,将怪物刷成明怪。就是要玩家看到,当然怪物不一定要动。,只是作为一个影像。既然是优化,那我就彻底优化一下喽;之前的广播是这样子做的,一个玩家的状态更新(比如说坐标更新,头衔更新,等)都是全场景广播,其他客户端根据接收到的广播验证坐标,再判断是不是需要处理这条消息!这样就造成了很大的浪费!这次我使用格子的思想进行优化!(或者说九宫格吧)

      这里有一个前提--可见关系----如果我能看到你,那么你也能看到我。根据游戏设计格子的大小,大概从30-60不等,可以调整;每个玩家在场景内即可看到周围九个格子的信息,包括里面的怪物和宠物。玩家自己状态的更新,要告知周围的玩家;而周围九个格子内的怪物或者玩家的状态更新,也要广播给这个玩家。这里还是要区分怪物和玩家,因为怪物对玩家可见,而玩家并不对怪物可见。为每个玩家每个怪物维护一个可见列表,即在自己的状态更新的时候,要将自己最新的状态告知这个列表上的玩家! 同时场景要记录每个格子上面的怪物和玩家,还可以添加npc或者宠物列表!

      

  基本流程:

      1:游戏服务器启动时候,要添加怪物到对应的格子中。

      2: 玩家登入时候,要获取周围九个格子的信息,并将自己,添加到格子中怪物和玩家的可见列表。同时将格子中的玩家,添加到自己的可见列表中。

      3:玩家走动时候,如果从一个格子走到了另一个格子,就要计算那些格子由可见变为不可见,并且解除与这些格子中怪物和玩家的可见关系。还要计算那些格子由不可见变为可见,那么就要和这些格子中的玩家建立可见关系。在上图做一个简单的展示,比如说玩家从红色小屋的位置走到橙色小屋的位置,那么紫色区域由可见变为不可见,而黄色区域由不可见变为可见。那么就要接触和橙色区域玩家的可见关系,而要和黄色区域的玩家建立可见关系!

      4:玩家登出时候,解除和周围九个格子中的玩家和怪物的可见关系!

注意事项:

      1:在计算格子由可见变为不可见或者由不可见变为可见,一定要注意边界关系

      2:由于我们的服务器是用线程池处理的,所以在维护场景格子怪物列表,格子玩家列表时候,一定要注意同步问题!

      3:怪物维护自己的可见列表,还可以做成主动怪物!!主动攻击玩家!

      欢迎探讨!!!

相关文章
|
编解码
Google Earth Engine ——Terra MODIS植被覆盖度(VCF)产品是全球地表植被估计的亚像素级250m分辨率产品
Google Earth Engine ——Terra MODIS植被覆盖度(VCF)产品是全球地表植被估计的亚像素级250m分辨率产品
644 0
Google Earth Engine ——Terra MODIS植被覆盖度(VCF)产品是全球地表植被估计的亚像素级250m分辨率产品
|
编解码 ice
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR叶面积指数(LAI)和吸收光合有效辐射的部分(FAPAR)数据集包含描述植物冠层和光合活动的衍生值
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR叶面积指数(LAI)和吸收光合有效辐射的部分(FAPAR)数据集包含描述植物冠层和光合活动的衍生值
484 0
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR叶面积指数(LAI)和吸收光合有效辐射的部分(FAPAR)数据集包含描述植物冠层和光合活动的衍生值
|
编解码 算法 BI
增强型植被指数EVI、ndvi数据、NPP数据、GPP数据、土地利用数据、植被类型数据、降雨量数据
增强型植被指数EVI、ndvi数据、NPP数据、GPP数据、土地利用数据、植被类型数据、降雨量数据
增强型植被指数EVI、ndvi数据、NPP数据、GPP数据、土地利用数据、植被类型数据、降雨量数据
|
编解码
Google Earth Engine(GEE)——哥白尼大气监测 (CAMS) 全球气溶胶AOI近实时观测数据集
Google Earth Engine(GEE)——哥白尼大气监测 (CAMS) 全球气溶胶AOI近实时观测数据集
309 0
Google Earth Engine(GEE)——哥白尼大气监测 (CAMS) 全球气溶胶AOI近实时观测数据集
|
传感器 编解码 算法
Google Earth Engine——NOAA/CDR/PATMOSX/V53提供了高质量的气候数据记录(CDR),以及高级甚高分辨率辐射计(AVHRR)的亮度温度和反射率的多种云特性
Google Earth Engine——NOAA/CDR/PATMOSX/V53提供了高质量的气候数据记录(CDR),以及高级甚高分辨率辐射计(AVHRR)的亮度温度和反射率的多种云特性
159 0
Google Earth Engine——NOAA/CDR/PATMOSX/V53提供了高质量的气候数据记录(CDR),以及高级甚高分辨率辐射计(AVHRR)的亮度温度和反射率的多种云特性
|
编解码 关系型数据库
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR归一化植被指数(NDVI)包含从NOAA AVHRR表面反射产品中得到的网格化的每日NDVI
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR归一化植被指数(NDVI)包含从NOAA AVHRR表面反射产品中得到的网格化的每日NDVI
344 0
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR归一化植被指数(NDVI)包含从NOAA AVHRR表面反射产品中得到的网格化的每日NDVI
|
传感器 编解码 关系型数据库
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR表面反射率包含网格化的每日表面反射率和亮度温度,来自NOAA七颗极地轨道卫星上的高级甚高分辨率辐射计(AVHRR)
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR表面反射率包含网格化的每日表面反射率和亮度温度,来自NOAA七颗极地轨道卫星上的高级甚高分辨率辐射计(AVHRR)
319 0
Google Earth Engine——NOAA气候数据记录(CDR)的AVHRR表面反射率包含网格化的每日表面反射率和亮度温度,来自NOAA七颗极地轨道卫星上的高级甚高分辨率辐射计(AVHRR)
Google Earth Engine(GEE)——NOAA CDR GRIDSAT-B1数据集介绍(静止卫星的全球红外测量的高质量气候数据)
Google Earth Engine(GEE)——NOAA CDR GRIDSAT-B1数据集介绍(静止卫星的全球红外测量的高质量气候数据)
308 0
Google Earth Engine(GEE)——NOAA CDR GRIDSAT-B1数据集介绍(静止卫星的全球红外测量的高质量气候数据)
|
UED
Google Earth Engine——FORMA火灾警报数据集是使用两个MODIS产品的组合来检测的。NDVI(归一化植被指数)和FIRMS(资源管理系统的火灾信息)。
Google Earth Engine——FORMA火灾警报数据集是使用两个MODIS产品的组合来检测的。NDVI(归一化植被指数)和FIRMS(资源管理系统的火灾信息)。
103 0
Google Earth Engine——FORMA火灾警报数据集是使用两个MODIS产品的组合来检测的。NDVI(归一化植被指数)和FIRMS(资源管理系统的火灾信息)。
|
大数据 atlas
Google Earth Engine——全球地表温度夜间产品的基础数据集是MODIS陆地表面温度数据(MOD11A2)
Google Earth Engine——全球地表温度夜间产品的基础数据集是MODIS陆地表面温度数据(MOD11A2)
322 0
Google Earth Engine——全球地表温度夜间产品的基础数据集是MODIS陆地表面温度数据(MOD11A2)