#php #javascript #mysql
#php #javascript #mysql
Вопрос:
Я начал создавать MMORPG, чтобы улучшить свои навыки веб-дизайна. Мне удалось сделать так, чтобы пользователи могли перемещаться по экрану и получать некоторые элементы с помощью комбинации Javascript, PHP и MySQL.
Я хочу одновременно показывать всем зарегистрированным пользователям перемещение и передавать пользователю информацию о том, что я делаю другим, но я понятия не имею, как это сделать. Каковы общие идеи / методы для этого?
Спасибо
Комментарии:
1. Не надо. Это невероятно непрактично в php, javascript и mysql. Для этого вам нужен такой язык, как Java.
Ответ №1:
Попробуйте использовать этот движок для достижения того, чего вы хотите:MMO.js … это позволяет создавать MMORPG в реальном времени на JavaScript с использованием websockets =)
Ответ №2:
По сути, вы создаете таблицу под названием «онлайн» с двумя столбцами «Идентификатор, время», и всякий раз, когда игрок выполняет какое-либо действие, он обновляет «Время», предназначенное для ведения журнала.
И вы получаете задание cron для проверки базы данных, и если время в базе данных больше текущего времени минус (например) -5 минут (время ожидания), УДАЛИТЕ строку.
Комментарии:
1. Спасибо, я начну делать это прямо сейчас! И знаете ли вы, как я могу постоянно проверять базу данных на предмет действий игрока? или отправлять обновления в базе данных игроку? Спасибо
2. Вы можете сохранить идентификатор игрока, например, в $_SESSION[‘id’], и когда игрок перемещается или выполняет какое-либо действие — используя ajaxRequest- получать action.php
<? session_start(); $ID = $_SESSION['id']; if(isset($ID)){ mysql_query("SELECT * FROM
online` ГДЕID
= ‘$ID’;»); $isOn = mysql_affected_rows(); //проверьте, есть ли идентификатор в базе данных, если ($isOn !== ‘0’){ mysql_query(«ОБНОВИТЬonline
НАБОРtime
= ‘$time’ ГДЕID
=’$ID’;»); }else{ //если его еще нет в базе данных mysql_query(«ВСТАВИТЬ Вonline
(time
,ID
) ЗНАЧЕНИЯ (‘$time ‘, ‘$ID’);»); } }еще{ //сделать что-нибудь } ?>3. И cron.php запускаемый каждый раз, когда кто-то запрашивает какую-либо страницу, и он проверяет каждую строку в таблице «онлайн», если это значение «Времени» позже, чем, скажем, 5 минут назад, считайте, что пользователь отключен.
4. большое спасибо, я уже начал это делать! Что произойдет, если я буду проверять базу данных раз в пару секунд на наличие обновлений? Это кажется более простым способом сделать это, но знаете ли вы, может ли это вызвать какие-либо проблемы? или найдите любые недостатки, которые у нее могут быть. Спасибо
5. Для обновления статуса пользователя / времени это не повредит. Но задание cron может быть проблемой при использовании больших ресурсов, если у вас много пользователей {строк в базе данных}. Поэтому вам лучше ограничить его и вместо того, чтобы запускать его с каждым запросом, вы можете запускать его через cron job каждые 3 минуты или около того.