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

  1. Почему изучение программирования полезно для гейм-дизайнера?
  2. Какой игровой движок выбрать для изучения программирования?
  3. Как гейм-дизайнеру изучать программирование?

Преимущества

Начнем с преимуществ изучения программирования. Важно четко их понимать, прежде чем осваивать этот навык.

Вот шесть основных преимуществ изучения программирования.

  1. Создание портфолио. Составление портфолио для начинающего гейм-дизайнера может оказаться сложной задачей. Однако обладая базовыми навыками программирования, вы сможете разрабатывать небольшие игры, демонстрируя свои навыки и амбиции. Пусть на выходе получатся игры не AAA-качества, они все равно станут ценным дополнением к портфолио.
  2. Прокачивание навыков гейм-дизайна. Об этом я могу судить по своему опыту. После нескольких месяцев изучения программирования качество моей проектной документации значительно улучшилось. Это также помогло мне задуматься о низкоуровневом системном дизайне и о взаимодействии разных механик, что в конечном итоге привело к общему улучшению качества моей работы.
  3. Развитие системного мышления. Написание кода предполагает разбиение сложных задач на более мелкие и управляемые части. Этот процесс развивает навыки системного мышления, которые пригодятся, когда вы будете работать над сложными и запутанными игровыми системами и механиками.
  4. Совершенствование коммуникативных навыков. Программисты  —  это люди, с которыми гейм-дизайнеры общаются чаще всего. Знание основ написания кода поможет лучше донести свои идеи до софт-инженеров, понять, как они работают и какие хитрости использовать при преодолении технических ограничений.
  5. Ускоренное прототипирование. Знание программирования крайне важно для быстрого создания прототипов при разработке игр. Это ускоряет процесс и повышает качество прототипов. Небольшие прототипы, используемые для проверки определенной концепции, могут также быстро продемонстрировать предполагаемые результаты и дополнить документацию по дизайну игры.
  6. Помощь в разработке инди-игр. Создателям инди-игр требуются навыки программирования, поскольку они работают в небольших командах, а иногда и в одиночку. В этом случае умение программировать имеет решающее значение, поскольку каждый член команды наделен множеством обязанностей. И даже если в команде есть программист, может не хватить времени на реализацию или прототипирование некоторых механик.

Игровые движки

Обучаться программированию легче всего при изучении игровых движков.

Однако прежде чем рассказать о них подробно, уточним несколько моментов.

  1. Все движки одинаково плохи. Мы выбираем какой-то конкретный из них по принципу меньшего зла.
  2. Я сужу о плюсах и минусах каждого движка на основе личного мнения и собственного опыта.
  3. Я стараюсь быть максимально нейтральным. Тем не менее мои суждения могут расстроить поклонников того или иного игрового движка.

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

  1. Unreal Engine;
  2. Godot;
  3. Unity.

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

  • целей;
  • предпочтений;
  • имеющихся в наличии ресурсов.

Unreal

Это самый старый игровой движок в нашем списке. Он использовался многими мировыми компаниями, занимающимися гейм-дизайном. Если ваша цель  —  разработка игр класса ААА, то Unreal Engine  —  оптимальная отправная точка.

Плюсы:

  1. Система Blueprints. Unreal Engine обеспечит комфортный старт в изучении основ программирования. Его гораздо проще освоить, чем C++, C# и другие языки. Кроме того, Unreal Engine  —  это прекрасный инструмент для создания прототипов игр.
  2. Решения “из коробки”. Unreal снабжен коллекцией полезных решений прямо “из коробки”, таких как движение игрока, система повреждений и т. д. Для новичков реализация таких механик может стать огромной проблемой.
  3. Отлично подходит для 3D-игр. С самого начала Unreal Engine был ориентирован на 3D-игры, поэтому он снабжен достойным UX и набором инструментов для создания различных 3D-игр.

