Реквием по игре

Мертворожденный Shoot.Pray.Run
Мертворожденный Shoot.Pray.Run

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

Начало

Как и у большинства программистов, моя страсть к программированию началась с компьюетрных игр. Комп у меня появился вроде в 1998 году, я тогда был третьем классе. Помню первые впечатления от предустановленных на нем Carmageddon 2, Broken Sword и чуть позже Half-Life. Наверное такие эмоции сейчас у меня бы вызвала только высадка людей на Марс. Сначала я просто играл, но со временем возникло желание узнать, как это работает.

Моё знакомство с разработкой игр началось с WarCraft, который вышел в 2002 году. Пройдя кампанию и сыграв в мультиплеер с друзьями (у нас была локальная сеть между домами), я нашел значок "World Editor" в файлах игры. Оказалось, что это редактор карт, и самое главное — у него есть собственный язык программирования JASS, с помощью которого можно сделать очень многое. И я клепал сценарии, которые тестировал на ребятах "с района".

Warcraft 3 World Editor прост, но могуч!
Warcraft 3 World Editor прост, но могуч!

В то время я не знал, что такое переменные, циклы и функции. Я часами сидел перед монитором и на интуитивном уровне пытался разобраться во всем этом. В итоге мне даже удалось сделать аналог Diablo на движке WarCraft, в который потом играли мои друзья. Проходило время, я освоил 3D Studio Max, Photoshop, Flash, но игры всерьез не разрабатывал. Кто-то толковый посоветовал мне книгу "Как программировать на C++" от Дейтела, где я с головой окунулся в мир плюсов. Все встало по полочкам, радости не было предела. После C++ я закопался по уши Java, освоил HTML/CSS и javascript, делал какие-то сайты фана ради. Но, несмотря на увлечение программированием, после окончания школы я пошел учиться на совершенно другую специальность, а программирование осталось для меня просто хобби (в 2006 году в Казахстане не было хороших программ по Computer Science в ВУЗах).

Возврат в IT

Я вернулся в индустрию разработки на втором или третьем курсе университета, это было время активного роста скоростей Интернета, начали появляться различные стартапы. Имея хорошее базовое понимание того, как писать код, но не имея понимания того, как сделать "Продукт", я понял, что мне нужен наставник. И мне очень повезло, я встретил человека, который взял меня под свое крыло. Я быстро променял C-подобные языки на Ruby и успешно ворвался в мир веба. Прошло несколько лет, было сделано много проектов от CRM/ERP систем на заказ до всяких стартапов, галера тоже была. Но идея-фикс делать игры никуда не пропала. К этому моменту появились отличные инструменты, такие как Unity и Unreal Engine. Вдохновил меня и успешный пример моих друзей, семейной студии разработки, выпустивших небольшую мобильную игру, которая достигла 100 000 скачиваний в AppStore и Play Market.

И я начал пилить, пилить свою первую игру. Я никогда не играл в мобильные игры, меня всегда интересовали ПК с их хардкорными и многогранными играми. И я решил, что раз уж я хорошо знаю рынок ПК-игр, то мне не составит труда сделать игру именно для ПК.

В голове родилась идея игры, которую я назвал Shoot.Pray.Run., топ-даун экшен-рпг про боевого монаха, который спускается в ад, чтобы победить главное зло, попутно кроша врагов на своем пути. Большое впечатление на меня произвел фильм "Пастырь" со своей стилистикой, поэтому я взял это за основу. Система подземелий перекочевала из Diablo 1, где нужно постоянно спускаться все ниже и ниже в ад, а игровую механику скомуниздил из "Enter the Gungeon". Все было просто в моей голове, я потихоньку улучшал навыки в пиксель-арте, также нашел хорошего художника для персонажей (все в игре кроме персонажей рисовал сам).

Разработка

Unity мне зашел почти сразу, я быстро с ним подружился. Код лился рекой, а игра начала принимать форму. И тут я совершил ошибку, я решил уйти с основной работы, чтобы делать игру с утра до вечера, каждый день. Если у вас нет опыта в разработке игр, ни в коем случае не делайте этого, в этой индустрии слишком много подводных камней. Как только я начал работать над игрой полный рабочий день, мне пришла мысль, что я могу сделать больше, чем планировал. И здесь я снова попал в ловушку большого проекта, он и так был немаленьким, а я начал накручивать туда множество разных механик.

Свет и самопальный LVL-editor

Я сделал красивый свет, потом перешел к 3D с имитацией 2D. Я хотел сохранить пиксель-арт, но придать ему глубину. Это потребовало переписать камеру так, чтобы она не искажала текстуры стен и пола под углом 45%, а оставляла их нарисованными в pixel-perfect точности. Я углубился в шейдеры, начал расширять игру этими красотами, создал воду, пар, эффекты тепла и т.д. Вишенкой на торте стала система разрушаемости объектов. Я хотел, чтобы в игре было разрушаемо все. Это не только усложняло код и арт, но и в будущем привело к проблемам с геймдизайном. В результате получился достаточно большой монстр, проект рос все больше и больше, я уже потратил несколько месяцев, но в игру по-прежнему нельзя было играть. Это было просто собрание всяких технических вау-эффектов, но самого геймплея не было.

Для каждого оружия планировался свой HUD
Какие-то старые эксперименты с разрушаемостью

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

Боевые монахи на чиле

Мой финансовый запас обеспечивал мне год работы, но я понимал, что с таким темпом я буду делать игру пару лет, не меньше (и это был оптимистичный прогноз). Разработка больше не приносила никакого удовольствия и удовлетворения. Только страх, что останусь ни с чем. У меня хватило силы воли остановить разработку игры и вернуться в веб. Но только на время! Игра Shoot.Pray.Run была выкинута в мусорку, но был приобретен полезный опыт.

Проектирование с ограничениями

Очень полезной оказалось видео по игре Into The Breach, ключевой мыслью которой была тема "Designing with Constraints". Советую всем к внимательному просмотру. С этой философией намного проще держать проект "в узде" и довести начатое до конца. В своей следующей игре я рьяно следовал этому подходу, что дало мне возможность закончить игру.

MVP на примитивах

Лучший способ создать жизнеспособную игру: сделать ее на примитивах. По экрану могут перемещаться кубики и треугольники, простейшие бесплатные ассеты. Добейтесь, чтобы игра была интересна в таком виде. Это станет идеальным MVP. А вот если игра с примитивами кажется скучной, то даже добавив красивой обертки, ситуацию вряд-ли исправишь.

Итог

Сейчас, после еще 3-х лет в вебе, я снова вернулся в геймдев и скоро выходит моя первая игра в Steam под названием Chronobabes. На этот раз полностью завершена. Я успешно довел проект до конца, получил положительные отзывы от кураторов, хорошие метрики по демо, но наступил уже на другие грабли. А это уже совсем другая история (если интересно, буду рад рассказать).

10
20 комментариев