我正在经典的Ultima系列中编写一个小型俯视RPG。我需要一种快速而肮脏(比肮脏更快)的方式来设计大型地图 - 比如1000个瓷砖x 1000个瓷砖,我需要一些帮助来思考如何去做这个。
我想说有50-60种不同类型的瓷砖 - 树林,河流,平原等。
到目前为止,我能想到的最好的是
定义一个数组(或一些类似的结构)来保存两个关键信息 - 位置/坐标标识符,以及1-60的整数,定义它是什么类型的图块。
在光栅编辑应用程序中,绘制1000px x 1000px图像。使用50种不同颜色的调色板,我绘制我的地图 - 1个像素对应1个瓷砖。对于给定的水瓦片,我将绘制一组蓝色的像素。另存为.gif或.png。
编写一些处理器然后分析前面提到的gif / jpg并逐像素地分析它。根据像素的RGB值,它确定图块类型。然后,处理器代码生成一些填充地图数组的例程。
到目前为止,我认为必须有一种更简单的方法。
答案 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,其中一些屋顶元素变得透明,当你通过它们也是基于这些结构。
我们发现拥有一个图像(在我们的例子中是一组图像)很容易,因为你可以在有时间时升级外观(不再是矩形森林!),并专注于特定的任务位置。
问候
纪尧姆