2009-04-08 44 views
9

我正在编写一个小型俯视角度RPG游戏,这个游戏很多都是经典的Ultima系列游戏。我需要一个快速而肮脏(比肮脏)更快的设计大型地图的方式 - 比如说1000块瓷砖×1000块瓷砖,我需要一些帮助,思考如何去做这件事。构建游戏地图的最佳方法

我会说有一个很好的50-60不同类型的瓷砖 - 树林,河流,平原等

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

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

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

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

到目前为止,我在想一定有一个更简单的方法。

回答

2

听起来是一个不错的方式给我。但是,您可能会发现创建自定义地图构建器非常简单。

另一种选择可能是编写一个程序,该程序允许您定义主要功能的位置,而生成器程序将填写其余的部分。 (例如:河流从x1,y1运行到x2,y2。“large”forrest以x,y等为中心)。这可以让你从一个更小的地理特征文件中定义一个大的地图。把它看作有点像做矢量绘图,而不是指定栅格中的每个最后一个像素。 :-)

11

是否需要基于磁贴?看看丹尼尔·库克的网站,Lost Garden,他不仅给你一些美味的免费艺术作品,但他讨论了图像的任意位置的出现在游戏中,而地砖:

“曾几何时,你需要使用 小广场砖的一切。 如今,有没有真正的需要 使瓷砖基于2D引擎。随着 全阿尔法任意图像和 大量的填充率,可以把 一起这样的比赛一个贴纸书 下降你的图形在任意 位置和层像一个疯子 像游戏一样水族馆看起来很棒, 瓷砖无处可见。“

存在也对使基于IndieLib一个游戏编辑器step-by-step instructions在那里的链接。

+1

+1开箱思维! 我会在这里通宵达旦! – 2009-04-08 23:45:53

1

另一种选择是生成(像素)映射或直接在游戏地图。当然,这取决于你的世界的大小,如果你有很多特定的资源(一个城市在这一点上,在这一点上的矿...)

有关于这个问题在这个问题上很多文章关于游戏“流氓”,这可能是相当有用的(例如,尝试RogueBassin

他们还谈到了数据结构以允许更多的变化(例如拥有基本图像,并在您定义地图数组中的表示时随机添加一些(小)“边缘”图像。例如为草添加一些小石头)。其他效果如最终版V中所示,其中一些屋顶元件在通过它们时变得透明,也基于这些结构。

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

问候

纪尧姆

2

我建议你有你的位置信息为您的存储数据结构,你在它查找索引信息,而不是东西。 I.E.

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

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