Godot путь новичка. Боевка аля Disciples. Ч1. Вступление

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


Ну боевка Disciples, думаю всем очень понятна. Стоят пацаны друг напротив друга и без движения молотят доступные цели по очереди. Сама по себе она очень проста и не затейлива и по большей части практически полностью была реализована ещё в посте шейдерной анимации смерти. Godot путь новичка. Первый Enemy и первый Шейдер

Так что упор будет по началу на визуальную часть. Мне лично видится четыре основных типа атаки.
-Melee, атакующий перемещается к цели, проигрывается анимация атаки, наносится урон, атакующий возвращается на свое место. Переходит ход. В этом посте с неё и начнем.

-Projectile. От атакующего летит какой-то снаряд, фаербол, стрела и тд. Долетает, наносится урон. Снарядов может быть много, град стрел, очередь минигана, shotgun shot, каноничный Magic Missiles из D&D. Переходит ход.

-Beam. Любой луч, исходящий из атакующего до цели. Например Chain Lighting, Drain Life. Отличительная особенность, может наносится урон распределенный на несколько тиков.

-Instantiate. Самое просто что уже и делали. Визуальный эффект никак независит от позиции атакующего. Просто на цель накладывается какой-то эффект, молния сверху бьет или что-то подобное.


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


Так же будет использоваться Dispather из поста Godot путь новичка.Singleton. Dispather(Event Channel). Сбор монеток



Я тут спьяну заявил, что одна из моих целей, это дорасти до системного архитектора, так что буду учиться использовать UML-диаграммы. Да знаю, что нуб и опозорился, но надо с чего-то начинать, мне выглядит это немножко понятным, это примерная структура класса UnitBase включающая в себя разные компоненты, в свою очередь от него будут наследоваться минимум два класса Hero и Enemy и скорее всего будет ещё класс Boss, на диаграмму больше ничего не помещается, дальше надо оплатить версию)) Ну для начала примерно хватит.

Godot путь новичка. Боевка аля Disciples. Ч1. Вступление Godot, Godot Engine, Gamedev, Пошаговая стратегия, Видео, Длиннопост

И вот прям чувствую, что было у меня все простенько и колхозненько, а начинается какая-то дичь слабо понятная. И честно я даже не буду в этом посте сейчас разъяснять какие-то нюансы, я вижу прям, что все очень сложно и запутано с одной стороны, с другой это упрощенная версия, в реале у меня сейчас ещё громаднее структура. DeadAnimComponent на самом деле уже делали, там в целом все просто и понятно. Всплывающий текст урона и прочего, как-нить отдельным постом покажу реализацию, там все очень простенько.

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

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



Структура сцены Unit.

Godot путь новичка. Боевка аля Disciples. Ч1. Вступление Godot, Godot Engine, Gamedev, Пошаговая стратегия, Видео, Длиннопост

Все содержимое скрипта Dispather.

Godot путь новичка. Боевка аля Disciples. Ч1. Вступление Godot, Godot Engine, Gamedev, Пошаговая стратегия, Видео, Длиннопост

содержимое скрипта Unit.

Godot путь новичка. Боевка аля Disciples. Ч1. Вступление Godot, Godot Engine, Gamedev, Пошаговая стратегия, Видео, Длиннопост
Godot путь новичка. Боевка аля Disciples. Ч1. Вступление Godot, Godot Engine, Gamedev, Пошаговая стратегия, Видео, Длиннопост

Содержимое скрипта AttackComponent

Godot путь новичка. Боевка аля Disciples. Ч1. Вступление Godot, Godot Engine, Gamedev, Пошаговая стратегия, Видео, Длиннопост

И структура сцены Main.

Godot путь новичка. Боевка аля Disciples. Ч1. Вступление Godot, Godot Engine, Gamedev, Пошаговая стратегия, Видео, Длиннопост

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

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

Названия методов и переменных, да у меня как и многих с этим проблемы, называю первым что в голову взбредет.

Лига Разработчиков Видеоигр

6.7K постов22.1K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"