25

Another realm v0.06

Итак, пришло время очередного доклада о прогрессе разработки.
За последний месяц я окончательно закончил работу над ближним и дальним боем, пофиксил все видимые баги и немного оптимизировал производительность, освоился с новым ИИ, добавил дийствия обнажения и вложения оружия в "ножны", добавил активную паузу(а точнее замедление), и, наконец, приступил к системе магии. В этом посте расскажу побольше о последнем.

Предистория (можно пропустить)
Планировать систему магии я начал уже давно, поэтому на её реализацию до нынешнего состояния у меня ушло не больше недели. Учитывая, что я не мог выделять много времени каждый день и то, что не малую часть времени ушло на попытки перейти к системе "разработки через тестирование" (test-driven development), я считаю, что справился весьма не плохо. Я начал чувствовать, что мои знания и навыки как в области геймдева в целом, так и программирования выросли на порядок, с тех пор как я начал разработку. Если кого-то интересует мой опыт разработки через тестирование в юнити и почему я пришёл к заключению, что лучше не использовать данную методику в этом проекте, могу написать об этом отдельный пост.

Компонентная система заклинаний.
Заклинания в мой игре это по сути комбинации различных компонентов, что позволяет создавать невероятное разнообразие заклинаний из небольшого количества компонентов. Так же эту систему можно будет внедрить в геймплей и позволить игрокам создавать собственные заклинания на подобие того, что было в морровинде и two worlds 1/2. Каждый компонент представляет из себя скриптовый объект( далее "со"), имеет свою реализацию функции "выполнить" и настройки которые он использует в этой функции. При использовании заклинания в сцене создаётся (или активируется из пула) объект, который инициирует и запускает заклинание(я называю его spellEngine или движок заклинания). Его задача в том, чтобы инициировать и проследить за выполнением всех компонентов заклинания и уничтожить(или вернуть в пул) все что с ним связано по завершению. Движок раздаёт компонентам ссылки на себя и следующий компонент в очереди и запускает выполнение первого компонента. Так же он запускает любые корутины, о которых его просят компоненты и следит за ними, чтобы знать, когда все компоненты закончили выполнение. Каждый компонент принимает ссылку на заклинателя, цель, начальную и конечную позицию и использует эти данные по своему усмотрению, а в конце выполнения, запускает выполнение следующего компонента и передаёт ему такие же данные. Весь сок в том, что компонент может изменять передаваемые данные, вызывать следующий компонент несколько раз или с задержкой. Например, компонент АОЕ находит все цели в определённом радиусе от цели и запускает следующий(а следовательно и все последующие) для каждой цели. Компонент "повторитель", запускает следующий компонент по той же цели несколько раз с опциональной задержкой. Компонент "снаряд" создаёт физический снаряд или спецэффект, которые летит в сторону цели или следует за ней и в конце передаёт новую позицию, как из начальную следующему компоненту. Компоненты имею опцию быть параллельными. В таком случае они запускают следующий компонент сразу, не дожидаясь окончания своей функции.
На данный момент имеется 5 компонентов: Урон, визуальный эффект, снаряд, повторитель и область действия. Каждый компонент имеет дополнительную настройку, поэтом можно очень быстро создать новые варианты компонентов. Все это создает очень гибкую систему создания заклинаний. Из минусов, разве что, сложность балансировки всевозможных вариантов заклинаний с точки зрения геймплея.
На данный момент в ближайших планах добавить ещё один компонент: "силу" (имеется ввиду термин из физики, force). Данный компонент позволит отбрасывать, притягивать и подкидывать персонажей и другие предметы применяя к ним физическую силу.
Интересно услышать от вас идеи для будущих компонентов. Возможно, что-то мне понравится и я реализую это в игре.

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

Требуются:
-3д моделер
-3д аниматор
-создатель спецэффектов
-создатель интерфейса
-иллюстратор/художник
(можно несколько в одном лице. Опыт и знания не обязательны если у вас есть желание обучаться и вы готовы тратить несколько часов в неделю на проект)

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

ЗАПРЕЩЕНО:

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

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

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


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

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

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

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

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