如何制作MMORPG游戏地图编辑器

前言

MMORPG是非常经典的一种游戏类型,也是游戏开发中综合性最强的游戏类型,它是典型的联网游戏,今天我们来分析一下MMORPG游戏的制作以及与单机游戏地图制作的区别。

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀

1: 为什么MMORPG需要在服务器上跑地图

与单机游戏不同,MMORPG游戏需要在服务器上跑逻辑数据,这样做能让成千上万的玩家能在一起游戏,同时玩家的正确状态都在服务器上,这样大家就可以能同步和验证。举个例子,地图服务器,服务器上一定会有一个”地图”, 地图上面有怪物,有角色, 有NPC, 有BOSS这些。每产生一个怪物等,就会把状态同步到附近感兴趣的客户端,这样客户端负责显示数据。同时客户端发过来的操作,我们的服务器接收客户端的操作,在服务器上跑数据,跑数据的过程中,服务器计算,会得到结果,把结果发给客户端,客户端播放动画,这样各个玩家显示的是服务器上的效果。客户端就变得简单,及发送输入给服务器,根据服务器演算结果客户端播放动画即可。这样游戏不容易作弊,所有的判断都以服务器的为准,所以这样就要求服务器上必须要跑地图,必须要有地形相关的信息,但与客户端不同,服务器上的地形只要数据,而不用模型纹理。

2 如何处理地图的逻辑数据

地图有两种数据,一种是图像数据(美术建好的3D模型), 用来显示地图的外观,一种是逻辑数据,用来表示地图哪些地方可以行走哪些地方不可以行走,某个位置有多高等。图像数据我就不说了,程序员主要处理的是地图的逻辑数据,地图的逻辑数据如何处理呢?其实非常简单,就是把地图分成一个一个的小块,制作一个工具能够编辑制定哪些小块可以行走,哪些小块不可以行走。最终就会变成一个bitmap, 然后使用寻路算法来做寻路即可。如下图所示:

地图的块大小可以根据实际的情况来分, 块的形状可以是正方形,也可以是正六边形。3D地图如何处理呢?3D地图我们有(x, y, z)三个维度, xoz表示地图的水平面, y表示地图的高度。对于一个3D地图,xoz就是地图的俯瞰平面图,其实就是一个2D地图,我们可以把xoz平面分成小块(和2D一样的方式),然后指定哪些小块可以行走,哪些小块不可以行走,生成xoz平面的地图逻辑数据,用来寻路。那么高度怎么办呢?这个其实很好处理,因为做地形的时候,都可以把高度图的数据导出来,给定(x, z)的坐标,我们可以从高度图中读取高度数据y, 这样当我们导航移动的时候,就可以根据寻路中的x, z 坐标在高度图中获取y坐标,这样就能控制角色在移动的高度了,可以实现角色的上坡下坡等。

服务器上的地图不需要图像数据,所以服务器上2D地图数据就是一个二维数组, 数组描述了x, y给定后,某个块是否可行走。3D地图数据是一个 xoz平面的二维数组,描述某个块是否可行走,同时还有一个高度图数据。

3 如何制作地图工具编辑器

地图编辑器是MMORPG游戏里面很重要的一个工具或插件,一般游戏引擎都有自己的地图编辑器,所以导入地图模型后,图像地图很快就能显示出来,这个对于大家来说都没有什么难度,就是导入一个图像或模型即可。接下来就是要导出地图的逻辑数据,我们一般做MMORPG的时候要开发工具或插件,让策划非常方便的来编辑地图的小块。一般会把地图分成小块并把每个小块显示出来,可以像上图一下,可视化的指定哪些块是什么类型(是否可行走)等。如图所示:

做好了编辑工具以后,就要把编辑好的数据导出成特定的数据格式,作为地图的逻辑数据,所以我们编辑好后,还要提供一个导出数据的工具,把刚才编辑好的数据导出出来生成地图数据,如下图:

点击保存以后可以保存成自己定义格式的逻辑数据,这样就可以给服务器客户端使用了。

以上就是MMORPG地图编辑工具的实现思路,欢迎大家一起加群讨论。

猜你喜欢

转载自blog.csdn.net/Thomas_YXQ/article/details/134378410