Павел Ткаченко

Как не нужно начинать делать инди компьютерные игры

gamedevunity

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

Shoot.Pray.Run

Начало

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

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

В это время я не знал, что такое переменные, циклы и функции. Сидел часами и на интуитивном уровне пытался разобраться во всем инструментарии. В итоге даже получилось сделать аналог Diablo прямо на движке WarCraft, в который потом играли мои друзья. Время шло, я осваивал 3D Studio Max, Photoshop, Flash, но серьезно разработкой игр не занимался. У меня появилась отличная книга по программированию "Как программировать на C++" за авторством Дейтела, где я уже с головой нырнул в мир разработки компьютерных программ. Изучил C++, проглотил несколько книг по Java, освоил верстку и javascript. В итоге, закончив школу и имея базовые навыки программирования, я все же пошел в институт по совсем другой специальности и программирование для меня осталось лишь хобби.

Второй заход

В индустрию разработки программного обеспечения я вернулся уже на втором-третьем курсе, это был активный рост скоростей интернета, появлялись разные стартапы. Имея хорошее базовое понимание того, как писать код, но не имея понимания как из этого слепить продукт, я понял, что мне нужен ментор. И мне очень повезло, я встретил человека который взял меня под свое крыло, а на основе этого менторства основал школу программирования Thinknetica. Кстати, их курсы есть на нашем сайте! Я освоил Ruby и успешно работал в направлении веб-разработки в течение 5 лет. В конечном итоге появилось желание опять окунуться в мир компьютерных игр, появились отличные инструменты, такие как Unity, Unreal Engine, Godot. Дополнительно мотивировал успешный кейс моих друзей, Katata Games, семейной студии разработки, которые выпустили мобильную игру Top Run, пробившей 100 000 скачиваний в AppStore и Play Market.

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

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

Это я хотел объединить в одну игру

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

Скетчи Главного Героя, Скелета и Баньши

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

Фрагмент игры

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

Объемный свет и вода

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

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

Расслабились, не пришлось спускаться в подземелье :)

Сейчас

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

Выученные уроки:

  1. Не бросайте основную работу, если еще нет готового игрового проекта
  2. Не распыляйтесь. Игра должна быть интересна даже если собрана из квадратов и других примитивов. Сложности и красивости можно всегда добавить, а наоборот все будет сильно сложнее.
  3. Создайте полностью рабочий продукт, пусть маленький, пусть кривой и косой. Умение завершать проект – самое полезное в разработке игр, да и в любом другом деле.
Павел Ткаченко
Веб-разработчик в Скиллотеке. Программирует с детства, без ума от Ruby. В свободное время занимается созданием инди-игр на Unity.

Курсы к статье

Курс начался
Подробнее
Курс начался
Подробнее
Курс начался
Подробнее
XYZ School
Основы иллюстрации
109.250
65.600 руб за курс
Курс начался
Подробнее