Growing Crystals vol 11. Переход на WebSocket и движение вперед

С момента выхода предыдущей статьи прошло около 2х месяцев. За это время мне удалось постичь и воплотить в жизнь реализацию веб-сокет сервера на PHP.
Сегодня, наконец, мне удалось перенести проект на технологию веб-сокетов в связи с чем рабочая версия проекта больше не будет публиковаться в блоге, а займёт отдельный домен growing.petukhovsky.com. Сегодня не будет большой статьи о технологиях и о том, что и как я сделал, я просто расскажу о том что сделано за сегодня, а также намечу определенный план работ на несколько дней. Да, наконец я разобрал весь goods box.

Идеи в goods box

  • WebSocket
  • Создать Git для проекта

Переход на веб-сокеты

Переход оказался весьма прост и занял не более 6 часов. Это оказалось значительно проще чем я рассчитывал. В проект был добавлен класс websocketserver_class из статьи чат на веб-сокетах. Оказалось достаточным переписать только метод game->init() в котором были совершены очень простые правки:

  • Заменено получение сообщений от клиента $_GET на сообщения переданные по веб-сокету в формате JSON
  • Изменен принцип сохранения данных игрока на стороне сервера, вместо сохранения данных игры в сессию сделано сохранение в массива в памяти
  • Изменена система отправки сообщений клиенту на отправку по протоколу веб-сокетов

Конечно, нельзя говорить о полноценном уходе от REST, поскольку логика приложения осталась та же — клиент отправляет серверу данные, сервер отвечает, изменился только транспорт с AJAX на веб-сокеты. Но, этот шаг был жизненно необходим, поскольку без него не была возможна дальнейшая реализация проекта и реализация нормальной логики уведомлений со стороны сервера.

Что происходит

Проект уже практически приблизился к стадии альфа (40% общего объёма работ) и было принято решение изменить технологии ведения проекта. Как было отмечено выше — был запущен GIT с репозиторием на bitbucket.org, все наброски/идеи/мысли переехали в майнд карту проекта.

Майнд-карта проекта

Майнд-карта проекта

Писать в блог по данному проекту теперь стану несколько меньше, потому что сейчас уже накоплена определенная база знаний достаточная для постоянной работы и не вижу для себя новых предметов для исследований в ближайшие недели. Скорее в блоге будет некое подобие changelog-а.

Краткий итог: Проект возобновлен. Технологически осуществлён перевод на веб-сокеты. В команду добавлен мой брат.

Было бы честным учесть около 40 часов которые были потрачены во время того, как проект не двигался, и которые ушли на изучение и оттачивание навыков работы с веб-сокетами, так как проект изначально позиционировался как проект человека не знакомого с технологиями и планировался учёт затрат в том числе и на освоение технологий.

Сводка

Начало: 25 апреля 2014 года, приостановка 21 мая 2014 – 13 июля 2014 года
Команда: 1 (25 апреля), 1 (14 июля).
Израсходовано: 116 + 12 + 40 = 168 чч., 8 = 8
Рабочих дней: 18 + 1 + 8 = 27, 1 = 1
Средняя производительность: 168/27 = 6,22 чч/день, 8/1 = 8 чч/день

Описание игрового процесса

40/100

Расчет баланса

32/100

Игровая графика

30/100

Веб-клиент

45/100

Игровой сервер

45/100

Веб-сайт

10/100

ИТОГО

192/600

Продолжение: Growing Crystals vol 12. Будни проекта