我是一个noob数据库/游戏开发者(实际上这将是我的第一个游戏)我一直对制作游戏感兴趣,所以我决定开始使用我最强的语言,即PHP。< / p>
我对数据库的工作非常有限(基本上是搜索引擎和一些统计信息收集),所以我不完全确定为我的游戏设置这样一个数据库的最佳方法。
我正在思考
table: users
user_id, int, 10, auto_increment, null, primary
username, text, 30, not null
password, text, 128, not null (i plan to use my own encryption methods but open to suggestions)
E-mail, text, 50, not null
last_login, text, 30, not null (this could probably be date, not sure how to handle it yet)
last_ip, text, 15, not null (tracking last logins for user)
然后将会有另一张表格,其中包含他们帐户的游戏详情,我计划将被动收入流和区域所有权,甚至公会和玩家团体聚集在一起,进一步沿着聊天室等等,但这是一个不同的主题。还将有单位建设计时器和开放的球员市场。
现在我只是希望了解基础知识
table: game_data (i know horrible i'll think of a better name later)
user_id, primary, not null? (dunno about this)
capital, int, 15
income, int, 15
作为一个例子。如何将单元数据放入链接到user_id的单独表中?
无论如何对这种布局有任何想法?
编辑:(额外的游戏详情供参考)
游戏理念类似于前夜在线/黑暗王座十字架,在那里你可以拥有行星和整个太阳系,你可以从中获取收入并与其他玩家争夺这些系统/行星的所有权。你将拥有大量的船只,你可以完全建立你自己或你可以从玩家运行市场购买/出售,以及允许实时PVP(如在玩家可以跳转到太阳系与他们的单位并移动他们在那个太阳系周围并让他们去战斗。想想RTS游戏,比如这里的红色警报。)
我得到了更多关于游戏的细节,但我认为你得到了一般的想法。 :)
答案 0 :(得分:6)
所以在这里我们将学习关系数据库工程的基础知识。首先,我们需要知道将要存储的对象类型。
我们知道我们需要用户! 现在用户是一个角色?用户可以拥有多个字符吗?让我们说是的,只是为了它的地狱。现在角色当然也需要一张地图走来走去!我们还需要什么。我们需要物品,各种魔术灯和糖果棒。好的,现在我们知道我们需要什么让我们开始吧!
tbl.Users
UID (primary key user id)
name
password
我们需要每个用户使用几个字符,因此我们设置了一个带有外键的表。
tbl.Characters
CID (primary character id)
userID (foreign key to users table)
name
strength
stamina
magicstuff
我们需要一张桌子来存储地图上的图块。
tbl.Tiles
TID (tile id)
x (x coordinates for a map)
y (y coordinates for a map)
现在地图上需要有字符,让我们说两个角色能够站在同一个瓷砖上,只是为了踢。下表将保留某些图块上的字符列表
tbl.Tile_Characters
TID (foreign key to tile)
CID (foreign key to characters (primary key so character may not stand on multiple tiles, that would just be silly))
现在购买物品!
tbl.Items
name
type (= "sword", "stone", "candy bar")
attack (int, null if not a sword etc.)
简而言之,您需要经常考虑数据库,并简单地解决数据并尝试考虑组织数据的新方法。您可以拥有单一关系,多对一关系以及多对多关系。
在编程之前花费所有时间考虑您的数据模式,以后回来要困难得多。
您绝对必须阅读以下文章或其他类似的基本数据库设计文章。
http://www.dtgeeks.com/journals/article/basic_database_design/
在数据库设计之后,您需要了解如何从中获取数据。为此,我建议使用W3C SQL教程。您将学习各种有趣的事情,例如如何将表连接在一起。