Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
3d 各种游戏地图格式(室内和室外)_3d - Fatal编程技术网

3d 各种游戏地图格式(室内和室外)

3d 各种游戏地图格式(室内和室外),3d,3d,我在设计rpg的过程中遇到了一个小问题。我不知道我的世界地图用什么。在过去的一周里,我研究了不同的格式,确定没有适合户外环境的地图(我可以找到…)。我发现.bsp贴图(quake 4或doom 3)适合室内设置,但不适合室外设置,因为它们的操作方式不同 我正试图找到一些可以让我制作巨大户外地图的东西,就像《遗忘》或《晨风》。虽然我可能不会把地图用到那个地步,但如果我需要的话,能有扩展的空间就好了 谢谢, Robbie户外环境通常使用地形高度图来完成。它基本上是一个巨大的网格,每个单元格上都有高度

我在设计rpg的过程中遇到了一个小问题。我不知道我的世界地图用什么。在过去的一周里,我研究了不同的格式,确定没有适合户外环境的地图(我可以找到…)。我发现.bsp贴图(quake 4或doom 3)适合室内设置,但不适合室外设置,因为它们的操作方式不同

我正试图找到一些可以让我制作巨大户外地图的东西,就像《遗忘》或《晨风》。虽然我可能不会把地图用到那个地步,但如果我需要的话,能有扩展的空间就好了

谢谢,
Robbie

户外环境通常使用地形高度图来完成。它基本上是一个巨大的网格,每个单元格上都有高度信息。此外,每个单元格都包含有关要使用的纹理的信息


您可以使用基于分形和柏林噪声的地形生成器创建这些地图

实现游戏世界地图的方法有很多。

无论如何,对于大型地图,请查看,特别是

引入了用于地形存储的,我相信这是常用的。基本上,它们就像地震中使用的BSP树,但更适合存储高度地图。

我认为他在寻找一种从文件中保存和加载地图的方法,而不是将地图存储在内存中的方法。(或许我误解了?)

我认为有四种方法可以解决这个问题


Extremum:创建自己的格式

您可以创建自己的文件格式。最简单的方法是选择一种广泛使用且可扩展的文件格式(如XML),因为您可以在internet上找到大量免费可用的解析器。(请访问applicated-mathematics.net以获取简单但完整的XML解析器)

这里的问题是,您必须创建自己的地图编辑器。 毫无疑问,如果你想学习很多东西,并且有一个干净的格式,这是“最好的”方式。但是你也必须考虑你需要花费时间来创建所有这些工具。

Extremum:使用其他游戏/工具的格式

您还可以选择使用现有游戏的文件格式,并对其进行重新设计(或仅使用开源游戏的格式,如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>

我的地图
my_map.bsp
这是两个世界中最好的。 您可以在任何.bsp编辑器(3DSmax、Blender)中设计地图,并将所需数据存储在XML中

中间2:根据您的需要调整其他人的格式

这里的想法只是创建您自己的统一格式,并为广泛使用的编辑器创建导出器。例如,您可以为Blender编写导出器脚本,这将为您自己的格式生成文件


如果我误解了你在寻找地图的存储空间,请再给我一些提示。(以防万一,请提问,我将完成我的回答:))

  • 寻找四元/八叉树。这是一种将地图切割成四边形/立方体的方法。然后,您将能够在这些结构中实现快速搜索,从而仅显示地图、LOD等的可视部分
  • 通过选择接近地图内存布局的文件格式加快地图加载
  • 组合多个地图存储范例。高度贴图对于大型户外贴图很好,但非常有限(特别是对于多级贴图)。你可以在地板上使用高度贴图,在四棵树上存放石头/花等

并不是说我们在这里没用,但你可能会在@forums得到更具针对性的回应。我试过了,但没有人回应。这里的响应时间比gamedev好得多。至少对于我的问题。。。Idk,也许他们不喜欢我,因为我有时会问一些简单的问题。哦,好吧…@Robbie:我每天都查看Gamedev.net,我不记得看到过这样的问题。你把它贴在哪里了?在图片区。我大约一周前贴的。我每天都检查,但没有人回应。图形论坛在这方面可能是错误的,因为它是用于渲染技术,如着色器,而不是文件格式或资产创建和管理。如果有疑问,在“初学者”中发布,肯定会有有用的人看到。啊,好的。我从来没有想过那样做。我一直认为它们是在blender或其他3d建模程序中完成的,然后被加载到游戏中。现在你怎么把房子或树之类的东西放在地图上?只需分别制作模型,加载它们,然后将它们放在地图上任何你想要的地方?我唯一不太明白的是如何将图形信息与四叉树相关联。假设我有一个16x16BMP文件,我用它作为贴图,最小的节点是1x1正方形。我该如何用四叉树绘制地图?或者我不会那样做,还有另一种方法吗?@Robbie:我认为使用四叉树存储高度图的意义在你想存储实际的3D顶点数据时更为明显,这些数据是由高度图生成的。然后使用四叉树分层组织数据。例如,有关更多详细信息,请参阅。