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
Чаю этому господину и фуру лайков
Спасибо-спасибо, сладкоречивый демон)
Комментарий недоступен
Будучи фанатом кастомок вар3 и ковырятелем редактора, я тоже чувствую необходимость в новой игре-основе,Вот это прям правильная мысль, нужна какая-то новая платформа, улучшения версия редактора ВК3, такой некий гаррис мод для кастомок как в варкрафте, тогда сами пользователи смогут создавать интересные мини игры.
Потому как те кастомки, которые были в вк3 (да они наверное и сейчас есть) по геймплею настолько бывали реиграбильные и интересные что можно было в них неделями играть.
К сожалению, как я понял в доте2 такого не завезли для редактора, потому как там я до сих пор не увидел нормальной реализации того же кастлфайта итд
1. Думаю, лимит можно многократно расширять, если делать правильную предзагрузку в память, как сделали в доте. Ведь одна из причин ограничений - долгие загрузки.
2. Проблем с коннектом не будет. Я оставлю возможность как играть по сети (в данным момент, через стим), а затем и по желанию улучшу систему.
3. Однозначный плюс юнити, что в отличии от c++, c# намного легче расширять. Т.е. другим людям будет намного проще расширить функционал редактора и игры в целом. Для примера, можем взять Hearthstone, где есть программы для мониторинга оставшихся карт в колоде\шансов победы на баттлграундах и прочее.
Надеюсь это реально варкрафт3, а не дота. В доту я могу и в доте2 поиграть.
Это и не дота, и не Варкрафт. Это нечто новое, с попыткой сохранить многое из старого и приумножить это.