Как организовать связь клиент-сервер, если у сервера нет выделенного ip и не проброшены порты?
Начните с этой статьи https://en.wikipedia.org/wiki/Hole_punching_%28net...
Вы смешали"игровой сервер" который считает логику, и сервер - машину доступную для всех оппонентов. Так вот, игровой сервер может быть действительно как выделенным, так и запущенным на одном из клиентов.
А вот чтобы клиенты видели друг друга без проброса портов и прочего - нужен сервер, который будет доступен напрямую всем машинам. Им может опять таки выступить один из клиентов, а может выступать условная машина где то в интернетах. И в таком случае эта машина будет выполнять только роль прокси - т.е. передавать пакеты между всеми клиентами и игровым сервером. 
Для того же юнити можете посмотреть фотон - он как раз и предоставляет вот эту проксю.