В первой части этой статьи я создал аналог игры «Pong!» с помощью нейросети Qwen, которую сегодня некоторые обзорщики называют одной из лучших нейронок для разработки. Во второй части мы с Qwen создали небольшой платформер. Не без проблем, но в целом справились. А вот для третьей части статьи я приготовил особое задание, которое кажется невыполнимым – создать клона «Героев Меча и магии 3», который бы отражал основные механики оригинальной игры. В конце статьи я добавлю ссылку на то, что у меня получилось, чтобы вы смогли сами оценить результат.
Промпт был такой:
Давай создадим упрощенный клон игры "Герои меча и магии 3". Должны присутствовать три основных механики. 1. Перемещение по карте мира и сбор ресурсов/бой с монстрами 2. Боевая механика аналогично Героям 3. 3. Отстройка города.
Получилось интересно и несколько неожиданно:

Карта мира выглядела как поле из «минера». На поле в случайном порядке были отмечены ресурсы и монстры. Так же на карте находился и замок игрока.
Отдельно стоит отметить героя, который имеет очки опыта и движения. Так же он имеет навыки атаки и защиты (как в классических «героях») и очки здоровья (зачем?).
Еще ниже представлены имеющиеся у игрока ресурсы, но почему-то, все они выглядят как золото. Рядом кнопка перехода в город и «Восстановить движение» - аналог «Нового дня».
Если мы перейдем в город, то увидим возможность его «отстройки» и найма войск.

А что насчет боевой системы? Она в первой версии игры совсем текстовая.

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

Так же я попытался исправить боевую систему и сделать ее ближе к оригинальным «Героям». Она должна была выглядеть так: поле 8*8 клеток, воины дальнего боя атакуют с любого расстояния, ближнего – только с расстояния в одну клетку. Кроме этого, персонажи могут тратить действия на движение либо на атаку.

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

Отдельной проблемой оказалась казавшаяся в героях простой механика «Силы стека», то есть, сила атаки стека складывалась из суммы силы атаки юнитов, а здоровье складывалось из суммы здоровья. При этом, нейросеть не учитывала потери. То есть, она просто складывала 10 юнитов с 1 атаки и 10 хп до 1 юнита с 10 атаки и 100 хп. Если опустить хп этого юнита, например, до 50, то в реалиях «Героев» количество юнитов в стеке упадет до 5 и их сила атаки так же уменьшится. У нейронки изначально ничего не менялось. После нескольких раундов диалога этот вопрос удалось решить.
Из-за особенностей новой боевки (от тебя зависит очень мало, главное грамотно рассчитать силу отряда), потребовалось добавить опцию разведки перед боем: теперь до боя игрок видит количество и силу монстров и имеет возможность отступить.

Так же, я поменял и систему прокачки героя. Теперь у героя было всего три способности: скорость передвижения, атака и защита. При повышении уровня герой случайным образом получал или очко атаки или очко защиты. Каждое очко атаки увеличивало урон его армий на 5%, а каждое очко защиты снижало урон, получаемый армиями на 5%.

Еще один момент, который требовалось исправить – это отстройка и экономика. По сути, изначальная застройка в игре ничего не давала игроку кроме галочек напротив построенного здания. Поэтому пришлось выстроить простейшую логику: есть постройки экономические (префектура, муниципалитет, капитолий), а есть военные (стрельбище, казармы, монастырь и портал славы). Экономические давали золото в ход, а военные позволяли строить соответствующих юнитов (Стрелки, рыцари, монахи, ангелы). Изначально ваш доход составляет 250 золотых в день, а нанимать вы можете только крестьян. Кроме того, как и в «Героях», игрок должен строить экономические здания именно в указанном выше порядке.

Далее я попытался добавить механику «Сундуков» из Homm. Тут тоже возникла проблема: сундуки (их роль играли монетки) исчезали только если после того, как герой их забрал, нажималась кнопка «Новый день», в противном случае их можно было абузить бесконечно. Поэтому пришлось забрать у игрока возможность двигаться после посещения сундуков.
В отсутствие противника (я побоялся добавлять его во избежание крашей), целью игры было зачистить карту от монстров. Это было бы слишком просто сделать, если бы у монстров отсутствовала бы какая-либо прогрессия. Поэтому я добавил правило: при нажатии кнопки «Новый день», количество монстров во всех нейтральных лагерях увеличивается на 1. Это не сильно усложняет бой с простыми монстрами типа гоблинов, но вот чтобы победить драконов нужно будет постараться.
На удивление, игра получилась очень сложной, за первые несколько попыток мне её пройти не удалось – прогрессия монстров оказалась больше прогрессии игрока. Пришлось немного подправить баланс.
Что я получил в итоге?
Игру с механиками «Героев»: отстройка замка, бой с монстрами и перемещение по карте. Если честно, я правда не ожидал, что Qwen сможет объединить все эти механики в одной игре. В игре есть сундуки, крестьяне, ангелы и драконы. Итоговый код игры составил 1289 строчек. Для создания игры я не применял никаких знаний программирования. Все что я делал – это ставил задачи нейросети.
Что я потратил?
Относительно первых игр я потратил очень много времени на генерацию – около 10 часов. Код игры усложнился, а значит и время ответа ИИ увеличилось с 1-2 до 5-6 минут. Кроме этого, сама игра обладала более сложными механиками, а значит и мои ТЗ нейросети были гораздо более объемными.
Поиграть в «нейрогероев» вы можете тут
Не знаю, как долго она будет храниться на серверах, поэтому не могу ручаться за работоспособность ссылки для тех, кто увидит статью сильно позже её выхода.