ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2

Продолжительное время с прошлого поста старался решить разные технические детали, поэтому сегодня расскажу о них.

Начну с самого-самого. С меню и списка лобби.

Думаю, все, кто старался реализовать сетевую часть своей игры слышали о Photon Bolt. Это сервис, помогающий организовать лобби, найти другие лобби и всё это корректно настроить. Подумали, что я использовал его? Нет, я использую Mirror. И слегка Steam. Сейчас расскажу почему.

Какова наша задача?

Найти список лобби и присоединиться к нужному.

Почему не Photon Bolt\Server?

Если говорить о маленькой игре, в которой одновременное количество игроков менее 100, то это прекрасное решение, позволяющее не строить костыли, но если больше, то лучше написать свое решение для сервера. Такое выдалось ощущение после прочтения информации и поверхностного тестирования.

Как же тогда у меня работают лобби?

На данный момент используется Steamworks.Net для поиска\создания лобби и после этого создается, на основе лобби, сервер на Mirror, который использует данные из лобби.

*Шокированное лицо читателя от текста выше*
*Шокированное лицо читателя от текста выше*

Звучит сложно? На самом деле, все намного проще, чем кажется. Mirror позволяет использовать не только свои типы соединений, которых довольно много на выбор, но и другие, и прекрасно работать с ними.

О чем это я? Ах да, о том, что Mirror прекрасно может работать через Steam P2P. Все что от меня требовалось, так это создать у владельца лобби сервер и присоединить по SteamID к нему других игроков в лобби и дождаться их подключения.

ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2
ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2
ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2

После создания сервера и прогрузки на игровую сцену, ожидаем остальных. Что происходит, когда игрок-клиент прогружается? Он отправляет на сервер флажок готовности, а сервер информирует других игроков. Никаких связей Клиент-Клиент.

После того, как все загрузились, то для каждого игрока выдается герой, которым он может управлять, но, по факту, принадлежит серверу.

Почему так? Допустим, игроку принадлежит какой-то объект, который синхронизирован с сервером и он отключается. Что делает Mirror? Он удаляет\деспавнит этот объект, но нам этого не нужно, поэтому заранее все объекты принадлежат серверу и пока сервер активен - они будут существовать.

ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2

С момента прошлого поста, все базовые механики передвижения\строительства\применения способностей были полностью синхронизированы с сервером. Для демонстрации, добавлю другого игрока и начну строительство зданий.

ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2

Теперь к самому сочному и почему в название поста вообще есть Warcraft. Это способности и как они работают. Помните, как в WorldEditor`e, в Варкрафте, настраивались по событиям способности и, по желанию, дополнялись кодом? Здесь это работает так же! Есть набор заготовленных событий (Нажатие на способность, каждый тик способности и т.д.) и при каждом событии можно вызвать одно из готовых действий (Нанести урон, Наложить дебафф и т.д.).

В определенный момент, как все механики будут готовы, то напишу редактор для моддинга, чтобы можно было удобно создавать карты аналогичные Варкрафтовстким и играть с другими игроками.

ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2
ElementalsFight. Warcraft3 Кастомка на Unity. Часть 2

Всем спасибо, кто дочитал до конца и вообще, что читаете\следите за моими постами))

Ссылка на вк: https://vk.com/ourlastspring

5050
17 комментариев

Чаю этому господину и фуру лайков

5

Спасибо-спасибо, сладкоречивый демон)

3

Комментарий недоступен

4

Будучи фанатом кастомок вар3 и ковырятелем редактора, я тоже чувствую необходимость в новой игре-основе,Вот это прям правильная мысль, нужна какая-то новая платформа, улучшения версия редактора ВК3, такой некий гаррис мод для кастомок как в варкрафте, тогда сами пользователи смогут создавать интересные мини игры.
Потому как те кастомки, которые были в вк3 (да они наверное и сейчас есть) по геймплею настолько бывали реиграбильные и интересные что можно было в них неделями играть.
К сожалению, как я понял в доте2 такого не завезли для редактора, потому как там я до сих пор не увидел нормальной реализации того же кастлфайта итд

1

1. Думаю, лимит можно многократно расширять, если делать правильную предзагрузку в память, как сделали в доте. Ведь одна из причин ограничений - долгие загрузки.
2. Проблем с коннектом не будет. Я оставлю возможность как играть по сети (в данным момент, через стим), а затем и по желанию улучшу систему.
3. Однозначный плюс юнити, что в отличии от c++, c# намного легче расширять. Т.е. другим людям будет намного проще расширить функционал редактора и игры в целом. Для примера, можем взять Hearthstone, где есть программы для мониторинга оставшихся карт в колоде\шансов победы на баттлграундах и прочее.

1

Надеюсь это реально варкрафт3, а не дота. В доту я могу и в доте2 поиграть.

1

Это и не дота, и не Варкрафт. Это нечто новое, с попыткой сохранить многое из старого и приумножить это.

1