Как веб-разработчикам зайти в геймдев и стоит ли оно того
Этот пост написан пользователем Sports.ru, начать писать может каждый болельщик (сделать это можно здесь).
Мир веба и геймдева сближается с каждым годом. Но не все программисты понимают, какие трудности возникают при создании игры, по сравнению с приложениями и сайтами.
Илья Богин, эксперт программы ускоренного онлайн-бакалавриата «Фронтенд и мобильная разработка» от Яндекс Практикума и ИТМО, руководитель Школы Мобильной Разработки Яндекса, расскажет, насколько сложно веб-разработчику адаптироваться в видеоигровой среде. А также эксперт раскроет мифы о работе в геймдев-индустрии и объяснит, при чем тут «Скибиди-туалеты».
Сближение видеоигр и веб-пространства
Раньше миры веб-разработки и видеоигр почти не пересекались. Изначально игры и игровые движки разрабатывались для десктопных компьютеров и консолей. А в качестве языка программирования использовался С++ – один из самых далеких языков программирования для веб-разработчика.
В какой-то момент игры стали выходить в браузерах на платформе Adobe Flash. Благодаря этой платформе в браузерах поддерживались плагины, через которые можно было запускать небольшие приложения и воспроизводить незамысловатую Flash-анимацию. В 2000 году Flash-игры покорили интернет-пространство благодаря сайту NewGrounds, который позволял размещать игры и анимацию любым пользователям. У Flash даже появился собственный язык для программирования – ActionScript.
Но всем этим проектам было далеко до уровня, который мог предложить C++, ведь разница в производительности была слишком значительной. Но в последнее время веб-пространство и видеоигровой мир сблизились. Это происходит, потому что браузеры начинают предоставлять более низкоуровневый доступ к аппаратным возможностям, в том числе и к графическому процессору (GPU). Важную роль здесь сыграл выход WebGL – кроссплатформенного API для 3D-графики в браузере. У разработчиков появилось больше возможностей для создания игровых проектов в веб-пространстве. Например, можно использовать механизм шейдеров. Так в браузере можно создать эффект океана с фотореалистичной картинкой.
А в 2022 году появился новый инструмент WebAssembly. Это среда, которая дает возможность написать код на большом количестве языков программирования, в том числе С++ с последующей трансляцией в байт-код, предназначенный для исполнения в браузере. Это позволило использовать или адаптировать существующие игровые движки в веб-пространстве. А значит, сейчас есть возможность запустить игру на существующем движке прямо в браузере.
Сейчас браузер – это полноценная среда для создания видеоигр, которая дает доступ к GPU на низком уровне, почти сопоставимым с тем, что есть в нативных приложениях.
Дружелюбны ли игровые движки к веб-разработчикам?
Игровые движки можно разделить на внутренние проприетарные и открытые. Проприетарные движки создают компании только для своего внутреннего пользования. А открытые – это те, что разрабатываются в open source или closed source режиме, но к которым предоставлен доступ другим геймдев-студиям.
Здесь веб-разработчиков ждет приятная новость, потому что большинство современных открытых движков поддерживают Web как среду для создания игр. Исключение – Unreal, у которого очень «тяжелый» движок для работы в браузере.
Соответственно, современное игровое ПО, работающее в Web-среде, открывает большой потенциал для веб-программиста. Например, можно сделать игру на Cocos Creator и собрать отдельные билды для консолей, десктопов и Web.
Именно Сocos Creator ближе всего для веб-разработчика, который хочет работать в геймдеве. Дело в том, что движок в качестве одного из языков программирования поддерживает TypeScript. Почти для каждого веб-разработчика этот язык знаком, он используется в огромном количестве проектов, сред и фреймворков. Поэтому если вы владеете TypeScript, то можете уже сейчас попробовать сделать игру в среде Сocos Creator.
Подходы в геймдеве и веб-разработке. Что должен знать начинающий веб-программист?
Подходы в геймдеве во многом отличаются от того, к чему привык веб-разработчик. Начнем с того, что один из главных инструментов веб-программиста – DOM-дерево. Это модель всех элементов на экране, по которой можно перемещаться, выполнять запросы на поиск узлов и так далее. Это сложная и очень разветвленная структура.
Если говорить о создании игр, даже тех, что адаптированы в Web, то в большинстве случаев единственный элемент DOM-дерева, который вы встретите, будет Canvas (HTML). Практически все процессы происходят внутри Canvas – на уровне движка и отрисовки на уровне OpenGL инструкций. Несмотря на то, что игра создается для Web, она не похожа на проекты, привычные для этой среды. Поэтому разработка игры в этом пространстве очень близка к тому, что происходит в геймдеве. Вам все равно придется оперировать 3D-объектами, камерой и другими инструментами. Например, вы не создадите хорошую игру 3D-игру, если не будете ориентироваться в освещении, материалах и тенях. Разработка видеоигр, даже если говорить про Web, это отдельный мир, который требует погружения.
При разработке игр стоит учитывать еще и такой фактор, как производительность. У большинства веб-проектов вполне удовлетворительная производительность, если не допускать грубых ошибок в проектировании. Но в мире игр это важнейший фактор. Разработчики могут сделать объективно качественный проект, но проигнорировать оптимизацию, потеряв большое количество пользователей. Вспомнить тот же Batman Arkham Knight, который отлично работал на консолях, но выдавал до 5 FPS на PC. Поэтому перед разработчиками игр стоит серьезная задача – оптимизировать игру так, чтобы у нее была хорошая визуальная составляющая и стабильная производительность под разные устройства. Имейте в виду, что даже самые крупные игроки в геймдеве порой не справляются с этим вопросом.
Мифы о работе в геймдеве
Многие хотят работать в геймдеве, ведь создание игры – мечта, сопряженная с творческим процессом. Это действительно может быть так, но мир разработки игр – невероятно сложный и неблагодарный. Во многом потому что у игр огромный шанс оказаться провальными. Например, студия Rovio, создавшая популярную медиафраншизу Angry Birds, до своего главного хита выпустила около 50 игр – ни одна из них не стала успешной. К сожалению, создать игровой хит очень тяжело, и к этому нужно быть морально готовым.
Веб-разработчику лучше воспринимать игру как стартап: в редком случае она может «выстрелить», но лучше готовиться к худшему. Это сильное психологическое давление, поэтому не все выдерживают работу в такой среде.
Единого рецепта успешной игры нет. Вы можете взять все составляющие хита и пересобрать их, но не факт, что у вас получится хит. Можно сказать, что в играх есть некоторая магия, которая делает их успешными. Это такая синергия геймплея, визуального стиля, звукового дизайна и сюжета. Однако вы можете изучить некоторые эффективные элементы для вовлечения пользователей. Они не гарантируют популярность для вашей игры, но смогут повысить шансы на успех проекта. Например, можете ознакомиться с текстом от Ахмеда Салама, UI-дизайнера Horizon Zero Dawn, который рассказывает о четырех видах вовлеченности в видеоигру.
Еще один важный фактор, который стоит учитывать веб-специалистам, связан с длительностью разработки. Производство игр может занимать несколько лет, а то и все 5-6. И чем длиннее проект, тем больше вероятность не попасть в сроки. Это важно, потому что игры нужно выпускать в определенные сезоны, чтобы собрать максимально широкую аудиторию. Такой тип производства часто приводит к кранчам – постоянным переработкам, из-за которых приходится практически жить в офисе.
Часто полагают, что геймдев более креативная среда, чем веб-разработка, но и здесь все не так просто. Вы действительно можете создавать что-то визуально интересное, но придется много работать с игровой логикой, прописыванием систем и отрисовкой тысяч графических элементов так, чтобы они работали друг с другом. Поэтому и здесь вас ждет много рутинной работы.
Преимущества веб-игр
У веб-разработки видеоигр есть есть преимущества, которых лишены игры на PC, консолях и мобильных устройствах. В первую очередь речь идет о скорости разработки. Игры на вебе создаются, как правило, казуальными – в них не так много контента и ограниченный геймплей. Инструменты для создания веб-игры достаточно автоматизированы. Поэтому такой проект можно создать за месяц или даже за 1-2 недели.
Быстрая скорость разработки позволяет веб-разработчикам оперативно реагировать на новые тренды. Крупные компании создают игры несколько лет, поэтому они вряд ли смогут выпустить игру, которая будет на волне сиюминутного хайпа. А веб-игры предполагают короткий геймплей и небольшие сессии, поэтому они могут прекрасно справляться с подобной задачей. Сейчас такая возможность особенно актуальна, ведь сейчас тренды приходят так же быстро, как уходят.
Самый яркий пример – «Скибиди туалеты». Этот странный мем понимает только поколение Альфа, которым сейчас 9-10 лет. Фактически это их первый глобальный заход на просторы интернета. Однако логика в этом тренде все же есть. Любое поколение пытается отстроиться от предыдущего, чтобы быть непохожим на них. Поэтому поколение Альфа породило новый тренд, который не поймут даже зумеры. И в будущем таких странных тенденций будет все больше.
У веб-разработчиков есть все возможности, чтобы извлечь максимальную выгоду из подобных трендов. Быстро сделанная игра на Web может жить пару месяцев, но за этот короткий промежуток времени она может заработать неплохие деньги и грамотно сыграть на инфоповоде.
Веб-разработчик сейчас имеет все доступные возможности, чтобы начать делать собственные игры, а браузер стал полноценной средой для видеоигр, которая предоставляет веб-специалистам знакомые инструменты для создания собственных проектов. Разобраться в основах веб-разработки и попробовать применить опыт на практике с геймдев-проектами можно благодаря разным образовательным программам, например, онлайн-бакалавриату «Фронтенд и мобильная разработка» от Яндекс Практикума и ИТМО. Но стоит учитывать все подводные камни геймдева. Не забывайте, что это отдельный мир, который порой требует основательного погружения. Да, здесь есть общие подходы, но многое придется осваивать практически с нуля.