Какие задачи решает JSON в проекте
1) Удобная работа с ИИ-агентом для генерации контента
Моя не самая любимая часть разработки это создание новых конфигов для контента
2) Дополнительный контент (пакеты)
Скоро я планирую добавлять паки, которые можно будет скачивать с бэкенда, распаковывать и использовать в игре. Бэкенду проще работать с JSON: можно легко прикрутить валидацию содержимого пака, проверку версий, совместимость, зависимости и прочие полезные штуки. Плюс эта же система хорошо ложится на хранение модов (о них ниже).
3) Моды
В будущем хочу развивать проект в сторону модов, чтобы любой человек мог добавить в игру что-то своё. JSON для этого отличный вариант: он читаемый и понятный человеку. Мод можно сделать даже без редактора, просто создавая и редактируя файлы с конфигурацией.
Что уже покрыто через JSON
На данный момент через JSON я настраиваю такие вещи:
Это уже мощный фундамент: на нём можно быстро расширять игру контентом, постепенно подключать паки, а дальше без боли перейти к полноценной поддержке модов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥11🥰3
Всем привет! Сегодня хочу рассказать про жёсткий баг, на который наткнулся при реализации поворота структур.
Сам поворот реализовать несложно: мы просто переставляем данные массива местами в зависимости от направления и готово.
P.S Прикрепил скрины бага структур, а так же примеры конфигурации состояний блока в компонентах двери и ступеньки
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤6👍6🤯1
P.S Эвент длится оба выходных
#скриншотник
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤6🔥5🥰4
Всем привет! Сегодня хочу рассказать о переходе на новую структуру игры.
Старые миры
В первой части игры структура была довольно простой и строилась вокруг сущности мира. Игрок мог создать мир и играть в нём. При этом не существовало никаких измерений — вроде ада, небесных островов и т.д.
Новые вселенные
Новый подход строится уже на двух сущностях:
— сущность вселенной
— сущность места (place)
Что это даёт
В будущем можно прикрутить систему разблокировки места, чтобы в него попасть нужно выполнить какой то квест или скрафтить какой то ключ
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥20❤2🥰2
P.S Эвент длится оба выходных
#скриншотник
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥8❤3🥰1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🥰6❤4
P.S Эвент длится оба выходных
#скриншотник
Please open Telegram to view this post
VIEW IN TELEGRAM
6🥰7🔥2
Не стал долго тянуть с этой темой и решил сразу внедрить его в новую часть (ранее планировал добавлять позже, уже после релиза).
Сетевые решения
Для мультиплеера выбрал PurrNet — у него есть всё, что мне нужно. Среди других решений (FishNet, Mirror, Netcode) у него лучшая производительность.
Из минусов — пока очень мало документации, но спасает то, что я уже работал с FishNet и база у меня есть, так что разобраться несложно.
Также интегрировал VContainer в PurrNet, чтобы при создании сетевых объектов в них автоматически внедрялись зависимости.
Режимы работы
Планирую сделать 3 режима:
Архитектура
Так как есть 3 режима работы, из них вытекают 2 версии приложения:
Для этого я сделал 2 входные сцены: Client Bootstrap и Server Bootstrap, а также кастомный инструмент сборки.
В первом варианте собирается билд клиента (WebGL, Android и т.д.) со стартовой сценой Client Bootstrap,
во втором — билд для Dedicated Linux Server со стартовой сценой Server Bootstrap.
При старте выделенного сервера сразу создаётся нужная вселенная, после чего запускается сцена с ней — и далее клиенты могут к ней подключаться.
P.S.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥37❤4🥰2👍1
P.S Эвент длится оба выходных
#скриншотник
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤6👍3🔥3
Всем привет! Сегодня расскажу про систему мультисцен и разделение игрока на два уровня.
Система Universe и Place на мультисценах
Для реализации вселенных использовал мультисцены Unity. При старте сервера запускается главная сцена Universe — это общее пространство вселенной. Когда игрок хочет зайти в конкретный Place — подгружается дополнительная сцена.
Два уровня игрока
Разделил сущность игрока на два уровня.
Спавн, синхронизация чанков и игроков
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍4🥰1
P.S Эвент длится оба выходных
#скриншотник
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2
Всем привет! В прошлом посте рассказывал про архитектуру Universe/Place и стриминг чанков. С тех пор добавил много нового функционала и теперь уже можно вместе с кем то побегать по миру
При подключении клиент отправляет на сервер свои профиль — никнейм, скин и радиус видимости. Сервер прокидывает всё это на сущность игрока для дальнейшей синхронизации. Теперь все игроки видят текущий ник и скин других игроков.
Разделил режимы камеры: для своего персонажа мы можем переключать вид от первого или третьего лица, но чужие игроки всегда будут отображаться в третьем лице. Сделать это было не так сложно, так как у меня уже была заложена система переключения вида для игрока
Так как система анимаций у меня кастомная (без юнити аниматора), то было несколько вариантов как реализовать синхронизацию. Пока что остановился на параметрах сущности (Velocity, IsCrouch и т.д). Аниматор просто подвязывается к ним и работает как обычно, вызывая нужные стейты в зависимости от параметров. Возможно в будущем оптимизирую за счет синхронизации самих стейтов анимации, а не параметров, но пока что сойдет и такой вариант.
Вынес работу с физикой (различные касты) из глобальной обработки в Place. Каждый плейс теперь работает со своей физической сценой Unity — физика одного места не влияет на другое. Без этого физика в мультисценах нормально работать не будут, так что штука важная.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤3👍2