游戏地图掩码相关(msk)

当前位置 : 首页 > 网页制作 > CSS > 游戏地图掩码相关(msk)

游戏地图掩码相关(msk)

来源: 作者: 时间:2016-02-16 10:04
在游戏的世界里,玩家在地图上的某点,是否能够走动,是否遇到障碍,是否是走到了阴影处,是否水层等等先关信息都要我们前后端知道。那么服务器是如何进行实现的呢。下面主要

     在游戏的世界里,玩家在地图上的某点,是否能够走动,是否遇到障碍,是否是走到了阴影处,是否水层等等先关信息都要我们前后端知道。

那么服务器是如何进行实现的呢。下面主要给大家讲讲。

     首先,我们知道图片是以像素为主要为单位进行计量,但是我们后端又不能使用这个东西,在二维的世界观里,我们是以坐标(x,y)具体的表现出其某个东西,所在的位置。因此,我们就要通过这个像素来表达出地点。

     

      想象一下啊,当我们确定到一个坐标的时候,但我们将其慢慢变大,那个小点就开始显示长宽。因此我们也用其原理。因此,我们是以将地图划分为很多个小格子,这些小格子,其实就代表了所谓的一个点,那么这个小格子是多大呢,这里我们一不超过50的为单位,作为长和宽。

      那这个小格子怎么样去表达具体的信息呢,处,每个因此,我们约定,用1个字节来表其信息,一个字节八位0000 0000,每个位具体可以表示什么含义,比如,第一位如果0表示可行走,1表示障碍。第二位0表示无遮掩,1表示遮掩。等,这里我就不一一举出。不同游戏有不同的具体表达信息。

       好,那么我们划分了很多歌小格子,每一行都有相同的小格子,那么我们就知道了这个地图,长有多少个各自,高有多少个格子。

设计一个结构体,头

[] struct tagMapHead 

    int     m_width;//地图的宽 

struct tagMapHead
{
    int     m_width;//地图的宽[html] view plaincopyprint?int     m_height;地图的高 

    int     m_height;地图的高[html] view plaincopyprint?short   m_tileSize;//小格子的变长 

    short   m_tileSize;//小格子的变长[html] view plaincopyprint?}; 

};
在这里,我们用了正方形表达,其实我们可以用长方形,我还见过菱形的,各个游戏不一样 。然后,头信息主要是这些,然后,将通过地图编辑器,把每个格子根据地图的基本信息,画图。然后通过工具具体生成。

头+包体。就生成了msk文件。

 

当前端生成了msk后,我们后端开始对其进行数据解析了。

服务端的具体存数据是

[cpp]  struct TMapMask 

    int     m_iSize; 
    int   m_lWidthMasks; 
    int   m_lHeightMasks; 
    int   m_lMaskPixelWidth; 
    int   m_lMaskPixelHeight; 
 
    MASK_BIT_TYPE   m_pMaskData[1]; 
}; 

struct TMapMask
{
 int  m_iSize;
    int   m_lWidthMasks;
    int   m_lHeightMasks;
    int   m_lMaskPixelWidth;
    int   m_lMaskPixelHeight;

 MASK_BIT_TYPE   m_pMaskData[1];
};
 

根据msk二进制文件,后端进行解析,因为,我们每个地图,还有个基本的信息配置表,因此,我们就根据其掩码信息,将其一些数据附加到地图的结构体里。

比如,地图最大坐标,地图大小,按照我们的规定,这个地图有哪些动态区域。(动态区域,以后回去讲解),等等数据信息,供以后我们在地图上使用。

在这里地图掩码主要讲解完毕。

以后会将,我们是如何在地图上,看到玩家的。

 

 

 

Tag:
网友评论

<