Я довольно новичок в дизайне веб-сайта и базы данных, мой единственный опыт, ранее являвшийся некоторыми очень базовыми базами данных MS Access и базовыми курсами по Codeacademy. Я решил попробовать свои силы в создании веб-игры, чтобы вырезать зубы при программировании. Я надеялся, что кто-то сможет дать мне некоторое представление о дизайне базы данных, а именно о специальном планировании будущих событий.Отслеживание движения в базе данных
Текущий план состоит в том, чтобы иметь простую космическую приключенческую игру; звезды выкладываются на двумерную декартову плоскость (поэтому каждая звезда имеет координату (X, Y)). Итак, у меня есть 2 основные таблицы, показывающие:
КОРАБЛЬ:
- Player (Varchar)
- Ship (Varchar)
- CurrentXCoOrd (интермедиат)
- CurrentYCoOrd (интермедиат)
MAP
- STARID (Int)
- SystemName (VARCHAR)
- XCoOrd (интермедиат)
- YCoOrd (Int)
Давайте предположим, что мой игрок имеет корабль в системе, расположенной в точке с координатами (1 , 1) и желает совершить путешествие в систему в координатах (2,2). Если это путешествие должно было пройти, скажем, 10 минут, что было бы лучшим способом создать базу данных для регистрации прибытия кораблей в новую звездную систему? (кораблю не нужно будет переезжать с одной координаты на другую, просто исчезая из источника и появляясь в пункте назначения).
Я рассматривал возможность обновления базы данных, чтобы показать, что судно находится в движении, а затем обновляя базу данных снова через 10 минут, чтобы показать прибытие кораблей, но, честно говоря, я не уверен, как бы настроить это планирование. Имея это в виду, я сейчас рассматриваю, что вместо того, чтобы записывать, когда судно запускается и когда оно прибывает, я должен вместо этого просто записывать приходы с отметкой времени, показывающей, когда корабль приземлился и просто вычислил из этого, если судно находится в движении или нет.
Так что, я бы уронить X и Y координату поля из таблицы SHIP, а вместо этого есть таблица называется ПОЗИЦИИ
ПОЛОЖЕНИЕ:
- Player (Varchar)
- ArrivalTime (DateTime)
- XCoOrd (интермедиат)
- YCoOrd (интермедиат)
Затем веб-сайт проверяет, прошла ли отметка о прибытии, чтобы работать, если судно находится в движении.
Таким образом, если игрок закрывает свой браузер и снова открывается, ничего не прерывается, и теперь я только обновляю базу данных один раз (показывая приход), а не дважды (показывая запуск и прибытие). Может ли кто-нибудь подтвердить, является ли это жизнеспособным средством отслеживания движений игрока? Я делаю это, чтобы учиться, поэтому я совершенно готов попробовать любые предложенные предложения.:)
База данных - это MySQL, а веб-сайт будет находиться в Perl.
Это мой первый пост здесь, поэтому, пожалуйста, примите мои извинения, если я не был достаточно ясен в своем вопросе. Я искал архивы, но не нашел ничего, что соответствовало бы тому, что я искал.
Большое спасибо заранее,