Questions tagged «databases»

用于以可查询形式存储大量数据的软件。通常以支持需要此信息的流程的方式来组织数据以对相关方面进行建模。


9
硬编码内容为什么不好?
我知道大多数游戏都将对话文本存储在文件中,但是我也看到一些基于文本的游戏实际上将内容(地图,选择,可能的玩家命令,故事文本)编程到了游戏代码中。 我可以想到一些原因,但是什至是文字游戏也将所有内容都保留在程序外部的文件中的主要原因是什么? 实现细节之间的区别不大,包括以流行的XML格式保存内容,解析内容,然后根据从XML文件创建的变量渲染地图/显示文本,以及完全放弃XML文件。它们都以输出到屏幕的字符串结尾。区别不只是符号吗? 有些游戏甚至在代码中包含图形(ASCII艺术?)。我知道这是不对的,我可以猜测出它不好的一些原因,但也不知道为什么这是主要原因。 将大多数内容包含在程序外部非常受欢迎。甚至矮人要塞也不使用实际的ASCII字符,而是将ASCII字符的图像加载到内存中。 我主要问这个问题,因为创建,解析和使用XML文件有点像PITA。您知道...与仅使每个唯一的地牢(内容)成为自己的类的懒惰选择相比。

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


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

5
noSQL-它是基于Web的游戏的有效选择吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 6年前关闭。 出于机会和无聊,我和一个朋友决定制作一个基于网络的游戏。这是我将要制作的第一个“游戏”,因为通常我会在Django中编写Web应用程序。 我选择在游戏中使用相同的框架,但由于无法预见未来的需求和与数据库相关的问题,因此我对数据存储并不完全确定。最近,noSQL运动逐渐兴起,我想探索这一领域。 因此,我有以下问题: noSQL数据存储(基于文档,例如MongoDB)是否适合基于Web的游戏? 使用传统的RDBMS(例如MySQL)可能会出现什么问题? 如何在玩游戏或定时事件(例如cron作业)期间,确保使用MongoDB的用户之间的数据一致性? 游戏概述:典型的冒险游戏,玩家与怪物战斗并获得物品等。 所有玩家的一些数据都是静态的:物品,武器,药水,地图等。 与玩家相关的一些数据:清单,指标(统计数据),进度等。 一个玩家可能需要知道另一个玩家的状态和状态 计划任务将在特定时间间隔运行

6
调整和设置-运行时变量修改和持久性
大多数公司都有编辑器或变量控制系统,用于调整游戏中的内容,但是是否有任何中间件解决方案来解决此问题?我过去曾写过两个这样的系统,并使用过五个(也许是六个)不同的系统,但是没有一个可用。 这些本地解决方案中的每一个都有问题,从必须继续查找值到无法保存变量的当前状态不等。 是否有成熟的Config / Runtime变量控制库/应用程序? 我通常使用C ++编写代码,但我认为成熟的设置/变量编辑器可能基于套接字(因此在某种程度上与语言无关),因为除Nintendo之外,所有当前的开发硬件都提供了一种与服务器通信的机制。代码的实现也必须非常简单(我确实喜欢Oskar共享的hot_var / TweakableConstants文章,但它不是一个包)

3
我应该使用数据库存储游戏内容吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为话题成为Game Development Stack Exchange。 4年前关闭。 我有一个使用SFML用C ++编写的2D游戏。我想使游戏具有可扩展性,可以通过在文件或数据库中添加行/条目/行来轻松添加诸如项目或实体之类的内容。 我正在寻找不需要编译到程序中的东西,而是可以在运行时读取和写入的东西。什么时候使用数据库合适?
16 c++  sfml  databases 


