Как я создавал свою первую игру

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

Скриншот из Key Keeper, моей первой игры
Скриншот из Key Keeper, моей первой игры

Содержание

Пробуждение силы

Интерес к компьютерным играм я питаю с детства. В раннем возрасте мои требования к ним были закономерно не высоки, мне доставлял удовольствие сам процесс игры, и такие вещи как сюжет или конечная цель часто становились плодом моих домыслов. Этого я тогда, конечно, не мог и предположить, но игры располагали мое сознание к различного рода выдумкам. Я создавал абсурдные сюжеты, перечни игровых механик (сам того не понимая), рисовал в альбомах локации и уровни, просто ради удовольствия. Меня вполне устраивало, что все основное действо происходит в моей голове.

The Legend of Dragoon — одна из любимейших игр детства. Её сюжет можно пересказывать часами
The Legend of Dragoon — одна из любимейших игр детства. Её сюжет можно пересказывать часами

Когда я стал немного старше, этого стало мало — я начал искать программы, способные воплотить в жизнь мои замыслы, казавшиеся в тот момент грандиозно гениальными (юношеский максимализм, ничего не скажешь, его проявления дают о себе знать и поныне). Так я узнал о GameMaker и Construct, которые, забегая вперед, мне не дались.

На тот момент я ничего даже близко не слышал о простейших парадигмах программирования, и мой интерес ввиду безуспешных попыток реализовать свои идеи, сместился в сторону попыток создать мультфильм на Мультаторе и личный сайт в блокноте на чистом HTML по урокам какой-то бабушки с YouTube (это не шутка). Это были сиюминутные желания, которые, впрочем, дали мне небольшое представление о способах создания анимации и том, как устроены веб-сайты.

Со временем, мои амбиции утихли, в жизни появились другие интересы, желание создать свою игру мечты про «корованы» если не осталось в детстве, то ушло на n-ый план. Считаю, что немаловажную роль в этом сыграли и многопользовательские онлайн игры (известные шутеры, гриндилки и МОБ’ы), которые в принципе отнимали много времени и в большинстве своем мало располагали к вдумчивости и медитативности, которые я, сам того не осознавая, больше всего ценил в играх.

Исключением, пожалуй, был только Minecraft, дававший волю моему воображению и давший мне широкий инструментарий для создания всего, что было душе угодно. Неоспоримым плюсом, конечно, было и то, что я мог почувствовать себя «программистом», создавая свой пакетный файл запуска (батник), меняя количество выделенной оперативной памяти для домашнего сервера (круче навыка и быть не может), настраивая каждый плагин под свои нужды, редактируя YML-файлы конфигураций. Все это приносило море удовольствия, и, возможно, послужило отправной точкой для развития моих дальнейших интересов.

Прошли годы, а я до сих пор возвращаюсь к Minecraft. Правда теперь в целях прототипирования. У Кодзимы был лего, у меня — кубы
Прошли годы, а я до сих пор возвращаюсь к Minecraft. Правда теперь в целях прототипирования. У Кодзимы был лего, у меня — кубы

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

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

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

Возвращение джедая

Начать я планировал с чего-то простого и двухмерного – маленького рогалика с видом сверху, минимумом предметов и противников, без сюжета, музыки и логического финала, главным условием было наличие процедурной генерации окружения (явно не то, с чего стоит начинать человеку без опыта).

Таким образом, спустя почти 10 лет, я снова обратился к поискам подходящего ПО. Первоначально выбор пал на RPG Maker из-за большого сообщества и доступных функций «из коробки». Однако именно функции «из коробки» оттолкнули меня от использования данного движка, поскольку большую их часть необходимо было расширять и подгонять под себя используя бесчисленное количество плагинов, написанных на Javascript, которым я не владел. Заморачиваться с документацией каждого плагина, с их совместимостью мне, откровенно говоря, не хотелось, поэтому от RPG Maker я быстро отказался. Собственно, как и от Construct 2, который тоже в моих глазах имел ряд неприемлемых недостатков (интерфейс и необходимость использования плагинов для получения нужного функционала).

Мне казалось, что я снова вернулся в детство, когда подобная беспомощность вызывала во мне один единственный вопрос – зачем тебе оно нужно? «Нужно, да еще как», - бубнил я себе под нос. Перечисленные выше движки использовали Javascript, оттого в моей голове возникла идея найти другой движок, где я мог использовать Javascript для создания необходимой игровой логики и при этом не прибегать к помощи сторонних расширений, заодно используя теоретические знания, полученные в ходе изучения этого ЯП.

На сей раз я выбрал минималистичный Pixelbox.js, а затем и более известный и навороченный Ct.js. Как быстро стало понятно, мои попытки сделать что-то в этих редакторах успехом не увенчались – мои теоретические знания были настолько поверхностны, что применить их было практически невозможно (справедливости ради отмечу, что я без труда мог вывести надпись «Hello world»!).

