Реализация онлайн варианта игры Ergo
В игре будет присутствовать лобби, с возможностью создать игру или присоединиться к существующей по указаным параметрам. Для игроков будет вестись рейтинг, а также будет реализована система достижений. Игра карточная, пошаговая, в одном поединке участвует от 2 до 4 игроков. Во время игры будет видно как игрок выбирает или перекладывает карты, также можно будет грабить корованы обмениваться публичными или приватными сообщениями во время игры с другими игроками.
Данные отправляются на сервер кадрами по 1-3 секунд, все действия игрока записываются в очередь с меткой изменения времени от начала кадра, в ответ клиент получает изменения от сервера и события дургих игроков с метками времени, что позволяет воспроизвести их последовательно. Если результат действий игрока несовместим с реальной ситуацией, то возвращается полное состояние игры, для восстановления. (после 10 некорректных запросов игрок выбрасывается из игры за подозрение в попытках жульничества, информация записывается в лог, также за несоблюдение временного размера кадра, игрок выбрасывается из игры за попытку дестабилизации сервера, информация записывается в лог, оба типа инцидентов не могут произойти без намеренного изменения пользователем настроек клиента) Действиями игрока могут быть: взятие карты, размещение карты на поле, перемещение карт в руке, просмотр карт, отправка сообщения.
Правила игры: http://www.catalystgamelabs.com/download/Ergo%20Rules%202015.pdf
Backend: Django, ngnix, sqlite3, memcached, redis.
Frontend: HTML5, CSS3, JS, jQuery, Angular2 (возможно), Twitter Bootstarp 3.
Для начала нужен локальный redis на 6379 порту по дефолту (можно настроить в ergo_core.py). Далее по адресу /register/ можно зарегестрировать пользователя. Так как пока работа производится больше по backend, то немного API: /game/?create=true&test=true создаст игровую сессию, в ответе будет json с ID сессии, теперь можно подключиться к ней: /game/?init=true&session_id=... указав полученный номер сессии. Карты можно передвигать между рукой игрока и 4 линиями, синхронизация с сервером происходит кадрами через 1.5 сек, обновив стараницу, можно убедиться, что никакие изменения не пропали.