Android bluetooth multiplayer asset

Android Bluetooth Multiplayer (Basic) – Free Download

This is a paid asset, but now you can download Android Bluetooth Multiplayer (Basic) Free.

Detail this asset from Unity Store: Original Link

Android Bluetooth Multiplayer (Basic) v2.1.3.1 (Latest version)

“If possible, please buy the package to support the developer”

Ever wanted to add Bluetooth multiplayer to your Android game? Then this is the one and only plugin you will ever need.

Android Bluetooth Multiplayer allows you to add Bluetooth multiplayer to your game with just a few lines of code. It is fully compatible with Unity’s built-in networking systems. What this means is that you can easily reuse your networking code for Internet and local gaming with minimal changes, or use any of existing tutorials about Unity built-in networking.

Adding Bluetooth multiplayer to Android game wasn’t possible before… And now it’s made easy!

Features:
– Fully compatible with Unity built-in multiplayer (both UNet and legacy). No need to write special networking code!
– Documented demo examples and components to get you started immediately.
– Powerful API to cover even advanced use cases.
– Comprehensive documentation included.
– Supports Unity 5.2 and newer. Pro license is not required.

Pro version includes full plugin Java source code.

Additional information:
Forum discussion thread
PDF documentation
Android Demo APK

Источник

Unity3D для iOS и Android: многопользовательская игра (подключение по Bluetooth)

Я ищу способ соединить два устройства с помощью Bluetooth в Unity iOS и Android Basic для многопользовательских игр. Я нашел:

AllJoyn от Qualcomm — Bluetooth, по-видимому, работает только с Root — устройства Android и в настоящее время не с iOS.

TNet: не Bluetooth, только для Android и iOS Pro

Есть ли у кого-нибудь другое решение (особенно для Android)?

Буду благодарен за любую помощь. Также для других p2p-Unity-Solutions.

3 ответа

Для Ships N ‘Battles (кроссплатформенной многопользовательской игры, созданной на Unity) мы создали несколько способов выполнения многопользовательская игра:

через Bluetooth (с помощью плагина Prime31)

Я никогда не видел игр с мультиплеером между iOS и Android через Bluetooth.

через локальную сеть (используя Unity RPC)

Игроки могут начинать бои в локальной сети с любого из вышеперечисленных устройств: iOS против iOS, iOS против Android, Android против Mac и так далее.

через Game Center (с помощью плагина Prime31)

Использует многопользовательский режим Game Center для матчей.

через Global Server (собственное решение)

Игроки могут начинать бои по всему миру с любого из вышеперечисленных устройств: iOS против iOS, iOS против Android, Android против Mac и так далее.

Для этого решения мы создали онлайн-сервер, но вы можете использовать что-то вроде Photon.

Для Android вы можете использовать плагин, который я недавно выпустил: Android Bluetooth Multiplayer

Оба предназначены для совместимости со встроенным многопользовательским режимом Unity, поэтому вы можете использовать любое из существующих руководств по встроенным сетям Unity или повторно использовать существующий сетевой код с минимальными изменениями.

Читайте также:  Самый эффективный антивирусник для андроид

Unity представляет UNET (многопользовательская игра на основе UDP)

Источник

Unity3D для iOS и Android: мультиплеер (Bluetooth-соединение)

Я ищу способ подключения двух устройств с помощью Bluetooth в Unity iOS и Android Basic для многопользовательских игр. Я нашел:

AllJoyn от Qualcomm — Bluetooth работает, по-видимому, только с Root — Android-устройства и в настоящее время не с iOS.

Bonjour Plugin от Gregzo — не Bluetooth, а другое локальное многопользовательское решение только для iOS.

TNet: не Bluetooth, только для Android и iOS Pro

Есть ли у кого-нибудь другое решение (особенно для Android)?

Буду благодарен за любую помощь. Также для других p2p-Unity-Solutions.

ОТВЕТЫ

Ответ 1

Для Ships N ‘Battles (мультиплатформенная многопользовательская игра Unity authored) мы создали несколько способов выполнения многопользовательской игры:

через Bluetooth (с помощью плагина Prime31)

Я никогда не видел игру с мультиплеер между iOS и Android с помощью Bluetooth.

через локальную сеть (используя Unity RPC)

Игроки могут запускать бои в локальной сети с любым из вышеперечисленных устройств: iOS vs iOS, iOS и Android, Android против Mac и т.д.

через Game Center (с использованием плагина Prime31)

Использует многопользовательский режим Game Center для соответствия боям.

через глобальный сервер (внутреннее решение)