Минусы:

  1. Требовательность. Это чрезвычайно мощный движок, который используется во многих отраслях. Как следствие, он довольно “раздут” и требует мощного “железа” даже для работы над простыми проектами.
  2. Не подходит для 2D-игр. Несмотря на то что Unreal все еще можно использовать для разработки 2D-игр, он лишен многих полезных функций, которые есть у других движков. Таким образом, процесс создания 2D-игры с Unreal Engine может сравнительно быстро превратиться в кошмар.
  3. Для полного раскрытия потенциала движка требуется C++. Хотя система Blueprints позволяет создавать множество игр, она довольно ограничена по сравнению с C++. К счастью, знание C++ не является обязательным условием для работы с Unreal Engine, поэтому можно ограничиться Blueprints.

Godot

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

Плюсы:

  1. Отлично подходит для 2D-игр. Godot оснащен множеством полезных инструментов для разработки 2D-игр, таких как Y-сортировка, тайловые карты, 2D-освещение и т. д.
  2. GDscript. Это язык скриптинга, предназначенный исключительно для Godot. GDscirpt напоминает Python, поэтому изучить его намного легче, чем C# и C++.
  3. Сообщество. У всех движков в нашем списке есть отличные комьюнити. Но особенно мне нравится атмосфера в сообществе Godot. Это движок с открытым исходным кодом, и многие участники комьюнити Godot стремятся создавать качественные туториалы и помогать новичкам.

Минусы:

  1. Плохая производительность при работе над 3D-проектами. Несмотря на то что в Godot 4.0 поддержка 3D претерпела значительные улучшения, она все еще не так хороша, как в Unreal и Unity. С помощью Godot вполне можно создавать небольшие игры, но для правильной оптимизации потребуются довольно глубокие знания.
  2. Маленький магазин ассетов. В Godot есть магазин ассетов, но выбор в нем очень невелик. Он снабжен различными плагинами, которые облегчают разработчику жизнь, но в плане ассетов ситуация довольно плачевная. Бесплатные варианты можно найти на itch.io и knney.nl.
  3. Новизна. Godot  —  самый молодой движок в нашем списке. Хотя в течение последних нескольких лет в него внесли существенные улучшения, он все еще страдает от ошибок, “чудит” и обладает своеобразным поведением. Поэтому некоторые новички могут столкнуться при работе с Godot с определенными трудностями.

Unity

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

Плюсы:

  1. Хорошо подходит для 2D- и 3D-игр. Это “мастер на все руки”. Его можно использовать для разработки как 3D-, так и для 2D-игр. Таким образом, можно экспериментировать с различными типами игр, не переключаясь между разными движками.
  2. Огромный магазин ассетов. У Unity отличный магазин ассетов. Кроме собственно множества ассетов, там можно найти полезные плагины и системы для создания игр. Даже если вы изучаете программирование, это не значит, что нужно реализовывать все самостоятельно, особенно если речь идет об очень сложных системах.
  3. Наличие учебных материалов. Unity оснащен обширной библиотекой учебных материалов. Вы можете легко найти здесь туториалы по реализации систем и механик из различных игр, что поможет в обучении.

Минусы:

  1. C# сложен для начинающих. Хотя C# значительно проще в изучении, чем C++, он все равно может оказаться довольно сложным для абсолютных новичков и тех, кто раньше не работал ни с одним языком программирования или скриптинга.
  2. Pro-функции. Unity снабжен многими Pro-функциям (ECS, HDRP, URP и т. д.), которые позиционируются как обязательные. Однако проблема в том, что эти функции не годятся для новичков из-за их сложности и уровня знаний, необходимого для их правильного использования.
  3. Неясное направление развития. Unity является публичной компанией, которая в настоящее время в основном сосредоточена на удовлетворении потребностей своих акционеров. В результате этого направление развития движка неясно. Иногда создается впечатление, что он является своеобразным полуфабрикатом, поскольку некоторые присущие ему ошибки и неудобства уже долгое время никто не исправляет.

Как построить процесс обучения?

Есть три основных способа.

  1. Прохождение курсов.
  2. Изучение туториалов.
  3. Участие в геймджемах.

