Хочу в геймдев! Основы игровой разработки для начинающих - Вячеслав Николаевич Уточкин
От текстовых адвенчур (Adventure Construction Set, 1984, или Graphic Adventure Creator, 1985, и др.) разработчики игр постепенно перешли к созданию шутеров. Именно после появления Doom (созданного на легендарной серии движков id Tech от id Software, развитие которой продолжалось более 25 лет – от id Tech 1 в Doom, 1993, до 7-й версии, использованной для Doom Eternal) термин «игровой движок» приобрел современное значение.
Теперь игровая логика и механики отошли на второй план; новые технологии ценились за честную картинку, которой раньше не было, физику и возможности рендера (визуализации). Удачное сочетание центральных компонентов игры (подсистем графики, звука, расчета столкновения объектов и других) позволило создавать новые проекты на базе готового игрового движка, что сильно сократило время разработки.
Позже появились движки Unreal Engine (1998, первая разработанная игра – шутер от первого лица Unreal) и CryEngine (2002, первоначально используемый для создания Far Cry), позволяющие воспроизводить топовую графику. Они были довольно сложными и стоили сотни тысяч долларов, так что пользоваться ими могли в основном только сотрудники крупных игровых компаний.
В то время самостоятельно издавать игры было очень тяжело: следовало договориться с магазинами о размещении дисков, а прилавок обычного магазина, в отличие, например, от Steam, физически не может вместить все выпускаемые игры. По этой же причине разрабатывать нишевые игры с небольшой аудиторией поклонников было сложно.
Только с появлением цифровой дистрибуции и развитием рынка мобильных игр разработчики получили возможность знакомить со своими играми широкую аудиторию. Теперь современные движки стали удобным инструментом создания самых разных игр. Сначала Unity, а позже CryEngine и Unreal Engine стали условно бесплатными, что сделало эти движки доступными практически для любых разработчиков.
Сегодня в базе игровой движок дает «строительные кубики», из которых собирается игра, а также большой выбор инструментов, облегчающих жизнь разработчика. Вам не придется изучать множество материалов по программированию, однако совсем без таких навыков гейм-дизайнеру будет непросто. Зная, как работать хотя бы с одним языком программирования, вы относительно легко сможете переключиться на другой. Если писать код вы не хотите, все равно вам придется составлять техническое задание своим программистам, а значит, вы должны хотя бы в общих чертах понимать, какие методы они могут использовать для решения различных задач. В общем, в этой области знания нужно будет подтянуть. Существует очень много вариантов для визуального программирования, облегчающих жизнь разработчика. Если сегодня вы можете работать только, например, с блупринтами[42] Unreal Engine или в GameMaker[43], это лучше, чем ничего.
ЧТО ДАЕТ ИГРОВОЙ ДВИЖОК
• Главное достоинство любого движка – эффективный рендеринг графики, позволяющий сократить время разработки.
• Движок задает базовую физику, например гравитацию, так что не нужно самому вспоминать законы Ньютона; у предметов уже есть параметры того, как они должны лежать, падать и т. п. Системы моделирования взаимодействия игровых объектов помогают правильно определить, попала ли пуля во врага, если это шутер, или как колеса автомобиля сцепляются с дорогой в гонках.
• Также движок часто дает сетевой протокол. Если мы делаем онлайн-игру, где один игрок стреляет в другого, информация об этом уйдет на сервер, где результат будет посчитан, обработан и отправлен игрокам.
• Движок дает систему искусственного интеллекта. Например, можно определить, как монстры будут перемещаться, бегать группами, атаковать игрока и т. д.
• Сегодня движки ценятся за кросс-платформенность, то есть за возможность разрабатывать с их помощью игры разных жанров для разных платформ (PC, PlayStation, Xbox, Nintendo Switch, iOS, Android пр.). Чем больше устройств смогут поддерживать вашу игру, тем больше людей будут иметь возможность ее оценить.
• Как правило, в движке есть средства для создания игрового контента. Вы найдете множество инструментов для моделлеров, аниматоров, художников по окружению, тестировщиков и других членов команды.
• Некоторые движки дают средства для разработки игровой логики. Если вы хотите, чтобы, открывая какую-то дверь, игрок сталкивался с монстром, достаточно прицепить к двери триггер события «открытие», а к монстру – действие «появиться». Гейм-дизайнер без специальных знаний программирования с помощью понятного интерфейса сможет собрать игровую логику. Хотя есть движки, требующие написания кода для добавления таких триггеров.
• Часто движки дают средства оптимизации и отладки, возможность проверить проект на ошибки и увидеть, на какие части игровой логики или рендеринга тратится больше всего времени.
• Важное преимущество готовых движков – комьюнити. Вы всегда сможете узнать у техподдержки или у других пользователей, как сделать то, что вам необходимо. Чем больше комьюнити, тем проще найти готовое решение.
• Отдельно нужно отметить наличие у движков магазинов с платными и бесплатными готовыми решениями: системой оплаты, библиотеками для работы с физикой и др. Например, Unreal Engine часто дает пользователям бесплатные функции, будь то система красивых аутлайнов[44], физика пробивания пулей различных материалов или генерация правдоподобного леса. Разработчики Unity, имея примеры готовых игр в магазине, выкладывают новые наработки под свободными лицензиями.
КАК ВЫБРАТЬ ИГРОВОЙ ДВИЖОК
Выбор игрового движка – это принципиальное техническое решение, его смена в процессе разработки практически невозможна. Обычно решиться на такой радикальный шаг может подтолкнуть только какая-то глобальная катастрофа, например понимание, что изначально принято неверное решение о выборе движка и игру просто не получится доделать на текущем. Переделывать придется очень многое или почти все, поэтому стоит со всей ответственностью подойти к этому вопросу.
Конечно, обладая навыками программирования, вы можете сами написать код движка. Крупные компании, работающие над экспериментальными решениями и имеющие специалистов должного уровня, нередко выбирают такой путь. Но нужно помнить о том, что это очень дорого. Многие движки, особенно создаваемые для сложных комплексных игр, разрабатывались с бюджетами в 10–20 миллионов долларов, то есть стоили как полноценная ААА-игра[45]. Разработчики новых движков могут рассматривать их как вложение в будущее – для новых игр по франшизе или для продажи.
Для небольших компаний или инди-команд решение самостоятельно создавать движок не имеет экономических преимуществ, но может быть оправданно в случае необходимости каких-то необычных решений, которые невозможно получить, используя готовый вариант. Это могут быть вещи, связанные, например, с воксельной графикой, где важно передать разрушаемость предметов. Для игр типа Minecraft характерно использование собственных движков, так как графика там достаточно примитивная, но предметы должны уметь правильно разрушаться. Или же вы хотите сделать игру с необычным базовым типом геймплея: например, головоломку, где нужно на призмах раскладывать световые лучи в радугу. Если готовые движки не смогут предложить вам готовых решений для передачи оптики, придется создавать эту часть игры своими силами.
Еще один вариант – не делать движок с нуля, а взять наработки опенсорсных (от англ.