Я понял, речь про HTTP REST была об Heartbeat, а не о клиентском опросе серверов. Да, хоть Heartbeat и не тикает, а раз в N секунд или по факту захода/выхода игрока, согласен, я тоже считаю, что это не самый лучший способ. Почитаю про бинарный протокол.
IP-адреса публичных серверов — это открытые и общедоступные данные. Не понимаю опасений по поводу них.
Игроку нужно пропинговать сервера, чтобы он видел и показал через UI настоящую задержку от НЕГО самого до ИГРОВОГО СЕРВЕРА (никто кроме клиента, ни прокси, ни мастер-сервер не может показать реальную задержку от конкретного игрока к конкретному серверу).
Клиент делает легкий UDP Ping на игровой сервер, а игровой сервер отвечает Pong. Игрок самостоятельно делает замер и вычисляет пинг. Выше, "Как это работает на клиенте (Unreal Engine):" я приложил код. То-есть HTTP REST тут никак не учавствует.
Клиент пингует игровые сервера через Socket, разве socket это не прокси?
Сам мастер-сервер также работает отдельно от игровых серверов, поэтому обработка списка серверов никак не влияет на игровой процесс.
Кажется, тут есть небольшое недопонимание, поэтому отвечу по пунктам.
"DDOS-ит сама себя"
Нет. Клиент отправляет небольшие UDP-запросы только тем серверам, которые уже получил от мастер-сервера. Это обычная проверка пинга и доступности, а не какая-то большая нагрузка.
"Сливает IP всех серверов"
Чтобы подключиться к игровому серверу, клиент всё равно должен знать его IP. Без этого подключение просто невозможно. Здесь ничего необычного нет.
"HTTP-оверхед"
По HTTP клиент получает только список серверов. Дальше всё общение с игровыми серверами идёт по UDP, поэтому лишнего HTTP-трафика нет.
"Положит FPS"
Поиск работает асинхронно и только в главном меню. Серверы постепенно появляются в списке по мере получения ответов, без полной перестройки интерфейса. Плюс используются пагинация и ограничение количества одновременных проверок, поэтому заметной нагрузки на FPS здесь нет
https://skwolets.ru/devlog/022140 тут есть видео серверного браузера
Услышал про проксирование трафика! Спасибо! Защитил мастер-сервер: HTTPS + nginx + Gunicorn только на 127.0.0.1.