Типы соединений
Мультиплеер в Construct 2 основан на WebRTC DataChannels. Это - браузер, позволяющий соединяться по технологии peer-to-peer, т.е. соединение происходит между игроками напрямую, не используя центральный сервер.
Несмотря на то, что игроки соединяются напрямую друг с другом, сами игры все еще основаны технологии сервер-клиент. Первый, появившийся в игре автоматически становится сервером (хозяином host ), к которому уже подключаются остальные. Разница от использования центрального сервера заключается в том, что сервером может стать любой игрок. В то время как центральный сервер управляет игрой по заданному сценарию.
Вы можете спроектировать свою игру и с использованием центрального сервера, но готовьтесь нести расходы за хостинг под размещение серверной части. В любом случае вам стоит сразу определиться, каких ресурсов вашей игре будет достаточно, что бы не нести неоправданные расходы.
Для присоединения peer`ов, чтобы иметь возможность подключиться к хосту, он должен знать, где они находятся и как подключиться к ним. Это включает в себя обнаружение их [IP-адреса] [0], выяснение, есть ли у них есть маршрутизатор, который ограничивает соединения, и возможен ли обход этих ограничений.
Ограничивающие маршрутизаторы очень распространены. Интернет вышел за рамки IPv4 адресов несколько лет назад. Чтобы обойти эту проблему, нужно скрыть несколько пользователей за одним IP-адресом. Это делается с помощью [Network Address Translation] [1] (NAT). Например, в вашем собственном доме или офисе, может быть роутер, через который юзер внутренней сети подключается к Интернету. В одном из вариантов NAT сделает все входящие с одного IP-адреса, но через различные [порты] [2]. Есть несколько других вариантов NAT, в том числе крупномасштабный NAT для целых регионов, интернет-провайдеров или мобильных сетей, где некоторые являются более строгими, чем другие. К сожалению, это означает, что в некоторых случаях соединение невозможно, особенно если оба, хост и присоединяющийся пир находятся за очень строгими NAT. Тем не менее с общими установками игроки , как правило, соединяются друг с другом, и, чем ближе они находятся географически тем более вероятно, что соединение должно работать и обеспечить хорошее качество обслуживания. Это одна из причин, по которой правильно побуждать игроков присоединиться к другим, по крайней мере на одном континенте.
Подключение выполняется автоматически WebRTC. Он будет пытаться определить, как подключиться к хосту, работающих через NAT ограничений. Это также означает, что нет никакого конкретного порта, через который работает игра; она работает зависимости от тех портов, которых WebRTC найдёт рабочими. Например, в приведенной выше схеме, три клиента совместно используют один IP-адрес, поэтому пиру с другой стороны, необходимо подключиться к этому IP-адресу через порт А, чтобы достичь первого клиента или порт B, чтобы достигнуть второго клиента, и так далее. Нужно иметь в виду, что иногда два пользователя не смогут соединиться друг с другом, и в таком случае им необходимо найти другого игрока в качестве хоста.
[IPv6] [3] постепенно завоевывает принятие всем Интернетом гораздо большего адресного пространства. Это позволит каждому устройству, подключенному к Интернету, опять иметь уникальный IP-адрес, что делает NAT ненужной и позволяя связи между всеми, независимо от их сетевых настроек. Пока этого не произойдет, проблемы со связью будут печальным следствием. Google публикует [статистические данные о принятии IPv6] [11].