Даже игры, которые на 100% клиент / сервер, иногда имеют проблемы, когда клиент находится за NAT. Игры Peee-Peer - еще большая проблема. В некоторых играх необходимо использовать несколько транспортов (например, UDP и TCP) или несколько подключений (например, другой порт UDP для голоса).
Какими способами можно убедиться, что игра работает надежно при работе за маршрутизатором NAT?
- Одноранговый: централизованный сервер не существует. Игрок A начинает игру, а игрок B хочет присоединиться
- Клиент-сервер: централизованный сервер по общеизвестному адресу (имя хоста) принимает все входящие соединения. Каждый клиент общается только с этим сервером.
- Комбо: Там, где сервер только подыскивает, а обновления игры равноправны. Разные одноранговые узлы могут видеть каждого проигрывателя с разным IP / портом (например, некоторые клиенты находятся за одним и тем же NAT, а другие - на другом маршрутизаторе).