Введение Привет Хабр! В этой серии статей я планирую раскрыть механику мультиплеера в UE 4 и 5. Начать хочу с подключения, а дальше буду отталкиваться от ваших желаний и вашей поддержки.
В Интернете я нашел различные руководства по написанию подключения, и почти нигде, даже в англоязычном сегменте, не было полного и (относительно) правильного руководства, которое я в свое время пытался найти.
Я хочу привлечь 2 ключевые фигуры: IOnlineSubsystem - взаимодействовать с сервисами будущей игры и AGameSession — ключевой класс, который напрямую обрабатывает соединение.
Главная часть
1. Описание
IOnlineSubsystem — это одноэлементный объект, представляющий собой набор интерфейсов для взаимодействия с каким-либо сервисом (Steam, Origin, магазин PS и т. д.).Поэтому, чтобы ваша игра могла работать с этим сервисом, вам необходимо установить в конфиге наследника этих интерфейсов, написанного специально для этого сервиса.
В текущем руководстве мы будем использовать ОнлайнПодсистемаSteam .
Как я уже говорил, IOnlineПодсистема — это прежде всего набор интерфейсов, причем очень высокоуровневых.
Чтобы вашу игру не пришлось переписывать под разные платформы, взаимодействие с этими сервисами значительно упрощено (выгода для разработчиков).
Чтобы полностью понять картину, прошу вас самостоятельно зайти к первоисточнику ОнлайнПодсистемаSteam .
Руководство не будет включать настройку OnlineSubsystemSteam, так как на эту тему существует множество руководств.
Рис.
1. Расположение OnlineSubsystemSteam AGameSession — это объект, который существует исключительно на сервере.
Он отвечает за подключение плеера к сеансу и действует как оболочка над интерфейсом.
Очень рекомендую прочитать шапку GameSession .
час по адресу GameFramework/GameSession.h для полного понимания механизмов работы этого класса.
Рис.
2. Методы класса AGameSession для присоединения игрока.
В результате эти два класса должны работать совместно, чтобы получить качественный продукт.
2. Подключитесь к серверу
Теперь разберемся, что такое конвейер подключения игрока к серверу.Под сервером мы будем подразумевать как еще один клиент, так и выделенный сервер.
- Найдите сеанс.
- Присоединение к сеансу.
- Выйдите из сеанса.
- Поиск.
Все найденные сессии нужно где-то хранить и как-то искать.
Давайте создадим поле в нашем пользовательском классе и функцию поиска:
Теги: #C++ #unreal engine #мультиплеер#pragma once #include "CPP_GameSession.generated.h" UCLASS(config = Game) class ACPP_GameSession : public AGameSession {
-
Сила Блога
19 Oct, 24 -
4 Месяца С Moto 360
19 Oct, 24 -
Технические Интервью: Советы
19 Oct, 24 -
Матрица С Идеями Для Стартапов
19 Oct, 24 -
Icamp Russia – Образы Будущего
19 Oct, 24