在SQL中存储游戏数据

时间:2013-09-20 02:50:21

标签: javascript mysql sql html5 game-engine

所以基本上我有

的游戏角色
Gender,

Race,

Items, //this is an array

Skills, //another array

Inventory //another array

所以我想把它们存放在一个json对象中。但这会很快吗?

所以在表格中就像是

id | js

1  | jsondata

这是完成数据保存的好方法吗?

1 个答案:

答案 0 :(得分:1)

这种方法的一些缺点我可以想到我的头脑:

  • (此项适用于编辑前的原始问题,其方法是将JavaScript代码(var gender='male'; ...)存储在数据库列中)您正在执行数据。如果他们可以修改blob,这基本上可以让人们自由地将他们想要的任何代码注入你的应用程序。

  • 需要解析JavaScript。如果您稍后决定要在不同的非js环境(例如本机或托管应用程序)中运行游戏,您将需要解析blob或稍后转换它。

  • 数据不是结构化的,不可编辑/可检索的零碎数据,并且具有任意长度。您必须每次都检索并执行整个blob,并且为了保存状态,您必须将整个blob作为单个块发送和更新。例如,如果您使用数据库,则将每个库存项目另存为单独的行会更有效。当玩家使用该项目时,您可以发送一个查询来更新一行,并立即更改库存。使用您的方法,您需要将整个游戏状态发送回服务器。

    如果您想使用数据库引擎进行搜索,这将适得其反。想想排行榜,统计数据,找谁拥有哪个项目等等。

    您也无法使用数据库引擎来维护数据完整性(检查或外键约束)

  • (此项适用于编辑前的原始问题,其方法是将JavaScript代码(var gender='male'; ...)存储在数据库列中)您必须生成代码从现有的对象,所以为什么要在途中?或者坦率地说,为什么要首先执行动态代码。如果要加载数据,则存储数据(即JSON)并解析它。