Игроки могут сражаться по всему миру с любым из вышеперечисленных устройств: iOS vs iOS, iOS и Android, Android против Mac и т.д.

Для этого решения мы создали онлайн-сервер, но вы можете использовать что-то вроде Photon.

Ответ 2

Для Android вы можете использовать недавно добавленный плагин: Android Bluetooth Multiplayer

Оба предназначены для совместимости с встроенным многопользовательским интерфейсом Unity, поэтому вы можете использовать любые существующие обучающие программы о встроенной сети Unity или повторно использовать существующий сетевой код с минимальными изменениями.

Ответ 3

Unity объявляет UNET (многопользовательский режим на основе UDP)

Источник

Unity3D + Google Services: мультиплеер для вашего проекта на Android и iOS


В этой статье я хочу рассказать об использовании игровых сервисов Google в вашем приложении на Unity. На написание данного материала меня сподвигло достаточно большое количество проблем, встретившихся во время разработки нашего приложения, а также отсутствие каких-либо материалов на русском языке по этой теме. Да и собственно, на английском тоже. Описание использующегося плагина на гитхабе очень краткое и не дает ответа на возможные проблемы с работой сервисов. Думаю, здесь не стоит пояснять, что мультиплеер и рейтинги игроков зачастую повышают интерес пользователей, а следовательно и вашу возможную прибыль. А благодаря данной статье начинающие разработчики смогут начать использовать данные преимущества.

Плагин

Мы использовали бесплатный плагин Play Games For Unity. В нем содержатся библиотеки для работы с сервисами Google. Плагин включает в себя авторизацию пользователя в Google+, возможность использования достижений и рейтинга для игроков, облаков Google для хранения данных и организации мультиплеера как в реальном времени, так и в пошаговом режиме. Установка плагина не вызывает никаких трудностей: в Unity нужно выбрать импорт ассета (Assets->ImportPackage->CustomPackage) и в открывшемся окне выбрать ассет, находящийся в папке «current-build».
Далее вам нужно ввести id своего приложения: откройте появившийся выпадающий список «Google Play Games» и выберете пункт «Android Setup». Id приложения вы можете узнать в Google Developer Console. Он выдается после добавления нового приложения в «Игровые сервисы», вы можете видеть его рядом с названием вашей игры. После добавления id можно переходить непосредственно к коду.

Читайте также:  Токийский гуль рпг андроид

Для инициализации плагина используйте следующий код:

PlayGamesPlatform.Activate(); достаточно вызывать лишь один раз после запуска вашего приложения. После инициализации вы можете получить доступ к платформе при помощи Social.Active.

Чтобы реализовать авторизацию пользователя используйте следующий код:

Переменная success принимает значения true при удачном входе и false, соответственно, при неудачном. В нашем случае при удачном входе вызывается метод загрузки необходимых данный пользователя из облака Google. И сразу же первая проблема, встретившаяся у нас на пути: метод вызывается, но при неудачной попытке не возвращает false, а следовательно авторизация не проходит и нет возможности при (!success) вызвать метод еще раз. Пришлось написать костыль, который вызывает метод с определенным интервалом, пока авторизация не пройдет (при условии, что пользователь подтвердил запрос на авторизацию перед этим).
После авторизации пользователя мы получаем возможность использовать сервисы Google.

Поднимаем мультиплеер

Кое-что из этого описано на гитхабе, кое-что на developers.google. Здесь я собрал полезную выжимку.
В плагине доступно 4 режима работы мультиплеера:

  1. Создание комнаты со случайными игроками (быстрая игра)
  2. Создание комнаты с экраном приглашения (позволяет приглашать в игру друзей из кругов Google+)
  3. Обзор приглашений (позволяет видеть, кто из друзей в Google+ хочет пригласить вас в игру)
  4. Приглашения по id (его рассматривать не будем, т.к. не использовали данный режим в нашем приложении; интересующиеся могут прочитать о нем по ссылке на Github)

Для того, чтобы облегчить работу со следующими функциями ваш класс должен наследоваться от интерфейса RealTimeMultiplayerListener.

Создать «быструю игру»/соединиться

Создается комната, куда набираются случайные оппоненты, или же происходит автоматическое присоединение к уже созданной комнате.

Очевидно, что минимальное и максимальное количество игроков определяется переменными MinOpponents, MaxOpponents. В нашей игре MaxOpponents = 1, это означает, что в мультиплеере у вас будет только один противник.
Если ваш класс наследуется от RealTimeMultiplayerListener, то вместо listener вам нужно написать this.

