Рассмотрим правильную реализации мультиплеерной игры на Unity для Яндекс.Игры с серверной частью находящейся на Player.IO.
Думаю читатель открывший эту статью так же решил пользоваться этим хостингом, и подробности как писать серверную часть не придется.
Приступим
У меня еже имеется готовая игра для тестирования. Все основные взаимодействия с сервером работают в самом редакторе, и вот теперь вы хотите подготовить игру для Яндекс.Игр, загружаете билд, запускаете, и видите много ошибок.
Скринов ошибок у меня нет, но там будет что-то типа отказа в доступе к внешним источникам.
У Яндекса это сделано для обезопасивания рядового (да и не только) игрока от нежелательного контента.
Первое что нужно сделать
Нельзя использовать небезопасное соединение (если отправить хосты не проверку до установки безопасного соединения, вашу просьбу отклонят, при этом напишут на почту в чем причина).
С нашим сервером это делается просто, но чтобы это понять, у меня ушло 2 недели поисков.
Открываем скрипт на клиенте, а именно метод аутентификации. У меня он уже выглядит так
Ваш код может отличаться, каждый реализует так как пожелает, но есть 2 обязательные строки, без которых вы не сможете взаимодействовать с сервером (подчеркнуты)
Первая - устанавливает свойство безопасного соединения для API. Запросы API будут зашифрованы.
Вторая - многопользовательские соединения будут зашифрованы.
Минус таких настроек - снижение производительности, так как требуется больше действие чтобы при каждом взаимодействии установить безопасное соединение.
Плюс - все данные передающиеся туда-сюда зашифрованы.
Второе что нам нужно сделать
Добавить хосты в список разрешенных. Сейчас это сделать проще, достаточно зайти в раздел настройки проекта, и в поле "Хосты" внести список нужных вам хостов. Она отправятся на проверку и если поддержка Яндекс не нашла причин вам отказать, доступ появится в течении 1-48 часов.
Вот список хостов которые обязательно нужно будет указать вам.
playerio.com
api.playerio.com
Не забудьте описать свою причину использования хостов.
После одобрения - подключиться к серверу будет возможно.
Следующая проблема с которой столкнулся я..
Вот это ошибка
Понять из-за чего она и как решить её не смог даже с поддержкой Яндекс. Ежедневные напоминания о моей проблеме и всё такое ни к чему не привели. Прошло две недели, я продолжал лазать по форумам и наткнулся на пост, где решалась данныя проблема. И она оказалась крайне простой.
Нужно прописать дополнительно вот эту строку в файл index и ошибка исчезнет.
window.gameInstance = unityInstance;
Думаю многие использую данный шаблон для index., а если в крации это место находится перед инициализацией SDK яндекса.
Конец
На данный момент это все трудности которые были у меня, но если появятся еще, обязательно напишу/дополню как я с ними разбирался.