Tesserfact, обновление 01_03

Дальнейшее развитие прототипа походовой 3d тактики на Godot.

Tesserfact, обновление 01_03

Изменения версии 01_03:

Добавлена новая арена, без шахматной раскраски и теперь в стартовом меню можно выбирать сражение - первую арену (в вариантах 4 на 4 и 2 на 2) или новую ( где сражение 2 на 2).

Tesserfact, обновление 01_03

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

видеонарезка

Страница проекта (браузерная версия, билды для windows/linux):

Очередь ходов

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

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

<i>ходит "чёрная единица", затем будет ход "чёрной двойки", после чего на передний план выйдут затемнённые сейчас участники и ход получит первый слева</i><br />
ходит "чёрная единица", затем будет ход "чёрной двойки", после чего на передний план выйдут затемнённые сейчас участники и ход получит первый слева

Мини-портреты очерёдности берут информацию из оптимизированного листа участников и показывают, кто будет ходить дальше, заглядывая на "глубину" 3-х следующих персонажей. Портрет походившего персонажа как-бы сдвигается вверх, открывая другой, серый потрет, находящийся за ним - там указан персонаж, который будет ходить в скором будущем. Когда все 4 портрета сдвигаются, то на первый план выходят те серые, что были за ними и ход получает первый слева.

То есть существует как бы две мини-очереди. Фронтальная - текущий и ближайшие ходы, и фоновая - будущие ходы, которые постепенно приоткрываются.

Почему хотелось сделать именно такую систему - чтобы вся линейка портретов не дёргалась целиком в каждый новый ход, а двигалось само выделение. Правда вряд ли участников сражения впоследствии станет больше чем 10-12 суммарно, то есть всех сразу можно было выводить статичными мини-портретами сверху (места по идее хватило бы) и ничего не сдвигать. Тем не менее сейчас система поддерживает любое количество участников, что может пригодиться.

Единственное исключение - моменты убийства персонажей. Тогда выделение перемешается в самый левый край, все портреты сбрасываются, перерасчитываются и выдвигаются на первый план.

Магия

Для того, чтобы не распыляться на всё и сразу, написал реализацию для заклинаний применяемых на конкретную цель (не просто клетку) и не бьющих по области. Хотя рассчитываю со временем что-то из подобного прописать тоже.

Стоит заметить, что применение Магии или Атаки расходует Боевое действие персонажа (каждый герой имеет одно такое в каждый свой ход). Оно не отображается, но Магия и Атака, вместе, становятся недоступны после первого использования в ход.

На данный момент одинаковая Магия есть сразу у всех участников и сделана схематично, чтобы не тратить на эффекты лишнее время. Применение заклинаний расходует Очки Маны. Урон фиксированный (хотя у многих заклинаний он и планируется быть фиксированным далее), тестовый, и пока не реализованы магические защиты и прочие нюансы.

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

Планы

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

Подразумевается, что в дальнейшем основной игровой процесс будет состоять в прохождении цепочки арен на двух сложностях:

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

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

Что касается экипировки, то я хочу некоторый гибридный вариант из безразмерного списка предметов партии вобще и ограниченного инвентаря у каждого героя. У игрока будет как бы инвентарь партии, но с вкладками по типам предметов и переносить их между этими вкладками нельзя. У каждого героя будут слоты экипировки и, наверное, свой мини-инвентарь, куда можно взять ограниченное количество расходников.

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

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

77
Начать дискуссию