Создание комнаты с экраном приглашения

Почти идентично предыдущему. Игрок может пригласить друзей из Google+ или добавить случайных оппонентов.

Обзор приглашений

Откроется меню, в котором игрок может видеть свои приглашения из Google+.

Соединение с комнатой

Следующий метод позволяет показать пользователю загрузку во время создания или соединения с комнатой:

В нашем случае мы просто выводим переменную progress.

Когда соединение с комнатой произошло удачно (или нет) вызывается следующий метод:

В нашей игре для каждой онлайн гонки препятствия генерируются рандомно, и соответственно их положение должно быть одинаково на обоих телефонах. При успешном подключении из списка участников выбирается хост и на его телефоне генерируются препятствия. После того как они сгенерировались, сразу же начинается передача сообщений с параметрами уровня на другой телефон, и как только принимающий телефон загрузил последнее препятствие, он отправляет сообщение о том что готов и игра начинается. Также передается порядковый номер, используемого космического корабля, чтобы на экране другого игрока отображалась верная модель. Более того передаются различные служебные переменные, необходимые для определения готовности всех необходимых для игры параметров.

Читайте также:  Вирус который блокирует андроид
id участников

Чтобы узнать id всех участников, включая ваш, вы можете использовать следующий код (может выполняться только после соединения с комнатой).

Для всех участников лист будет отсортирован одинаково.
Для того чтобы узнать свой Id воспользуйтесь следующим методом:

Отправка сообщений:

Плагин поддерживает 2 типа сообщений, надежное и ненадежное. Надежное сообщение медленнее, но гарантирует доставку, ненадежное быстрее, но проверка доставки не осуществляется.
Для отправки надежного сообщения используется следующий код:

Соответственно для ненадежного следует изменить переменную reliable на false. Сообщение отправится всем участникам комнаты, кроме вас.
Вы так же можете отправить сообщение конкретному участнику:

Этим способом вы можете отправить сообщение сами себе, указав в participantId свой id.
Максимальная длина одного надежного сообщения – 1400 байт, ненадёжного 1168 байт.
Здесь также возникла проблема: даже если отправлять по одному сообщению за фрейм, то они не отправляются. Мы так и не выяснили с чем это связано, вероятно они просто не успевают формироваться (возможно кто-то в комментариях поправит меня). Поэтому был сделан счетчик фреймов и сообщения отправлялись через строго определенный интервал, измеряемый во фреймах. Тогда все стало работать великолепно. Во время игры наше приложение подразумевает постоянную отправку сообщений (координаты и угол поворота космического корабля), поэтому используются ненадежные сообщения, потому что скорость передачи выходит на первый план, а если пара пакетов и потеряется, то ничего страшного, при достаточно частой передаче человек практически не заметит этого. Но при присоединении игроков к комнате все отправляемые сообщения с параметрами участников и их кораблей являются надежными, так как отправляются только один раз и их значения критически важны для начала гонки.

Проверяем получение всех необходимых сообщений для начала игры:

Наконец-то после десятков билдов и тестов все начало работать:

Получение сообщений

Когда вы получаете сообщение, вызывается следующий метод:

Полученное сообщения полностью идентично отправленному, как по длине, так и по содержанию.
Так как в нашей игре используется множество различных сообщений (будь то координаты корабля, либо сообщение о выигрыше одно из участников и т.п.), чтобы понять какое сообщение принято, мы пошли на достаточно простой и очевидный шаг: первым байтом шло число, определяющее, что за сообщение и какой метод вызвать при его получении, а со второго байта начинались передаваемые данные.

События соединения

Если пользователь отключается от комнаты, вызывается следующий метод:

Важно: При сворачивании игры игрок отключается от комнаты. Возможно, для некоторых приложений это будет проблемой. Но в нашем случае сворачивание неминуемо привело бы к поражению, в виду специфики игры. Поэтому при отключении от комнаты одного из участников вызывается метод OnPeersDisconnected(), описанный далее.

Если кто-то подсоединяется или отсоединяется от комнаты, будут вызваны следующие методы.

Участники могут коннектиться в любое время во время игры, если есть пустые слоты, и тут надо следить, чтобы участник не подсоединился после того, как игра уже началась. Можно сделать ожидание, пока все слоты не заполнятся и только тогда начинать игру.
В нашей игре при досрочном выходе одно из участников отправляется сообщение, определяющее победу соперника и игра заканчивается, а следовательно нужно вызвать нижеследующий метод.

Выход из игры

После того, как ваша игра окончена, вам нужно выйти из комнаты:

Источник

Оцените статью