что такое photon launcher
Использование Photon Cloud в Unity3D
В процессе создания своей первой игры на Unity3D я осознал необходимость организации сетевого режима, в котором игроки могли бы калечить компьютерных аватаров своих противников. Если вы раньше не занимались созданием клиент-серверных приложений, не поднимали своих игровых серверов, не желаете вкладывать силы и средства в их установку и поддержку, а хотите просто понять принципы организации мультиплеера и за 15-20 минут модернизировать свой проект так, чтобы с чистой совестью добавить к его названию слово Online, то эта статья для вас.
Немного о самом Photon. Это компания специализируется на серверных движках. Удобный сайт, на котором вы можете зарегистрироваться и получить AppID буквально за пару минут. Обширная документация, правда на языке оригинала, куча руководств и демопроектов. В сети есть даже видео уроки на русском, правда всё это относится к Photon Server. Если же вы не хотите заморачиваться с установкой и настройкой сервера, то можно воспользоваться облачным сервисом Photon Cloud, для этого необходимо лишь получить AppID при регистрации, который гарантирует вам лицензию на 20 одновременно подключенных пользователей.
На сайте утверждается, что подключиться к Облаку можно буквально за несколько минут. И это правда… если, конечно, перед этим потратить несколько часов-дней на изучение документации, потому что всё не так очевидно как хотелось бы думать разработчикам.
Итак, что нам нужно для счастья?
1. Подключиться к Облаку.
2. Создать тестовую комнату, либо присоединиться к ней, если она уже существует.
3. Убедиться, что все игроки взаимодействуют друг с другом в одной и той же сцене.
Подключение организуется с помощью встроенного статичного класса PhotonNetwork:
Думаю, значения параметров понятны. Последний параметр нужен для того, чтобы отличать версии ваших приложений друг от друга.
Если же в каталоге Assets\Photon Unity Networking\Resources у вас лежит скрипт PhotonServerSettings, ,
то вы можете использовать процедуру
Создание или присоединение к тестовой комнате:
При создании комнаты можно кроме её названия указать, также видима ли она для остальных, открыта она или нет, а также максимальное количество игроков. При присоединении достаточно указать лишь название.
Если вы уже находитесь в комнате, то можете посмотреть её свойства в PhotonNetwork.room
Примечание: При загрузке новой сцены соединение с сервером и комнатой не разрывается.
Теперь осталось синхронизировать сцены и движения игроков на ней. Тут всё зависит от самого проекта. Есть несколько основных вариантов:
1. Вам требуется, чтобы какой-то объект синхронно перемещался для всех игроков. Для этого достаточно добавить к синхронизируемым объектам компонент PhotonView — «Components/Miscellaneous/PhotonView» .
В качестве Observe укажите синхронизируемый объект, а в Serialization синхронизируемые параметры.
Каждый компонент PhotonView имеет View ID.
2. Вам необходимо создавать один и тот же объект во время игры по желанию пользователя. Например, игрок должен кидать гранату. Для этого, нужно создать игровой объект, где вместо Instaniate используется процедура
В отличие от Instaniate сперва необходимо указать название префаба, а в конце указать его группу (просто любое целое число). Созданный, одним из игроков, такой объект появляется у всех остальных.
Именно с помощью данной процедуры нужно создавать главного героя. Однако, вы столкнётесь с тем, что все персонажи будут реагировать на ваше управление. Чтобы избежать этого, вы должны добавить в скрипт управления персонажем условие определяющее локального игрока. Что-то вроде:
Примечание: Чтобы воспользоваться свойством photonView.isMine необходимо в качестве родительского класса для скрипта указать Photon.MonoBehaviour.
Создавать можно только префабы, находящиеся Assets\Photon Unity Networking\Resources
3. Для управления объектами вам помогут RCP (Remote Call Procedure), с помощью которых вы сможете выполнять процедуры на удалённых приложениях передавая им необходимые аргументы. Для этого нужно перед объявлением процедуры в скрипте добавить тег [RPC], а к объекту, к которому прикреплён скрипт добавить компонент PhotonView, чтобы потом была возможность к ней обратиться.
Например:
Соответственно, чтобы удалённо запустить процедуру на клиенте, необходимо определить PhotonView:
А затем выполнить процедуру
где в качестве аргументов указать название вызываемой процедуры, получателей, и аргументы исходной функции.
Примечание: В качестве параметров RPC понимает только основные типы, т.е. int, float, bool, string и т.п.
4. В качестве объекта синхронизации компонент PhotonView, по умолчанию выбирает компонент Transform, отвечающий за положение объекта в пространстве. Если же нам нужно передавать какую-то информацию, то в качестве объекта синхронизации нужно указать скрипт
,
а в самом скрипте вставить процедуру
Хотя, по идее эта процедура должна вызываться при каждом случае изменения одного из отсылаемых параметров, в данном случае при изменении позиции, положения или состояния персонажа, но вы можете как и я столкнуться с ситуацией, когда она вызывалась только мастер-клиентом. Для того, чтобы принудительно запустить эту процедуру на обычном клиенте можете воспользоваться данным скриптом:
Благодарю, за внимание. В следующий раз я планирую подробнее разобрать функционал Photon Cloud.
Введение в многопользовательские игры с Unity и Photon
Узнайте, как создать собственную многопользовательскую игру на Unity с использованием библиотеки Photon Unity Networking (PUN).
Если вы какое-то время создавали игры для Unity, вы знаете, что для создания игры требуется много тяжелой работы. Такие вещи, как дизайн уровней, игровая механика и прогресс, требуют много проб и ошибок и тщательного проектирования, чтобы добиться хороших результатов. Не смотря на это, только ограниченное количество людей может создать рабочую игру.
По сравнению с этим многопользовательские игры, такие как Fortnite и PUBG, покорили мир. Эти игры, которые легко осваивать, но трудно создавать. Они становятся все более популярными среди рекордного числа людей.
Некоторые люди даже делают карьеру из этих игр в качестве стримеров Twitch, что очень трудно сделать в одиночных играх.
В этом руководстве вы узнаете, как создать собственную многопользовательскую игру на Unity с использованием библиотеки Photon Unity Networking (для краткости PUN).
В этом уроке, вы узнаете:
Photon или Unity — что выбрать?
Прежде чем приступить к обучению, давайте рассмотрим основные различия между Unity Networking и Photon Unity Networking.
Изучение архитектуры
Движок Unity, как и PUN имеют похожие низкоуровневые API. Но архитектура, необходимая для этих библиотек, чтобы использовать эти API, является ключевым дифференцирующим фактором между ними.
Можете ознакомиться с этим видео:
Приведенная выше диаграмма показывает, как сообщения передаются между узлами в сети в Unity и в PUN.
Unity Networking поддерживает архитектуру сервер / клиент.
Все сообщения должны проходить через хост-клиент и не могут быть отправлены напрямую между узлами.
Например, на основе приведенной выше схемы, сообщения передаются от клиента B к клиенту C по следующему пути: Клиент B ▸ Сервер ретрансляции ▸ Хост A Сервер ретрансляции ▸ Клиент C.
Как видите, сообщение от источника до места назначения занимает всего 4 шага. В дополнение к этому, если Хост отключается от сети, игра останавливается.
PUN имеет аналогичную архитектуру сервер / клиент, но также поддерживает одноранговую отправку сообщений.
Например, на основе приведенной выше схемы сообщения передаются от клиента B к клиенту C по следующему пути: клиент B сервер ретрансляции ▸ клиент C.
Это всего 2 шага по сравнению с 4 в Unity для одной и той же передачи сообщений между двумя узлами.
В дополнение к этому, PUN потенциально может полностью обойти сервер ретрансляции, и клиент B может напрямую связываться с клиентом C, тем самым уменьшая количество переходов до 1.
Исходя из этой информации, PUN быстрее, чем Unity.
Другое ключевое отличие между Unity и PUN – модель стоимость.
Unity предлагает бесплатное количество параллельных пользователей (CCU) для каждой лицензии.
PUN также предоставляет до 20 CCU, 8000 ежемесячных активов и 500 сообщений на номер бесплатно. В дополнение к бесплатному плану, он предлагает очень хороший вариант однократной оплаты в размере $ 95 на 60 месяцев, который включает в себя 100 CCU, 40 000 ежемесячных активных и 500 сообщений на номер. Этот вариант отлично подходит для небольших независимых разработчиков, которые имеют ограниченный бюджет.
Комбинация сравнительно более быстрой производительности, хорошо написанных учебников и документации, а также здоровый выбор ценовых планов делают PUN очень хорошим вариантом для разработчиков для создания многопользовательских игр.
Купить или попробовать бесплатно можете по ссылке – https://www.photonengine.com/en-US/PUN/pricing
Начинаем работу
Вам потребуется Unity версии 2018.3 или более новой версии для успешного запуска начального проекта. Если вы не установили его в своей системе, вы можете загрузить его с unity3d.com.
Примечание. Это руководство предназначено для пользователей, обладающих базовыми знаниями в области сценариев и которые знакомы с редактором. Если вы новичок в Unity, вы можете ознакомиться с нашими уроками для начинающих.
Как только вы все настроите, загрузите стартовый проект, и откройте Photon Starter с Unity.Project Overview
Посмотрите на структуру папок в окне проекта:
Вот что содержит каждая папка:
Откройте сцену запуска из Активов / RW / Сцены.
Если вы раньше играли в многопользовательские игры, вы должны понимать, что прежде чем вы и ваши друзья начнете играть в эту игру вместе, вам сначала нужно создать или присоединиться к лобби (или игровой комнате), где вы все подключитесь, а затем лидер лобби начинает игру, либо она стартует автоматически.
В этой сцене вы создадите лобби с использованием Photon Unity Networking. Вы создадите комнату с определенным именем, и тогда ваш друг сможет присоединиться к вашему лобби, введя то же имя комнаты в своем экземпляре игры.
Как только вы и ваш друг присоединились к одной комнате, лидер лобби может загрузить сцену MainArena, где вы оба можете играть в игру вместе.
Создаём аккаунт в Photon
Прежде чем приступить к созданию лобби, вам необходимо создать учетную запись на официальном сайте Photon Engine, перейдя по адресу https://dashboard.photonengine.com/en-us/account/SignUp.
Примечание: Библиотека Photon Unity Networking уже присутствует в начальном проекте, который вы загрузили в начале этого учебного пособия, но вы также можете использовать ее в своих существующих проектах, загрузив пакет Unity Pack из хранилища активов.
Продолжайте работу, вернувшись в Редактор Unity, откройте Мастер PUN, выбрав Окно ▸ Фотон Unity сети ▸ Мастер PUN.
В окне PUN Wizard нажмите Setup Project и введите AppId, который вы сохранили при настройке учетной записи движка Photom в предыдущем разделе. Нажмите кнопку «Настройка проекта».
Теперь, когда у вас есть Photon, давайте приступим к созданию лобби.
Создание Лобби
Вот обзор того, что делает скрипт Launcher.cs, по порядку:
Откройте скрипт Launcher.cs в Assets / RW / Scripts.
Добавьте следующие строки кода в Launcher.cs после комментария // Start Method.
Не беспокойтесь о промежуточных ошибках при добавлении кода. Весь необходимый код будет объяснен в разделах ниже.
Вот краткое объяснение кода.
Загрузка сцены MainArena
Чтобы получить входные данные из элементов пользовательского интерфейса TextField, вам нужен открытый метод для сохранения значения в TextField. Добавьте следующий код после комментария // Tutorial Methods:
Затем добавьте следующие методы после комментария // Tutorial Methods:
Вот как работает этот код:
Затем добавьте следующие строки кода:
Смотрите внимательно за каждой строкой кода:
Методы обратного вызова PUN
Теперь, когда вы добавили основные строительные блоки присоединения и создания комнаты, осталось только добавить методы обратного вызова PUN, которые позаботятся об обработке исключений.
Добавьте следующий код после комментария // Photon Methods:
Давайте посмотрим, что делает каждый фрагмент кода:
Сохраните сценарий Launcher.cs и вернитесь к сцене Launcher и нажмите «Play».
Как вы можете видеть, когда сцена запускается, вызывается ConnectToPhoton и в тексте интерфейса состояния соединения отображается «Connecting…». После успешного подключения текст меняется на «Connected», и видимость roomJoinUI GameObject устанавливается в значение true.
Затем пользователь может ввести свое имя и имя комнаты, которую он хочет создать или присоединиться, нажав кнопку «Присоединиться к комнате».
Наконец, если пользователь является первым клиентом, текст playerStatus имеет значение «Вы теперь являетесь лидером лобби!», И кнопка «Загрузить арену» будет активна. В противном случае отображается сообщение об успешном соединении в лобби.
На этом этапе вы можете протестировать шаг присоединение к комнате, создав исполняемый файл проекта для вашей операционной системы, выбрав Файл ▸ Построить и запустить. Вы должны быть в состоянии загрузить сцену MainArena, используя только что построенный исполняемый файл и редактор Unity, соединенные в одной комнате.
Тем не менее, вы можете увидеть только пустую арену без игроков. В следующем разделе вы узнаете, как добавить префабы игроков и мячей на сцену для каждого отдельного клиента. Вы также будете синхронизировать их положение, вращение и многое другое в сети фотонов.
Использование компонента преобразования просмотра – Photon View
После того, как код комнаты объединен, следующая важная концепция Photon Unity Networking. Также важная функция, которую вам нужно знать, – это компонент Photon View.
PUN позволяет очень просто создать префаб, свойства которого (положение, вращение и т. д.) Должны синхронизироваться по сети во время многопользовательской игры с использованием компонента Photon View.
При использовании PUN важно понимать, что Prefab, который должен создаваться по сети, должен находиться внутри папки с именем Resources.
Важным побочным эффектом наличия Prefabs внутри папок Resources, является необходимость просмотра их имен. У вас не должно быть двух префабов под путями ресурсов ваших активов, названных одинаково, потому что Unity просто выберет первый, который найдет.
После этого давайте начнем создавать Game Manager.
Откройте сценарий GameManager.cs в разделе «Ресурсы / RW / Scripts».
Вот краткий обзор того, что собирается делать скрипт GameManager.cs:
Добавьте следующий код после комментария // Start Method:
Вот как это работает
Сохраните файл и вернитесь в редактор.
Теперь, когда у вас есть готовая логика для создания объектов Player и Ball GameObject, следующим шагом будет добавление необходимых компонентов, чтобы их можно было создать с помощью метода PhotonNetwork.Instantiate.
В окне «Project» дважды щелкните «Car prefab» в «Assets / RW / Prefabs», чтобы открыть его в режиме «Prefab Editing».
В Инспекторе вы должны увидеть, что некоторые базовые компоненты для Car GameObject (Rigidbody, Collider, Movements и т. д.) Уже являются частью префаба.
Поскольку по сети необходимо синхронизировать только свойства Transform объекта GameObject, добавьте компонент Photon Transform View в Car GameObject.
Вы заметите, что компонент Photon View также добавлен, так как компонент Photon Transform View уже наследует от него множество свойств.
В дополнение к синхронизации положения, поворота и масштаба GameObject, Photon Transform View дает вам много разных вариантов, чтобы синхронизированные значения выглядели гладкими, даже когда данные принимаются только пару раз в секунду.
В Инспекторе установите для параметра «Наблюдение» значение «Ненадежный» при изменении в компоненте Photon View. Это обеспечит плавный переход между значениями Car Transform.
Кроме того, добавьте префаб «Автомобиль» или «Car» в список «Наблюдаемые компоненты» в компоненте «Photon View», чтобы синхронизировать его выбранные свойства преобразования (которые отображаются как выбранные в компоненте «Photon View Component»).
Сохраните готовый префаб Car
Затем откройте префаб Ball из Assets / RW / Prefabs в режиме Prefab Editing и повторите вышеуказанные шаги:
Наконец, переместите префабы Car и Ball из папки Assets / RW / Prefabs в директорию Assets / RW / Resources, чтобы их можно было загрузить методом PhotonNetwork.Instantiate.
Время тестировать нашу игру!
Выберите File ▸ Build and Run, чтобы создать исполняемый файл для вашей операционной системы.
Вы должны увидеть, что сцена MainArena загружена двумя игроками (машинами) и мячом. Вы можете использовать кнопки WASD или клавиши со стрелками на клавиатуре, чтобы перемещать машину по арене.
Обратите внимание, что на обоих клиентах движется только 1 автомобиль (автомобиль, принадлежащий клиенту).
Вы также можете видеть, что положение игроков и мяч синхронизированы у обоих клиентов.
Вся работа выполняется с помощью компонента Photon Transform View, который вы добавили в префабы Car и Ball.
Однако если вы закроете один из клиентов, то другой клиент останется нестабильным. Для обработки подобных случаев вы добавите методы обратного вызова, чтобы выполнить необходимое действие в зависимости от текущей ситуации клиента (например, потеря сети или другой оставшийся игрок).).
Добавление методов обратного вызова PUN
Добавьте следующий код в скрипт GameManager.cs после комментария // Update Method:
Это довольно просто.
В любой момент игры, если нажата кнопка Escape, будет вызвано событие Application.Quit.
Затем добавьте следующий код после комментария // Photon Methods:
OnPlayerLeftRoom является методом обратного вызова PUN, который вызывается всякий раз, когда игрок покидает комнату, либо закрывая клиента, либо отключается от сети.
Наконец, добавьте следующий код после комментария // Вспомогательные методы: // Helper Method
При нажатии на Canvas / Top Menu Panel / Quit Room Button будет вызван данный метод.
Теперь вам предстоит установить событие On Click () и кнопки Quit Room на GameManager.QuitRoom
Вы можете создать финальный бинарный файл для вашей операционной системы и начать играть прямо сейчас.
Что делать дальше?
Целью этого руководства было дать вам представление об основных принципах построения многопользовательской игры. Вы можете использовать эти же принципы, чтобы превратить существующую однопользовательскую игру в многопользовательскую игру!
Вы можете узнать больше о библиотеке Photon Unity Networking на официальном сайте
Если у вас есть какие-либо вопросы или комментарии, или вы просто хотите показать, над чем вы экспериментировали в этом уроке, присоединяйтесь к обсуждению ниже.
Photon Launcher на компьютер
Информация
Инструкции по установке
Cкачать и установить Photon Launcher на компьютер бесплатно.
Многие из нас стали задавать простой вопрос: как скачать, установить и сыграть в нашу любимую игру прямо на компьютере?
Если вы не любите маленькие экраны смартфона или планшета, то сделать это можно с помощью программы-эмулятора. С ее помощью можно создать на своем компьютере среду Android и через нее запустить приложение. На данный момент самыми популярными утилитами для этого являются: Bluestacks и NoxPlayer.
Установка Photon Launcher на компьютер с помощью Bluestacks
Bluestacks считается самым популярным эмулятором для компьютеров под управлением Windows. Кроме того, есть версия этой программы для Mac OS. Для того, чтобы установить этот эмулятор на ПК нужно, чтобы на нем была установлена Windows 7 (или выше) и имелось минимум 2 Гб оперативной памяти.
Установите и настройте Bluestacks. Если на компьютере нет Bluestacks, перейдите на страницу https://www.bluestacks.com/ru/index.html и нажмите зеленую кнопку «Скачать Bluestacks» посередине страницы. Щелкните по зеленой кнопке «Скачать» в верхней части следующей страницы, а затем установите эмулятор:
+ Windows: дважды щелкните по скачанному EXE-файлу, нажмите «Да», когда появится запрос, щелкните по «Установить», нажмите «Завершить», когда эта опция станет активной. Откройте Bluestacks, если он не запустился автоматически, а затем следуйте инструкциям на экране, чтобы войти в свою учетную запись Google.
+ Mac: дважды щелкните по скачанному файлу DMG, дважды щелкните по значку Bluestacks, нажмите «Установить», когда будет предложено, разрешите устанавливать программы сторонних разработчиков (если понадобится) и нажмите «Продолжить». Откройте Bluestacks, если он не запустился автоматически, и следуйте инструкциям на экране, чтобы войти в свою учетную запись Google.
Скачайте файл APK на компьютер. APK-файлы являются установщиками приложений. Вы можете скачать apk-файл с нашего сайта.
Щелкните по вкладке «Мои приложения». Она находится в верхней левой части окна Bluestacks.
Нажмите «Установить APK». Эта опция находится в нижнем правом углу окна. Откроется окно Проводника (Windows) или Finder (Mac).
Выберите скачанный файл APK. Перейдите в папку со скачанным файлом APK и щелкните по нему, чтобы выбрать.
Нажмите «Открыть». Эта опция находится в нижнем правом углу окна. Файл APK откроется в Bluestacks, то есть начнется установка приложения.
Запустите приложение. Когда значок приложения отобразится на вкладке «Мои приложения», щелкните по нему, чтобы открыть приложение.
Установка Photon Launcher на компьютер с помощью NoxPlayer
Nox App Player бесплатна и не имеет никакой навязчивой всплывающей рекламы. Работает на Андроиде версии 4.4.2, позволяя открывать множество игр, будь то большой симулятор, требовательный шутер или любое другое приложение.
+ Перейти на официальный сайт разработчика https://www.bignox.com/
+ Для того чтобы установить эмулятор Nox App Player, нажимаем на кнопку «СКАЧАТЬ».
+ Далее начнется автоматическая загрузка, по завершении которой необходимо будет перейти в папку «Загрузки» и нажать на установочный файл скачанной программы.
Установка и запуск программы:
+ Для продолжения установки необходимо в открывшемся окне нажать на кнопку «Установить». Выберите дополнительные параметры инсталляции, нажав на кнопку «Настроить», если вам это необходимо. Не снимайте галочку с пункта «Принять «Соглашение»», иначе вы не сможете продолжить.
+ После того как эмулятор будет установлен на компьютер, вы увидите на экране окно запуска, где необходимо будет нажать на кнопку «Пуск».
+ Все, на этом этапе установка эмулятора Nox App Player завершена. Для полноценной работы программы вам необходимо будет зайти в свой аккаунт Play Market — нажмите на иконку приложения в папке Google, введите логин и пароль от вашей учетной записи.
Загрузка и установка приложений: Для этого вам необходимо скачать файл приложения в формате APK и просто перетащить его на рабочий стол Nox App Player. После этого сразу начнется установка, по окончании которой вы увидите значок этого приложения на главном экране.