4
实时多人游戏使用哪个数据库(RDBMS,NoSQL和BOTH)?
我正在开发一个实时多人游戏,该游戏将需要一个数据库(用于诸如播放器配置文件,朋友,解锁,新闻等功能)。这是一个标准PC游戏(不是基于浏览器的游戏),将使用客户端服务器建筑。我刚接触数据库,过去几天,我偶然发现了激烈的争论:RDBMS与NoSQL,进行了一些研究。目前,我倾向于NoSQL,但是在阅读了每种用法(RDBMS和NoSQL)之后,我很想同时使用两者。我知道这似乎很奇怪,但让我解释一下我的情况: 我的团队有一个共享的虚拟主机程序包,该程序包提供无限的mySQL存储和带宽,唯一的警告是我们一次只能打开25个连接(共享主机规则)。我打算将其用于我的网站(无疑是一种典型用法),以便发布新闻更新,支持社区功能(例如评论,上传粉丝艺术等)等。一切都很好,但是-!这是事情变得有趣的地方...我想在游戏中显示发布在我的网站上的相同信息。这意味着我的网站和游戏都使用mySQL。除了新闻发布之类的内容外,我还计划在游戏中将其用于聊天和服务器列表之类的事情。我最关心的是25连接规则。 这就引出我问问题1:这是否可行,还有更好的选择吗? 现在,除此之外,我还阅读了有关NoSQL的性能以及适用于实时游戏的信息(我可能是错的,我经历了一场巨大的RDBMS与NoSQL的火焰之战,到达这里并可能被烧死了)。基本上,我想对所有游戏对象数据使用MongoDB。 同样,如果我提供一些背景信息将对您有所帮助:我找到了一个主机(MongoLab),该主机免费提供240MB的MongoDB软件包,我打算在需要升级之前使用它。假设有240MB,我已经计算出能够存储大约60,000个播放器(如果每个播放器大约为4KB,而我们忽略了可能存储的其他内容)。存储空间以及将来必须支付更多费用(我们的游戏应该成功)不是问题。我目前打算对所有游戏对象数据使用MongoDB的唯一原因是由于将访问该游戏对象数据的频率(例如,每当玩家被杀死,拿起物品,开枪等时)也喜欢无格式的直接文档(这使得映射游戏对象数据更加容易)。我应该注意到,一次 我打算在我的网站上使用相同的MongoDB来显示玩家资料信息(我不关心完全的一致性,可以从游戏中进行更新有些延迟)。这使我想到第二个问题,即问题2:这是个好主意还是应该做得更好? 游戏将具有类似于以下的启动体验: 客户端登录(MongoDB) 客户端位于带有聊天室的游戏首页(MySQL) 客户端转到服务器列表(MySQL) 客户端连接到服务器并在其中播放 服务器传达所有播放器的更新(MongoDB) 这就是我想象中的工作方式。这对您来说看起来不错,还是对如何改进此计划有建议?

5
有没有办法使诸如MMORPG的动态世界水平扩展?
想象一下,一个拥有500多个播放器的开放世界,其数据更改速度高达20个更新/播放器/秒。上一次我在类似的MMORPG中工作时,它使用SQL,因此很笨拙,无法始终查询数据库。而是将所有播放器作为C ++对象从数据库加载到内存中并使用它们。也就是说,它是垂直缩放的。可以使该服务器水平扩展吗?是否有一个旨在同时支持该数量的更新的数据库?

1
我的世界数据库是什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 6年前关闭。 我想知道Minecraft使用哪种数据库?它是一个关系数据库,也许像MySQL一样常见吗?我们甚至不知道他在用什么? 也许甚至是一个更好的问题,他应该那样做吗?应该使用哪种类型的数据库?

5
使用数据库的分布式C ++游戏服务器
我的基于C ++回合的游戏服务器(使用数据库)不能抵御当前平均客户端(玩家)数量,因此我想将其扩展到多个(超过一个)数量的计算机和数据库,而所有客户端仍将保留在其中一个游戏世界(服务器必须相互通信并使用多个数据库)。 是否有一些教程/书籍/通用标准解释了如何以最佳方式做到这一点?
11 server  databases 

11
如何为关系数据库中的可用库存/物品/物品(例如武士刀)建模多个“用途”(例如武器)
因此,我正在通过www.ninjawars.net扩展项目的用途,但我不确定如何在我们使用的关系数据库中灵活地表示它们。 我可能在树错了树上,所以可以随意向其他方向提出建议,但是目前我认为每个项目都应该有关系“标签”。 例如,Katana当前是“项”数据库中的一行。为了使它成为一种武器和一种可携带的东西,我想我要拥有一个“特征”数据库,以及一个将它们之间简单链接的item_traits表。 // Objects and their basic data item_id | item 1 | Naginata // Things that objects can do trait_id | trait 1 | weapon 2 | holdable // How those objects do those things, e.g. powerfully, weakly, while on fire _item_id | _trait_id | item_trait_data 1 | …
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.