ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2
Продолжительное время с прошлого поста старался решить разные технические детали, поэтому сегодня расскажу о них.
Начну с самого-самого. С меню и списка лобби.
Думаю, все, кто старался реализовать сетевую часть своей игры слышали о Photon Bolt. Это сервис, помогающий организовать лобби, найти другие лобби и всё это корректно настроить. Подумали, что я использовал его? Нет, я использую Mirror. И слегка Steam. Сейчас расскажу почему.
Какова наша задача?
Найти список лобби и присоединиться к нужному.
Почему не Photon Bolt\Server?
Если говорить о маленькой игре, в которой одновременное количество игроков менее 100, то это прекрасное решение, позволяющее не строить костыли, но если больше, то лучше написать свое решение для сервера. Такое выдалось ощущение после прочтения информации и поверхностного тестирования.
Как же тогда у меня работают лобби?
На данный момент используется Steamworks.Net для поиска\создания лобби и после этого создается, на основе лобби, сервер на Mirror, который использует данные из лобби.
Звучит сложно? На самом деле, все намного проще, чем кажется. Mirror позволяет использовать не только свои типы соединений, которых довольно много на выбор, но и другие, и прекрасно работать с ними.
О чем это я? Ах да, о том, что Mirror прекрасно может работать через Steam P2P. Все что от меня требовалось, так это создать у владельца лобби сервер и присоединить по SteamID к нему других игроков в лобби и дождаться их подключения.
После создания сервера и прогрузки на игровую сцену, ожидаем остальных. Что происходит, когда игрок-клиент прогружается? Он отправляет на сервер флажок готовности, а сервер информирует других игроков. Никаких связей Клиент-Клиент.
После того, как все загрузились, то для каждого игрока выдается герой, которым он может управлять, но, по факту, принадлежит серверу.
Почему так? Допустим, игроку принадлежит какой-то объект, который синхронизирован с сервером и он отключается. Что делает Mirror? Он удаляет\деспавнит этот объект, но нам этого не нужно, поэтому заранее все объекты принадлежат серверу и пока сервер активен - они будут существовать.
С момента прошлого поста, все базовые механики передвижения\строительства\применения способностей были полностью синхронизированы с сервером. Для демонстрации, добавлю другого игрока и начну строительство зданий.
Теперь к самому сочному и почему в название поста вообще есть Warcraft. Это способности и как они работают. Помните, как в WorldEditor`e, в Варкрафте, настраивались по событиям способности и, по желанию, дополнялись кодом? Здесь это работает так же! Есть набор заготовленных событий (Нажатие на способность, каждый тик способности и т.д.) и при каждом событии можно вызвать одно из готовых действий (Нанести урон, Наложить дебафф и т.д.).
В определенный момент, как все механики будут готовы, то напишу редактор для моддинга, чтобы можно было удобно создавать карты аналогичные Варкрафтовстким и играть с другими игроками.
Всем спасибо, кто дочитал до конца и вообще, что читаете\следите за моими постами))
Ссылка на вк: https://vk.com/ourlastspring