Мне снова начало казаться, что я трачу время впустую, и что напрасно учу ЯП, который я стал использовать лишь из-за первого «полноценного» знакомства с некоторыми из популярных 2D движков. И именно в том момент я подумал, что я зря зациклился на 2D и Javascript.

Новая надежда

Мне чудом удалось вспомнить про RPG In A Box, движок, на который я наткнулся случайно в 2016 году, блуждая по интернету. Он был заточен преимущественно для создания небольших RPG (название говорит само за себя), для таких новичков, как я, не имеющих опыта в программировании и создании игр. В 2016 я мало что понял, пожалуй, лишь то, что уровни строились из плиток – тайлов, одни из них были проходимыми, другие нет, объектам на уровне можно было назначать какие-то скрипты взаимодействий. Повозившись с движком минут 20-30, я удалил его без зазрений совести. Но теперь я решил взглянуть на него по-новому.

Key Keeper
Key Keeper

Примерно в октябре 2021 я приобрел копию RPG In A Box в Steam и начал изучать, как этот движок работает. Сказать, что я был удивлен – ничего не сказать. После всех редакторов, что я использовал ранее, этот был самым удобным и наглядным, мне с самого начало стало понятно, что и где находится. Логика движка была достаточно проста. Большим плюсом являлось активное сообщество, которое могло ответить на любые вопросы и помочь в решении ошибок. В решении ошибок часто принимал активное участие и непосредственный разработчик (зовут Джастином, хороший парень).

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

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

Модели для тайлов, объектов и персонажей я создавал в MagicaVoxel и встроенном редакторе моделей движка (на данный момент RPGIAB может использовать только воксельные модели, фактически преобразуемые во всем знакомые меши с текстурами). Для создания части моделей я использовал атлас текстур, извлеченный из пакета ресурсов Dandelion для Minecraft (с позволения его текущего разработчика xerotrinity). Это помогло сэкономить много времени на дизайне окружения и выборе подходящей цветовой палитры игры.

Внутриигровой редактор моделей
Внутриигровой редактор моделей

Звуки я брал из открытых источников, распространяемых по бесплатным и общедоступным лицензиям. Музыку же к игре писала моя жена, используя бесплатную программу Bosca Ceoil.

Графический интерфейс я «рисовал» самостоятельно, используя возможности встроенного в движок редактора.

За программирование, естественно, отвечал тоже я, используя встроенный редактор кода. Вся игровая логика реализуется с помощью встроенного ЯП Bauxite, похожего на Lua и Python. Возможность визуального программирования позволила значительно сократить время изучения синтаксиса и в целом крайне удобна для создания простых скриптов.

Внутриигровой редактор кода
Внутриигровой редактор кода

Разработка заняла примерно 150 часов (если верить игровому счетчику Steam), от момента первого запуска движка до выгрузки готовой игры на Itch.io. Конечная версия игры состоит из 10 связанных уровней (можно называть их картами, 3 большие, представляющие собой открытую местность и 7 маленьких, представляющие собой помещения). В игре существует 1 игровой персонаж, 4 второстепенных персонажа, 2 вида противников, 2 босса, один из которых является опциональным.

Статья оказалась немного больше, чем первоначально планировалось, даже несмотря на то, что некоторые моменты были исключены в ходе редактуры (как я питчил идею проекта на онлайн-фестивале «Хочу в геймдев», проводимый ВШЭ, как участвовал в своем первом геймджеме на Itch.io).

Если у вас будут вопросы, исправления, пожалуйста, оставляйте их в комментариях. Спасибо за внимание!
Страница Key Keeper на Itch.io.

4848
18 комментариев

Когда релиз в Стим?

1
Ответить
Автор

Как бы я свое детище не любил, в Стиме, я считаю, такое размещать не стоит 😅. Если получится создать что-нибудь самобытное, что будет интересно не только мне, то тогда можно будет принимать такие решения

3
Ответить

я без обид, но разве местная рубрика gamedev равняется "gamedev - нубасы"? Если так пойдет, отписываться придется

1
Ответить

Комментарий недоступен

1
Ответить

Комментарий недоступен

1
Ответить
Автор

Bosca Ceoil крайне проста в использовании, и предназначена преимущественно для написания несложных зацикленных композиций. Узнал о ней случайно, когда смотрел видео одного из участников Ludum Dare.
С нейронками - интересно, думаю, в скором времени практически каждое прикладное ПО будет иметь их поддержку. Успехов Вам!

1
Ответить

Эх, а я хотел сделать jrpg в RPGmaker

1
Ответить