游戏地图掩码相关(msk)

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

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

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

     

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

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

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

设计一个结构体,头

struct tagMapHead
{
    int     m_width;//地图的宽
    int     m_height;地图的高
    short   m_tileSize;//小格子的变长
};


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

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

 

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

服务端的具体存数据是

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

	MASK_BIT_TYPE   m_pMaskData[1];
};


 

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

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

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

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

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值