Мы в нашей игре (http://www.magiclands.ru) использовали технологию, которая в статье названа long poll. Работает очень быстро и устойчиво. Открытые соединения проксируются на несколько бэкендов, каждый из которых обслуживает свою часть юзеров. Масштабировать можно практически неограниченно, добавляя сервера и процессы и распределяя по ним пользователей.
Практика показала, что нагрузку создает не число одновременно установленных соединений, а количество новых запросов в единицу времени. В населенных локациях народу ходит много — постоянно много данных отправляется всем, кто там находится — нагрузка возрастает.
На гейм-дизайнера ложится задача минимизировать такие скопления, а в целях борьбы с перегрузками введена саморегулирующаяся задержка, которая не сразу закрывает соединение при поступлении данных, а ждет ещё какое-то время — вдруг ещё что придёт на отправку, и уже после этой задержки отправляет пакет. Для системы это в разы снижает нагрузку, а для игрока выглядит, как задержка между отдачей команды на перемещение и началом движения. Если сделать, что собственные действия никогда не задерживаются, а действия других персонажей можно и притормозить, то игроки задержку и замечать не будут.
В чате секундная задержка практически незаметна пользователям и позволяет комфортно общаться.
Практика показала, что нагрузку создает не число одновременно установленных соединений, а количество новых запросов в единицу времени. В населенных локациях народу ходит много — постоянно много данных отправляется всем, кто там находится — нагрузка возрастает.
На гейм-дизайнера ложится задача минимизировать такие скопления, а в целях борьбы с перегрузками введена саморегулирующаяся задержка, которая не сразу закрывает соединение при поступлении данных, а ждет ещё какое-то время — вдруг ещё что придёт на отправку, и уже после этой задержки отправляет пакет. Для системы это в разы снижает нагрузку, а для игрока выглядит, как задержка между отдачей команды на перемещение и началом движения. Если сделать, что собственные действия никогда не задерживаются, а действия других персонажей можно и притормозить, то игроки задержку и замечать не будут.
В чате секундная задержка практически незаметна пользователям и позволяет комфортно общаться.