Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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
C# 在二维ORPG中保存地图数据_C#_Python_C++ - Fatal编程技术网

C# 在二维ORPG中保存地图数据

C# 在二维ORPG中保存地图数据,c#,python,c++,C#,Python,C++,我试图找出如何最好地保存我正在开发的2d ORPG引擎的地图数据,该文件将包含平铺数据(是否被阻止,它将使用什么实际图形,以及各种其他属性) 我目前使用的是二进制格式,但我认为这可能有点太有限,难以调试,有什么替代方案,我可能在考虑JSON或XML,但我不知道是否还有其他更好的选择 必须与C++和C语言相结合,最好使用Python。 Lua也是一种可能性,可以用作配置文件。我已经有一段时间没有使用Python了,但是它不也支持AJAX风格的数据结构吗?如果已经在使用Python文件,您可以简单地

我试图找出如何最好地保存我正在开发的2d ORPG引擎的地图数据,该文件将包含平铺数据(是否被阻止,它将使用什么实际图形,以及各种其他属性)

我目前使用的是二进制格式,但我认为这可能有点太有限,难以调试,有什么替代方案,我可能在考虑JSON或XML,但我不知道是否还有其他更好的选择


必须与C++和C语言相结合,最好使用Python。

Lua也是一种可能性,可以用作配置文件。我已经有一段时间没有使用Python了,但是它不也支持AJAX风格的数据结构吗?如果已经在使用Python文件,您可以简单地使用它。

XML基本上在所有语言中都得到了很好的支持。但是,对于大型地图,它可能会变得冗长,这取决于您如何用XML编码地图数据

JSON可能不是一个好的选择,因为我认为它不支持多行字符串,这会很有帮助(尽管不是真的需要)

YAML是另一种选择,尽管它不那么出名

你可以坚持使用二进制-大多数地图手工编辑都会很痛苦,不管你选择什么格式(尽管我听说星际争霸地图是用十六进制编辑器编辑的…),只要使用对你来说最简单的就行了


此外,请查看平铺贴图编辑器(http://www.mapeditor.org/),它允许您编辑地图(我想是使用自定义的平铺属性),并将其保存为基于XML的格式,包括用于压缩的可选GZip。

我个人坚持使用二进制格式。不管你选择哪种方法,手工编辑都会让你头疼,所以你最好还是坚持使用二进制文件,因为二进制文件在大小和速度上都有优势


您还需要一个地图编辑器,这样您就不必手动编辑地图了。

有几个问题:为什么二进制文件很难调试?你在说什么样的地图尺寸?有没有一个原因需要手工编辑?XML是很好的支持和简单的(没有问题写或解析它在C,C++或Python)。@ MooCo的地图大小是目前30x20瓦与7层瓦片,目前我们还没有一个地图编辑器,所以这是为什么更容易编辑他们的手。所以手工编辑是一个无效的参数。嗯,它不需要多行字符串,我认为json确实支持它们。我以前也使用过YAML,使用它“必须使用C++和C语言,最好也使用Python”可能会很有趣。我认为AJAX风格的数据结构应该是JSON。我宁愿不使用编程语言之类的东西来保存数据。这确实是一个很好的推理,但是对于需要钥匙的门(需要在地图中存储钥匙ID)之类的东西,我应该将其与实际地图数据分开保存吗?我个人会将“世界”存储在它自己的单个文件中。这将包含地图数据(瓷砖等),然后是对象本身(包括它们所在的位置、它们所在的容器等)。此时需要注意的一件有趣的事情是,用户的保存游戏/进度将覆盖这些。例如,当用户拾取密钥时,密钥容器现在与初始世界中的位置不同。然而,这不是一个复杂的问题。保存游戏文件中对象的状态有效地覆盖了初始世界的状态。接下来,请确保代码可以独立于地图保存状态,因为这将构成保存游戏数据的基础。我想,对于该州最初是否拥有地图数据,这是一个悬而未决的问题。经过一些思考,也许它自己的文件是最好的方式。好吧,ORPG可能是一个错误的术语,因为它实际上是多人游戏,但我想到的是使用二进制地图文件和一些基本的东西,如块瓷砖和层数据。然后将门等保存为数据库中的实体。是的,这对您正在做的事情非常有意义!