Mysql 数据库中的运动跟踪

Mysql 数据库中的运动跟踪,mysql,sql,database,perl,database-design,Mysql,Sql,Database,Perl,Database Design,我对网站和数据库设计还比较陌生,我以前唯一的经验是一些非常基本的MS Access数据库和Codeacademy基础课程。我已经决定尝试制作一款基于网络的游戏,以减少编程方面的麻烦。我希望有人能给我一些关于数据库设计的见解,特别是未来事件的特别安排 目前的计划是有一个简单的太空冒险游戏;恒星被布置在二维笛卡尔平面上,因此,每颗恒星都有一个X,Y坐标。因此,我有两个基本表,显示: 船舶: 玩家瓦查尔 瓦查尔船 CurrentXCoOrd int 当前坐标 地图 星状整数 系统名varchar XC

我对网站和数据库设计还比较陌生,我以前唯一的经验是一些非常基本的MS Access数据库和Codeacademy基础课程。我已经决定尝试制作一款基于网络的游戏,以减少编程方面的麻烦。我希望有人能给我一些关于数据库设计的见解,特别是未来事件的特别安排

目前的计划是有一个简单的太空冒险游戏;恒星被布置在二维笛卡尔平面上,因此,每颗恒星都有一个X,Y坐标。因此,我有两个基本表,显示:

船舶:

玩家瓦查尔 瓦查尔船 CurrentXCoOrd int 当前坐标 地图

星状整数 系统名varchar XCoOrd int YCoOrd Int 假设我的玩家在坐标1,1处的系统中有一艘船,并希望前往坐标2,2处的系统。如果这段旅程需要10分钟,那么建立数据库记录船只到达新星系统的最佳方式是什么?船不需要从一个坐标到另一个坐标,只要从原点消失并出现在目的地就足够了

我正在考虑更新数据库以显示船舶正在运行,然后在10分钟后再次更新数据库以显示船舶到达,但老实说,我不确定如何设置该计划。考虑到这一点,我现在考虑的是,我不应该记录船舶何时下水,何时到达,而应该只记录到达的时间戳,显示船舶何时着陆,并根据该时间戳计算船舶是否在运动

因此,我将从SHIP表中删除X和Y坐标字段,取而代之的是一个名为POSITION的表

职位:

玩家瓦查尔 到达时间日期时间 XCoOrd int YCoOrd int 然后,该网站将检查到达时间戳是否已过,以确定船舶是否在运行

这样,如果玩家关闭浏览器并稍后重新打开,则不会中断任何操作,现在我只更新一次显示到达的数据库,而不是两次显示启动和到达。有人能确认这是否是追踪球员移动的可行方法吗?我这样做是为了学习,所以我非常愿意尝试提供的任何建议

数据库是MySQL,网站将使用Perl

这是我在这里的第一篇帖子,如果我的问题不够清楚,请接受我的道歉。我搜索了档案,但没有找到任何与我所寻找的相符的东西


非常感谢,请提前捕获出发时间和到达时间。当船舶出发时,将两者设置为:出发时间=现在,到达时间=现在+间隔10分钟。船舶在出发时间和到达时间之间处于运动状态。

通常看来是一种明智的方法。不过有两个建议

考虑使用stardate time int?以及与实时进行转换。这样,如果您需要暂停游戏,因为服务器处于脱机状态,那么您可以

决定是要将操作记录到行程表中,还是将结果记录到位置表中,或者同时记录这两种情况

从审计/倒带+重放的角度来看,一组行动表旅行、着陆、攻击和修复可能是有意义的。但是,对于当前的游戏状态,您可能不希望重新运行游戏开始后的每个动作。虽然冗余、常规的结果表位置、ship_损坏,但ship_存储和时间戳允许您跟踪当前状态或过去的关键点。这些表可以从开始状态和所有后续操作中重新生成,并且可以被视为缓存。没有直接更新-当您向数据库添加新操作时,让触发器为您进行更新

最后,考虑一下你的数据库需求——它是巨大的,需要一段时间才能掌握它,但是它是一个更好的基于对象的DB包装器,不管语言如何。