Carride v.01_02 | Godot multiplayer test

Carride v.01_02 | Godot multiplayer test

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

Игрок, который становится сервером, теперь может выбрать другую модельку машины, кроме базовой. Каждый подключившийся участник получит машинку выбранного типа. До того, чтобы каждый игрок мог выбирать модель самостоятельно, дело пока не дошло - тут, похоже, потребуется перерабатывать структуру подключения.

Синхронизировать уже присутствующие на сцене объекты в Godot 4 оказалось совсем просто - достаточно добавить в префаб узел-синхронайзер и настроить его на передачу позиции и поворота объекта. Так что теперь машинки не только сталкиваются друг с другом, но и все толкаемые ими цилиндры меняют своё состояние в сетевой игре.

<i>Местные цилиндрические бочки - теперь можно на них влиять коллективно.</i><br />
Местные цилиндрические бочки - теперь можно на них влиять коллективно.
<i>Если заглянуть внутрь префаба, то виден узел MultiplayerSynchronizer, который передаёт положение и поворот бочки.</i><br />
Если заглянуть внутрь префаба, то виден узел MultiplayerSynchronizer, который передаёт положение и поворот бочки.

Для того, чтобы лучше разобраться с сетевой структурой я решил добавить сетевой чат и в этот проект, как уже делал с прототипом на Godot 3. В целом, разобраться тоже было делом не слишком сложным, благодаря прошлому опыту, правда тут был нюанс в увеличившемся количестве игроков, а прошлую реализацию я затачивал для двух. Одна из кнопок интерфейса теперь скрывает/показывает окно чата (заодно сбрасывает фокус ввода).

Местная реализация чата через узел NetStore: вешаю его в каждый клиент, внутри - чат. При коннектах он получает свой сетевой идентификатор и может использовать особые функции для отправки каких-либо команд прочим таким узлам. Например, добавление сообщения
Местная реализация чата через узел NetStore: вешаю его в каждый клиент, внутри - чат. При коннектах он получает свой сетевой идентификатор и может использовать особые функции для отправки каких-либо команд прочим таким узлам. Например, добавление сообщения

Из мелочей поправлен кэш материалов - те же выстреливаемые светлячки теперь не вызывают мини-задержку на первом выстреле.

Такие объекты как выстрелы или открывание дверей - пока по сети не синхронизированы, но как минимум что-то выстреливаемое будет синхронизироваться, впоследствии.

Тестовые билды для windows и linux можно скачать здесь:

<i>Естественно, настройки на разных клиентах независимые - у игрока справа графика немного снижена и установлен меньший размер пикселя, на клиенте слева включен волиметрик туман, большая чёткость и прочие улучшения.</i><br />
Естественно, настройки на разных клиентах независимые - у игрока справа графика немного снижена и установлен меньший размер пикселя, на клиенте слева включен волиметрик туман, большая чёткость и прочие улучшения.
Carride v.01_02 | Godot multiplayer test
Carride v.01_02 | Godot multiplayer test

Но это ещё не все. Сетевой прототип иного жанра, на Godot 3, для двух играющих тоже получил некоторые новые функции, обновившись до 4 версии.

Здесь я хотел, чтобы сервер через чат понимал, кто к нему обращается и что-то с этим делал. Для начала я добавил отправку пользователями своих условных идентификаторов - 0 для сервера, 1 для клиента. Теперь на каждом сообщении дописывается идентификатор (правда отправляющий не видит этой цифры). Кроме того, каждый факт выстрела теперь тоже пишется в общий чат, как в некую консоль или лог (здесь уже id стреляющего отображается у всех игроков).

<i>прототип da~Mage, версия с тестом локального мультиплеера, за номером 4</i><br />
прототип da~Mage, версия с тестом локального мультиплеера, за номером 4

И раз уж из чата стала вырисовываться некая консоль, то я добавил пару консольных команд - show и hide. Если прописать команду в чат, то моделька игрока соответственно будет показана, или будет скрыта в игре у всех игроков.

Скачать тестовые билды можно тут:

77
7 комментариев

За мультиплеер лайк. Такого бы как ты да в юнити…)

1

В Unity я уже был и благополучно оставил его несколько лет назад.

Это сиквел Rock n' Roll Racing?

Приквел :)

1

Планируете выкладывать исходники? Очень помогло бы godot комьюнити