构建游戏地图的最佳方式

时间:2009-04-08 23:26:38

标签: language-agnostic

我正在经典的Ultima系列中编写一个小型俯视RPG。我需要一种快速而肮脏(比肮脏更快)的方式来设计大型地图 - 比如1000个瓷砖x 1000个瓷砖,我需要一些帮助来思考如何去做这个。

我想说有50-60种不同类型的瓷砖 - 树林,河流,平原等。

到目前为止,我能想到的最好的是

  • 定义一个数组(或一些类似的结构)来保存两个关键信息 - 位置/坐标标识符,以及1-60的整数,定义它是什么类型的图块。

  • 在光栅编辑应用程序中,绘制1000px x 1000px图像。使用50种不同颜色的调色板,我绘制我的地图 - 1个像素对应1个瓷砖。对于给定的水瓦片,我将绘制一组蓝色的像素。另存为.gif或.png。

  • 编写一些处理器然后分析前面提到的gif / jpg并逐像素地分析它。根据像素的RGB值,它确定图块类型。然后,处理器代码生成一些填充地图数组的例程。

到目前为止,我认为必须有一种更简单的方法。

5 个答案:

答案 0 :(得分:11)

是否需要基于图块?看看Daniel Cook的网站Lost Garden,他不仅会给你一些美味的免费艺术作品,而且还讨论了在游戏中任意放置图像的问题,而不是瓷砖:

  

“曾几何时,你需要使用   适合一切的小方形瓷砖。   如今,没有必要   制作基于图块的2D引擎。同   任意图像与完整的alpha和   很多填充率,你可以把   像贴纸一样的游戏。   随意放下你的图形   位置和层次就像一个疯子。   像Aquaria这样的游戏看起来很棒   瓷砖无处可见。“

还有step-by-step instructions基于IndieLib制作游戏内编辑器的链接。

答案 1 :(得分:3)

尝试使用sourceforge:http://sourceforge.net/search/?type_of_search=soft&words=tile+editor

其中一些编辑将保存为某种标准格式,然后您可以随意将其添加到游戏中。

TileStudio甚至会输出可以直接编译到引擎中的头文件/源文件(不确定您的需求是什么)

答案 2 :(得分:2)

听起来对我很好。但是,您可能会发现创建自定义地图生成器非常简单。

另一个选择可能是编写一个程序,允许您只定义主要功能的位置,并且生成器程序将填写其余部分。 (例如:河流从x1,y1到x2,y2。“大”forrest以x,y等为中心)。这可能只允许您从较小的地理要素文件中定义大型地图。可以把它想象成矢量绘图而不是指定栅格中的每个最后一个像素。 : - )

答案 3 :(得分:2)

我建议您的位置信息 是您的存储数据结构的索引信息,而不是您在其中查找的内容。即。

int get_terrain_type(int x, int y) {
    return terrain[x][y];
}

(不完全确定这不是你的意思,但我想我会把它放在那里。)

答案 4 :(得分:1)

另一种选择是生成(像素)地图或直接生成游戏地图。这当然取决于你的世界的大小,如果你有很多具体的资源(此时的城市,此时是我的一个......)

关于游戏“流氓”的网站上有很多关于这个主题的文章,这可能非常实用。 (例如尝试RogueBassin

他们还谈到数据结构以允许更多变化(例如有一个基本图像,并在您定义地图数组中的表示时随机添加一些(小)“条纹”图像。例如,添加一些小石头到草地)。其他影响似乎在最终的V,其中一些屋顶元素变得透明,当你通过它们也是基于这些结构。

我们发现拥有一个图像(在我们的例子中是一组图像)很容易,因为你可以在有时间时升级外观(不再是矩形森林!),并专注于特定的任务位置。

问候

纪尧姆