Есть минимум 4
асинхронных(параллельно обрабатываются!) цикла получения данных.
1. Сигнал синхронизации: "стук сердца" (heart-beat).
2. Локальный: только расчёты.
3. Визуализация/Рендеринг: FPS.
4. Сетевой обмен данными: мультиплеер.
Всё считается отдельно и независимо друг от друга!
Самый главный - это синхросигнал (п.1).
НО! Также, есть допуски у всех уровней, что ниже, которые устанавливают допустимые критерии оптимизации и поддерживают корректную синхронизацию и античит.
Все на сервере делаем на нативных сокетах!
И, чтобы НЕ гонять лишний трафик в JSON-формате через WebSocket, советую использовать
websockify или
engine.io (от разработчиков socket.io).
Дальше - апроксимация движения объектов и лаги... Это будет ещё интереснее)))