Так же попутно идеологички-технический вопрос касательно передачи передвижения шарика? Если я двигаю свой шарик, что передавать другим игрокам? новые координаты шарика? позиция + направление? что делать если нужно чтобы шарики у каждого игрока имели разную скорость? и т.д.
С клиента на сервер передавать направление движения и скорость.
С сервера клиентам рассылать новые координаты объектов, направления движения всех (!) подвижных объектов и их скорости.
Пока от сервера не прийдут обновлёные данные о позициях на игровом поле, клиент пытается рассчитать их самостоятельно по ранее переданных с сервера данных о скоростях и направлениях.
По приходу данных о новых позициях рассчитанные клиентом координаты подвергаются коррекции в случае расхождений.
Стоит учесть, что в ряде случаев это может приводить к резким «скачкам» подвижных объектов на карте
т.к. в передаче данных по сети возможны задержки.
Плюсы этого подхода:
- усложнение жизни недобросовестным игрокам, пытающимся изменить игровую ситуацию в обход правил. Например, перенестись в противоположный угол игрового поля послав на сервер специально сформированную команду. Довольно частое явление, кстати.
- борьба с рассинхронизацией отображения игрового поля у различных игроков.
Минусы:
- задержки в сети могут приводить к не красивым визуальным эффектам
- алгоритм рассчёта движения прийдётся реализовывать и на клиенте и на сервере. Причём они должны возвращать идентичные результаты при одинаковых входных данных.