⚡️ Синхронизация всего и вся
Всем привет! Продолжаю пилить мультиплеер. На этот раз взялся за синхронизацию игровых механик — блоки, инвентарь, хранилища и многое другое. Работы было прилично, так что погнали по порядку.
Инвентарь и предметы
Начал с инвентаря — теперь он полностью серверно-авторитарный. Все операции с предметами (перемещение, использование, выброс) проходят через сервер. Клиент только отправляет запрос, а сервер решает, можно ли это сделать, и синхронизирует результат обратно.
✔️ Предмет в руке тоже синхронизируется — другие игроки видят что ты держишь.
Блоки
Перевёл на сервер всё взаимодействие с блоками — размещение, копание и разрушение. Копание работает через сессии — сервер отслеживает кто какой блок копает и считает прогресс. Причём копать один блок могут несколько игроков одновременно — прогресс складывается и скорость копания блока возрастает.
✔️ Так же доработал систему инструментов — у блоков теперь есть требуемый уровень инструмента для добычи.
Блок-сущности
Пожалуй самая интересная часть. Сундуки, печки и другие блок сущности с интерфейсом — всё это теперь работает по сети. Когда открываешь сундук, сервер блокирует его за тобой — другой игрок не может залезть в тот же сундук одновременно. Содержимое синхронизируется, а если кто-то сломает блок пока ты его открыл, то происходит принудительно закрытие.
Серверные тики блоков
Рост посевов, течение жидкостей — всё это теперь тоже синхронизируется между игроками. Посадил морковку — другой игрок видит как она растёт, и наоборот.
🙂 Основная часть синхронизации позади, осталось доделать несколько механик и можно выпускать на тест.
Post #856
1.22K