C++/C# Сэмпл Photon Integration
Photon - это сетевой движок и многопользовательская платформа, которые могут обрабатывать все запросы на своих собственных серверах. Таким образом, для создания многопользовательского сетевого решения вы реализуете логику приложения (геймплея) и функции в проекте UNIGINE, а сетевая часть выполняется с помощью Photon. Этот небольшой пример демонстрирует, как интегрировать движок Photon в ваш проект UNIGINE, чтобы превратить его в многопользовательское приложение.
Два продукта Photon интегрированы в сэмпл Photon Integration:
- Photon Realtime организует взаимодействие нескольких игроков по сети. Его можно использовать для создания многопользовательских шутеров, гоночных игр и других приложений реального времени.
- Photon Chat позволяет пользователям обмениваться письменными сообщениями как публично, так и конфиденциально.
Сэмпл содержит следующие элементы:
- Упрощенное окно авторизации для ввода псевдонима пользователя, которое может быть использовано в качестве основы для более сложного окна авторизации с паролем и так далее
- Окно лобби для создания комнаты и проверки списка созданных комнат, доступных для подключения
- Мир, содержащий реальные объекты, которыми можно манипулировать, и окно чата для обмена сообщениями
Передача данных по сети#
Сэмпл Photon содержит Utils, которые демонстрируют, как передавать исходные типы данных через Photon.
Невозможно напрямую передавать данные UNIGINE по сети с использованием Photon - они должны быть сериализованы перед отправкой, а затем десериализованы при получении другой стороной. Photon способен сериализовать и десериализовать наборы данных, перечисленные здесь (нажмите на Common-cpp - data types and utilities). Эта же информация по типам данных доступна в виде PDF файла для вашего удобства.
Другие специфические типы данных, такие как матрицы преобразования, должны быть зарегистрированы определенным образом, показанным в нашем примере, для правильного процесса сериализации/десериализации.
Ознакомьтесь с этим сэмплом и создайте свои собственные приложения, интегрирующие другие сетевые решения, разработанные Photon.
Запуск сэмпла#
Чтобы использовать продукты Photon, зарегистрируйтесь на веб-сайте Photon (www.photonengine.com) и выполните следующие действия:
-
Загрузите необходимые SDK.
Перейдите в SDKs (вкладка в правом верхнем углу).
Для запуска этого примера вам понадобятся SDK для двух продуктов Photon:
- REALTIME - Windows/Linux для C++ или .NET для C#
- CHAT - Windows/Linux для C++ или .NET для C#
-
Добавьте двоичные файлы.
В папке с сэмплами Photon, найдите папку под названием PhotonSDK. Скопируйте все двоичные файлы в эту папку в соответствии со структурой, приведенной в файле Readme.txt, который также находится в этой папке.
Пример для проекта Windows C++, двоичные файлы Chat SDKПример для проекта Windows C#, двоичные файлы Chat SDK -
Создайте идентификаторы приложений.
Перейдите к Dashboards (вкладка в правом верхнем углу).
В разделе Dashboards нажмите CREATE A NEW APP.
Вам нужно создать два приложения для Photon sample: одно с использованием Realtime Photon SDK, а другое - Chat Photon SDK.
Создание приложения Photon в реальном времениСоздание приложения для фотонного чатаТеперь у вас есть два приложения, и вы можете использовать их идентификаторы в примере. Для каждого экземпляра используется один и тот же идентификатор (т.е. другим участникам не нужно создавать свои собственные приложения).
-
Добавьте идентификаторы приложений в пример проекта.
В папке проекта найдите data/application_params.json и вставьте идентификаторы в соответствующие строки.
Shell-команды{ "realtime_application_id": "______________", "realtime_application_version": "1.0", "chat_application_id": "_________________", "chat_application_version": "1.0" }
Готово! Теперь запустите приложение и попросите своего друга сделать то же самое.
Если вы проводите индивидуальное тестирование, запустите еще один или два экземпляра на своем компьютере и переключайтесь между окнами, чтобы получить представление.
How to Use the SampleИспользование сэмпла#
As you run the sample, you'll see a basic authorization form. Type in your nickname and click Join Lobby.После запуска сэмпла, вы увидите базовую форму авторизации. Введите свой ник и нажмите Join Lobby.
The Lobby window will be displayed next. If you are the first and there are no rooms in the list, click Create Room and the room will be created. Следующим будет отображено окно Lobby. Если вы первый и в списке нет номеров, нажмите Create Room, и номер будет создан.
All users using the same Photon IDs in the data/application_params.json will see the room named after the nickname, if they join after this room has been created.Все пользователи, использующие одинаковые идентификаторы Photon в data/application_params.json, увидят комнату, названную в честь псевдонима, если они присоединятся после создания этой комнаты.
Double-click the room name to join this room.Дважды щелкните по названию комнаты, чтобы присоединиться к этой комнате.
As soon as the world opens, you can move your material ball around using WASD buttons, rotate it using QE, and shoot other players clicking the left mouse button.Как только мир откроется, вы сможете перемещать свой материальный шар, используя кнопки WASD, вращать его, используя QE, и стрелять в других игроков, нажимая левую кнопку мыши.
You can type in messages to send them to all users, or send messages starting with @username to exchange private messages with that user. (Of course, you should know the username for that, the application doesn't have any specific interface to let you know it.)Вы можете вводить сообщения, чтобы отправлять их всем пользователям, или отправлять сообщения, начинающиеся с @username, чтобы обмениваться личными сообщениями с этим пользователем. (Конечно, для этого вы должны знать имя пользователя, у приложения нет какого-либо конкретного интерфейса, который позволил бы вам узнать это.)
As the life progress bar is empty, the Leave button is displayed on the screen. Click it to return to Lobby.Поскольку индикатор выполнения жизненного цикла пуст, на экране отображается кнопка "Оставить". Нажмите на нее, чтобы вернуться в лобби.
Информация, представленная на данной странице, актуальна для версии UNIGINE 2.20 SDK.