Carride | Godot 4 multiplayer test

Продолжая исследовать тему локального мультиплеера, сделал форк своего бенчмарка Godot 4 с биомашинками и добавил туда пробную поддержку сети на 8 человек.

Carride | Godot 4 multiplayer test

О том, как начал добавлять lan в игру на Godot 3x писал ранее здесь:

Кстати, на itch-странице выложил новый сетевой вариант того прототипа, за номером 3. Там игроки уже полноценно видят друг друга, а также свои повороты и анимации. Кроме того они теперь могут вести стрельбу по противникам, при которой выстрелы не рисуются, а метод нанесения урона переписан и теперь идёт прямо по выбранной цели (кстати, добавлен прицел на текущую цель, который правда не совсем идеально работает). Противники правда умирают у каждого игрока независимо в сетевой игре, их выстрелы не поражают цель, а остающиеся с них бонусы подбирать нельзя.

<i>обновлённая lan-версия прототипа на Godot 3</i><br />
обновлённая lan-версия прототипа на Godot 3

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

<i>Кстати, в Godot 4 обнаружился более удобный способ тестирования мультиплеера - можно сразу запускать несколько окон из редактора, включив эту настройку. В 3х для подобного потребуется плагин, более сложные способы или запускать уже экспортированный фал.</i><br />
Кстати, в Godot 4 обнаружился более удобный способ тестирования мультиплеера - можно сразу запускать несколько окон из редактора, включив эту настройку. В 3х для подобного потребуется плагин, более сложные способы или запускать уже экспортированный фал.

Как бы то ни было, набросать какой-то самый базовый мультиплеер с этими инструментами действительно быстрее и в чём-то проще. Поэтому я настроил в данном проекте игру по сети, где до 7 человек может присоединиться к игроку-серверу, запустившему у себя одиночную игру Host. Подключающиеся должны писать в строке IP игрока-сервера, ну и, естественно, быть в одной локальной сети или виртуальной локальной сети. При запуске у себя на ПК в 2 окна строку IP менять не нужно.

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

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

<i>здесь видно, что у одного игрока дверь в стене открыта, а у другого в этом месте сплошная сена</i><br />
здесь видно, что у одного игрока дверь в стене открыта, а у другого в этом месте сплошная сена
Тут справа видны настройки сетевого синхронизатора, брошенного внутрь префаба машинки. Его корень - сама машинка, а внизу экрана отдельно вынесены параметры, которые он передаёт: Vehicle.position и Vehicle.rotation. Кнопка выше слева добавляет ещё свойства<br />
Тут справа видны настройки сетевого синхронизатора, брошенного внутрь префаба машинки. Его корень - сама машинка, а внизу экрана отдельно вынесены параметры, которые он передаёт: Vehicle.position и Vehicle.rotation. Кнопка выше слева добавляет ещё свойства
Carride | Godot 4 multiplayer test
6.7K6.7K показов
566566 открытий
11 репост
17 комментариев

Крутяк!

Ответить

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

Ответить

Я не делаю коммерческие проекты и не делаю проекты для Steam (хотя, я бы выкладывал туда что-то как free, но с их политикой отстёгивания средств за каждый свой выложенный проект - спасибо, не надо)

Ответить

А какой полигонаж у машинок?

Ответить

Небольшой, я их ещё больше оптимизировал по сравнению с более ранними прототипами. И там всегда остаётся куда ещё снизить. Например, в корпусе базовой машинки, не считая колёс, около 6к полигонов/12к треугольников.
В прочих сравнимо или примерно должно доходить до 17к полигонов/ 33к треугольников, но они пока доступны не в этом приложении, а в сингл-бенчмарке Hexyard. Но это модели в "костяном" стиле, где больше отдельных частей. В паре более классических машинок полигонаж, наоборот, где-то в два раза меньше чем в базовой, то есть примерно 3к faces/6к triangles.

Ответить

А как у движка со сглаживанием? Просто на скринах выглядит грубовато.

Ответить

Там есть варианты сглаживания, но я вроде не включал и в настройки тоже не выносил. Зато в проекте много других настроек графики и на скринах далеко не максимум - не включены волюметрик туман и sdfgi-каскады, например.

Ответить