游戏地图的实现方法(2010-04-21 11:05:54)转载标签:flash游戏地图as3 分类:AS3.0学习资料
常见的三种方式:
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的复制会快很多。
另外,我们可以在设计引擎的时候将整图和栅格化切图的方式一起考虑,对于小场景使用整图加载,对于大场景使用切片加载。
本文来源于:IT学习网(www.ITxuexi.com)
详文请参考:http://www.itxuexi.com/tech/flash/skill/332821254324639.html
关注:http://www.kaifazu.com
分享到:
相关推荐
游戏地图制作方法(Photoshop) 游戏地图制作是游戏开发中的一个重要环节,能够为玩家创造出一个真实的游戏世界。本教程将指导您使用 Photoshop 制作游戏世界地图,并提供了详细的制作步骤和技巧。 游戏地图的基本...
游戏地图分割器MapSplitter是一款专为游戏开发者和爱好者设计的工具,主要用于处理游戏地图的制作过程。在创建大型游戏地图时,由于单个图像文件可能会过于庞大,导致加载速度变慢,影响游戏性能,因此通常需要将大...
"2.5D游戏地图场景大图"这个资源包正是为这种类型的游戏设计提供了丰富的素材。下面将详细探讨2.5D地图的概念、特点、制作流程以及相关技术。 2.5D地图,通常是指以2D视角展现,但地图内容包含3D元素的游戏场景。...
《易语言游戏地图设计器》是一款专为游戏开发者设计的工具,它使用易语言编写,旨在帮助开发者快速、高效地创建和编辑游戏中的地图布局。这款设计器不仅提供了基本的地图绘制功能,还包含了位置选择、地图对象的添加...
使用说明: 1、菜单中的“新增”按钮可以增加一个新的地图工程,地图选择本地图片,可以设置宽度和高度以及每...用EB163 MapEditor 45度开源游戏地图编辑器创建新地图 http://www.eb163.com/club/thread-14363-1-1.html
《2.5D游戏地图编辑器完整源码解析》 在游戏开发领域,地图编辑器是不可或缺的一部分,它为开发者提供了构建游戏世界的基础工具。本文将深入探讨一款基于C++编程语言实现的2.5D游戏地图编辑器的完整源码,旨在帮助...
游戏地图设计器使用方法:新建一个项目,左边的地图可以选择,然后画在右边的地图上就行。另说下地图目录下还有很多地图的,地图多了,所以文件大了点,不过现在都是宽带这点文件不算大的。思路是来源于RPG Maker XP这个...
本主题聚焦于“3D游戏地图编辑器”,这款工具为游戏开发者提供了强大的功能,帮助他们构建逼真的环境,设计复杂的关卡,以及实现丰富的交互体验。 3D游戏地图编辑器通常包括以下核心功能: 1. **三维视图**:编辑...
本篇文章将深入探讨C# RBG游戏地图的开发知识。 首先,我们来理解RBG游戏的核心概念。RBG是一种随机生成战斗场景的游戏模式,它通过算法生成地图,确保每次游戏的体验都具有一定的新鲜感。地图是游戏环境的基础,...
在Android平台上,游戏地图测试是开发游戏过程中至关重要的一环,它涉及到游戏的视觉表现、交互性和性能优化。本文将深入探讨“游戏地图测试演示”这一主题,基于提供的标题和描述,我们将围绕Android游戏地图的实现...
《VC实现的游戏地图编辑器源代码解析》 在游戏开发领域,地图编辑器是一个至关重要的工具,它允许开发者创建、编辑和管理游戏中的环境。本文将深入探讨一款基于VC++实现的游戏地图编辑器源代码,旨在帮助读者理解其...
《推箱子》游戏地图资源100关原始地图mapdata100.js //1:围墙 2:目标点 3:箱子 4:人物 5:目标点上的箱子 var levels=[]; levels[0]=[ [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], ...
【FLASH游戏地图编辑器】是一款由个人开发的用于创建和编辑FLASH游戏地图的工具。它允许用户通过图形化的界面设计游戏场景,自定义地图布局,为游戏增添丰富的交互性和视觉效果。尽管开发者提到该编辑器存在一些已知...
《2D游戏地图碰撞编辑器:Java实现与应用解析》 在游戏开发中,地图碰撞检测是不可或缺的一部分,它确保了角色与环境交互的精确性和趣味性。2D游戏地图碰撞编辑器则为开发者提供了一个可视化工具,方便设计并调试...
本项目名为“Java ME游戏地图编辑器”,是一个专门用于制作手机游戏地图的工具。 地图编辑器在游戏开发中扮演着至关重要的角色,因为它允许开发者创建、编辑和管理游戏世界的布局。使用这样的工具,开发者可以设计...
《J2ME游戏地图制作软件(中文版)详解与应用》 J2ME,全称为Java 2 Micro Edition,是Java平台的一个子集,主要用于移动设备、嵌入式设备等小型系统的开发。在这个领域,地图制作是游戏开发中的重要环节,而“j2me...
【VC++ 游戏地图编辑器的源码】是一个用于创建和编辑游戏地图的软件开发项目,基于C++编程语言,特别使用了Microsoft的Visual C++(VC++)开发环境。这个源码提供了基础功能,允许开发者布置游戏场景中的元素,如...
CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏地图源代码CS游戏...