Привет, ребятки! Целых две недели не виделись — сейчас буду по порядку писать, чем же я занимался все это время.
👻 Hungry Spirit улучшения
Тут основная часть работы касалась геймдизайна. В прошлом посте я коротко описывал изменения игры. Сейчас коротко по ним тоже пройдусь. Я заменил бесконечную локацию на уровни. На каждом уровне, есть ограниченное количество “врагов”. Поедая их, персонаж получал души, их надо было собирать. А потом эти души он тратил на прокачку.

Этот вариант я отправил на плейтесты, по результатам которых стало понятно, что игра очень скучная 😅. А что еще хуже, — очень короткая: на прохождение одного уровня, как на гифке сверху, уходило 27 - 29 секунд.
Стал думать, что делать, и прогонять разные гипотезы через нейронку.
Уровни
Самый первый и очевидный вариант был изменить структуру уровня, чтобы вместо замкнутой области было, что-то наподобие лабиринта, чтобы можно было “исследовать” локации.

Количество врагов
Дальше стал думать над врагами. Если учитывать, что на первых картах было 8 врагов и игрок, в среднем, зачищал её 27 секунд, то выходит, что на одного врага уходило 3,375 секунды.
А если мне надо, что бы игрок играл минуту (60 сек), то получается, я делю 60 на 3,375 и получаю 17.777, иначе говоря, 18 врагов на уровень.
Но, учитывая, что уровень у меня небольшой и запутанный, я уменьшил это число до 16.
Отлично! Уже выглядит как план. Но есть ещё одна деталь — это души. Если врагов будет очень много, собирать души вручную будет скучно. Так что я переделал систему так, чтобы они автоматически собирались в игрока.

Баланс душ
Но того, что души собираются автоматически, не достаточно — нужно понимать,сколько их должно выпадать.
Пришлось думать над системой. Во-первых, врагам было задано разное значение “силы” при старте. Раньше оно у всех было 1. А теперь оно рассчитывалось от значения “силы” игрока. Для того, чтобы было понятно, я вывел циферки с этим значением сверху и над персонажем и над врагом. Враги ориентируются на персонажа, 60 процентов появляются со значением выше, чем у персонажа, а 40 процентов со значением ниже.
Персонаж теперь может сделать «кусь» только на врага, который имеет значение ниже или равное персонажу. И в момент “куся” происходит вычисление количества душ.
Мы берём значение игрока и значение врага, дальше рассчитываем, насколько игрок “сильнее” врага. Чем их значения ближе, тем больше лута выпадает; чем они дальше друг от друга, тем меньше игрок получает душ.
Доработки
Получается, что вся позапрошлая неделя ушла на то, что я описал выше. Тесты, подгонка баланса и снова тесты. Сейчас надо поработать на “красивостями”: сделать красивый декор на уровнях, доработать фичу с потерей “жизней”. А также отполировать систему перехода между сценами.
Продолжаю изучать Three.js
Почти вся прошедшая неделя ушла на изучение 3д. С одной стороны это плохо, так как я остановил работу над игрой, а возможно сейчас бы уже её доделал. Но, с другой стороны, мне так нравятся возможности этой библиотеки: я буквально целые дни трачу на изучение и просмотр уроков, и у меня в голове не укладывается, что можно без редакторов и дополнительных программ рендерить 3д элементы прямо в браузере.

Пока что еще дело не дошло до полноценного проекта. Но следующую игру я точно буду делать уже в 3д.
Создание музыки
Да-да, этот вопрос меня тоже не отпускает. Узнал об очень интересном сервисе https://strudel.cc/, где можно собирать свои треки с помощью специального языка, похожего на JS.
Конец
До следующего понедельника. Если вы дочитали до этого момента и не подписаны на мой канал в Telegram “Пять секунд до публикации”, то подписывайтесь. Если подписаны и знаете, кому такой контент может быть интересен, — делитесь ссылкой и приглашайте подписаться.