Рад что кто-то взялся за написание сетевого кооператива для мукера. Считаю что вещь это очень нужная, т.к. возможность делать кооп игры здорово оживила и разнообразила бы мейкерский игрострой, ведь, как известно, при коллективной игре все автоматически становится веселее в n раз.
Поскольку я имею некоторый опыт в этой области (онлайн кооператив есть в моем движке), поделюсь некоторыми соображениями по этому поводу. Топикстартер, наверняка и так это знает, но насчёт других не уверен.
Главной сложностью при создании сетевых (а особенно кооперативных) игр на любом движке в настоящее время является проблема нехватки ip адресов. Создатели протокола ipv4 в своё время не учли неравномерность распределения ip-адресов по миру (а может и вовсе об этом не думали, не силен в истории) и сделали недостаточно большой длину адреса. В итоге у многих провайдеров просто не хватает адресов для своих абонентов и они садят множество человек на один и тот же, что по-простому называется "серым ip". Поскольку у таких людей нет персональных ip, подключиться извне к ним невозможно, как результат они не могут хостить сетевые игры. Для решения проблемы был создан протокол ipv6, однако ж на дворе 2018 год, а поддерживает его довольно малое количество провайдеров.
В двух словах, не имея белого ip, играть в кооп игры с классическим прямым подключением вы не сможете.
Какие же есть решения?
1. Кооператив через общий сервер. При такой реализации все игроки соединяются через один сервер с белым ip и обмениваются данными тоже. Такое решение могут себе позволить Blizzard в игре Diablo 3, однако оно требует постоянного финансирования и для маленьких/бесплатных игр не годится.
2. Использование hole-punching, чтобы пробиться сквозь nat. Решение частичное, поскольку в некоторых сетях и провайдерах нереализуемо, т.е. позволит хостить не всем, но многим. Для соединения игроков опять же используется сервер с белым ip, однако все дальнейшие данные будут идти напрямую. Главным минусом способа является его сложность, далеко не каждый программист знает как его реализовать.
Очень существенный шаг для решения проблемы сделал Steam, за что Valve нужно сказать большое спасибо. При использовании steam_api разработчикам доступны стим-лобби, своеобразная комбинация способов 1 и 2 (стим сначала пытается пробить нат, а если не выходит - использует прокси). Это позволило родиться многим инди кооп играм. Однако это все актуально, только если вы делаете игру для стима.
Ну и третьим способом является различный изврат, такой как заставлять игроков ставить эмуляторы локальной сети вроде Хамачи, Тангл и т.д.
Решение рабочее, однако по голове за него игроки не погладят.
Хотелось бы услышать мнение топикстартера по этому вопросу
Что планируется реализовать в плагине?