Тестирование игры
Идея игры витала давно, но в итоге решился воплотить ее, заодно разобраться немного с nodejs и сокетами.
В итоге вышла игра - http://flagger-game.com/
Прошу всех зайти, попробовать и отписать общее впечатление.
А теперь подробнее.
В некоторый день Х пришло осознание того, что по работе делать нечего до осени. И выходит что остался один на один со своими проблемами, нужно было чем-то себя занять и ничего лучше, кроме как сделать игру в голову не пришло. :(
Начав гуглить тему nodejs+игры наткнулся на несколько статей в том числе на хабре как ее сделать. Начал делать и честно говоря первая версия, в которой можно было бы просто двигаться.. и все. выглядела она так:
Просто ездили 2 квадрата по полю.
Но уже тогда, обмен с сервером шел на скорости 0.7мбит/с.
Тогда уже пришло понимание что игра собранная из кусков кода stackOverflow и гугла работать нормально не может.
Пришлось делать с нуля, но уже учитывая важные аспекты для игры: Комнаты, Пули и различные бонусы, которые выпадают на карте.
Старался писать правильно, тем самым вышло так, что все объекты на карте имеют свой метод "Обновись" который зависит от dt. DT - интервал между обновлением. Тем самым скорость обновления элементов не зависит от скорости вызова их. То есть если пуля должна лететь со скоростью N/с , она и будет лететь вне зависимости от частоты обновления, просто чем дольше обновление - тем больше рывок.
Основной костяк игры собрался где-то за дня 4, были баги/глюки но в итоге большую часть постарался починить.
Выгрузил все на сервер.. и... лаги! Сервер ВПС дешевый, всего за 2$ и обмен с клиентом на скорости 30kb/s уже доставлял нагрузку на сервер, а точнее ВПС просто неуспевал все просчитывать и обновлять.
Пришлось оптимизировать часть расчетов и сделать реже отсылку ненужной инфы на клиент.
В итоге сейчас клиент/сервер работают в idle на скорости 0.08мбит, что в "теории" позволяет держать около 1000 человек на 100мбит/канале
Что дальше? Продолжить оптимизацию, попробовать перевести протокол на binary-тип и заставить браузер выполнять частично роль сервера, просчет своих и чужих координат, т.к сейчас позиции игроков шлются с сервера, хотя можно и локально посчитать.
Предлагаю вам протестировать игру, сказать хорошая ли идея, стоило ли потраченного времени и тд.
Управление простое - Мышка + Клик.