Questions tagged «xml»

XML(可扩展标记语言)是一种标记语言,它定义了一组规则,用于以人类可读和机器可读的格式对文档进行编码。

6
保存游戏数据的良好文件格式是什么?[关闭]
我需要保存一些自定义游戏数据。地图,播放器等 它们都将具有“子对象”。例如,地图和地图将具有图块的“阵列”。即分层数据。希望没有二进制文件。 什么是这些的好格式? 到目前为止,我已经考虑过: 序列化:这是快速且容易的,但是当我更改基础类时往往会中断:( XML:我真的很讨厌解析这个。我的测试用例超过了100多行代码,即使是非常简单的格式,也似乎需要大量的“忙碌工作”。 INI:对于分层数据来说真的很笨拙。 Protobuf:从未使用过它,但请阅读,如果您更改班级,则必须做很多手动修改,然后休息。 还有其他选择吗?这就是为什么我在这里! 编辑:这是Java顺便说一句。 编辑2: 我选择了“受控二进制序列化”(见下文)。 优点: 它很快 它很小(在磁盘上),可以在读/写过程中轻松压缩/解压缩。 从游戏和工具集读取/写入非常容易。 我可以决定要包含/排除对象的内容。 对象/数据可以嵌套。 缺点: 无法手动编辑(例如XML,YAML等) 使用脚本无法轻松读取/修改它 与其他实现相比,默认情况下,Java序列化速度相当慢/膨胀,但它稳定且有效
37 java  file-format  xml  data  file 

8
使用XML / JSON / Text或数据库存储游戏内容会更好吗?
我正在考虑如何实现基于组件的游戏,因为这似乎很热门,而且我喜欢这种灵活设计的想法。这种设计的特征之一是可以通过数据完成向游戏中添加新事物的过程,通常是通过XML之类的文本文件加载内容。这样做的好处是易于阅读,并且可以在任何文本编辑器中轻松编辑。不利的一面是,文本处理起来可能较慢,并且您必须管理大量数据文件。类似的基于文本的格式(如JSON或配置文件)将具有类似的好处。 另一方面,还有小型的可移植数据库,例如SQLite或Tokyo Cabinet。这些文件虽然不是直接可读的,但很容易与它们交互,并且我认为无论如何,对于游戏内容设计而言,某种编辑工具还是比较可取的。使用数据库可以一致地存储配置信息并易于检索。您也可以将数据序列化到数据库中以保存游戏。 在性能方面,我认为一般来说,小文件的XML速度更快,但是数据库可以更好地扩展到大量数据。我以为任何一款真正的游戏都会有很多游戏对象。 问题是:哪种方法更可取?我倾向于数据库,但是我想知道文本文件是否存在隐患或真正强大的优势。或者,如果除了这些之外还有其他选择(我猜要序列化为二进制格式吗?)

3
团队如何防止覆盖源文件中的工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 在我看来,有一种可能性,例如由多个人同时处理游戏引擎时,如何防止覆盖? 假设开发者一在工作,Audio.cpp而开发者二也在工作Audio.cpp,这在大型团队中通常如何进行管理以应对覆盖?(换句话说,要阻止开发人员2打开文件,直到开发人员1完成)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

4
如何选择如何存储数据?
给一个人一条鱼,你就喂他一天。教一个人钓鱼,你就养活他一辈子。 - 中国谚语 我可以问一下我应该为实际项目使用哪种数据存储,但是我想学习钓鱼,所以我不必在每次开始新项目时都要求钓鱼。 因此,直到我使用两种方法在我的非游戏项目上存储数据:XML文件和关系数据库。我知道还有NoSQL类型的其他数据库。但是我不知道是否有更多选择可供选择,或者首先是如何选择,除了随意选择一个。 因此,问题如下:如何为游戏项目选择数据存储类型? 在选择时,我会对以下标准感兴趣: 项目的大小。 游戏所针对的平台以及所使用的开发平台。 数据结构的复杂性。 在许多项目之间增加了数据的可移植性。 Added2 Silmutaneous使用不同之间的项目数据。(即用户数据) 添加了应该多长时间访问一次数据 为同一应用程序添加了多种类型的数据 带有多个数据存储的Added2配置。 在决定使用什么时,您认为还有其他要点。 编辑我知道关于使用XML / JSON / Text或数据库存储游戏内容会更好吗?,但认为它不能完全解决我的观点。现在,如果我错了,我将很高兴以自己的方式看到错误。 EDIT2添加了一些我认为相关的观点。此外,除了平面文件存储和关系数据库之外,我想听听还有哪些其他可用的选择。例如,非关系数据库呢?在前面提到的其他选项上使用这样的数据库是否有意义?
25 databases  data  xml 

7
用于游戏数据的“二进制XML”?
我正在使用一个级别编辑工具,它将其数据另存为XML。 这是开发过程中的理想选择,因为不费吹灰之力即可对数据格式进行少量更改,并且可以很好地处理树状数据。 但是,不利的是XML文件过大,主要是由于标记和属性名称的重复。同样由于数字数据比使用本机数据类型占用的空间大得多。较小的级别很容易最终达到1Mb +。我想大幅减小这些尺寸,特别是如果该系统用于iPhone或内存相对有限的其他设备上的游戏时。 针对内存和性能的最佳解决方案是将XML转换为二进制级别的格式。但是我不想这样做。我想保持格式相当灵活。XML使得向对象添加新属性非常容易,如果加载了旧版本的数据,则可以为它们提供默认值。因此,我想保留节点的层次结构,并将属性作为名称/值对。 但是我需要以更紧凑的格式存储它-消除标记/属性名称的大量重复。也许还为属性提供了本机类型,因此,例如,浮点数据存储为每个float 4个字节,而不是文本字符串。 Google / Wikipedia透露“二进制XML”几乎不是一个新问题-已经解决了很多次。这里有没有人有使用任何现有系统/标准的经验?-是否有适合游戏使用的理想选择-拥有免费,轻量级和跨平台的解析器/加载器库(C / C ++)? 还是我应该自己重新发明这个轮子? 还是我会忘记理想,而只是压缩我的原始.xml数据(它应该与zip类压缩一起很好地压缩),而让内存/性能受到重载呢?
17 tools  xml  compression 

7
什么是存储tilemap数据的好方法?
我正在与一些uni朋友一起开发2D平台游戏。我们基于XNA Platformer入门工具包,该工具包使用.txt文件存储切片地图。尽管这很简单,但是它在关卡设计中并没有给我们足够的控制和灵活性。例如:对于多层内容,需要多个文件,每个对象都固定在网格上,不允许旋转对象,限制字符数等。因此,我正在研究如何存储关卡数据和地图文件。 这仅涉及切片图的文件系统存储,而不涉及游戏运行时要使用的数据结构。瓦片贴图已加载到2D数组中,因此此问题与填充数组的源有关。 DB的推理:从我的角度来看,我发现使用数据库存储切片数据的数据冗余较少。具有相同特征的相同x,y位置的图块可以在各个级别之间重复使用。似乎很容易编写一种方法来从数据库中检索特定级别中使用的所有切片。 JSON / XML的推理:视觉上可编辑的文件,可以通过SVN轻松跟踪更改。但是有重复的内容。 与另一个相比,它们是否有任何缺点(加载时间,访问时间,内存等)?以及行业中常用的是什么? 当前文件如下所示: .................... .................... .................... .................... .................... .................... .................... .........GGG........ .........###........ .................... ....GGG.......GGG... ....###.......###... .................... .1................X. #################### 1-玩家起点,X级出口,。-空的空间,#-平台,G-宝石
13 xna  c#  xml 

1
在MUD样式的基于文本的世界中组织关卡/房间
我正在考虑编写一个小型的基于文本的冒险游戏,但是我不确定如何从技术角度设计世界。 我的第一个想法是使用XML进行设计,其设计如下所示。对大量XML表示歉意,但我认为完全解释我在做什么很重要。 <level> <start> <!-- start in kitchen with empty inventory --> <room>Kitchen</room> <inventory></inventory> </start> <rooms> <room> <name>Kitchen</name> <description>A small kitchen that looks like it hasn't been used in a while. It has a table in the middle, and there are some cupboards. There is a door to the north, …

3
如何存储shmup级别?
我正在开发2D shmup(即Aero Fighters),我想知道存储关卡的各种方法是什么。假设在自己的xml文件中定义了敌人,那么您将如何定义何时在关卡中产生敌人? 是基于时间吗?更新?距离? 目前,我基于“关卡时间”(关卡运行的时间量-暂停不会更新时间)来执行此操作。这是一个示例(序列化由XNA完成): <?xml version="1.0" encoding="utf-8"?> <XnaContent xmlns:level="pekalicious.xanor.XanorContentShared.content.level"> <Asset Type="level:Level"> <Enemies> <Enemy> <EnemyType>data/enemies/smallenemy</EnemyType> <SpawnTime>PT0S</SpawnTime> <NumberOfSpawns>60</NumberOfSpawns> <SpawnOffset>PT0.2S</SpawnOffset> </Enemy> <Enemy> <EnemyType>data/enemies/secondenemy</EnemyType> <SpawnTime>PT0S</SpawnTime> <NumberOfSpawns>10</NumberOfSpawns> <SpawnOffset>PT0.5S</SpawnOffset> </Enemy> <Enemy> <EnemyType>data/enemies/secondenemy</EnemyType> <SpawnTime>PT20S</SpawnTime> <NumberOfSpawns>10</NumberOfSpawns> <SpawnOffset>PT0.5S</SpawnOffset> </Enemy> <Enemy> <EnemyType>data/enemies/boss1</EnemyType> <SpawnTime>PT30S</SpawnTime> <NumberOfSpawns>1</NumberOfSpawns> <SpawnOffset>PT0S</SpawnOffset> </Enemy> </Enemies> </Asset> </XnaContent> 每个敌人元素基本上都是特定敌人类型的浪潮。该类型在EnemyType中定义,而SpawnTime是该波形应出现的“级别时间”。NumberOfSpawns和SpawnOffset分别是显示的敌人数和两次刷新之间所花费的时间。 这可能是一个好主意,或者可能还有更好的主意。我不确定。我希望看到一些意见和想法。 我有两个问题:正确产生一个敌人并创建一个关卡编辑器。关卡编辑器的问题是一个完全不同的问题(我可能会在以后的:P中发布)。 至于正确生成,问题在于我的更新时间可变,因此我需要确保不会错过敌人的生成,因为生成偏移量太小,或者更新花费了更多时间。我在很大程度上修复了它,但是在我看来,问题出在我如何存储水平上。 那么,有什么想法吗?注释? 先感谢您。
12 levels  data  xml  shoot-em-up 

5
为什么将实体配置放在脚本之外?
我见过很多在脚本文件中定义实体组件的游戏,但是当它们配置每个实体并指定其具有的组件时,它们会使用其他文件格式(例如XML)。他们为什么这样做? 我主要是想看看其他人对此的依据是什么。我还在脚本之外配置了我的实体(尽管我选择了JSON而不是XML)。我这样做的原因是使我更容易实现保存游戏,还因为我认为这种配置可以更好地组织为XML或JSON之类的东西。 // @ 克里斯托弗·拉森的答案: 太长了,无法发表评论 我担心您可能偏离了问题的主题。您所描述的问题与基于层次的实体更相关;在我提到的问题中,我提到我在谈论基于组件的实体。 这是我想问的一个例子。以下是配置实体的两种替代方法:通过脚本和通过外部JSON文件。我的问题是,为什么有那么多人喜欢在脚本之外配置实体? 基础实体类: class Entity: def __init__(self, name): pass def addComponent(self, comp): pass 脚本方法: orc = Entity('Orc') orc.addComponent(PositionComponent(3.4, 7.9)) JSON方法: { "name" : "Orc", "components": { "PositionComponent": { "x" : 3.4, "y" : 7.9 } } } 我已经说明了使用这种方法的原因,包括技术上和组织上的原因。我想知道为什么这么多其他人(根据我所看到的)使用它。

2
如何在XNA中将XML文件用作内容文件?
我有一个XML文件,代表不同的汽车制造商,这些文件将在我的游戏中提供。该文件如下所示: <?xml version="1.0" encoding="utf-8" ?> <XnaContent> <Asset Type="List[string]"> <car>Audi</car> <car>BMW</car> <car>Nissan</car> <car>Volvo</car> </Asset> </XnaContent> 将其添加到我的内容文件夹中时,编译器将返回以下错误: There was an error while deserializing intermediate XML. Cannot find type "List`1" 如何创建字符串列表,将其放入XML并从XNA读取?
9 xna  xml 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.