Articles of 数据

数据局部性和多态性

我一直在阅读http://gameprogrammingpatterns.com上提供的各个章节,特别是关于Data Locality的章节( http://gameprogrammingpatterns.com/data-locality.html )提出了一些问题。 我已经给他发了一封电子邮件,但在等待的时候,我想我会收集别人的意见。 在本章中,建议您将GameEntity类拿走,将所有组件粘贴到数组中,并使用脏位来判断组件是否处于活动状态。 这允许更快的迭代并避免抖动caching。 但是,为避免某些types的所有组件都具有相同的大小,还要避免使用多态,并避免使用虚拟方法。 相反,对于每一种types,你会有一个数组。 对我来说,这听起来很浪费。 说我有20个不同的敌人,我一次允许100个敌人存在。 这将是21个(20个不同的MOB + 1个arrays,可容纳实体)100个条目的数组,所以2100个对象只是为了不同的敌人。 然后每个敌人都需要一个物理组件,一个渲染组件,甚至更多的依赖于游戏。 如果每个敌人都需要它自己的物理和渲染组件,那就是21个实体+20个物理组件+20个渲染组件,全部乘以100(或者允许同时存在多个实体)。 对于那些大部分时间都不会使用的东西来说,这是很多数据。 难道只有基类的数组更简单(而且更聪明),然后在某个索引处插入所需的子类? 基类将保存所有需要被任何子类访问的数据,子类只有重载的Update()函数。 是的,它会慢一点,因为程序必须反复查看vTable来确定使用哪个Update()函数,而不是基类中的所有数据都将被每个子类使用,但是听起来比拥有超过100个成员的100多个arrays更简单,更快,当时他们中有很大一部分甚至没有被使用。 我有什么缺点吗? 我是否缺less数据局部性的重要概念? 你要做什么/你会做什么?

在Android中,将游戏数据保存在二进制文件中是一个好方法吗?

我几乎完成了我的Android游戏,但我想确保我的保存格式是好的。 我正在做一个相当大的游戏,所以高分,星星等数据将被存储在大约80个级别,以及购买物品的数据。 目前我将这些数据按顺序保存在二进制文件中。 所以当我需要加载的时候,我必须经历以前所有的数据才能得到我真正需要的数据。 这似乎工作正常,但我质疑这种格式将如何保持游戏更新。 这是一个糟糕的做法吗? 我考虑过使用SQLite,但试图将其实施到我的游戏后,似乎不是很有效。 更新看起来好像更加复杂。

宾果门票数据

有90和75球宾果机票的数据来源吗? 而不是编码来自己生成票据,只是试图find一个来源来节省我的时间。 非常感谢

通过TCP发送块块

我正在创建一个“我的世界克隆”,游戏将只是多人游戏。 我现在有一个有限的世界(它不会是无限的),是512块。 每个块是16(X) * 16(Z) * 128(Y)的块。 每个块都由一个字节表示。 这意味着我有一个3D字节数组,代表哪个块位于块中的哪个位置( 0表示Air )。 我到了我想通过TCP连接发送世界的部分。 我正在使用KryoNet来满足我的多人游戏需求。 目前我所做的是将三维数组压扁到最高的非空气Y坐标,使我的(16 * 16 * 128)数组变成一个(16 * 16 * 小于128 )的数组。 做完这个之后,我把三维数组压平成一维数组。 这样做后,我有一个大小为32,000的一维数组。 很明显,通过连接一次发送整个32KB的数据是愚蠢的,它也使KryoNet崩溃。 我的问题是,我将如何有效地通过连接发送512块(512 * 32 KB的数据)? 我想将1D数组( 32,000字节)分成32个数据包,每个数据包1KB,但发送512 * 32个包发送世界( ~16000个数据包)似乎很奇怪。 有什么办法来压缩这些数据,或者通过我的TCP连接以更有效的方式发送数据? 显然这是每个会话一次,但仍然是16000 。 进度更新: 我把这些块分成了33个包,然后我把它们一个接一个地发送出去。 它似乎运作良好,但我有一个轻微的订购问题是无关的。 在它工作的时候,它的加载速度非常快,没有问题! 如果有更有效的方法去做这个请在这里张贴它!

EXE-ifying自定义关卡/脚本/graphics/音乐

我的游戏几乎只是一个游戏构建器,您可以在其中创建自己的关卡,脚本,graphics,音乐等,而游戏只是从您告诉的文件中加载它们。 但是,我怎样才能做到这一点,所以用户可以生成一个只加载游戏文件,像一个独立的游戏,但实际上是与游戏制造者的东西? 我正在使用C ++。

游戏开发中的平面文件和数据库比较如何?

通常情况下,构建目标是轻松修改的游戏通常将数据存储在纯文本文档中,例如Rimworld。 我不明白为什么整个数据库系统只能读取其他游戏中保存的一些variables? 当然,如果效率更高或内置在引擎中,可能没有理由不使用它。

存储和保护游戏数据的最佳方式

我正在写一个沙箱式的游戏,我正在寻找一个存储游戏数据的好方法。 我尝试了Lua和纯文本文件,但有一个大的减号播放器可以编辑他自己! 那么如何保护玩家的数据呢? 谢谢!

如何在包含公式的Unity中存储devise数据?

我的团队正在切换到Unity 3D以实现即将到来的项目。 我的任务是将我们的游戏数据系统转换为Unity。 我们现有的游戏使用电子表格文档(Google Docs)为devise人员设置值和公式。 然后将其导出到XML文档(并进行混淆处理)并由我们的游戏客户端读入。 我试图找出一种方法来完成同样的事情,但只通过统一。 通过Unity存储,显示和读取数据非常简单,但我不确定支持公式。 我意识到我可以写一个自定义的parsing器和解释器,可以处理公式,但我想知道是否已经有一种方法可以在Unity中做到这一点。 例如,假设我有一个具有各种属性的单位: Level , Max HP , HP , Damage , Victory Reward等。该单位可以根据其Level和剩余的HP获得战斗后的奖励。 devise师可以进入“ Victory Reward字段,可以是像3这样的平面值,也可以是“Floor({Level} *({HP} / {Max HP}))”等公式。 我的问题基本上是,是否有一个现有的解决scheme,用Unity中的公式处理数据,通过可下载的资源或Unity中的某些东西,还是有一个简单的框架或技术已经可以做到这一点,可以很容易地集成(例如:某种支持自引用其他值和基本math/逻辑运算的JSON扩展)?

我怎样才能从JSONparsing不同types的对象?

我正在尝试将播放器的广告资源保存为JSON数据,但是我遇到了问题。 我有一个类Sword扩展了一个抽象类Weapon ,它扩展了另一个抽象类Item 。 这就是JSON文件在其中的剑和盔甲对象的样子: [ { "category": { "type": "Weapon", "subtype": "Sword" }, "id": 0, "value": 1, "name": "Wooden Sword", "description": "Sword made out of wood", "slug": "wooden_sword", "stats": { "wear": 100, "damage": 5 } }, { "category": { "type": "Armor", "subtype": "Helmet" }, "id": 1337, "value": 1, "name": "Steel Helmet", "description": "Whatever…", "slug": […]

基于浏览器的多人游戏的持久数据

通常用于在线游戏中存储持久性数据的内容 – 特别是浏览器游戏/ Facebook应用程序? 我以前在Web开发中使用过MySQL,但是我已经读过它并不是非常可扩展的,特别是如果很多事务都在不断发生(这是游戏内部会发生的事情)。 我使用Heroku编写Node.js的后端,所以如果有一个Node包,它将会非常好。 任何有识之士将不胜感激。