This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
VR Development
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы

C++/C# Сэмпл Photon Integration

Photon is a networking engine and multiplayer platform that can handle all requests on their own servers. Thus, to create a multiplayer networking solution, you implement the application (gameplay) logic and features in the UNIGINE project, and the networking part is done using Photon. This small sample demonstrates how to integrate the Photon engine into your UNIGINE project to make it a multiplayer app.Photon - это сетевой движок и многопользовательская платформа, которые могут обрабатывать все запросы на своих собственных серверах. Таким образом, для создания многопользовательского сетевого решения вы реализуете логику приложения (геймплея) и функции в проекте UNIGINE, а сетевая часть выполняется с помощью Photon. Этот небольшой пример демонстрирует, как интегрировать движок Photon в ваш проект UNIGINE, чтобы превратить его в многопользовательское приложение.

Two Photon products are integrated into the Photon Integration third-party sample:Два продукта Photon интегрированы в сэмпл Photon Integration:

  • Photon Realtime arranges interaction of multiple players via network. It can be used for creation of multiplayer shooters, racing games, and other real-time applications.Photon Realtime организует взаимодействие нескольких игроков по сети. Его можно использовать для создания многопользовательских шутеров, гоночных игр и других приложений реального времени.
  • Photon Chat allows users to exchange written messages both publicly and privately.Photon Chat позволяет пользователям обмениваться письменными сообщениями как публично, так и конфиденциально.

The sample contains the following elements:Сэмпл содержит следующие элементы:

  • Simplified authorization window to enter the user nickname, which can be used as a basis for a more elaborate authorization window with a password and so onУпрощенное окно авторизации для ввода псевдонима пользователя, которое может быть использовано в качестве основы для более сложного окна авторизации с паролем и так далее
  • Lobby window to create a room and check the list of created rooms available for connectionОкно лобби для создания комнаты и проверки списка созданных комнат, доступных для подключения
  • World containing the actual objects that can be manipulated and the chat window to exchange messagesМир, содержащий реальные объекты, которыми можно манипулировать, и окно чата для обмена сообщениями

Data Transfer via NetworkПередача данных по сети#

Photon Sample contains Utils that demonstrate how to transfer UNIGINE data types via Photon.Сэмпл Photon содержит Utils, которые демонстрируют, как передавать исходные типы данных через Photon.

It is impossible to directly transfer UNIGINE data via network using Photon — they should be serialized before being sent and then deserialized when received by another party. Photon is able to serialize and deserialize the data sets listed here (click on Common-cpp - data types and utilities). The same information on data types is available as a PDF file for your convenience.Невозможно напрямую передавать данные UNIGINE по сети с использованием Photon - они должны быть сериализованы перед отправкой, а затем десериализованы при получении другой стороной. Photon способен сериализовать и десериализовать наборы данных, перечисленные здесь (нажмите на Common-cpp - data types and utilities). Эта же информация по типам данных доступна в виде PDF файла для вашего удобства.

Other specific data types such as transformation matrices should be registered in a specific way illustrated in our sample for proper serialization/deserialization process.Другие специфические типы данных, такие как матрицы преобразования, должны быть зарегистрированы определенным образом, показанным в нашем примере, для правильного процесса сериализации/десериализации.

Check this sample and create your own applications integrating more network solutions developed by Photon.Ознакомьтесь с этим сэмплом и создайте свои собственные приложения, интегрирующие другие сетевые решения, разработанные Photon.

How to Run the SampleЗапуск сэмпла#

To use Photon products, register on the Photon website (www.photonengine.com) and do the following:Чтобы использовать продукты Photon, зарегистрируйтесь на веб-сайте Photon (www.photonengine.com) и выполните следующие действия:

  1. Download the required SDKs. Загрузите необходимые SDK.

    Go to SDKs (the tab in the top right corner).Перейдите в SDKs (вкладка в правом верхнем углу).

    You'll need SDKs for two Photon products to run this sample:Для запуска этого примера вам понадобятся SDK для двух продуктов Photon:

    • REALTIME — Windows/Linux for C++ or .NET for C#REALTIME - Windows/Linux для C++ или .NET для C#
    • CHAT — Windows/Linux for C++ or .NET for C#CHAT - Windows/Linux для C++ или .NET для C#
  2. Add binaries. Добавьте двоичные файлы.

    In the Photon sample folder, find the folder named PhotonSDK. Copy all binaries to this folder according to the structure provided in the Readme.txt file also available in this folder.В папке с сэмплами Photon, найдите папку под названием PhotonSDK. Скопируйте все двоичные файлы в эту папку в соответствии со структурой, приведенной в файле Readme.txt, который также находится в этой папке.

    Example for Windows C++ project, Chat SDK binaries

    Example for Windows C++ project, Chat SDK binariesПример для проекта Windows C++, двоичные файлы Chat SDK

    Example for Windows C# project, Chat SDK binaries

    Example for Windows C# project, Chat SDK binariesПример для проекта Windows C#, двоичные файлы Chat SDK
  3. Create App IDs. Создайте идентификаторы приложений.

    Go to Dashboards (the tab in the top right corner).Перейдите к Dashboards (вкладка в правом верхнем углу).

    In the Dashboards section, click CREATE A NEW APP.В разделе Dashboards нажмите CREATE A NEW APP.

    You need to create two applications for Photon sample: one using Realtime Photon SDK, and the other one — Chat Photon SDK.Вам нужно создать два приложения для Photon sample: одно с использованием Realtime Photon SDK, а другое - Chat Photon SDK.

    Creating a Realtime Photon AppСоздание приложения Photon в реальном времени

    Creating a Chat Photon AppСоздание приложения для фотонного чата

    Now you have two apps and may use their IDs in the sample. The same ID is used for every instance (i.e. other participants don't need to create their own apps).Теперь у вас есть два приложения, и вы можете использовать их идентификаторы в примере. Для каждого экземпляра используется один и тот же идентификатор (т.е. другим участникам не нужно создавать свои собственные приложения).

  4. Add App IDs to the sample project. Добавьте идентификаторы приложений в пример проекта.

    In the project folder find data/application_params.json and paste the IDs to the corresponding lines.В папке проекта найдите data/application_params.json и вставьте идентификаторы в соответствующие строки.

    Shell-команды
    {
        "realtime_application_id": "______________",
        "realtime_application_version": "1.0",
        "chat_application_id": "_________________",
        "chat_application_version": "1.0"
    }

This is it. Now run the app and ask your friend to do the same.Готово! Теперь запустите приложение и попросите своего друга сделать то же самое.

If you do solo testing, run one or two more instances on your PC and switch between the windows to get a glimpse.Если вы проводите индивидуальное тестирование, запустите еще один или два экземпляра на своем компьютере и переключайтесь между окнами, чтобы получить представление.

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.Поскольку индикатор выполнения жизненного цикла пуст, на экране отображается кнопка "Оставить". Нажмите на нее, чтобы вернуться в лобби.

Последнее обновление: 19.12.2023
Build: ()