Carride | Godot 4 multiplayer test
Продолжая исследовать тему локального мультиплеера, сделал форк своего бенчмарка Godot 4 с биомашинками и добавил туда пробную поддержку сети на 8 человек.
О том, как начал добавлять lan в игру на Godot 3x писал ранее здесь:
Кстати, на itch-странице выложил новый сетевой вариант того прототипа, за номером 3. Там игроки уже полноценно видят друг друга, а также свои повороты и анимации. Кроме того они теперь могут вести стрельбу по противникам, при которой выстрелы не рисуются, а метод нанесения урона переписан и теперь идёт прямо по выбранной цели (кстати, добавлен прицел на текущую цель, который правда не совсем идеально работает). Противники правда умирают у каждого игрока независимо в сетевой игре, их выстрелы не поражают цель, а остающиеся с них бонусы подбирать нельзя.
В 4-й версии движка организация мультиплеера показалась одновременно проще и сложнее - правила оформления и синтаксис сетевых сигналов и комманд поменялись, вроде и в простую, но не всегда очевидную сторону. С одной стороны здесь можно делать то же самое, а если привыкнуть, то станет проще, однако, в движок также добавили узлы сетевого спавнера и сетевого синхронизатора. Один клонирует указанные префабы по всем клиентам, делая копии сетевой сущности. Другой помещается внутрь этих префабов и можно выбрать, какие из своих параметров он будет передавать прочим клиентам - например, префаб машинки сейчас передаёт на прочие клиенты своё местоположение и поворот. Эти штуки упрощают дело, но для чего-то большего всё-равно нужно лезть в код и разбираться, и не только в нём самом, а ещё и как он должен правильно работать в связке с этими новыми узлами.
Как бы то ни было, набросать какой-то самый базовый мультиплеер с этими инструментами действительно быстрее и в чём-то проще. Поэтому я настроил в данном проекте игру по сети, где до 7 человек может присоединиться к игроку-серверу, запустившему у себя одиночную игру Host. Подключающиеся должны писать в строке IP игрока-сервера, ну и, естественно, быть в одной локальной сети или виртуальной локальной сети. При запуске у себя на ПК в 2 окна строку IP менять не нужно.
Машинка пока у всех одна, стандартная. Большая часть происходящего происходит локально, у каждого игрока. По сети отсылаются только положение и поворот машинок. То есть вы можете видеть прочих играющих, но не сталкиваетесь с ними, не видите как они стреляют сферами-светлячками, открывают двери на уровне, меняют окрас на специальной точке и так далее.
Тестовые билды для windows и linux можно скачать здесь: