В этой статье я хочу рассказать о связи программирования и гейм-дизайна, а также ответить на следующие вопросы:
- Почему изучение программирования полезно для гейм-дизайнера?
- Какой игровой движок выбрать для изучения программирования?
- Как гейм-дизайнеру изучать программирование?
Преимущества
Начнем с преимуществ изучения программирования. Важно четко их понимать, прежде чем осваивать этот навык.
Вот шесть основных преимуществ изучения программирования.
- Создание портфолио. Составление портфолио для начинающего гейм-дизайнера может оказаться сложной задачей. Однако обладая базовыми навыками программирования, вы сможете разрабатывать небольшие игры, демонстрируя свои навыки и амбиции. Пусть на выходе получатся игры не AAA-качества, они все равно станут ценным дополнением к портфолио.
- Прокачивание навыков гейм-дизайна. Об этом я могу судить по своему опыту. После нескольких месяцев изучения программирования качество моей проектной документации значительно улучшилось. Это также помогло мне задуматься о низкоуровневом системном дизайне и о взаимодействии разных механик, что в конечном итоге привело к общему улучшению качества моей работы.
- Развитие системного мышления. Написание кода предполагает разбиение сложных задач на более мелкие и управляемые части. Этот процесс развивает навыки системного мышления, которые пригодятся, когда вы будете работать над сложными и запутанными игровыми системами и механиками.
- Совершенствование коммуникативных навыков. Программисты — это люди, с которыми гейм-дизайнеры общаются чаще всего. Знание основ написания кода поможет лучше донести свои идеи до софт-инженеров, понять, как они работают и какие хитрости использовать при преодолении технических ограничений.
- Ускоренное прототипирование. Знание программирования крайне важно для быстрого создания прототипов при разработке игр. Это ускоряет процесс и повышает качество прототипов. Небольшие прототипы, используемые для проверки определенной концепции, могут также быстро продемонстрировать предполагаемые результаты и дополнить документацию по дизайну игры.
- Помощь в разработке инди-игр. Создателям инди-игр требуются навыки программирования, поскольку они работают в небольших командах, а иногда и в одиночку. В этом случае умение программировать имеет решающее значение, поскольку каждый член команды наделен множеством обязанностей. И даже если в команде есть программист, может не хватить времени на реализацию или прототипирование некоторых механик.
Игровые движки
Обучаться программированию легче всего при изучении игровых движков.
Однако прежде чем рассказать о них подробно, уточним несколько моментов.
- Все движки одинаково плохи. Мы выбираем какой-то конкретный из них по принципу меньшего зла.
- Я сужу о плюсах и минусах каждого движка на основе личного мнения и собственного опыта.
- Я стараюсь быть максимально нейтральным. Тем не менее мои суждения могут расстроить поклонников того или иного игрового движка.
Будучи гейм-дизайнером, мне приходилось работать со многими движками, но я рекомендую выбирать между следующими:
- Unreal Engine;
- Godot;
- Unity.
На мой взгляд, эти три движка являются оптимальными для человека, изучающего программирование и работающего в сфере разработки игр. Однако этот выбор не однозначен, так как он зависит от:
- целей;
- предпочтений;
- имеющихся в наличии ресурсов.
Unreal
Это самый старый игровой движок в нашем списке. Он использовался многими мировыми компаниями, занимающимися гейм-дизайном. Если ваша цель — разработка игр класса ААА, то Unreal Engine — оптимальная отправная точка.
Плюсы:
- Система Blueprints. Unreal Engine обеспечит комфортный старт в изучении основ программирования. Его гораздо проще освоить, чем C++, C# и другие языки. Кроме того, Unreal Engine — это прекрасный инструмент для создания прототипов игр.
- Решения “из коробки”. Unreal снабжен коллекцией полезных решений прямо “из коробки”, таких как движение игрока, система повреждений и т. д. Для новичков реализация таких механик может стать огромной проблемой.
- Отлично подходит для 3D-игр. С самого начала Unreal Engine был ориентирован на 3D-игры, поэтому он снабжен достойным UX и набором инструментов для создания различных 3D-игр.
Минусы:
- Требовательность. Это чрезвычайно мощный движок, который используется во многих отраслях. Как следствие, он довольно “раздут” и требует мощного “железа” даже для работы над простыми проектами.
- Не подходит для 2D-игр. Несмотря на то что Unreal все еще можно использовать для разработки 2D-игр, он лишен многих полезных функций, которые есть у других движков. Таким образом, процесс создания 2D-игры с Unreal Engine может сравнительно быстро превратиться в кошмар.
- Для полного раскрытия потенциала движка требуется C++. Хотя система Blueprints позволяет создавать множество игр, она довольно ограничена по сравнению с C++. К счастью, знание C++ не является обязательным условием для работы с Unreal Engine, поэтому можно ограничиться Blueprints.
Godot
Это относительно молодой игровой движок, который уверенно набирает популярность среди игроков-любителей и разработчиков инди-игр. Если ваша цель — создавать небольшие или инди-игры, то стоит выбрать Godot.
Плюсы:
- Отлично подходит для 2D-игр. Godot оснащен множеством полезных инструментов для разработки 2D-игр, таких как Y-сортировка, тайловые карты, 2D-освещение и т. д.
- GDscript. Это язык скриптинга, предназначенный исключительно для Godot. GDscirpt напоминает Python, поэтому изучить его намного легче, чем C# и C++.
- Сообщество. У всех движков в нашем списке есть отличные комьюнити. Но особенно мне нравится атмосфера в сообществе Godot. Это движок с открытым исходным кодом, и многие участники комьюнити Godot стремятся создавать качественные туториалы и помогать новичкам.
Минусы:
- Плохая производительность при работе над 3D-проектами. Несмотря на то что в Godot 4.0 поддержка 3D претерпела значительные улучшения, она все еще не так хороша, как в Unreal и Unity. С помощью Godot вполне можно создавать небольшие игры, но для правильной оптимизации потребуются довольно глубокие знания.
- Маленький магазин ассетов. В Godot есть магазин ассетов, но выбор в нем очень невелик. Он снабжен различными плагинами, которые облегчают разработчику жизнь, но в плане ассетов ситуация довольно плачевная. Бесплатные варианты можно найти на itch.io и knney.nl.
- Новизна. Godot — самый молодой движок в нашем списке. Хотя в течение последних нескольких лет в него внесли существенные улучшения, он все еще страдает от ошибок, “чудит” и обладает своеобразным поведением. Поэтому некоторые новички могут столкнуться при работе с Godot с определенными трудностями.
Unity
Самый популярный игровой движок в мире. Он довольно универсален и в основном используется разработчиками мобильных и инди-игр.
Плюсы:
- Хорошо подходит для 2D- и 3D-игр. Это “мастер на все руки”. Его можно использовать для разработки как 3D-, так и для 2D-игр. Таким образом, можно экспериментировать с различными типами игр, не переключаясь между разными движками.
- Огромный магазин ассетов. У Unity отличный магазин ассетов. Кроме собственно множества ассетов, там можно найти полезные плагины и системы для создания игр. Даже если вы изучаете программирование, это не значит, что нужно реализовывать все самостоятельно, особенно если речь идет об очень сложных системах.
- Наличие учебных материалов. Unity оснащен обширной библиотекой учебных материалов. Вы можете легко найти здесь туториалы по реализации систем и механик из различных игр, что поможет в обучении.
Минусы:
- C# сложен для начинающих. Хотя C# значительно проще в изучении, чем C++, он все равно может оказаться довольно сложным для абсолютных новичков и тех, кто раньше не работал ни с одним языком программирования или скриптинга.
- Pro-функции. Unity снабжен многими Pro-функциям (ECS, HDRP, URP и т. д.), которые позиционируются как обязательные. Однако проблема в том, что эти функции не годятся для новичков из-за их сложности и уровня знаний, необходимого для их правильного использования.
- Неясное направление развития. Unity является публичной компанией, которая в настоящее время в основном сосредоточена на удовлетворении потребностей своих акционеров. В результате этого направление развития движка неясно. Иногда создается впечатление, что он является своеобразным полуфабрикатом, поскольку некоторые присущие ему ошибки и неудобства уже долгое время никто не исправляет.
Как построить процесс обучения?
Есть три основных способа.
- Прохождение курсов.
- Изучение туториалов.
- Участие в геймджемах.
Прохождение курсов
Курсы — хорошая отправная точка для абсолютного новичка. Если вы найдете хороший курс, то сможете успешно начать карьеру в гейм-дизайне и написать код для своей первой игры. Основное преимущество такого способа обучения — это программа, которая охватывает основные аспекты программирования и различные особенности игровых движков.
Однако следует помнить, что курсы:
- обычно знакомят с простыми подходами, что может потом вызвать трудности на практике;
- могут показывать работу с сомнительной архитектурой.
Изучение туториалов
Туториалы отлично подходят для расширения знаний и поиска интересных решений. В сети можно найти множество полезных видео и статей о программировании различных систем и механик для разных игр. Тем не менее обучение по туториалам связано с определенными недостатками.
- Трудно найти комплексную серию взаимосвязанных туториалов.
- Многие туториалы содержат кодовые решения “с душком”.
- Можно наткнуться на туториалы, которые уже прилично устарели.
Участие в геймджемах
Личная практика очень важна для закрепления знаний, полученных на курсах и из туториалов, но при условии отсутствия дедлайна вы будете разрабатывать игру своей мечты до бесконечности.
Геймджемы, длящиеся от 2 до 3 дней, устанавливают четкие сроки и задают темы для практики программирования и разработки игр. Я очень рекомендую участвовать в таких мероприятиях, поскольку результатом их посещения будет игра, которую вы сможете добавить в свое портфолио.
Рекомендации по обучению
Изучение программирования на выбранном игровом движке — непростая задача. В этом деле есть подводные камни, которые могут усложнить процесс обучения и замедлить прогресс.
Вот список моих рекомендаций, которые упростят изучение программирования.
- Сосредоточьтесь на одном движке. Не рекомендую изучать несколько движков одновременно, так как в этом случае вы точно не сможете сосредоточиться. Попробуйте создать хотя бы пару небольших игр на одном движке, прежде чем переходить на другой.
- Начните с простых игр. Нет ничего плохого в разработке простых игр, особенно когда вы только начинаете узнавать что-то совершенно новое. Чем меньше проект, тем быстрее вы сможете преодолеть распространенные ошибки и заблуждения. Для практики настоятельно рекомендую обратиться к следующим типам игр.
1. Классические аркады. Большинство из них имеют довольно маленький размер, к тому же по ним есть обширная база туториалов.
2. Гиперказуальные игры. Обычно такие игры предполагают короткий, но затягивающий игровой процесс с использованием только одной механики. Таким образом, вы можете разработать множество небольших, но цельных прототипов с различными механиками. - Не бросайтесь с головой в освоение уникальных механик. Помните, что главная цель — изучение программирования, и лучше всего практиковаться на простых и распространенных механиках. Так называемые “уникальные” механики требуют интенсивного прототипирования и итераций дизайна, а это уже не относится к собственно изучению кода.
- Не зацикливайтесь на визуальном оформлении. На самом деле возможность покупать ассеты и легко добавлять их в свою игру — огромная проблема. В основном потому, что вы можете забыть о программировании и начать создавать красивые сцены и эффекты вместо того, чтобы сосредоточиться на практике программирования. Я рекомендую покупать простые пакеты для создания прототипов, поскольку использование простых примитивов может стать громоздким процессом.
- Избегайте библиотек и плагинов. В самом начале обучения программированию я настоятельно рекомендую не использовать библиотеки и плагины, так как вместо развития навыков написания кода вы будете учиться использовать эти библиотеки и плагины. Конечно, это не значит, что от них нужно отказываться при разработке игр в дальнейшем.
- Изучите основы git. Освоение систем контроля версий является обязательной частью обучения программированию. Многим (и мне в том числе) это далось нелегко. Мы поступались прогрессом, копировали проекты и т. д. Git — самая популярная и распространенная система контроля версий, которую легко освоить и использовать для работы с небольшими прототипами.
Что дальше?
Если после всех препятствий, с которыми вы столкнетесь при изучении основ программирования, вы захотите продолжать карьеру гейм-дизайнера, то вам нужно будет перейти на более серьезный уровень. Настоятельно рекомендую углубиться в такие темы, как:
- программирование, не связанное с разработкой игр;
- принципы чистого кода (SOLID);
- паттерны программирования;
- базовые методы оптимизации.
Эти сферы могут полностью изменить ваше понимание программирования и значительно повысить качество кода. Но следует соблюдать осторожность. Указанные темы сложны в освоении, и я не рекомендую изучать их, если вы абсолютный новичок.
Итоги
В заключение хочу сказать, что освоение программирования жизненно необходимо для разработчиков игр. Поначалу эта область может показаться пугающей, но в дальнейшем эти знания позволят эффективнее воплощать идеи в жизнь и взаимодействовать с программистами, а также пополнить портфолио.
Помните: практика помогает достичь совершенства. Поэтому экспериментируйте и изучайте роль программирования в разработке игр.
Читайте также:
- Лень писать игру на Rust одному? Позовите на помощь ChatGPT
- Как достичь уровня senior-разработчика
- 3 основных закона разработки ПО
Читайте нас в Telegram, VK и Дзен
Перевод статьи Artyom Volkov: Why it’s vital for game designers to learn programming