Переношу механики Корсаров на Unity3d

Всем привет! Неделю назад я написал свой первый пост на капибаре, там я рассказывал о том, как я перенёс игровую локацию из Корсаров на Unity3d.
И... я не смог остановиться и наметил себе план работ на ближайшие пару месяцев:
- Сухопутная боевая система
- Квесты
- Диалоги
- ИИ противников, ИИ стражников в городе
- Инвентарь
- Торговля
- Лут (мёртвые противники, сундуки)
- Характеристики
- Переход между локациями (вход в таверну, магазин, etc, выход в джунгли)
В результате выполнения всех этих пунктов я буду иметь технодемку, которая будет включать в себя только сухопутный контент с основными механиками, 1 город и его окрестности (джунгли) и несколько демонстрационных сюжетных цепочек. Это вполне посильная для меня задача.
В чём цель? Во-первых, геймдев это моё увлечение, т.е. я буду получать удовольствие от процесса. Во-вторых, это практика и в Unity3d и в разработке, она никогда не бывает лишней. В-третьих я люблю эту серию игр и у меня есть надежда, что то, что я делаю, в будущем будет полезным для сообщества.

На этой неделе больше всего внимания я уделил следующим пунктам
1. Инвентарь, характеристики
Для реализации этих пунктов я использовал свою уже ранее созданную ещё в 2019 году RPG систему. Она выросла из уже существующего бесплатного ассета системы инвентаря (я бы оставил ссылку, но не смог найти тот самый ассет). Тот ассет меня не устроил своими возможностями и качеством кода, и постепенно в нём ничего не осталось прежнего кода и всё было переписано самостоятельно.

В данной системе можно:
- Создавать характеристики, описывать их влияние на другие характеристики (Например прописать, что 1 единица силы влияет на силу атаки с коэффициентом 1.2)
- Создавать категории для итемов (для экипировки это могут быть типы оружия, сабля, меч, рапира, etc, для NPC - нация и т.п.)
- Создавать слоты экипировки
- Создавать итемы с определенным набором свойств. Например, можно создавать квестовые предметы, оружие, броню, NPC и т.д.
- Добавлять итему характеристики
- Добавлять итему скрипты, которые повесятся на него в игре
- И многое другое. А если чего-то нельзя, то всегда можно нужный функционал дописать :)

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

В настоящее время осталось добавить несколько типов ударов, парирования и добавить мозгов кибер-болванам, чтобы они умели адекватно драться, а не тупо спамить атакой. И добавить стрельбу, анимации уже есть, осталось придумать, как это лучше реализовать.
Кстати, в видео выше хорошо виден косяк в модельке противнка (части одежды как бы привязаны к рукам). Это моя основная боль в переносе моделей персонажей в Unity3d. Персонажи изначально не стоят в T-позе и приходится их править вручную, чтобы адекватно добавить скелет. Получается не всегда.
3. Диалоги
Для реализации диалогов я выбрал хорошо знакомый мне ассет VIDE Dialogues. Из коробки он, на мой взгляд, не очень пригоден для использования в проектах, там есть неприятные баги и шерховатости, но их я уже давно исправил. :)

4. Переход между локациями
Сделал несколько внутренних локаций города (таверна и магазин) и переход между ними. Переход между локациями внутри города осуществляется без загрузочного экрана, фактически все локации находятся на одной сцене. Научил NPC свободно посещать эти локации. Такого функционала не было в оригинале и не факт, что он нужен и останется.


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

Надеюсь, кому-то было интересно почитать. Следующий пост на эту тему планирую написать через 1-2 недели. Счастливо!






