MMORPG游戏开发地图处理方略
《魔兽争霸Ⅲ》地图制作入门教程

魔兽争霸Ⅲ》地图制作入门教程WarCraftⅢ World Editor(简称WE),是暴雪巨作《魔兽争霸Ⅲ》所附带的功能强大的地图编辑器。
世界上很多地图制作高手已利用WE创作出了类似《反恐精英》、《暗黑破坏神》、《雷电》、《大富翁》等经典游戏的魔兽版,可以说用WE只有想不到,没有做不到。
WE功能如此强大,其实不难掌握,因为暴雪已将它做得再“傻瓜”不过了。
当你决定使用它创造地图时,摆在你面前的不过是一大堆“积木”,你只要发挥自己的创造力,就能将其摆放出一个自己想象中的世界来。
是不是已经等不及了?让我们赶快启动WE来制作属于你的一部舞台剧!WE由四个主编辑器还有个功能强大的物件管理器(Object Manager)组成。
四大编辑器分为地形编辑器(Terrain Editor)、单位编辑器(Unit Editor)、触发编辑器(Trigger Editor)、音效编辑器(Sound Editor),四者关系如图,其中要属地形编辑器和触发编辑器功能最为强大。
本文将以四大编辑器为主线介绍WE,并以官方RPG地图WarChasers的制作方法为例,由浅入深地讲解构建一幅魔兽地图的思路。
(注:本文使用的软件为英文版WarCraft World Editor 1.05版)搭建舞台场景——地形编辑器WE基本元素之一。
光用地形编辑器就能制作出简单的对战地图。
由于它被设计得“傻瓜化”,就算是新手操作起来也非常容易,仿佛Windows画板一样。
通过魔兽争霸快捷程序组运行World Editor之后看到如图1界面,这便是最基础的地形编辑器。
①上方为菜单栏,与其它的Windows软件类似,在这里可进行WE的所有指令操作。
②WE的主编辑视窗,通过它看到所编辑地图的全貌。
③辅助视窗,对你编辑地图有一定帮助,不过会影响到速度。
④工具面板,相当于一个巨大的素材库,能很方便地添加物件到地图。
⑤状态栏,记录了包括鼠标位置、鼠标所选物件的名称等附加信息。
游戏地图设计方案规划设计

Xxx地图方案规划设计班级:游戏二班组别:xxx组小组成员:(组长)、时间:年月一、地图规划设计阶段总体安排说明1、小组选题设计概述(说明:简要将本项目制作地图名称、地图背景介绍、总体风格等内容进行描述)主城贸易区域,世界最大的贸易文化交流中心,历史文化悠远留长,人口种族众多中世纪奇幻Q版风格2、项目成员与任务分工与任务描述(可附表格)3、项目进度规划(可表格方式说明)二、所选设计风格的理解分析说明1、所选设计风格概要介绍中世纪奇幻Q版风格2、所选风格视觉特点介绍(造型、颜色、比例、元素特征)造型萌动可爱,颜色明艳生动,中世纪古堡风格带一点哥特的阴暗3、所选风格典型游戏介绍(可截图说明)三、地图规划设计实施1、Xxx地图设计方案说明(1)风格定位西方中世纪Q版奇幻风格(2)地图用途与功能目地设计交易区2、本周任务与人员分配3、地图规划设计思路(附规划图)4、设计草图(附图)4、参考资料(列出参考图、游戏名称)最终幻想14四、该阶段任务完成与总结1、完成阶段成果2、完成制作内容统计表(自制表格列出详细制作完成内容、量化每个组员所完成的内容)3、总结与收获(小组总结)游戏地图美术设计任务书专业(班):组别:组员:一、项目名称、主要内容和基本要求项目名称:主要内容:基本要求:1、完成地图规划实施策划方案;2、完成地图场景设计,组件设计;3、完成场景制作,拼合地图;4、完成所选风格地图设计、制作,地图设计符合前期规划方案,场景资源比例结构正确,材质能够表现出对象特征与效果,地图整体拼合画面具有美感、色彩统一,整体安排合理,效果良好。
、人员安排与分工:二、进度执行情况周次工作内容执行情况三、指导教师评语与评分1、评语2、成员评分:指导教师签名:。
闲谈MMORPG场景的整体规划.doc