Прохождение курсов

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

Однако следует помнить, что курсы:

  • обычно знакомят с простыми подходами, что может потом вызвать трудности на практике;
  • могут показывать работу с сомнительной архитектурой.

Изучение туториалов

Туториалы отлично подходят для расширения знаний и поиска интересных решений. В сети можно найти множество полезных видео и статей о программировании различных систем и механик для разных игр. Тем не менее обучение по туториалам связано с определенными недостатками.

  1. Трудно найти комплексную серию взаимосвязанных туториалов.
  2. Многие туториалы содержат кодовые решения “с душком”.
  3. Можно наткнуться на туториалы, которые уже прилично устарели.

Участие в геймджемах

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

Геймджемы, длящиеся от 2 до 3 дней, устанавливают четкие сроки и задают темы для практики программирования и разработки игр. Я очень рекомендую участвовать в таких мероприятиях, поскольку результатом их посещения будет игра, которую вы сможете добавить в свое портфолио.

Рекомендации по обучению

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

Вот список моих рекомендаций, которые упростят изучение программирования.

  1. Сосредоточьтесь на одном движке. Не рекомендую изучать несколько движков одновременно, так как в этом случае вы точно не сможете сосредоточиться. Попробуйте создать хотя бы пару небольших игр на одном движке, прежде чем переходить на другой.
  2. Начните с простых игр. Нет ничего плохого в разработке простых игр, особенно когда вы только начинаете узнавать что-то совершенно новое. Чем меньше проект, тем быстрее вы сможете преодолеть распространенные ошибки и заблуждения. Для практики настоятельно рекомендую обратиться к следующим типам игр.
    1. Классические аркады. Большинство из них имеют довольно маленький размер, к тому же по ним есть обширная база туториалов.
    2. Гиперказуальные игры. Обычно такие игры предполагают короткий, но затягивающий игровой процесс с использованием только одной механики. Таким образом, вы можете разработать множество небольших, но цельных прототипов с различными механиками.
  3. Не бросайтесь с головой в освоение уникальных механик. Помните, что главная цель  —  изучение программирования, и лучше всего практиковаться на простых и распространенных механиках. Так называемые “уникальные” механики требуют интенсивного прототипирования и итераций дизайна, а это уже не относится к собственно изучению кода.
  4. Не зацикливайтесь на визуальном оформлении. На самом деле возможность покупать ассеты и легко добавлять их в свою игру  —  огромная проблема. В основном потому, что вы можете забыть о программировании и начать создавать красивые сцены и эффекты вместо того, чтобы сосредоточиться на практике программирования. Я рекомендую покупать простые пакеты для создания прототипов, поскольку использование простых примитивов может стать громоздким процессом. 
  5. Избегайте библиотек и плагинов. В самом начале обучения программированию я настоятельно рекомендую не использовать библиотеки и плагины, так как вместо развития навыков написания кода вы будете учиться использовать эти библиотеки и плагины. Конечно, это не значит, что от них нужно отказываться при разработке игр в дальнейшем.
  6. Изучите основы git. Освоение систем контроля версий является обязательной частью обучения программированию. Многим (и мне в том числе) это далось нелегко. Мы поступались прогрессом, копировали проекты и т. д. Git  —  самая популярная и распространенная система контроля версий, которую легко освоить и использовать для работы с небольшими прототипами.

Что дальше?

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

  1. программирование, не связанное с разработкой игр;
  2. принципы чистого кода (SOLID);
  3. паттерны программирования;
  4. базовые методы оптимизации.

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

Итоги

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

Помните: практика помогает достичь совершенства. Поэтому экспериментируйте и изучайте роль программирования в разработке игр.

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Artyom Volkov: Why it’s vital for game designers to learn programming

Предыдущая статьяБыстрый веб-скрейпинг с библиотекой Polars
Следующая статьяКак сделать интеллектуальное приложение вопросов и ответов базы знаний с GPT-3 и Ruby