Questions tagged «data-structure»

用于以特定方式组织数据以便可以有效使用的实体。例如数组,对象,记录,结构。

11
如何设计重放系统
那么我将如何设计一个重放系统? 您可能从某些游戏(例如《魔兽争霸3》或《星际争霸》)中知道了这一点,您可以在游戏玩完后再次观看。 您最终得到一个相对较小的重播文件。所以我的问题是: 如何保存数据?(自定义格式?)(小文件大小) 应该保存什么? 如何使其具有通用性,使其可以在其他游戏中用于记录时间段(例如,不是完整的比赛记录)? 使前进和后退成为可能(据我记得,WC3无法后退)

3
什么时候应该对数据进行硬编码与加载外部数据?
我需要大约一千行代码来制作自己的2D天基游戏,该游戏创建随机生成的恒星系统的网络,并随机选择行星,驻地,船只和武器来填充它们。 游戏可能需要使用数百个不同的站点/飞船/等-这就是我想知道的。我是否应该花时间创建一个“软编码”数据加载器,该数据加载器会将所有这些信息存储在(例如)XML文件中,因此在以后进行修改时会更容易些,还是我应该简单地处理一下现在正在做-将所有对象硬编码到游戏的主引擎中。 我是该项目的唯一人员,正如我所说,这只是我业余时间在大学以外从事的业余爱好。但是社区会建议投资创建一个额外的系统来将数据存储在其他文件中吗? 用这种方式对数据进行软编码与通过构造函数对所有数据进行硬编码相比,有什么好处?可以修改外部文件是否有长期利益-如果我不希望游戏具有“ mods”,是否需要外部文件?如果这只是我几周或几个月内会放弃的业余爱好,我应该在这上面浪费时间吗?

