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