Игры по сети

Игра по Интернет либо отсутствует в версиях 1.06 и 1.07, либо хорошо спрятана, поэтому нужно использовать версию 1.05. Запускать eg105.exe, и только эту. В этой версии в главном меню есть «Play on GeGames server».

Игра работает на порту 1114 UDP. Для работы сетевой игры должна быть возможность не только отправлять, но и принимать пакеты на этот порт. Нужен белый IP у провайдера, порт должен быть проброшен через маршрутизаторы.

Подробности

В Ёжиках в Quake II есть возможность находить сервера не только в локальной сети, но и в Интернет. Некоторое время эта возможность оставалась загадкой. В исполняемом файле есть строки для регистрации на сервере, и на сам мой сервер тоже иногда приходят запросы на регистрацию и на логин, вот только я никак не мог сам повторить то же самое из игры. Напомню, я не являюсь автором этой замечательной игры, и я не успел застать вживую эпоху активного развития ежей, так что мне оставалось только догадываться, что к чему. Несколько недель назад со мной связался некто vos, заставший эту эпоху и поделившийся со мной архивами других версий. Изучив эти архивы, я прихожу к выводу, что поддержка игр по сети была во многих версиях вплоть до 1.05, а в 1.06 и 1.07 её уже нет. Или она хорошо спрятана, так что я не могу найти её.

Фукционал сервера удалось частично восстановить. Задача нетривиальная, так как мне известно только, какие запросы отправляет игра, но неизвестно, в каком формате она ожидает результат. Приходится действовать наугад. Я сделал регистрацию и логин, но вот саму сетевую игру в действии пока не проверил.

Игра делалась во времена, когда маршрутизаторы были в диковинку, и провайдерский NAT тоже. Игра зачем–то присылает в запросе на логин IP, как если бы было недостаточно того IP, который может определить web–сервер. Однако, это открывает теоретическую возможность при помощи глобального сервака организовывать игры не только по Интернет, но и в пределах серых провайдерских локалок. На сервер попадают сведения и о внешнем IP, и о внутреннем. Сейчас сервер настроен игнорировать внутренний, но это ещё можно перенастроить. Точнее, алгоритм сейчас следующий: if ($src_ip == $player_ip) { $player_ip = $fake_ip } То есть, все, у кого внешний IP совпадает, видят вместо внешнего IP фейковый у всех тех, у кого внешний IP такой же.

Ёжики, по–видимому, на серваке только регаются, логинятся, и сливают список IP, а дальше обмен идёт уже только между этими IP. Вот, почему так важно, чтобы входящий 1114 UDP порт был открыт. Когда новый участник присоединяется к сети, он сливает с сервера IP других участников и напрямую сообщает им о своём присутствии. Чат тоже идёт не через сервер, а через игроков.

Тэги:
Код для вставки: :: :: :: ГОСТ ::
Поделиться: //
 

Танки Онлайн

ПРОДАЁТСЯ ТАНК МИЛЛИОН кристаллов, УО-2, 4000руб. Tanki Online 28 панфиловцев