5
将实例或类用于游戏资源(木材,铁,金)
因此,我正在制作一个游戏,您可以在该游戏中将船只发送到地点以买卖木材,铁,黄金等资源。 现在我想知道如何在游戏中创建资源。我想出了两种选择 为每个资源创建一个类: public class ResourceBase { private int value; // other base properties } public class Gold : ResourceBase { public Gold { this.value = 40 // or whatever } } 创建资源类的实例 public class Resource { string name; int value; public Resource(string name, int value) { this.name = name; …

4
是否有3D等效的十六进制贴图?
基于十六进制的地图平铺与基于正方形的地图平铺的最大优点可能是,每个十六进制的中心与所有相邻十六进制的距离相同。是否有类似的形状以这种方式在3D模式下平铺,并且引擎支持这种模型?


3
矮人要塞的命令排序体系结构
实现AI命令排序系统的最优雅的方法是什么?例如,在矮人堡垒中,当您标记一个森林区域进行砍伐时,矮人将按照以下顺序进行操作: 去树上 砍树 将木材运送到库存中 去另一棵树 等等.. 我已经有一个不起作用的堆栈命令。从空闲状态到到达树的目标图块的1。 我担心的是,当我创建更多这样的订单时,这会变得混乱吗: 造房子 去储存 将木材带到建筑面积 回到库存 将石头带到建筑面积 动画建筑精灵 种植 去储存 将种子带到农场 酿造 去储存 使植物静止 动画酿造精灵 所以我的问题是,如何实现矮人堡垒之类的命令排序系统并同时避免使用意大利面条式代码?我需要研究任何数据结构吗?我需要将命令序列放在单独的xml文件中吗?

2
如何在Unity的检查器中编辑键值对(例如字典)?
我有一个正在创建的咒语系统,原理如下: 每个咒语都是一个自主的预制件。它包含具有某些属性(基本损坏,持续时间...)的脚本,可以在检查器中对其进行修改。 我有一个Spell枚举,列出了代码中所有可能的咒语,用于游戏逻辑 当我想施放法术时,我需要能够获得该法术的预制件以实例化它并读取其信息。 每个演员(无论是玩家还是敌人)都需要列出该咒语的可能动画 我尝试实现的问题是: 为了列出每个演员的动画,我可以使用Dictionary<Spell, Animation>,但是检查器不支持字典,这使得很难轻松地编辑多个演员类型。 我需要一些方法来轻松地从相应的枚举中访问拼写预制件。在这里我也可以使用字典,但是我只能在检查器中引用预制件,而不能在代码中引用,这意味着我将无法填充此字典 我正在寻找一种将我的咒语枚举轻松关联到相应的预制件和动画的方法

2
这些体素数据文件格式的优缺点是什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 7个月前关闭。 .VXL .VOX .KVX .KV6 .V3A .V3B 我试图决定是否值得采用以上任何一种方法或其他方法,或者是否应该自己动手做。重要性顺序的决定因素是: 使用体素增量或数值变换描述来支持动画(我知道这在体素方面是一个困难的方面)。 简单(或至少简洁格式) 压缩 据我所知,Tiberian Sun VXL格式是唯一一种用于动画的格式,但是Voxelstein3D的成名人物Ken Kenman声称VXL不支持动画(用他的话说是一个文件)。因此,我想知道是否可能没有两种不同的.VXL格式,因为体素数据的文件扩展名似乎是显而易见的选择……可能来自医学成像环境。 我确实需要一个具有体素格式丰富经验的人来评论他们的经验中的实际利弊。以与将JPG到PNG到GIF的方式相同的方式考虑这个问题。

4
应该使用哪种数据结构来表示体素地形?
根据维基百科有关体素的页面,“根据体素相对于其他体素的位置(即,其在构成单个体积图像的数据结构中的位置)来推断体素的位置。” 一个人应该如何实现这样的数据结构?我当时正在考虑使用八叉树,但我想知道是否还有其他我从未听说过的东西。

5
什么时候应该使用向量/列表?
我可以理解何时使用列表,但是不知道何时使用向量比在视频游戏中使用列表更好:何时可以进行快速随机访问? (而且我知道为什么在列表中插入/删除会更快,因为它只是删除/添加了指针,但仍然必须找到对应的项目...)

5
为什么块大小通常是2的幂?
我的世界有很多Minecraft克隆版本,我正在着手自己的实现。地形渲染的原理是将整个世界分成固定大小的块,以减少局部更改的工作量。 到目前为止,在Minecraft中,块大小为16 x 16 x 256。在克隆中,我也总是看到块大小为2的幂。 是否有任何原因,可能与性能或内存有关?我知道2的幂在二进制计算机中起特殊作用,但与块大小有什么关系?

4
如何有效地连续找到半径内的所有实体?
我有大量的实体(单位)。在每个步骤中,每个单元都需要知道其附近所有单元的位置(距离小于给定常数R)。所有单元连续移动。这是3D模式。 平均而言,在具有给定约束的任何其他给定单位附近,将有总单位计数的1%。 我如何能有效地做到这一点,而无需强加于人?

3
数组对象还是对象数组?
我正在制作一个管理模拟游戏,类似过山车大亨。我想知道构造我的世界对象的最佳方法是什么,以便最大化性能。 假设我的游戏中有5,000人,我可以: 创建一个对象并将其存储在数组中,如下所示: class person() { this.x = 0; this.y = 0; this.thirst = 15; this.hunger = 15; // etc.. add methods: public findPath(int destX, int destY) { // and so on } people = new person[5000]; for (int = 0; i < 5000; i++) { people[i] = new person; …

2
比较两个树结构
我很难用正确的术语来描述这个问题,所以我会尽可能详细地介绍,希望有人知道我要做什么=-) 我正在尝试比较两个节点树,以确定它们在结构上有多相似/不同。在下面的图表中,两个示例均具有相同数量的子代,孙代等。在示例1中,“根”有一个带有两个子代的子代,但在示例2中,“根”则没有。 我大概可以弄清楚如何递归遍历并计算每个级别有多少并进行比较,从而使我了解树木的相似程度,但是只有这样做,它们看起来才是相同的,但是实际上不是。 有人碰巧知道吗?甚至这是什么技术术语? 编辑:此外,这是在C#中,我正在使用列表来存储这些对象及其子对象。 例子1 例子2

1
如何在地形中表示悬崖面?
我正在尝试找出在游戏中以编程方式表示地形的最佳方法。我一直在考虑使用高度图(或等距顶点的网格)来表示地形的表面,并使用Splatmap来实现平滑的纹理化。这对于完全平滑的地形是可行的,但是问题是如何表示悬崖和陡峭的悬崖面。 悬崖本身的呈现方式必须与其余地形不同。例如,他们将需要在悬崖的前面看到不同的(未拉伸的)纹理,但是如果我为此使用splatmap,就不可能在悬崖的纹理上拥有足够多的悬崖面与地面完全分开。 图片说了一千个字,所以... 有什么一般的方法可以存储和/或渲染悬崖以及其他地形高度差异?

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.