It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
8年前关闭。
我是一个noob数据库/游戏开发人员(实际上这将是我的第一个游戏),我对制作游戏感兴趣了一段时间,所以我决定开始我最强大的语言,即PHP。
我使用数据库的工作非常有限(基本上是搜索引擎和一些统计数据收集),所以我不完全确定为我的游戏设置这样一个数据库的最佳方法。
我在想
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

作为一个例子。你将如何处理单元数据?你会把它放在一个单独的表中,链接到用户id?
对这个布局有什么想法吗?
编辑:(额外的游戏细节供参考)
这个游戏的理念类似于一个夏娃在线/黑暗王座十字架,在那里你可以拥有行星和整个太阳系,你可以从中获取收入,并与其他玩家争夺这些系统/行星的所有权。你将有一个大范围的船舶,你可以建立完全自己或你可以买卖一个玩家运行的市场,以及允许实时pvp(在玩家可以跳到一个太阳系与他们的单位,并在该太阳系周围移动,并送他们去战斗)。想一想RTS游戏,比如红色警报。
我得到了更多关于比赛的细节,但我想你已经知道了。:)

最佳答案

所以在这里我们将学习关系数据库工程的基础知识。首先我们需要知道什么样的东西将要被储存。
我们知道我们需要用户!
现在用户是字符了吗?用户可以有多个字符吗?我们说好吧,就为了这个。现在这个角色当然也需要一张地图来走来走去!我们还需要什么。我们需要物品,各种魔术灯和糖果。好了,现在我们知道我们需要什么了,开始吧!

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教程。你会学到各种有趣的东西,比如如何把桌子连在一起。
http://www.w3schools.com/sql/default.asp

关于php - 在线游戏的最佳数据库设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7761826/

10-10 02:16
查看更多