Надеюсь моя небольшая история как разработчика откликнется у кого-то или кому-то поможет если решил/ли попробовать написать с нуля игру.
Немного о своей игре в качестве БАЗЫ.
В одиночку разрабатываю свою игру REBROOD - динамичный roguelite, где нужно защищать королеву и её детёнышей от волн роботов.
Главная особенность игры - яйца. С ними можно делать самые разные вещи:
В начале у королевы есть только бита, но постепенно приходится развивать своих Grublets, покупать новое оружие, открывать мутации - уникальные эффекты от действий игрока - и выбирать, как именно защищать себя и своих детёнышей.
Совмещать разработку с учёбой тяжело, особенно когда ты почти всё делаешь сам: код, дизайн, баланс, тестирование и публикацию. Но именно поэтому хочется наконец показать проект людям и получить нормальную обратную связь, а не только гадать, что работает, а что нет.
За первые три месяца игра начала получать первые добавления в список желаемого. Пока это не тысячи и не десятки тысяч, но для проекта, который делает один студент без большой аудитории, каждое добавление очень мотивирует. Для большой студии это, наверное, небольшая цифра, но для студента, который делает игру практически в одиночку, каждый такой человек очень мотивирует. Это уже не просто статистика, а понимание, что кому-то действительно стало интересно, чем закончится разработка. Ну и плюс по факту это все-таки дипломная работа в универе поэтому почему бы и нет ;)
Самое сложное оказалось не программирование
До начала работы мне казалось, что главная проблема - написать код. На практике код часто оказывается далеко не самым сложным.
Самая трудная часть - придумать рабочий игровой цикл.
Игровой цикл - это то, что игрок постоянно делает в игре:
двигается и избегает опасностей
собирает ресурсы
решает, что сделать с яйцом
развивает своих существ и оборону
переживает волну врагов
получает новые возможности
сталкивается с более серьёзной угрозой.
На бумаге это выглядит довольно просто. Но когда начинаешь собирать игру, появляется огромное количество вопросов:
зачем игроку собирать конкретный ресурс
почему ему выгоднее вылупить бойца, а не построить турель
насколько сильной должна быть бомба
как сделать ферму полезной, но не обязательной
сколько врагов должно появляться в каждой волне
когда игрок должен почувствовать рост своей силы
чем разные варианты развития должны отличаться друг от друга
что произойдёт, если игрок соберёт неудачную комбинацию мутаций.
Именно такие вещи в итоге определяют, будет ли игра интересной. Можно сделать красивую графику, добавить десятки врагов и написать тысячи строк кода, но если игровой цикл не работает, игроку всё равно будет скучно.
Дебаг - отдельный вид страдания
Вторая большая проблема - отладка.
Когда работаешь один, у тебя нет отдельного программиста, тестировщика, геймдизайнера и человека, который просто посмотрит на игру свежим взглядом. Ты сам придумал механику, сам считаешь её понятной, сам несколько часов в неё играешь - а потом выясняется, что новый игрок вообще не понимает, что нужно делать.
Особенно неприятны ошибки, которые возникают только при определённой комбинации действий:
яйцо одновременно пытается стать турелью и бойцом
враг застревает в объекте
ресурс появляется за пределами доступной зоны
улучшение начинает работать только после перезапуска
существо выбирает странную цель
игрок случайно ломает баланс одной комбинацией мутаций.
На первый взгляд такая ошибка может выглядеть мелочью. Но иногда ради исправления одной проблемы приходится перепроверять несколько связанных систем. В итоге пять минут работы превращаются в вечер поиска причины, которая оказалась в одной строчке кода.
Нейросети действительно стали полезнее
Отдельно хочу сказать про нейросети. Я не считаю их заменой разработчику, но за последнее время они действительно заметно поумнели и стали гораздо полезнее в работе.
разобрать архитектуру системы
найти возможную причину ошибки
предложить несколько вариантов реализации
объяснить незнакомый фрагмент кода
написать небольшой вспомогательный инструмент
придумать варианты игровых механик
проверить формулу баланса
составить список крайних случаев для тестирования.
Это особенно полезно, когда ты студент и у тебя нет команды из нескольких специалистов. Нейросеть может выступить в роли дополнительного разработчика, собеседника или генератора вариантов, когда ты застрял на одной проблеме.
Конечно, её ответы всё равно нужно проверять. Иногда нейросеть предлагает технически рабочее решение, которое совершенно не подходит конкретной игре. Она не знает весь проект так, как его знаю я, и не может самостоятельно принимать все геймдизайнерские решения (но для генерации идей т.к. в ней очень большое кол-во ИНФОРМАЦИИ она огого, правда новаторского здесь ничего не увидите скорее просто она вам подкинет что-то уже существующее а вы это преподнесете в новой обложке).
Но благодаря таким инструментам сейчас даже один студент может собрать вполне адекватный проект: с несколькими игровыми системами, рабочим интерфейсом, прототипом баланса и понятным игровым циклом. Это всё ещё будет инди-игра с ограниченными ресурсами, неидеальной графикой и компромиссами, но уже не обязательно эксперимент, собранный за один выходной.
Что я понял о разработке игр
Первое - полезно проработать игру в голове до начала активной разработки.
Не обязательно писать дизайн-документ на сто страниц. Но до создания десятков механик стоит ответить хотя бы на несколько вопросов:
что игрок делает большую часть времени;
почему это действие должно быть интересным;
как игрок понимает, что становится сильнее;
какие решения он принимает;
чем разные стратегии отличаются друг от друга;
что происходит в первые пять минут;
почему игроку хочется начать следующий забег.
Хорошо, когда ты открываешь пустой проект не с мыслью «сейчас что-нибудь придумаю», а уже понимаешь, какой опыт должен получить игрок. Тогда код становится не попыткой наугад собрать игру, а реализацией идеи, которую ты заранее обдумал.
Второе - не стоит сразу пытаться сделать всё.
Постоянно появляется желание добавить ещё одну систему, ещё один тип врагов, ещё десять улучшений. Но чем больше механик, тем больше связей между ними, а значит, тем больше способов всё сломать.
Лучше сначала сделать небольшой, но законченный игровой цикл, а уже потом постепенно его расширять.
Третье - нужно тестировать игру не только самому.
Разработчик быстро привыкает к собственной игре и начинает автоматически понимать то, что новый игрок увидеть не может. Поэтому даже короткая запись геймплея от другого человека иногда показывает больше проблем, чем несколько часов собственного тестирования.
Как я использую нейросети для визуальной части
Для визуальной части я тоже использую AI-инструменты - в основном для поиска идей, референсов и вариантов оформления.
Но здесь особенно важно правильно формулировать запрос. Промпт в духе:
«Сделай красиво, ярко и качественно»
почти бесполезен. Нейросети нужно объяснять, что именно должно быть на изображении и в каком визуальном языке.
жанр и настроение;
композицию;
точку обзора;
цветовую палитру;
стиль;
уровень детализации;
освещение;
материалы;
ограничения;
то, чего на изображении быть не должно.
Например, вместо «нарисуй монстра для игры» можно написать:
«Стилизованный игровой персонаж для яркого top-down roguelite, насекомо-подобное существо с крупным силуэтом и хорошо читаемыми конечностями, немного тревожный, но не хоррор, насыщенная оранжево-зелёная палитра, толстый контур, простые крупные формы, вид сверху под углом, мягкое студийное освещение, однотонный фон, без текста, без интерфейса и без мелких декоративных деталей».
Так результат получается намного более предсказуемым. Потом всё равно приходится выбирать подходящие варианты, исправлять их и приводить визуал к единому стилю.
Для концептов можно использовать и Nano Banana - не как кнопку «сделай всю игру за меня», а как инструмент для перебора идей. Например, сначала получить несколько вариантов существа, а потом попросить сохранить его силуэт и изменить только оружие, цвет или форму головы.
Чем точнее описаны исходный вариант и нужное изменение, тем полезнее результат. Промпт лучше строить не как «сделай хорошо», а как конкретное техническое задание художнику.
Что я хочу получить от этого поста
Я не жду, что после этой публикации игра внезапно станет известной. В первую очередь мне интересна обратная связь.
Понятно ли по описанию, что должен делать игрок?
Выглядит ли идея с яйцами достаточно интересной?
Что вы бы попробовали первым: бойцов, турели, ферму или бомбы?
Не слишком ли перегружена основная идея?
Что в таком проекте заставило бы вас добавить его в список желаемого?
Буду благодарен за честные комментарии - как положительные, так и критические. Особенно интересно услышать мнение людей, которые сами разрабатывают игры или регулярно играют в небольшие инди-проекты.