我正在设计一个RPG,我遇到了一个小问题。我不确定在我的世界地图中使用什么。我在过去一周看过不同的格式,并确定没有任何适合户外环境的地图(我能找到......)。我发现.bsp地图(地震4或厄运3)对室内环境有好处,但对于户外设置不太好,因为它们已经完成了。
我正在努力寻找能够制作巨大户外地图的东西,就像遗忘或明天一样。当然,我可能不会将地图用于那种极端,如果我需要的话,可以有扩展空间。
谢谢, 罗比
答案 0 :(得分:6)
室外环境通常使用地形高度贴图完成。它基本上是一个巨大的网格,每个单元格都有高度信息。此外,每个单元格都包含有关要使用的纹理的信息。
您可以使用基于分形和基于perlin噪声的地形生成器创建这些地图
答案 1 :(得分:3)
This article介绍了使用quadtrees进行地形存储,我认为这是常用的。基本上,它们就像Quake中使用的BSP树,但更适合存储高度图。
答案 2 :(得分:2)
我认为他正在寻找一种从文件中保存和加载地图的方法,而不是将它们存储在内存中的方法。 (或许我误解了?)
恕我直言,有四条路可以解决这个问题。
极值:创建自己的格式
您可以创建自己的文件格式。最简单的方法是选择一种广泛使用和可扩展的文件格式(例如XML),因为你会在互联网上免费获得大量的解析器。 (前往applied-mathematics.net获取简单但完整的XML解析器)。
这里的问题是你必须创建自己的地图编辑器。 毫无疑问,如果您想要学习大量的东西并且格式干净,这是“最好的”方式。但是你还必须考虑创建所有这些工具所需的时间。
极值:使用其他游戏/工具的格式
您还可以选择使用现有游戏的文件格式,并对其进行复古工程(或简单地使用Quake等开源游戏的格式)。
这里的问题是你将继承你选择的格式的限制。 但是开发时间大大减少了,你只需要找到一种方法来加载这些格式。
权衡1:从元数据中去耦几何
您还可以选择从现有格式中选择所需内容,并将元数据存储在其他位置。
例如,您可以使用创建如下的格式:
<?xml version="1.0" encoding="UTF-8"?>
<map>
<name>MyMap</map>
<geometry type="bsp">my_map.bsp</geometry>
<spawn id="1">
<monster type="1" spread="5" />
</spawn>
</map>
在这里,您将获得两个世界中最好的一面。 您可以在任何.bsp编辑器(3DSmax,Blender)中设计地图,并将您需要的数据存储在XML中。
中间2:根据您的需求调整其他格式
这里的想法只是创建自己的统一格式,并为广泛使用的编辑器创建导出器。例如,您可以为Blender编写导出器脚本,这将为您自己的格式生成文件。
如果我误解并且您正在寻找地图的内存存储,那么还有一些提示。 (如果只是问,我会完成我的答案:))
答案 3 :(得分:1)
有很多方法可以实现游戏世界地图 无论如何,对于巨大的地图,请查看Spatial indexes,特别是Quadtrees.