闲谈MMORPG场景的整体规划今天在公司里和几个关卡策划在讨论游戏整体规划的一些问题,由此发现一些很容易被忽视的问题。
这些问题有时候我们必须画出整个游戏世界的规划图纸才能发现。
ps:实际上这个问题的发起人是游戏制作人Robin,刚开始我并未很仔细的关注这个问题。
因为我认为关卡策划在做这方面设计时应该有所顾及,或者说我在观察他们工作的时候,发现他们对成长的模型有所考虑。
不过结果则是规划不够均衡。
当然,这不是我们现在需要讨论的事情,我们需要讨论的是下面的内容。
例如我们所设定的玩家成长模型就和场景整体规划这一块息息相关,我们需要考虑玩家升级所花费的时间,并将我们所设计的每个场景和这个时间所对应上来,以免造成一些不必要的资源浪费或是玩家在某个阶段过度单调。
资源浪费:•例如象魔兽世界这款网络游戏,前期场景在玩家的整体达到一定程度的水平之后,就会基本荒废掉,这种巨大的资源浪费也只有象暴雪这样的游戏公司才做的起的大手笔。
当然了,也和魔兽世界的游戏场景定位有关系,魔兽世界之所以叫做XX世界,就是因为他们的场景设计师定义了一个庞大的世界观和背景,于是必须得要用这样一个大世界来承载这么多的游戏内容。
但是对于国内的中小型制作,甚至包括大制作的游戏来说,都是很难接受的。
玩家在某个阶段过渡单调:•早期版本的热血传奇就是典型的具有这种特色的游戏,在后期的练级过程之中,由于没有太多的场景,因此可以用作有效练级的场所和怪物也不多,造成玩家后期漫长的一段成长过程都一直往返于单调的几个关卡。
当然了,对于早期游戏来说,玩家可以不在乎这点,但是现在我们的设计者是需要关注这点的。
按照上图的成长模型来设计关卡。
若是我们仅仅只是简单的按照平均的等级跨度来划分地图,则会发现由于前期的升级时间过快,很多前期场景对于玩家来说,基本上只是转瞬即逝,如果我们这样来做设计,我们会浪费很多的制作成本。
尽管我们需要在前期给玩家更多精彩的体验,但是这样的设计方式,太过浪费制作资源了(除非我们的项目定位就很高)。
2D横版卷轴MMORGP地图编辑器设计

根据此处要求设定背景部分文件目录结构为:
建议场景插件地图按地图名分开存放
Mapdata\
Goth\ (哥特地图)
\Background\ (背景部分)
Goth_1_1.png
Goth_1_2.png
的逻辑信息。其中静态组件信息主要包括,地图的 3 层背景信息,前层和后层的组 件信息,前景组件信息以及其他组件信息,比如传送点。
服务端部分主要包含所有的怪物信息,NPC 信息以及地图逻辑信息。 所以编辑完成一幅地图,保存后将生成 6 个文件(地图逻辑信息,客户端服务 端公用)。命名规则为: 地图载入关联信息=地图名字.map 地图缩略图=地图名字.jpg 地图静态组件信息=地图名字.part 地图逻辑信息=地图名字.logic 地图怪物信息=地图名字.monster
#组件后层 [backpart] 1=10033,x1,y1 2=10034,x2,y2 3=10035,x3,y3 „„ } #前景层 Forgeground { 1=20059,x1,y1 2=20057,x2,y2 3=20098,x3,y3 „„ } 地图逻辑层 newbie_map03.logic 的信息记录方式: Logic { 待定。。。。 } 地图怪物信息 newbie_map03.monster 的信息记录方式: Monster { #序列号=怪物 id,怪物名字,x1,y1,x2,y2,刷新数量,刷新间隔,怪物 AI
为了达到远近效果及其动态的天空云层效果。
每层都可以设置是否自行移动以及移动速度,这样背景层也可以做河流流动 等效果,前景层自行快速移动也可以给玩家场景在高速前进的感觉,这里需要增 加一个属性面板,用来自由设置图层属性。
MMORPG大型游戏设计与开发(服务器游戏场景地图和区域)

