Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Вебсокеты на PHP. Часть 3. От чата до игры: Battle City

Anna | 29.05.2014 | нет комментариев

В предыдущих 2-х частях (Делаем вебсокеты на PHP с нуля и Межпроцессное взаимодействие) в качестве демонстрации я применял чаты, но в этой статье на примере онлайн-игры я покажу, что сфера использования вебсокетов может быть значительно шире.

Как традиционно, в конце статьи ссылки на демонстрационную игру и начальный код на гитхабе.

Оглавление:

  • Помощь вебсокетов браузерами
  • Разработка онлайн-игры
  • Благодарности
  • Демка и начальный код

Помощь вебсокетов браузерами

Некоторые считают, что вебсокеты ещё рано применять, потому что они поддерживаются ещё не всеми браузерами. Следственно, если их применять, то только коллективно с альтернативными транспортами: Adobe® Flash® Socket, AJAX long polling, AJAX multipart streaming, Forever Iframe, JSONP Polling.

Википедия нам подсказывает, какие браузеры поддерживают вебсокеты:

Google Chrome (начиная с версии 4.0.249.0);
Apple Safari (начиная с версии 5.0.7533.16);
Mozilla Firefox (начиная с версии 4);
Opera (начиная с версии 10.70 9067);
Internet Explorer (начиная с версии 10);

Как мы видим, самым слабым звеном является Internet Explorer с версиями поменьше десятой. Согласно статистике liveinternet, для России — Internet Explorer с версиями 9, 8, 7 и 6 имеет доли 1.4, 1.7, 0.5 и 0.1 процентов соответственно. Суммарно получается 3.7%. Если добавить к этой цифре ещё пользователей с устаревшими версиями других браузеров, то итоговая оценка может немножко увеличиться, но, не думаю, что она станет огромнее 4%.
Базируясь на этом, всякий должен решить для себя сам — необходимо ли поддерживать зоопарк альтернативных транспортов либо позабыть про этих пользователей и жить дальше.
честности ради хочу сказать, что за рубежом доля Internet Explorer огромнее, и обстановка с помощью вебсокетов там соответствующая. Согласно статистике с сайта w3schools Internet Explorer с версиями 9, 8, 7 и 6 имеет доли 2.3, 3.1, 0.4 и 0.1 процентов соответственно, что в сумме составляет 5.9%

Разработка онлайн-игры

Выходит, сейчас к основному. Для демонстрации работы сервера вебсокетов на php мне захотелось написать примитивную игру. Для начала мне необходимо было определиться какую именно. Вероятно, исключительное требование к ней было таким:

все игроки обязаны находиться на одной карте и иметь вероятность взаимодействовать с любым иным игроком

Я длинно гуглил на эту тему, пока не наткнулся на эту страницу в «тостере», где TravisBickle, разработчик phpdaemon, умоляет у сообщества подсказать идею примитивный игры, которая бы продемонстрировала работу вебсокетов. Невзирая на то, что некоторые результаты были довольно увлекательными, этому вопросу теснее примерно 3 года…
Из всех предложений я предпочел «танчики», но решил сделать упрощённую версию того что предлагали, а не полновесную игру, Дабы процесс разработки не затягивался и демка всё-таки увидела свет, а не осталась в чертогах моего интеллекта.
Взяв код чата из предыдущей статьи, я дописал немножко клиентскую часть, применяя:

  • canvas и способ объекта contextdrawImage для отрисовки изображения танка, fillRect — для закрашивания прямоугольников и fillText для надписей (сразу скажу, что я с ними прежде никогда не работал)
  • addEventListener для обработки нажатий клавиш «вверх», «вниз», «налево», «вправо» и «пробел» (а также «w», «s», «a», «d»)

На серверной стороне я немножко расширил обработчик сообщений от заказчика:

  • всякий танк — это массив состоящий из координат, имени и числа «жизней»
  • при приходе от клиен

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB