【问题标题】:Optimal Database setup for online game [closed]在线游戏的最佳数据库设置[关闭]
【发布时间】:2011-10-14 00:06:05
【问题描述】:

我是一个新手数据库/游戏开发人员(实际上这将是我的第一款游戏)我对制作游戏有一段时间感兴趣,所以我决定开始使用我最擅长的语言,即 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

例如。您将如何处理单元数据,您会将其放入链接到 user_id 的单独表中吗?

对这个布局有什么想法吗?

编辑:(额外的游戏细节供参考)

游戏理念类似于前夜在线/黑暗王座十字架,您可以在其中拥有行星和整个太阳系,从中获取收入并与其他玩家争夺这些系统/行星的所有权。您将拥有大量船只,您可以完全自己建造,也可以从玩家运行市场购买/出售,并允许实时 pvp(因为玩家可以带着他们的单位跳到太阳系并移动它们在那个太阳系周围并派他们去战斗。想想像红色警报这样的RTS游戏。

我得到了更多关于游戏的细节,但我想你已经明白了。 :)

【问题讨论】:

  • 这完全取决于您要在数据库中存储的内容的详细信息。我想说到目前为止一切都很好,但要提供详细的答案需要更多关于要求的细节。
  • 使用 sha1 或更好的方式来加密您的密码。

标签: php mysql multiplayer


【解决方案1】:

因此,我们将在这里学习关系数据库工程的基础知识。首先我们需要知道要存储什么样的对象。

我们知道我们需要用户! 现在用户是角色吗?用户可以有多个字符吗?让我们说是的,只是为了它的地狱。现在角色当然也需要一张地图来四处走动!我们还需要什么。我们需要物品,各种神灯和糖果棒。好的,现在我们知道我们需要什么了,让我们开始吧!

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

【讨论】:

  • 啊,这给了我一个很好的起点,感谢您的帮助:)
  • +1 不错的努力。一个有点模糊的问题的好答案。
  • 更新了我的帖子,提供了有关游戏如何进行的更多详细信息,以便您获得更多想法:)
  • 我会给你 +1 以很好地涵盖数据库设计,但我必须给你 -1 以链接到 w3schools(虽然我不确定哪里有好的 SQL 教程)
  • w3schools 对于刚接触 SQL 的人来说是一个好的开始,这里似乎就是这种情况。这绝对不是学习高级技术的地方,你真的应该买一本 O'Reilly 的书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多