游戏里面的平面地图用什么带地图编辑器的游戏做的!

Android游戏开发之地图编辑器的使用以及绘制地图 (一)
每天15篇文章
不仅获得谋生技能
更可以追随信仰
Android游戏开发之地图编辑器的使用以及绘制地图(一)
Mappy中文地图编辑器的使用说明
下载地址:
压缩包中包含 游戏地图编辑器使用指南 与地图资源图片 宫院1.png
一张 mapwin.exe 可执行文件 map.FMP 与map.TXT为使用编辑器生成出来的保存文件与地图数组。
解压后打开地图编辑器 mapwin.exe.exe 创建一张新的地图。
由于我用的Android模拟器宽高是320X480
地图宽的块数 就是 320 / 32 = 10
地图高的块数 就是 480 / 32 = 15
这里扩充一下 实际在工作开发中因为手机的分辨率各式各样 所以是需要尺寸考虑自适应的
有两种方法可以拿到当前手机屏幕的宽高
Display&display&=&getWindowManager().getDefaultDisplay();&&
Log.i(&view&&,&&height:&&+display.getHeight());&&
Log.i(&view&&,&&width:&&+display.getWidth());&&
DisplayMetrics&displayMetrics&=&getResources().getDisplayMetrics();&&
Log.i(&view&&,&&height&&+displayMetrics.heightPixels);&&
Log.i(&view&&,&&width&&+displayMetrics.widthPixels);&&
弹出框后点击确定
导入地图图块 编辑器下载地址中包含了一张 地图图片 可以选择使用
因为编辑器是须要美术图片配合使用的 比如tile的尺寸 图片的宽高尺寸必需能被整除。
导入地图图块成功 右侧为导入的地图资源 接下来就是自己拖动右侧地图块拼出自己想要的地图了。
接下来我将填充3个图层 最底层 实体层 物理层 我会一一介绍他们的作用
图层0为最底层 绘制地图先绘制这一层
图层1为实物层 这一层主要绘制一些actor 绘制完第一层在绘制这一层
图层2为物理层检测物理碰撞这一层不用绘制但是玩家每移动一次就须要以玩家当前点在地图数组中的角标
和物理层做判断是否碰撞,它和Actor层的位置一样。
拼地图的使用技巧 编辑新图层的时候可以把上一个涂层打开进行对比编辑。
这样子就可以根据0图层的信息来编辑图层1
地图块拼完后编辑完成后点击保存文件 后在点击保存文本数据 地图数组文件就生成出来了
文件命为map.TXT 里面就存着我们编辑的3个地图层的地图信息。
使用Mappy中文地图编辑器生成的地图信息数组来绘制游戏地图
效果图如下
这里我先说一下游戏窗口的全屏实现方法
//&全屏显示窗口&&
requestWindowFeature(Window.FEATURE_NO_TITLE);&&
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,&WindowManager.LayoutParams.FLAG_FULLSCREEN);&&
第二种 AndroidManifest.xml 中加入
&activity&android:name=&.activity&&&
&&&&&&&&&&android:theme=&@android:style/Theme.NoTitleBar.Fullscreen&&/&&&
这里我详细说一下编辑器生成出来的数组怎么用?就拿生成出来的ID 137为例
假设 tile的宽高为32 137表示从图片的左上角从左到右从上到下 数到第137个tile 就是我们须要绘制的tile
绘制方面利用 clipRect方法来剪裁图片 实现绘制 下一章我讲游戏中的摄像头机制 会详细介绍这一点。
public&class&mapAcitvity&extends&Activity&{&&
&&&&@Override&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&
&&&&&&&&super.onCreate(savedInstanceState);&&
&&&&//&全屏显示窗口&&
&&&&requestWindowFeature(Window.FEATURE_NO_TITLE);&&
&&&&getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,&WindowManager.LayoutParams.FLAG_FULLSCREEN);&&
&&&&//显示自定义的游戏View&&
&&&&setContentView(new&MapView(this));&&
&&&&public&class&MapView&extends&View{&&
&&&&&&&&//tile块的宽高&&
&&&&public&final&static&int&TILE_WIDTH&=&32;&&
&&&&public&final&static&int&TILE_HEIGHT&=&32;&&
&&&&&&&&//tile块的宽高的数量&&
&&&&public&final&static&int&TILE_WIDTH_COUNT&=&10;&&
&&&&public&final&static&int&TILE_HEIGHT_COUNT&=&15;&&
&&&&//数组元素为0则什么都不画&&
&&&&public&final&static&int&TILE_NULL&=&0;&&
&&&&//第一层游戏View地图数组&&
&&&&public&int&[][]mMapView&=&{&&
&&&&&&&&{&1,&1,&1,&1,&137,&137,&137,&1,&1,&1&},&&
&&&&&&&&{&1,&1,&1,&1,&137,&137,&137,&1,&1,&1&},&&
&&&&&&&&{&1,&1,&1,&1,&137,&137,&137,&1,&1,&1&},&&
&&&&&&&&{&137,&137,&137,&137,&137,&137,&137,&137,&137,&137&},&&
&&&&&&&&{&137,&137,&137,&137,&137,&137,&137,&137,&137,&137&},&&
&&&&&&&&{&1,&1,&1,&1,&1,&1,&1,&1,&137,&137&},&&
&&&&&&&&{&1,&1,&1,&1,&1,&1,&1,&1,&137,&137&},&&
&&&&&&&&{&1,&1,&1,&1,&1,&1,&1,&1,&137,&137&},&&
&&&&&&&&{&1,&1,&1,&1,&1,&1,&1,&1,&137,&137&},&&
&&&&&&&&{&1,&1,&1,&1,&1,&1,&1,&1,&137,&137&},&&
&&&&&&&&{&1,&1,&1,&1,&1,&1,&1,&1,&137,&137&},&&
&&&&&&&&{&137,&137,&137,&137,&137,&137,&137,&137,&137,&137&},&&
&&&&&&&&{&137,&137,&137,&137,&137,&137,&137,&137,&137,&137&},&&
&&&&&&&&{&1,&1,&1,&1,&1,&137,&137,&137,&1,&1&},&&
&&&&&&&&{&1,&1,&1,&1,&1,&137,&137,&137,&1,&1&}&&
&&&&&&&&};&&
&&&&//第二层游戏实体actor数组&&
&&&&public&int&[][]mMapAcotor&&=&{&&
&&&&&&&&{&102,&103,&103,&104,&0,&0,&0,&165,&166,&167&},&&
&&&&&&&&{&110,&111,&111,&112,&0,&0,&0,&173,&174,&175&},&&
&&&&&&&&{&126,&127,&127,&128,&0,&0,&0,&181,&182,&183&},&&
&&&&&&&&{&0,&0,&0,&0,&0,&0,&0,&0,&0,&0&},&&
&&&&&&&&{&0,&0,&0,&0,&0,&0,&0,&0,&0,&0&},&&
&&&&&&&&{&41,&42,&43,&44,&0,&0,&0,&0,&0,&0&},&&
&&&&&&&&{&49,&50,&51,&52,&0,&0,&0,&0,&0,&0&},&&
&&&&&&&&{&57,&58,&59,&60,&229,&230,&231,&232,&0,&0&},&&
&&&&&&&&{&65,&66,&67,&68,&237,&238,&239,&240,&0,&0&},&&
&&&&&&&&{&0,&0,&0,&0,&245,&246,&247,&248,&0,&0&},&&
&&&&&&&&{&0,&0,&0,&0,&0,&254,&255,&0,&0,&0&},&&
&&&&&&&&{&0,&0,&0,&0,&0,&0,&0,&0,&0,&0&},&&
&&&&&&&&{&0,&0,&0,&0,&0,&0,&0,&0,&0,&0&},&&
&&&&&&&&{&102,&103,&103,&103,&104,&0,&0,&0,&143,&144&},&&
&&&&&&&&{&110,&111,&111,&111,&112,&0,&0,&0,&143,&144&}&&
&&&&&&&&};&&
&&&&//第三层游戏碰撞物理层数组&&&
&&&&//下一章介绍&&
&&&&//....................&&
&&&&//游戏地图资源&&
&&&&Bitmap&mBitmap&=&null;&&
&&&&//资源文件&&
&&&&Resources&mResources&=&null;&&
&&&&//游戏画笔&&
&&&&Paint&mPaint&=&null;&&
&&&&//横向纵向tile块的数量&&
&&&&int&mWidthTileCount&=&0;&&
&&&&int&mHeightTileCount&=&0;&&
&&&&//横向纵向tile块的数量&&
&&&&int&mBitMapWidth&=&0;&&
&&&&int&mBitMapHeight&=&0;&&
&&&&&*&构造方法&
&&&&&*&@param&context&
&&&&public&MapView(Context&context)&{&&
&&&&&&&&super(context);&&
&&&&&&&&mPaint&=&new&Paint();&&
&&&&&&&&mBitmap&=&ReadBitMap(context,&R.drawable.map);&&
&&&&&&&&mBitMapWidth&=&mBitmap.getWidth();&&
&&&&&&&&mBitMapHeight&=&mBitmap.getHeight();&&
&&&&&&&&mWidthTileCount&=&mBitMapWidth&/&TILE_WIDTH;&&
&&&&&&&&mHeightTileCount&=&mBitMapHeight&/&TILE_HEIGHT;&&
&&&&&&&&@Override&&
&&&&&&&&protected&void&onDraw(Canvas&canvas)&{&&
&&&&&&&&&&&&DrawMap(canvas,mPaint,mBitmap);&&
&&&&&&&&&&&&super.onDraw(canvas);&&
&&&&&&&&&&&&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&private&void&DrawMap(Canvas&canvas,Paint&paint&,Bitmap&bitmap)&{&&
&&&&&&&&&&&&int&i,j;&&
&&&&&&&&&&&&for(i&=&0;&i&&TILE_HEIGHT_COUNT;&i++)&{&&
&&&&&&&&&&&&for(j&=&0;&j&TILE_WIDTH_COUNT;j++)&{&&
&&&&&&&&&&&&&&&&int&ViewID&=&&mMapView[i][j];&&
&&&&&&&&&&&&&&&&int&ActorID&=&mMapAcotor[i][j];&&
&&&&&&&&&&&&&&&&//绘制地图第一层&&
&&&&&&&&&&&&&&&&if(ViewID&&&TILE_NULL)&{&&
&&&&&&&&&&&&&&&&&DrawMapTile(ViewID,canvas,paint,bitmap,&j&*&TILE_WIDTH&,&i&*&TILE_HEIGHT);&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&&&//绘制地图第二层&&
&&&&&&&&&&&&&&&&if(ActorID&&&TILE_NULL)&{&&
&&&&&&&&&&&&&&&&DrawMapTile(ActorID,canvas,paint,bitmap,&j&*&TILE_WIDTH&,&i&*&TILE_HEIGHT);&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&/**&
&&&&&&&&&*&根据ID绘制一个tile块&
&&&&&&&&&*&@param&id&
&&&&&&&&&*&@param&canvas&
&&&&&&&&&*&@param&paint&
&&&&&&&&&*&@param&bitmap&
&&&&&&&&&*/&&
&&&&&&&&private&void&DrawMapTile(int&id,Canvas&canvas,Paint&paint&,Bitmap&bitmap,int&x,&int&y)&{&&
&&&&&&&&&&&&//根据数组中的ID算出在地图资源中的XY&坐标&&
&&&&&&&&&&&&//因为编辑器默认0&所以第一张tile的ID不是0而是1&所以这里&-1&&
&&&&&&&&&&&&id--;&&
&&&&&&&&&&&&int&count&=&id&/mWidthTileC&&
&&&&&&&&&&&&int&bitmapX&=&(id&-&(count&*&mWidthTileCount))&*&TILE_WIDTH;&&
&&&&&&&&&&&&int&bitmapY&=&count&*&TILE_HEIGHT;&&
&&&&&&&&&&&&DrawClipImage(canvas,paint,bitmap,x,y,bitmapX,bitmapY,TILE_WIDTH,TILE_HEIGHT);&&
&&&&&&&&}&&
&&&&&&&&/**&&
&&&&&&&&&*&读取本地资源的图片&&
&&&&&&&&&*&@param&context&&
&&&&&&&&&*&@param&resId&&
&&&&&&&&&*&@return&&
&&&&&&&&&*/&&&&
&&&&&&&&public&Bitmap&ReadBitMap(Context&context,&int&resId){&&&&
&&&&&&&&&&&&BitmapFactory.Options&opt&=&new&BitmapFactory.Options();&&&&
&&&&&&&&&&&&opt.inPreferredConfig&=&Bitmap.Config.RGB_565;&&&&&
&&&&&&&&&&&&opt.inPurgeable&=&true;&&&&
&&&&&&&&&&&&opt.inInputShareable&=&true;&&&&
&&&&&&&&&&&&//获取资源图片&&&&
&&&&&&&&&&&&InputStream&is&=&context.getResources().openRawResource(resId);&&&&
&&&&&&&&&&&&&&&&return&BitmapFactory.decodeStream(is,null,opt);&&&&
&&&&&&&&}&&&&
&&&&&&&&/**&
&&&&&*&绘制图片中的一部分图片&
&&&&&*&@param&canvas&
&&&&&*&@param&paint&
&&&&&*&@param&bitmap&
&&&&&*&@param&x&
&&&&&*&@param&y&
&&&&&*&@param&src_x&
&&&&&*&@param&src_y&
&&&&&*&@param&src_width&
&&&&&*&@param&src_Height&
&&&&private&void&DrawClipImage(Canvas&canvas,Paint&paint&,Bitmap&bitmap,&int&x,&int&y,&int&src_x,&int&src_y,&int&src_xp,&int&src_yp)&{&&
&&&&&&&&canvas.save();&&
&&&&&&&&canvas.clipRect(x,&y,&x&+&src_xp,&y&+&src_yp);&&
&&&&&&&&canvas.drawBitmap(bitmap,&x&-&src_x,&y&-&src_y,paint);&&
&&&&&&&&canvas.restore();&&
更多课程...&&&
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
|&京ICP备号&京公海网安备号Tiled地图编辑器怎么用_Tiled Map Editor认识及地图制作教程_最火下载站
您的位置: >
> Tiled Map Editor认识及地图制作教程
Tiled Map Editor认识及地图制作教程
关于Tiled Map Editor既然您找到本文,说明您是对它有一定了解的,Tiled Map Editor是一款非常不错的游戏地图编辑器,而我们本次提供的Tiled Map Editor教程则是转载了网上两位大神关于Tiled Map Editor的使用,欢迎大家阅读。
Tiled Map Editor使用教程一:
本教程转载于csdn,原文标题为《Cocos2d-x初入学堂(13)--&Tiled Map Editor地图编辑器 》,以下是原文。
我开发的游戏只有第一款游戏,没有用到地图编辑器,那是我刚进公司的时候,我们部门老大要策划师帮我策划的一个赛车的小游戏,由于小自然部门其他同事,也没得多少时间帮我做编辑器,但是我后面的游戏,基本上用到了地图编辑器,这个东西为我们策划师去配置一关关卡非常方便,如果是专业的游戏,都会有自己的编辑器的,编辑器我们必须学会喔~ 闲话不多说了,进入Tiled Map Editor 篇
由于昨天费了不少时间,去找素材了,因为这关系到我们接下来的游戏制作....呵呵~期待吧!
1、界面认识:
中文版的,我就不多介绍了吧....就说下怎么创建一张地图,然后我们再在程序里面,怎么使用它...
第一步:点新建
第二步:地图-&新建块
第三步:创建层,我这里创建了三个层...你也可以不创建,就使用默认那个层,然后将图块区域中的图块去填充你左边的地图..
第四步:填充...将对应的物品添加到对应的层上...图说明
第五步:导出.tmx文件 文件-另存为:命名 确认 ok ...
第六步:程序实现... 将.tmx和图块元素.png 都放到你新建的工程目录下面
第七步:运行啦~ 哈哈
哈哈~ 还是蛮漂亮的~ 我喜欢.... 昨天晚上我还特地下了一个盛大的pc泡泡堂玩,心理特别舒服,看到可爱的小人物
Tiled Map Editor使用说明二:
本教程转载于《Skywind Inside》,原文:
1. 首先下载 Tiled Map Editor:
文章中提供的地图编辑器:下载地址:最火软件站提供的编辑器:下载地址:资源图片集:(经小编测试已经失效了)
解压,然后下载资源图片解压,保存在examples目录下面
我们最终将编辑下图的地图,并用Python读出来:
2. 图块命名如下:
tile01.pngtile02.pngtile03.png
3. 运行 tiled.exe,选择:文件-&新文件:
按照这个对话框填写,然后&确定&
4. 打开资源管理器将文件&Tile01.png& 拖入上图右下角&图块&面板:
设置宽度,高度为32,边距,间距为0,然后确定。
这时tile01.png已经被按照刚才的规则切割好了,放在右下角的面板中。点击工具栏上的&图章刷&或者按键盘B就可以进入刷子绘制模式了,然后从右下角选择你需要绘制的图块,就可以在中间区域绘制了。
如法炮制,我们再将tile02.png拖入到右下角的图块面板:
右下角就有两个图块选项卡了,一个代表刚才的tile01.png, 一个是现在的tile02.png。接着选择一个草的图块,并在工具栏上选择&填充&(或者按F),将背景全部刷成草地:
5. 图块一次性可以选择很多块(用鼠标拖着,我们先简单的画一些沙子地形上去,还有池塘:
接着到主菜单&图层&选择&添加块层&,右上角的&图层&面板就多了一个图层2:
我们选中&块层2&以后就可以在这个图层上编辑了,不会影响到刚才的图层,接着在这个图层上添加树木和房屋,拖入tile3.png以后在&图块&面板拖动鼠标整体选择房屋图块:
注意房屋图块在tile03的右下角,需要再&图块&面板的&tile03&这个标签下,将滚动条拖到右下,接着在&块层2&上建房顶:
在右上角选择块层1,然后右下角选择对应图块给房子建墙:
然后接着编辑&块层2&,在墙上绘制门窗,然后同样的方法绘制另外一间木屋:
6. 继续绘制地图,添加希望添加的内容:
然后新建一个图块层4,用来表示可以走不可以走的地方,随便选一个颜色明显的图块,在图块层4上表示不能走的区域:
编辑好不可走的区域后,如果不想它影响画面,可以将右上&图块层4&前面的勾去掉,就不显示了。
7. 最终我们要导出成python可以识别的格式:选择主菜单-&编辑-&参数:
将&另存为数据层&选择为&CSV&,然后关闭。
这时候用&文件&-&保存&功能保存成&game1.tmx&
8. 用文本编辑器,打开game1.tmx文件,可以看到如下内容:
呵呵,一看就明白,就是CSV,前面记录了右下角&图块&的资源文件以及切割方式,ColorKey等,后面每个图层都用CSV格式来记录了里面的数据,0代表没有,1代表tile01.png的左上角第一个图块,2代表tile01.png左上角左数第二个图块:
tile01被按照32&32的大小切割成了20&28个小图块。按照行优先存储,在tile01左上角的第一个图块编号为1,往右一个图块是2,再往右就是3,第二行左数第一个图块就是编号21。
在game1.tmx的如下部分:
&tileset firstgid=&1& name=&Tile01& tilewidth=&32& tileheight=&32&&&&image source=&Tile01.PNG& trans=&ff00ff& width=&640& height=&896&/& &/tileset& &tileset firstgid=&561& name=&Tile02& tilewidth=&32& tileheight=&32&& &image source=&Tile02.PNG& trans=&ff00ff& width=&640& height=&960&/& &/tileset& &tileset firstgid=&1161& name=&Tile03& tilewidth=&32& tileheight=&32&& &image source=&Tile03.PNG& trans=&ff00ff& width=&640& height=&480&/& &/tileset&
其中 firstgid代表这个资源文件的左上角第一个图块的开始编号,如Tile02图块,它左上角第一个图块编号就是561.非常清爽明白的定义。
好了,有了这些,就可以在python中方便的解析了。
上一篇: 下一篇:游戏策划设计中地图编辑器的使用介绍
游戏策划设计中地图编辑器的使用介绍
  第一节:地图编辑器  地图编辑器,顾名思义,就是用来编辑地图的工具,如果玩过《魔兽争霸》或是《帝国时代2》、《英雄无敌》的话,应该会知道这几款游戏都附有地图编辑工具,可提供玩家自行编辑地图关卡,地图编辑器就具有类似的功能。  这套东东通常是由程序,美工,企划三人所讨论出来的,理由很简单,因为美工是使用这套编辑器的"使用者"(不一定哦,很多国内的小组都是企划编地图),程序则作出这一套编辑器提供美工去使用,企划则居中作协调工作,间或与程序讨论编辑器的用途。  程序开发编辑器软体的目的何在?事实上这是一个大问题,这得从头开始谈起了其实一般常玩游戏的玩家应该都可以发现,几乎没有一款游戏是不带背景的,小从大富翁,大到角色扮演,战略,其实玩家应该都会发现这种事实才是,换句话说,背景(或说是背景地图)在游戏中,正扮演著一个不容忽视的角色。  “不过是背景图罢了,有啥大惊小怪的,只是把图贴上去而已不是吗?”  当然,有人会这样评判背景图的功能性,或者,我该举个例子让大家知道它的功能究竟包含了什么?最方便解释的应该是事件处理的部份,玩过角色扮演游戏的人应该都知道,当玩家控制主角行经某处时,会出现一些偶发事件,像是忽然有人会跑出来跟你讲话,或是遇到特定的敌人等等,像这些事件,通常都是由地图编辑器来予以设定的。  另一个例子是障碍物的设定,譬如玩《星际争霸》,如何让军队无法越过高山河流,又譬如玩《英雄无敌》,如何让军队在途经沼泽地带时,减缓其行进速度,这些都是靠地图编辑器予以设定的。  也就是说,其实地图编辑器不光是将图秀在背景这个简单的任务而已,它所包含的功能几乎占了游戏的大半,凡跟背景牵上关系的,全部都要靠地图编辑器来付予其适当的功能,想制作游戏的人不可不知道这个重点。  就以星际争霸的地图编辑器来说,通常玩家只要开出一个地图编辑器,将你所要的高山河流图案“贴”上去,然后再放几个军种,设定过关条件,最后储存档案,然后只要玩家想玩自己设计的地图,很简单,进入游戏,选择自己设计的档案,按OK,然后就开始可以玩了,像这样子简单的工作就可以处理好一个游戏关卡(玩家连程序都不必写),可以想见地图编辑器包含了多少的设定与功能。  再换另一个角度来说,像这样的地图编辑器,甚至连玩家都可以自订关卡,可以想见该游戏公司的美工是如何轻松愉快了,所以,一个好的地图编辑器不仅可以包含游戏大部份的功能设定,还可以减少公司开发游戏时所耗费的成本,无怪各游戏公司几乎都是采用地图编辑器这种演算法来制作游戏了。  那么地图编辑器究竟含有什么玄机?  对制作游戏的人来说,不论他是企划、程序或美工,相信都可以回答这个问题,整个问题的答案可以用一个词儿来涵盖说明,那就是“Tile”(瓷砖)!  Tile算是地图编辑器的一个专有名词吧!对美工而言,说它是贴图的元素也可以;而对企划而言,说它是事件引发的记录点也没什么不对,就看整个Team(游戏制作团队)要怎么样看待它所代表的功能性了,而且这方面的问题,最好还得经过三方面的协调,才能够真正的确定。当然,如果你只是一个人想制作游戏的话,那就不需要沟通这方面的问题了。  究竟Tile这种东西该如何解读呢?  我们可以试著这样想,今天我们要制作一张背景图,这张图上面,有一面墙壁,大约占掉画面上约百分之七十的面积,而画面下方剩下的百分之三十,则是路面……  OK,现在我们开始画了,一种方法是开启小画家(或类似小画家之类的绘图工具),一笔一画地将图给完成……至于另一种方法,则是将墙壁分成一块块地先画好,路面也是一样的处理,然后,再将这些画好一块块的东西,像拼图一样的拼上去……  似乎有人会开始比较这两种方法的优劣性:“似乎第一种方法会比较有效率,而且也会画得比较有质感吧!”当然,如果工程就只是这么一张图的话,利用第二种方法的确是有点画蛇添足,而且利用拼图的方式,恐怕也会拼得不是很好看的样子。但如果我们换一个角度来思考,可能答案就不同了:  如果我们准备要画10张这种图,同样是墙壁跟路面,但是比例可能会不同(有几张可能是六成墙壁四成路面,有些则是九成墙壁一成路面),而且,理所当然地,这些墙壁路面不可能每一张都长得一模一样...  好,问题来了,你仍然会认为第一种方法最快吗?  那如果要你画五十张呢?或者一百张?  究竟是那一种方法最快?  换句话说,地图编辑器最大的优点就在于:重覆使用性高,背景地图制作速度快,简单易用等。譬如你想制作一个RPG游戏,很明显的,RPG游戏一定会有城镇,而且由于文化的一致性,一般来说城里的房屋都是大同小异,如果我们以《暗黑破坏神II》来说明,其中有一个阿拉伯城(玩过的人应该知道)就是一个很典型的例子。  现在假设你的游戏背景设定在中古世纪的阿拉伯,并且整个游戏共有二十个城镇,首先我们会注意到的是:这二十个城镇的建筑物排列是肯定不会一样的,但由于文化上的一致性,肯定长得也会差不多;其次是城里的道路,房屋,几乎也相差不大,于是,地图编辑器在此发挥了功效,试想,如果你一开始的时候就先把具有阿拉伯风格的几个墙壁的Tile(小瓷砖)给画好,然后当然,你的每一张背景就开始利用Tile贴图的方式来制作了,而且相信速度将会非常的快。  也有人问,如果光靠几个Tile就想画出二十个城镇好几百个建筑物的外观,似乎也太难、太懒了吧!  个人完全同意这种看法,所以事实上,真正要做出好几个城镇的背景图的话,所准备的Tile也不能太少,譬如说,有些Tile可能同样都是墙壁,却有好几种不同的样式,有的Tile上面有斑驳的痕迹,有的Tile上面可能有涂鸦等,像这样同样是墙壁但样式不同的,就必须要准备好几个来使用,又如树之类的背景,可能也要准备个好几种不同树的Tile,否则的话一个游戏从头到尾就只有一种树,岂不荒唐!  不过一般游戏还是会重覆使用到一些Tile的,玩家如果不信,可以在玩RPG的时候稍微注意一下,应该会发觉有重覆的地方,譬如树这种东西,应该是最容易发现到的。  至于是否简单易用,那就得看程序设计师的功力了。功力好的,制作出来的编辑器可能比小画家还要简单。但也并非全然如此,如果这套编辑器被企画付予太多的功能,恐怕再厉害的设计师也不一定做得出简单好用的编辑器系统。但唯一能够给予肯定的,是它仍然比传统的画法要更为方便好用,光是这一点,就足以支持我们用地图编辑器这个演算法了。  但我们也必须承认,如果光只是这个原因来驱使我们使用地图编辑器,那也太小看地图编辑器的「勇猛」了,它在其它功能的强大,似乎更使得我们不得不承认它存在的价值。    第二节:地图编辑器--地图之外?  前面谈到地图编辑器可以拿来节省绘图的工时成本,这一点确实蛮吸引人的(至少对游戏开发公司而言是如此),但我们也不得不赶紧将它更强大的功能给介绍出来,好让大家知道在地图之外,它所代表的地位依然也是无可取代的。  相信玩过《魔法门英雄无敌》的人都知道,每次玩家在控制英雄行动时,他的速度经常是时快时慢的,譬如当英雄行走的是一条路面时,一回合下来,就可以走的很远;如果行走的是草原的话,一个回合下来,走得就慢了一些;如果经过的是沙漠区的话,速度更是慢了下来;甚至当英雄经过沼泽区时,能走到三步就已经很偷笑了。这类形的游戏其实很多,通常战略游戏都有作这样的设定,即便是《三国志》,也没有例外。  这样的设定其实必须归功于地图编辑器的功效,它是怎么做到这样一件事的?其实也不难,只要程序设计师在制作编辑器时,顺便设定一个值,然后让这个值跟著一个Tile跑,这样一来,每一个Tile就会带有一个值,而这个值所代表的就是该Tile所消耗的步数。  还不通吗?再详细一些你可能就晓得了,假设今天已经设计好一套地图编辑器让美工去绘背景地图:  a. 此美工先开启地图编辑器和一张背景地图,这张背景地图因为还没贴图,所以是空的。  b. 地图编辑器要求美工选取Tile,美工便将自己先前画好备用的图案选进地图编辑器中,这些图案应该是一些沙漠,草原之类的,先假定该美工已画好了十五种沙漠图案跟二十种草原图案,所以美工将这些图案选进来当作 Tile。  c. 编辑器要求美工针对每一个Tile给定一个数值,由于美工不知道每个Tile的数值是多少,所以跑去问企划,于是企划跟他说只要是草原数值就给 2,沙漠的Tile就给4。(这一个步骤非常重要,因为这一个步骤,先前所述各游戏的效果才能显现出来)  d. 数值给定之后,美工开始将这些Tile贴进整张地图编辑器中,贴完之后,整张背景地图于焉完成。这是一张有沙漠跟草原参杂的背景地图。  e. 美工将做好的背景地图交给程序师,再来就是程序师的功夫了,理论上,程式会写一个程序让一个假人在这张地图上跑,假定这个假人的行走能力是每回合8步,所以当假人往前走到草原区的Tile时,程序会判断该地区的数值是2,所以会消耗掉2步的能力(还记得草原给定的数值是2吗),剩下6步,照这样看来,如果这个假人一直都在草原区行走的话,算算每一回合应该可以走4格Tile的长度(8步÷2步=4);但如果该假人是在沙漠区行走的话,由于程序判断该地区每一个Tile的长度会消耗掉4步,所以假人一回合只能走两个Tile的长度,相形之下,这种因地形不同而有速度快慢的效果,就可以做出来了。当然啦!如果经过两个草原和一个沙漠的话,也是刚好能在一回合走完喔(2个2步+1个4步=8步)  从上述的例子,我们就不难发现,地图编辑器甚且具有地形标示的功效呢!    第三节:地图编辑器之事件处理  谈到事件处理,恐怕有很多人不知道它是干什么的,这里我们希望能够先聊聊这个东西。  事件处理,顾名思义,就是用来处理事件的,不过
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
职称考试题目
招生信息考研政治
网络安全安全设置工具使用手机安全
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&}

我要回帖

更多关于 赛车游戏地图编辑器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信