Unity游戏:数据库VS大量文本文件

问题描述 投票:0回答:1

我维护一个用Unity3D(iOS / Android)开发的益智游戏。

谜题在纯文本文件中定义,并分组到包中。下面是一个示例 JSON 文件(应用程序从远程服务器下载),其中包含包的定义以及其中的谜题(通常每个包有 10-50 个谜题):

{
  "id": "pack.2000",
  "title": "Pack 2000",
  "puzzles": [
    {
      "id": "pack.2000.0001",
      "number": 1,
      "title": "Puzzle 1",
      "contents": "... puzzle contents in plain txt .."
    },
    {
      "id": "pack.2000.0002",
      "number": 2,
      "title": "Puzzle 2",
      "contents": "... puzzle contents in plain txt .."
    },
    {
      "id": "pack.2000.0003",
      "number": 2,
      "title": "Puzzle 3",
      "contents": "... puzzle contents in plain txt .."
    },
    ...
  ]
}

为了跟踪可用的拼图包,应用程序维护一个带有索引的本地 JSON 文件,并将其与远程索引进行比较:

{
  "packs": [
    {
      "id": "pack.2000"
    },
    {
      "id": "pack.1999"
    },
    {
      "id": "pack.1998"
    }
    ...
  ]
}

执行索引差异并下载所有包后,将解析 JSON 文件并将每个谜题保存到客户端应用程序中的单独文本文件中,例如:

  • pack.2000.0001.txt
  • pack.2000.0002.txt
  • pack.2000.0003.txt
    ,...

这种方法的优点是,我只需读取指定 .txt 路径的文本文件即可轻松加载带有 id 的谜题,而无需解析和读取更复杂的结构(整个 JSON 文档、打开数据库等)

问题是我的应用程序目前已达到 2000 个包,每个

= 2000*15 = 30000
.txt 文件(每个约 1KB)中有约 15 个谜题,存储在应用程序的文件夹中,而且我担心这种方法将来无法扩展。

请注意,上面定义的数据仅适用于原始拼图数据,应用程序仍然创建单独的.txt文件来保存用户状态,例如用户在每个拼图中的进度,例如:

userid_progress_pack.2000.0001.txt

我收到了一些用户的反馈,抱怨他们运行了某种“文件清理”应用程序,发现该应用程序包含数千个“非常小”文本文件(因此,可能会被意外“清理”)。另外,我知道我可以利用一些功能,例如 Android 的 android:allowBackup,并且大量文件并不是最佳解决方案。 单个文件夹中包含如此多的文件是否存在问题,例如文件系统限制或移动设备上的问题?我是否应该考虑迁移到另一个存储解决方案(二进制 sqlite 数据库、nosqlite JSON 数据库)?

database sqlite unity-game-engine mobile nosql
1个回答
0
投票

© www.soinside.com 2019 - 2024. All rights reserved.