【发布时间】:2014-06-29 05:39:08
【问题描述】:
鉴于以下树形结构,每个登录的玩家都可以拥有当前和已完成的关卡、每个关卡的任务、每个任务的 NPC 以及每个 NPC 的多个任务的数据...我正在尝试找出最佳方法存储每个玩家当前和已完成的数据。
我之前问过这个问题,虽然细节太多了。有人要求我概括这个问题......所以如果你想了解更多上下文,请参见此处:
RPG - storing player data for semi-complex tree structure
关于我的 RPG 结构的一些信息:
- 关卡、每个关卡的任务和每个 NPC 的任务按时间顺序完成。
-
NPC 对话和任务对话数据存储在
npc_dialog_1.js文件中的 js 对象中,结构如下:var dialog = { quests : { questName : { NPCName: { TaskName: { "english" : [ "Hello, here is some dialog", ],//more items per task }, //more tasks per NPC }, //more NPCs per quest }, //more quests options per "quests" }, //more options in dialog besides "quests" if I want };我将每个
dialog对象存储在每个地图的单独npc_dialog_n.js文件中,我使用requireJS检索该文件。这将减少单个 npc_dialog 文件中的混乱情况。 然而,每个任务的 NPC 可以按任何顺序开始...这是试图模仿 GTA 风格的任务队列,因为游戏遵循一般的线性进程,但对于每个任务,您都可以交谈多个 NPC 并随时开始、暂停和恢复 NPC 的任务。
由于玩家可以在给定时间开始、暂停和恢复每个 NPC 的任务,我试图找出存储每个玩家当前和已完成数据的最佳方式。
mfirdaus 推荐了以下具有 M:M 关系 b/t 用户和 npc 的 DB 表......但这会很快加起来,因为每个玩家可以在每个任务中拥有多个 NPC,并且开始了多个任务每个 NPC... 有什么办法绕过这个设置?
我当前的数据库架构:
谢谢
【问题讨论】:
-
@Alex.Ritna 不完全是重复的。这是原始问题的简化版本。不过,不确定是打开一个新问题还是编辑旧问题更好。
-
@JeremyJStarcher 是的,我曾讨论过更新原件。但在过去,人们最终会要求更多的上下文,所以我认为最好只开始一个简化的新问题。
-
@Growler 你想保存每个玩家每个任务的 quest_progress 对吗?然后我建议将您的 quest_data 保存为 userstats 列中的 json_encoded 数据(或制作一个)。
-
@Viscocent 你能解释一下吗?
标签: javascript php mysql storage