【发布时间】:2013-09-09 20:19:13
【问题描述】:
我对网站和数据库设计相当陌生,我之前唯一的经验是一些非常基本的 MS Access 数据库和 Codeacademy 的基础课程。我决定尝试制作一个基于网络的游戏来减少我的编程难度。我希望有人能给我一些关于数据库设计的见解,特别是未来事件的临时安排。
目前的计划是做一款简单的太空冒险游戏;星星布置在二维笛卡尔平面上(因此,每颗星星都有一个(X,Y)坐标)。所以,我有 2 个基本表格显示:
船:
- 播放器(Varchar)
- 船 (Varchar)
- CurrentXCoOrd (int)
- CurrentYCoOrd(int)
地图
- STARID (Int)
- 系统名称(varchar)
- XCoOrd (int)
- YCoOrd(整数)
假设我的玩家在坐标 (1,1) 的系统中有一艘船,并希望前往坐标 (2,2) 的系统。如果这段旅程要花 10 分钟,那么建立数据库以记录新星系统的船只到达的最佳方式是什么? (船不需要从一个坐标到另一个坐标,只需从原点消失并出现在目的地就足够了。)
我正在考虑更新数据库以显示船舶在移动,然后在 10 分钟后再次更新数据库以显示船舶到达,但老实说,我不确定如何设置该调度。考虑到这一点,我现在正在考虑,而不是记录船何时启动和何时到达,我应该只记录到达时间,并带有显示船何时着陆的时间戳,并从中计算船是否在运动。
所以,我会从 SHIP 表中删除 X 和 Y 坐标字段,而是使用一个名为 POSITION 的表
位置:
- 播放器(Varchar)
- 到达时间(日期时间)
- XCoOrd (int)
- YCoOrd (int)
然后网站会检查到达时间戳是否已经过去,以便确定船是否在运动。
这样,如果玩家关闭浏览器并稍后重新打开,则不会中断任何内容,现在我只更新数据库一次(显示到达)而不是两次(显示启动和到达)。谁能确认这是否是跟踪玩家动作的可行方法?我这样做是为了学习,所以非常愿意尝试提供的任何建议。 :)
数据库是 MySQL,网站是 Perl。
这是我在这里的第一篇文章,所以如果我的问题不够清楚,请接受我的歉意。我搜索了档案,但没有找到任何与我要查找的内容相匹配的内容。
非常感谢,
【问题讨论】:
标签: mysql sql database perl database-design