Как создать собственную игру

Создать собственную игру — голубая мечта многих геймеров. Мы поговорили с Ольгой Максименковой, кандидатом технических наук, научным сотрудником международной лаборатории интеллектуальных систем и структурного анализа ФКН НИУ ВШЭ, руководителем лаборатории геймдев ITHub College о процессе создания игр и о том как не потеряться, отправившись в это путешествие в одиночестве.
Как создать собственную игру

Йеспер Йуль, датский гейм-дизайнер, педагог и теоретик в области изучения видеоигр:

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

Создание игры — это междисциплинарная задача, и если игра создается в одиночестве, то «копать» единолично придется в нескольких направлениях — нужно будет заниматься сценаристикой, созданием и гармонизацией игрового мира, уровнями, персонажами, музыкой, нарративом и геймдизайном. Обычно человек, который берётся за создание игры, уже видит себя в мире геймдева, но не всегда знает, какой ролью в разработке хотел бы или сможет заниматься. Вполне естественно, что и представление о том, чему учиться, не сформировано — это знание появляется именно после создания первых игр.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Придется начать с банальности: очень важно придерживаться плана, который поможет сделать процесс, как минимум, конечным, с конкретным результатом. Также стоит учитывать, что коммерческий успех с первой игрой может и не прийти, но это не означает, что за неё не стоит браться — через опыт мы учимся удивительно эффективно.

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

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

Уже понятно, что процессы геймдизайна пройдут красной нитью через всю дальнейшую работу. Они начнутся с проработки концепции и игры, а также ее закрепления в геймдизайн-документах (ГДД). Наборы документов могут разниться, но цель у них общая: фиксация идей и проектных решений, а также упорядочение рабочих процессов. И независимый инди-разработчик, и большая команда в идеале работают, придерживаясь ГДД, главная цель которого — помочь привести создание игры к логическому завершению — релизу.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

И идея, и принятые при работе с ней решения повлияют на технологии реализации. Видеоигры — это очень сложные системы, и слаженная работа их подсистем очень важна. Эту слаженность помогает поддержать специальное программное обеспечение — игровой движок. Начинающий разработчик может выбрать как «раскидистый» промышленный движок, такой как Unreal Engine или Unity, так и считающийся более простым и безумно популярный среди начинающих и соло-разработчиков Game Maker. Конечно, это не исчерпывающий список — даже на странице движков в Википедии их несколько десятков, а сделать хорошо или плохо можно на любом движке. Здесь успех скорее определяется усилиями и желанием развиваться, но, в любом случае, игроделу-одиночке учиться программировать придется.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Теоретически, можно сделать игру вообще без движка (нет, пожалуйста, не делайте так с первой игрой!), но тогда многие задачи интеграции и синхронизации подсистем придётся проектировать и реализовывать самостоятельно. Рассинхрон в играх раздражает, чаще всего из-за него нарушается иммерсивность, или погружение в игровой мир, а за ней — аддиктивность, или «залипание», и многое другое.

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

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

На этом чудеса процедурной генерации не заканчиваются: генерировать можно персонажей, уровни, лор, нарратив, целые игровые миры. Разумеется, направление процедурной генерации тоже может увлечь начинающего, но, перед тем как получится написать свой генератор чего-либо, потребуются серьёзные вложения в знания математики и алгоритмов. Математика для компьютерных игр разнообразна, прекрасна и нужна даже в самых простых играх: например, «кристаллики» хранят в себе решение графовой задачи.

И, конечно, управление «врагами» — это тоже математика. Если мы хотим, чтобы в игре были «умные враги» (или не слишком умные), то понадобится хоть и очень простой, но все-таки искусственный интеллект. Об этом любят рассуждать на сайтах, форумах и конференциях, но лично мне очень нравится хоть и старенькая, но переведённая на русский язык книга Алекса Шампандара «Искусственный интеллект в компьютерных играх. Как обучить виртуальные персонажи реагировать на внешние воздействия». Она, к слову, будет интересна и будущим специалистам по программной инженерии.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Что же касается игр, то некоторые движки позволяют сделать ИИ «из коробки». С одной стороны это удобно: можно, к примеру, применить дерево поведения без глубокого понимания его работы, но есть и обратная сторона — без знаний алгоритмов и навыков программирования при использовании готового решения есть шанс допустить ошибку и никогда ее не найти. В любом случае искусственный интеллект в играх тема интересная, обсуждаемая и перспективная.

Раз уж в нашей маленькой истории появились враги, то они могут напасть на нашего персонажа. Здесь мы подходим к вопросу взаимодействия объектов в игровых мирах, а от математики плавно переходим к физике (точнее к некоторым разделам математической физики и вычислительной геометрии), потому что взаимодействия предметов друг с другом — это физические взаимодействия, которые подчиняются некоторым гео- (или стерео-) метрическим правилам. Если мы делаем игру на движке, то частично за физическим взаимодействием следят его подсистемы, а мы настраиваем все так, чтобы взаимодействие происходило корректно и реалистично — или, наоборот, нереалистично, если это требуется по сценарию игры.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

В завершении добавлю: не бойтесь экспериментировать и отказаться от проекта или неудачных проектных решений — как говорится, better done than perfect. И, конечно, социализируйтесь: ходите на игровые конференции, шоукейсы и геймджемы (уверена, что вы успеете подготовиться к Global Game Jam 2022 в январе следующего года), смотрите на работы других и показывайте свои результаты — все мы когда-то начинали.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Советы

  • Научитесь программировать и разбираться в коде, иначе не получится исправить свои же ошибки.
  • Хочешь что-то добавить — ответь себе на вопрос, зачем и какую функцию будет нести это добавление, что это даст истории и игровому процессу.
  • Не надо бояться отказаться от неудачных решений и даже проектов.
  • В проектировании игровых миров очень важен широкий кругозор: он поможет объяснить разные явления в лоре (не все же объяснять).
  • Полезно ходить на отраслевые конференции и знакомиться с единомышленниками. Зачастую командная работа помогает откинуть неудачные идеи еще до их реализации. Доступные кoнференции — devgamm, whitenights (WN).
  • Английский язык. На русском языке, конечно, появляются учебные материалы, но пока с серьёзным отставанием.
  • Геймджемы — это полезно. Это ограниченное во времени соревнование, где желающие пробуют свои силы в создании игр. Сделать качественную игру за несколько суток вряд ли получится, но пройти через все стадии ее разработки и понять их — вполне. Примеры: Global Game Jam, Ludum Dare.