Incluso los juegos que son 100% cliente / servidor a veces tienen problemas cuando el cliente está detrás de NAT. Los juegos peee-peer son problemas aún mayores. Algunos juegos necesitan usar múltiples transportes (como UDP y TCP) o múltiples conexiones (como un puerto UDP diferente para voz).
¿Cuáles son algunas formas de asegurarse de que un juego funcione de manera confiable cuando se ejecuta detrás de un enrutador NAT?
- Peer-Peer: no existe un servidor centralizado. El jugador A comienza un juego y el jugador B quiere unirse
- Cliente-servidor: un servidor centralizado en una dirección conocida (nombre de host) acepta todas las conexiones entrantes. Cada cliente solo se comunica con ese servidor.
- Combo: donde el servidor solo es emparejamiento, pero las actualizaciones del juego son de igual a igual. Diferentes pares pueden ver cada jugador con una IP / puerto diferente potencialmente (por ejemplo, algunos clientes están detrás del mismo NAT y otros están en un enrutador diferente)