- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
鉴于以下树结构,每个登录的玩家都可以拥有当前和已完成级别的数据、每个级别的任务、每个任务的 NPC 以及每个 NPC 的多个任务......我正在尝试找出最好的方法存储每个玩家的当前和完成数据。
我之前问过这个问题,虽然太详细了。有人要求我概括这个问题......所以如果你想要更多的上下文,请看这里:
RPG - storing player data for semi-complex tree structure
关于我的 RPG 结构的一些信息:
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
对象存储在每个 map 的单独 npc_dialog_n.js
文件中,我正在使用 requireJS
检索。这将减少单个 npc_dialog 文件中的困惑情况。
但是,每个任务的 NPC 可以按任何顺序开始...这是在尝试模仿 GTA 风格的任务队列,因为游戏遵循一般的线性进程,但对于每个任务,您都可以与多个 NPC,并随时开始、暂停和恢复 NPC 的任务。
由于玩家可以在给定时间开始、暂停和恢复每个 NPC 的任务,我正在尝试找出存储每个玩家当前和已完成数据的最佳方法。
mfirdaus 推荐了以下具有 M:M 关系 b/t 用户和 npc 的数据库表...但这会很快加起来,因为每个玩家每个任务可以有多个 NPC,并且启动了多个任务每个 NPC ... 有什么办法解决这个设置吗?
我当前的数据库架构 :
谢谢
最佳答案
假设你有这个数组:
$player_quest_status = array("quest1" => 100,
"quest2" => 90,
"quest3" => 50);
将这些数组存储到数据库中有 2 个选项。
使用 PHP json_encode():
$player_quest_status_json = json_encode($player_quest_status);
//then you can store $player_quest_status_json variable using INSERT.UPDATE
声明 //编码时的数组:{"quest1":100,"quest2":100,"quest3":100}
从数据库中获取值后,使用 json_decode 将其转换回数组。
使用 PHP serialize():
$player_quest_status_json = serialize($player_quest_status);
//array when encoded: a:3{s:6:"quest1";i:100;s:6:"quest2";i:100;s:6:"quest3";i:100;}
有关您想使用哪个功能的更多信息:
Preferred method to store PHP arrays (json_encode vs serialize)
虽然我仍然推荐 json,因为它更具可扩展性。
$player_quest_status = array("player_id" => 1,
"level" => 1,
"quests" => array( 1/*quest_id*/ => array("percent_completed" => 100,
"quest_title" => "the first quest"),
2/*quest_id*/ => array("percent_completed" => 80,
"quest_title" => "the second quest"),
3/*quest_id*/ => array("percent_completed" => 50,
"quest_title" => "the 3rd quest")
)
);
$player_npc_status = array("npc" => array( 1 => array("name" => "lawrence",
"tasks" => array( 1 => array("task_title" => "title 1",
"is_completed" => 1),
2 => array("task_title" => "title 2",
"is_completed" => 1),
3 => array("task_title" => "title 3",
"is_completed" => 0))
),
2 => array("name" => "viscocent",
"tasks" => array( 1 => array("task_title" => "title 4",
"is_completed" => 1),
2 => array("task_title" => "title 5",
"is_completed" => 2),
3 => array("task_title" => "title 6",
"is_completed" => 0))
),
)
);
关于javascript - RPG——存储玩家数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23599204/
这个问题在这里已经有了答案: What does the question mark character ('?') mean in C++? (8 个答案) 关闭 7 年前。 这一行我看不懂为什么
在构建模式下甚至可以有两个玩家吗?查看 Roblox 开发者杂志文章“What did you sleigh?”,它在玩家列表中显示了两个“玩家”。 最佳答案 打开 Roblox Studio 转到任
在构建模式下甚至可以有两个玩家吗?查看 Roblox 开发者杂志文章“What did you sleigh?”,它在玩家列表中显示了两个“玩家”。 最佳答案 打开 Roblox Studio 转到任
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
“Clash of Clans”使用 Game Center 对玩家进行身份验证并将其与现有的远程存储游戏状态相关联。 据我所知,游戏仅在客户端提供玩家标识符。是否有支持的技术来安全地验证用户而不是仅
我正在开发多人游戏,但我无法找出如何将其他客户端连接到创建的游戏。我的意思是客户端 A 创建到服务器的套接字连接,其他客户端(A,B ...)如何连接到客户端 A?有人可以帮我吗? 附注我是网络编程新
我正在尝试使用浏览器控制台一步一步地制作井字游戏,并最终改进我的功能。然而,我被困在玩家2回合(ttt_player2_turn()),我必须检查箱子是否为空。看来我在这个例子中的论证有问题。感谢您的
如果我向上移动玩家 1 和玩家 2,假设我按下玩家 1 的向下键,我的玩家将停止向上移动。我找不到问题所在。有人可以帮助我并解释我做错了什么吗? package game; import java.a
我正在创建一个自上而下的 2D 游戏,并且使用 Box2D 来模拟物理,我的问题是: 如何使玩家保持与我的宇宙飞船的相对速度,并且仍然能够在飞船也在移动的情况下围绕我的玩家移动? 我在下面放了一个插图
我是 Java 新手,我正在尝试制作一个简单的游戏来娱乐。我首先尝试将 repaint 放入 PaintComponent() 中,它一直有效,直到我尝试添加一些背景。有谁知道如何让我的玩家在有或没有
//我正在尝试对玩家 2 的代码进行一些编辑,因此我删除了涉及玩家 1 的所有内容。但出于某种原因,如果没有玩家 1 的代码,玩家 2 根本不会执行任何操作。(假设使用 i、j、k 和 l 键 mov
我接到了一项任务,要编写一个由人类玩家和 AI 玩家组成的 NIM 游戏。游戏是“Misere”(最后一个必须拿起一根棍子的人输了)。 AI 应该使用 Minimax 算法,但它正在采取使其输得更快的
我是一名优秀的程序员,十分优秀!