MMORPG⼤型游戏设计与开发(服务器游戏场景地图和区域)地图的数据以及区域的信息是场景的重要组成部分,这些数据同时存在客户端和服务器,⽽且都是由编辑器⽣成的。
那么保存的⽂件数据结构是怎样的?⼀张3D的场景地图⼜是怎样处理这些数据的?同时告诉⼤家这⾥同样只是讲的理论与设计,理论和设计往往都很空洞,但是却很灵活,需要靠每个⼈怎么运⽤。
⼀些图⽚区域和格⼦从上⾯的截图可以看出游戏场景其实是由格⼦来区分的,不管是矩形的格⼦还是其他形状的格⼦也好,⼀张地图不可能只有⼀个点(即多点组成⼀张地图)。
在3D场景中似乎格⼦的位置总伴随着⾼度信息,所以让⼈感觉有些迷茫,其实我们可以将这些格⼦平铺成⼀张图。
如上⾯的最后⼀张图,是地形的剖⾯图,不过是横切⾯,如果我们看⼀下纵切⾯的话,就可以将3D的地图进⾏2D的转换。
其实地图还是由⼀张平⾯图组成,只是多了Y轴的数据,也就是我们常说的地表⾼度。
地图数据由指定格式的数据组成,在服务器和客户端的主要作⽤是⽤来寻路(点击地图⾛路,以及⾃动寻路)。
地图区域⼀个场景⼀般情况下会有区域的划分,因为这些区域会有⾃⼰特殊的事件,如⼀个玩家加⼊该区域会产⽣某个事件,就像我们玩游戏的时候忽然触发了剧情⼀样,这都是区域的事件。
数据结构有了指定的数据结构后,⽂件才能被正常的读取,⽽地图的数据⼀般是由编辑器⽣成,所以也必须规定⽂件的数据结构。
1、地图1. ⽂件数据武侠世界/天龙⼋部的场景地图数据格式为:[⽂件头][单元数据][单元数据]…… 单元数据的数量为地图横长* 地图纵长。
code.typedef struct map_header_struct {int16_t flag; //⽂件标记,⽤来区分是不是地图数据⽂件int32_t xsize; //X⽅向⼤⼩横长int32_t zsize; //Y⽅向⼤⼩纵长} map_header_t; //⽂件头信息typedef struct map_unit_struct {int16_t flag; //标识信息//00000000|00000000// ||_ WalkDisable -是否禁⽌地⾯上⾏⾛的OBJ穿越 [0 可穿越 1不可穿越]// |__ FlyDisable -是否禁⽌空中飞⾏的OBJ穿越 [0 可穿越 1不可穿越]int8_t height; //⾼度int8_t reserved; //预留字段} map_unit_t; //单元数据信息2. 对象数据整个对象也就是整张地图的数据,在武侠世界/天龙⼋部中采⽤的是左⼿坐标系,⽽在服务器其实⽤不着空间的坐标也就是Y轴的数据,将地图切割后就是⼀张平⾯的图,这张平⾯的图⼀般都是矩形。
MMORPG类网络游戏的典型架构

MMORPG类⽹络游戏的典型架构
MMORPG的特点是⾓⾊之间⼀般可见;有不同类型的地图,包括开放地图(城市、村庄等)和封闭地图(副本、⼤型战场和⼩型PK房间等);有各种RPG组织元素(如公会、家族等)。
架构设计逻辑服务器部分的出发点是根据上⾯的特点设计的。
⼀般可以⽤下⾯的架构:MMORPG的后台其实就这么简单,架构不复杂。
对后台架构经验较少的兄弟,别太纠结,就⽤这个简单的架构⼀般就可以满⾜商业运营要求了。
gated
前端接⼊服务器,主要功能是连接接⼊,消息接收和发送,也可以包括加解密和解压缩功能。
ctrld
⼀个指挥控制的服务器,控制整个服务器组⾓⾊的状态,登录初始化也在这⾥处理。
client进⼊游戏前的⾓⾊列表⼀般也从这个服务器获取。
zoned
这个就是逻辑服务器,对应管理上⾯的开放地图和封闭地图,游戏逻辑都放在这⾥实现。
⼀个zoned可以根据策划设计管理⼀个或多个开放地图和封闭地图。
cached
⼀般有淘汰策略的数据缓存,64位⼤内存机器的话,⼀般⼀台也够了。
cached和后⾯的db根据业务特点和数据流量灵活配置。
globald&antibotd
globald管理公会、家族等。
antibotd延迟的作弊检查。
gated和zoned会把数据转发给globald&antibotd。
另外,client从zoned1切到zoned2要注意数据的正确性。
MMORPG无缝大地图服务器架构设计总结

MMORPG⽆缝⼤地图服务器架构设计总结
地图分进程架构和⽆缝⼤地图单进程架构
分进程架构有他的优缺点。
优点
(1)实现简单(当然,有的游戏所有的地图是在⼀个逻辑进程⾥,同步都省了,更简单)。
(2)分进程后,整个服务器组也可以⽀持较多的可交互的玩家。
缺点
(1)玩家体验⽅⾯较差⼀点,玩家能明显地体会到服务器的切换。
⽆缝服务器就是从玩家⾓度看到是⼀张很⼤的地图,这个地图可能承载4,5W⼈。
优缺点和分进程架构的相反。
⽆缝服务器设计简述
⽬标:多核多线程计算,但整个系统不存在锁。
有锁的话,在线⽀持的⼈数根本就上不去了,失去了⼤地图的意义。
保守评测,8核的CPU,⽀持3.5K * 8,约3W⼈。
RPG地图制作教程

RPG地图制作教程教你如何做自己的RPG-----制图教学说到魔兽争霸3大家肯定不会陌生,那么各位在玩过特色各异的地图以后有没有想过自己动手做一张地图?摇头拒绝的家伙们听我把话说完,其实做一张地图并不是各位想象的那么困难。
下面我将会简单介绍一下集合了几种常见功能的地图的制作方法,有兴趣的朋友不妨跟着做做。
这次要做的是一个3C 中的人物选择功能,也就是当小精灵进入能量圆的时候选择对应的英雄,这是一个3C最普通的选人功能。
那么动手了。
首先找到地图编辑器,编辑器位于魔兽目录下,名为WorldEditor.exe(世界编辑器),双击打开。
第一次使用地图编辑器,系统会自动为我们创建一张64*64大小,环境为罗丹仑的夏天的新地图。
如果想要手动创建新地图,可以通过点击菜单栏的文件- 新地图/File - New Map来创建。
如果想要关闭在打开编辑器的同时创建新地图的功能,可以同过选择文件- 参数设置- 常规- 打开时创建新地图/File - Preferences - General - Create a new map on start_up,将前面的勾去掉来实现。
地图创建完毕以后看见的就是这个地图编辑器的组成了,按2下G关闭坐标格的显示。
在制作上面提到的功能以前,让我们先做点准备工作。
首先既然是选择英雄,那么英雄自然是必不可少的,按U打开单位编辑面板,在这里可以选择我们所希望的单位放置到地图上,我选择了恶魔猎人(Demon Hunter),血巫师(Blood Mage)和巫妖王(Lich King),当然各位如果看上其他英雄请随意,这并不会影响后面的制作。
顺便说说在单位面板中切换种族的方法是在第三行左边的那个扩展菜单里面选择希望的种族,由于选择英雄的时候所看见的英雄是不被我们控制的,必须选择了以后才能控制,因此一般的做法是将英雄更改为中立单位,更改的方法是双击放置在地图上的英雄,选择常规- 玩家- 中立无敌意/General - Player - Neutral Passive。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网上看一篇关于目前几个流行flash mmorpg地图实现的分析,这里也想说说自己的一些看法。
常见的三种方式:
1、整图
2、Tile元素拼装
3、栅格化切片
整图
整图加载很好理解直接加载一张背景图。
这种方式比较适合小场景(面积不要超过两屏),例如可以用来做悦来客栈、家里的菜园子或者王员外的内院。
整图的表现最大的优点就是可以让美工随意发挥,画面可以做得很细致。
当然缺点也比较明显无法做得太大,否则加载将是个漫长的过程,即使玩家有耐心去等待加载,但是会浪费客户端的很多内存容量。
一个10屏*10屏的地图,客户端显示每次只能显示一屏,有99屏的东西是暂时用不到的。
Tile元素拼装
Tile就是斜视角地图中的一个标准菱形,这在许多的Tile Game里面最常见(红警、帝国时代)。
这种方式会实现准备好各种地形,比如草地、沙漠、水面、雪地。
理论上这种方式可以满足任何地图需求。
Tile元素拼装的优点是素材包小,因为他是提取了大量的可重复利用的素材在重复使用。
素材包小可以节省素材加载时间。
不过Tile元素拼装的方式也不是谁都可以玩得好的,主要问题其实在于这些可重复利用的素材必须是2方连续的。
要想让地图表现力好,Tile的制作比较关键。
这并不像整图那样,美工可以大笔一挥画出几种色彩层次。
如果Tile素材制作的不好,地图看起来会非常死板。
同时Tile元素的制作也必须处理好各种地形的接壤问题。
比如你有4种地形:草地、水面、沙地、雪地,那么你就必须创建草地和水面交界的效果,水面和沙地,沙地和雪地。
然后草地和水面的交界你还需要考虑草地的上面有水、下面有水、左边有水、右边有水、左上角。
总之就是,你希望你的地图看起来舒服就必须穷举各种情况,然后还要一遍一遍调整。
但是一旦我们做好了这一切,那么将会非常受益。
如果你的开发人员有空还可以帮你设计非常好的随机生成算法。
(像帝国时代的编辑器)
栅格化切片
栅格化切片他的背景绘制其实还是以整图的方式完成的,只是按照一定的大小把它切成了一些固定大小的小图,比如250*250或者300*300,然后给每张图定好编号,通常是map_行_列。
地图加载的时候,我们根据场景的坐标加载需要显示的切片。
当然加载的数量通常会比你看到的要多一点,事先预加载一些。
栅格化切片的方式事实上我们在电子地图上见得很多,当然电子地图是可以进行缩放的,所以他所做的切片通常还会配合缩放倍数做不同倍数下面的分割。
使用栅格化切片表现力上跟整图一样,在制作的时候可以让美工任意发挥。
同时也能解决一部分内存浪费的问题。
这看起来是个非常完美的方案,甚至可以让我们做无缝地图。
可是事实并非如此的,尽管我们有着无穷的想象力,但是我们还是会在制作大地图上遇到问题。
第一个问题——地图的设计
我曾经一厢情愿的规划了一张9000px*7500px的地图让美工去做设计,结果问题来了。
这样一张大地图在ps里面打开都是一个漫长的过程,每次做一次存盘都可以去喝杯茶了。
尽管效果可以很好,但是等待的过程几乎让人吐血。
第二个问题——地图编辑
我们的地图是在自己开发的air编辑器,尽管这时候的地图已经是ps合层好的了,但是在编辑器中操作仍然是个恶梦。
关于障碍数组
其实对于障碍数组也是地图设计中一个需要考虑的问题的因为这会关系到你的路径算法和物体遮挡,最常见的作法就是建立一个2维数组对应到地图中,然后使用A*来实现。
当然
你也可以不这样记录,直接记录地图上物体底面积形成的多边形。
寻径的时候采用两点连线然后绕过障碍定点,遮挡关系也利用这些多边形顶点做计算。
甚至你也可以不用2维数组改用object的方式只记录那些被占用了的底面积。
但是无论采用什么方式,你的地图大必然参与到引擎中的物体就会多,存储的内容就多。
假设你也像我们一样通过2维数组记录障碍,那么数组同样也是限制你实现大地图的一个问题(尽管不是那么明显)。
因为你同样会需要浪费到很多内存存大量的暂时用不到的信息。
上面提到了对背景做切割,2维数组如果你愿意也可以做切割来实现随需加载,对于地图上的建筑同样如此。
不过我是感觉这样做没有多大意义。
从玩家的角度看,真正在乎你的大地图制作的有多少,难道因为你做了个大地图玩家就一定会买账么?
个人建议
实际的开发其实我认为并不一定那种方式更好,取决于公司的开发资源和场景的实际情况,你对客户方的考虑。
上面的三种方式我们可以相互结合。
我们可以用Tile拼装的方式结合简单的表随机算法做个平铺工具给美工来快速建立一些地图的局部,让他们直接另存出图片,导入photoshop制作整图。
当然如果没时间的话随便找个编辑器也行,反正比photoshop的复制会快很多。
另外,我们可以在设计引擎的时候将整图和栅格化切图的方式一起考虑,对于小场景使用整图加载,对于大场景使用切片加载。