Компьютерные игры - это, наверное, одна из самых крутых вещей, которую только придумало человечество. Где еще вы сможете выполнить ведьмачий заказ на грифона, расколдовать вихта либо посостязаться с Бестией из Боклера? А сделать тюнинг своей Dodge Viper SRT 10 и обогнать всех соперников в Need For Speed: Most Wanted? Отыграть роль неуловимого Агента 47, либо же от имени Брюса Уэйна бороться с преступностью на улицах Готэма? Все это возможно благодаря видеоиграм, которые затягивают и заставляют пропадать в них часами, неделями, а то и месяцами.
Должно быть, многие игроки мечтали стать частью геймдев-индустрии и применять всю глубину своей фантазии в разработке собственных игр. Пришло время узнать о специфике работы гейм девелоперов, о тех технологиях, которыми они должны владеть, а также получить ответ на вопрос - как стать разработчиком игр.
Разработчик игр - кто это?
На самом деле разработка видеоигр являет собой комплексный процесс, в котором зачастую задействована целая команда специалистов. Таким образом, над созданием крупного гейм-продукта может работать порядка двух сотен человек, а именно:
- аниматоры движений
- аниматоры лицевые
- художники
- геймдизайнеры игровых уровней, персонажей, диалогов и т. д.
- UI/UX разработчики
- скриптеры
- моделлеры
- программисты
- актёры озвучки
- локализаторы
- сценаристы
- тестировщики
- композиторы
- звукорежиссеры
- HR-ы
- менеджеры проектов
- и другие специалисты
Естественно, для создания игры не обязательно иметь целую армию сотрудников. Их можно разрабатывать небольшой командой, ограничиваясь гейм-дизайнерами и программистами, или даже в одиночку, совмещая в себе несколько профессий сразу.
В данной статье нас интересуют именно игровые программисты - участники процесса создания игры, на плечи которых возлагается реализация игровых идей и концепций в виде программного кода. Давайте приступим к рассмотрению их разновидностей и применяемому инструментарию каждого из них. Однако, прежде мы узнаем, какими знаниями и навыками должен обладать любой разработчик компьютерных игр.
Математика и физика
Именно математика заставляет игры работать. Доправление вашего снаряда к месту пребывания вражеского танка, расчет траектории полета брошенной гранаты, реализация прыжка с возвращением обратно на землю, реалистичное восхождение персонажа по ступенькам - все это невозможно без математики, как, впрочем, и любое другое действие. В разработанных игровых движках уже есть определенные шаблоны, согласно которым функционирует игровая механика. Однако, это лишь базовые законы взаимодействия внутриигрового мира. Если хотите внести что-то свое - программируйте.
В создании игр используются такие области математики, как: линейная алгебра, аналитическая геометрия, дискретная математика, тригонометрия, мат. анализ. Проще говоря, вам следует хорошо владеть математикой уровня первого курса технического ВУЗа.
Знание физики также важно. Если математика предоставляет инструментарий для программирования игры, то физика его реализует. Необходима для того, чтобы создавать законы вашей игровой вселенной: полет пуль, разрушение, падение предметов, передвижение машин и прочее. Здесь пригодятся знания в области классической механики, механики жидкостей, оптики.
Конечно, в каждом ответвлении разработки игр математика и физика вам по-разному пригодятся, однако, если вы собираетесь взяться за игростроение на серьезной основе, то этими предметами необходимо хорошо владеть.
Алгоритмы и структуры данных
Не менее важным для разработчика игр будет знание и понимание алгоритмов, ведь все в игровом мире происходит исходя из четко заданного последствия операций.
Знание структур данных позволит вам понять способы организации данных, их свойства и принципы работы с информацией. Разработка игр связана с огромным количеством данных (отрисовка объектов, подгрузка локаций и т. д.), поэтому умение правильно работать с ними обязательно.
Английский язык
Знание английского на уровне чтения технической документации - это минимальное требование для комфортной работы с англоязычными форумами, текстами, и технологиями, с которыми вы обязательно столкнетесь в ходе создания игр. Более того, изучение иностранных языков не только помогает в профессии, но также развивает наше мышление и улучшает память. Сколько языков ты знаешь, столько раз ты человек, верно?
Git & GitHub
Git - наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. GitHub - сервис онлайн-хостинга проектов, где храняться сами проекты.
Помимо своего очевидного предназначения, данные инструменты позволяют изучать проекты с открытым исходным кодом, которые были сделаны и опубликованы другими программистами, а также делиться с сообществом разработчиков своими собственными, получая обратную связь, которая поможет вам развиваться в правильном направлении и поддерживать мотивацию.
Огромный энтузиазм, сильнейшая мотивация и любовь к играм
Область игростроения - это та сфера деятельности, в которой главной движущей силой является ваша мотивация и заинтересованность в работе, которую вы выполняете. Разработчики игр, создавая различные видеоигры, многие годы могут не получать желаемого результата и признания - зачастую так и происходит. В такой ситуации очень важно не сбавлять обороты и только наращивать производственные мощности. Другими словами - чтобы создавать игры, вы должны быть в них влюблены по уши, ведь это - творчество, и оно требует бóльшего вложения, нежели просто знания математики и умения хорошо программировать.
Разработчик ресурсоемких игр
Язык программирования С++
Серьезные игры требуют задействования большого количества вычислительных ресурсов компьютера, которые, как известно, ограничены. Также, для получения бóльшей прибыли конечный продукт необходимо распространить среди максимального числа игроков. Это достигается не только удачными PR-кампаниями, но и путем портирования игры на разные геймерские платформы (Xbox, PlayStation и другие). Возникает необходимость в применении мультипарадигмального, кроссплатформенного, высокопроизводительного языка программирования, с помощью которого можно управлять памятью и не создавать лишнюю загруженность системы. Таким критериям отвечает язык С++. Без него не обходится ни одна разработка серьезного гейм-продукта.
Благодаря С++ создается механика игры - взаимодействие игрока с миром и мира с игроком. Когда говорят о профессиональных программистах игр, обычно имеют ввиду именно программистов С++. За возможность создавать оптимизированные крупномасштабные игры уровня ААА придется заплатить немалым количеством сил и времени, ведь данный язык программирования считается одним из самых сложных в изучении. Этот путь разработки зачастую выбирают самые хардкорные ребята, готовые к вызовам и испытаниям, которые очень увлечены гейм индустрией и желают стать ее неотъемлемой частью.
Игровой движок
Это ядро, которое помогает программистам создавать игры, беря за основу уже имеющееся программное обеспечение, тем самым автоматизируя некоторые рутинные процессы. Зачастую движок включает в себя игровую логику, поведение объектов, визуальный редактор сцен, утилиту для анимаций, инструменты дизайна игрового окружения и прочие элементы. Таким образом, приступая к созданию игры, программисту не нужно с нуля прописывать физику воды, объектов и выполнять другие капитальные работы - достаточно взять уже готовое и из него творить что-то свое. Ниже мы расскажем о некоторых широко известных средах разработки видеоигр.
Unreal Engine - это очень популярный игровой движок. Среди его преимуществ выделяют: гибкость, мультиплатформенность, высокие показатели графической составляющей, качественное освещение, возможность создавать игры под VR, общая дружелюбность к разработчику и богатый встроенный инструментарий разработки. Самые известные игры, созданные при помощи Unreal Engine: Mass Effect, Bioshock Infinite, Mortal Combat 11, Fortnite, Borderlands, Batman: Arkham Asylum.
Разработка на этом движке ведется на языке С++, однако, возможно использование специального скриптового языка Blueprint, который в определенной степени может упростить создание игр.
CryEngine - мощный движок от немецкой компании Crytek, детищем которого стали такие игры, как: Crysis, Far Cry, Ryse: Son of Rome, Sniper II: Ghost Warrior и другие. Обладает кроссплатформенностью, продвинутой системой анимаций, впечатляющим уровнем графики, реалистичной физикой, собственной технологией трассировки лучей и многими другими достоинствами. Стоит отметить, что в разработка на CryEngine вызывает больше трудностей, чем на Unreal Engine.
Если провести анализ данных движков, то Unreal Engine подойдет для разработки ААА игр, особенно шутеров и приключенческих экшенов. Также, это неплохой выбор для инди-разработчиков из-за своей выгодной политики лицензирования. CryEngine же больше подойдет опытным командам, которые обладают большим количеством времени и средств для создания дорогих и крупномасштабных игр.
Существует множество других движков: Chrome Engine, C-Engine, Frostbite, Source, Id Tech, Creation Engine и т. д. Изучайте информацию о них и выбирайте тот, который лучше всего подойдет под ваши нужды.
Разработчик игр на Unity
Мы решили отдельно выделить данную специальность, поскольку Unity являет собой достаточно дружелюбный по отношению к новичкам движок, который использует язык программирования C#. Более того, на соответствующих сайтах поиска работы работодатели часто сами выделяют эту профессию, указывая вместо привычного “Разработчик игр” должность “Unity разработчик”. Перейдем к рассмотрению технологий, которые должен знать потенциальный кандидат.
Язык программирования C#
Популярный объектно-ориентированный язык программирования, который имеет множество сфер применения: настольные, мобильные и веб-приложения, а также игры для различных платформ. C# не является настолько высокопроизводительным, как С++ и, соответственно, на нем нельзя разрабатывать столь качественные и хорошо оптимизированные игры. Однако, С# имеет очень важное преимущество - он достаточно легкий в изучении (по сравнению с теми же “плюсами”) и подойдет новичкам, которые только открывают для себя мир геймдева.
Unity
Игровой движок, разработанный специально для создания игр на языке C#. Главные особенности Unity: наличие удобной визуальной среды разработки и большой библиотеки различных ассетов и плагинов, возможность легкого портирования игр на разные платформы, возможность интеграции со многими графическими или анимационными приложениями, наличие большого сообщества, низкий порог вхождения.
Unity используется в создании одиночных и сетевых игр для настольных компьютеров и устройств виртуальной реальности. Самые громкие творения этого движка: Cuphead, Hearthstone, Cities: Skylines, Rust, 7 Days To Die, Hitman: Sniper, The Forest и множество других видеоигр. Также, при помощи Unity можно создавать анимированные видео, игровые трейлеры, кат-сцены и другие подобные продукты, которые находят широкое применение в рекламных кампаниях.
Відео курси за схожою тематикою:
Unity - это прекрасный выбор для новичков. Вы можете разработать игру даже не имея при этом навыков программирования - продуманный визуальный редактор скриптов возьмет на себя всю работу. Однако, для создания чего-то стоящего на Unity вам придется таки изучить С#.
Также, благодаря своим широким возможностям и богатому инструментарию, этот движок очень активно используется в мобильном игростроении для разработки 2D и 3D игр.
Разработчик мобильных игр
Мобильные операционные системы предоставляют большое пространство для реализации амбиций гейм девелоперов. Игры для смартфонов требуют меньше усилий при разработке и имеют более высокий шанс быть замеченными пользователями. Данный сегмент создания игр имеет немалое количество применяемых языков. Традиционно, рассмотрим наиболее популярные из них.
Java - один из самых популярных языков разработки мобильных приложений под ОС Android. Это надежный объектно-ориентированный кроссплатформенный язык, который хорошо зарекомендовал себя и в создании мобильных игр. В Java гейм девелопменте вам пригодиться среда разработки Android Studio либо jMonkeyEngine.
С++ - данный язык, как говорилось в одном из разделов выше, может применяться практически везде. В мобильных играх его также применяют - там, где необходимо бережно обходиться с памятью девайса и поддерживать высокую производительность игры. Разработку можно вести на все том же Unreal Engine, либо используя любые другие подходящие движки и среды разработки.
C# (Unity) - благодаря своей кроссплатформенности и универсальности в целом, среда разработки Unity также позволяет разрабатывать 2D и 3D игры как для Android, так и для платформы iOS, что открывает большие возможности перед программистами на “шарпе”. Более того, можно создавать мобильные игры и на JavaScript, который также доступен в Unity.
Objective-C / Swift - языки программирования, которые используются в разработке ПО для iOS и macOS. Objective-C, будучи предшественником Swift, потихоньку отходит на второй план и уступает место этому молодому, открытому, быстрому, мультипарадигмальному языку. Мы предлагаем смотреть в будущее и выбирать именно Swift, несмотря на его небольшую сыроватость - это нормально для языков, которые переживают период развития. Также выбирайте движок SpriteKit, который в полной мере раскрывает Swift как инструмент разработки мобильных игр.
Вообще, эти два языка подходят для разработки любого вида ПО для платформ компании Apple. Так что, если вас привлекает создание продукции под “яблоко”, смело выбирайте Swift и/или Objective-C.
Разработчик браузерных игр
Об онлайновых браузерных играх жители СНГ узнали, когда началось широкое распространение Интернета. Сегодня эта игровая отрасль продолжает жить и успешно развиваться. Единственные глобальные изменения касаются компании Adobe - флагмана разработки браузерных игр, которая объявила о прекращении поддержки Flash до конца 2020 года. Это популярная мультимедийная и программная платформа, благодаря которой разрабатываются веб-приложения, а в частности - браузерные игры. Таким образом. основной фокус будет окончательно смещен в сторону HTML5, JavaScript и вспомогательных графических технологий - WebGL, Canvas и т. д.
HTML5 (язык верстки веб-страниц) прекрасно взаимодействует с JavaScript (мультипарадигменный язык программирования) посредством элемента Canvas, который делает возможным добавление растровой 2D графики на веб-сайт. WebGL - кроссплатформенный графический API - главный инструмент создания 3D графики в браузере. Очень часто эти технологии используются не только для создания игр, но и для добавления крутой интерактивности сайтам, что справляет приятное впечатление на пользователей.
Для разработки серверной стороны браузерных игр необходимо знать РНР/Python либо любой другой язык, который хорошо подойдет под организацию закулисных взаимодействий - регистрация и авторизация пользователей, обработка пользовательских данных, ведение игровой статистики, хранение информации в базе данных, реализация многопользовательского режима и прочее.
Как начать свой путь?
Для получения первого опыта в гейм разработке на ПК, можно заняться созданием модов для ваших любимых игр. Это модификации, дополнения, которые, как правило, сделаны не самими разработчиками, а при помощи фанатов либо других команд разработчиков. Они могут улучшать визуальную составляющую видеоигры, менять геймплей, добавлять новые игровые элементы (персонажей, музыку, предметы, спецэффекты и т. д.) либо и вовсе кардинально менять всю игру, создавая практически новую. Такие дополнения зачастую делают при помощи набора средств разработки - SDK, которые прилагаются к играм, либо разрабатываются отдельно.
Модостроение - неплохое начало гейм девелоперского пути. Оно позволит лучше понять внутреннюю логику игр и даст определенный опыт в разработке. В процессе создания мода вы можете познакомиться с другими модостроителями на различных фанатских форумах и перенять у них определенные знания, которые помогут в вашем развитии в сфере геймдева.
Вот вам интересный пример успешного пути юного модмейкера, которого зовут Alexander J. Velicky. 19-летний поклонник игры The Elder Scrolls V: Skyrim настолько сильно хотел работать в студии разработчиков Bethesda, что создал дополнение к игре под названием Falskaar, которое добавляет к оригиналу 25 часов игрового контента, большое количество новых локаций, персонажей с новой, полноценной озвучкой, а также массу квестов. На создание мода было затрачено около 2000 часов. К сожалению, Bethesda не предложила парню работу, однако его взяла к себе компания Bungie, где он смог раскрыть свой потенциал на полную. За успехами Александра можете следить на его странице в LinkedIn.
В мобильной разработке создание модов не практикуется, поэтому тут лучшим выходом будет брать простые игры и пытаться их запрограммировать самостоятельно. Это даст понимание основных концепций разработки под мобильные девайсы и принесет полезный опыт.
Проводите много времени на англоязычных ресурсах. Обычно, именно там находится самая ценная и актуальная информация, которая может вам помочь во многих начинаниях.
Где учиться и как искать первую работу?
На самом деле, в мире существует не так много высших учебных заведений, в которых можно получить знания и навыки разработки игр. В большинстве случаев это дорогостоящие зарубежные ВУЗы. Если вы хотите обучаться программированию игр на территории СНГ, ищите в Интернете соответствующие курсы либо попробуйте заняться самообучением при помощи специализированных ресурсов по тем или иным языкам и технологиям.
Безкоштовні вебінари за схожою тематикою:
К примеру, если вас интересует создание игр с применением возможностей Unity и вы хотите узнать больше об этом движке, можете ознакомиться со специальностью “Unity/Game Developer” на нашем сайте.
Первую работу стоит искать, следуя отработанной тактике:
- Изучаете необходимые языки и технологии, параллельно уделяя много времени практике.
- Составляете достойное портфолио, в котором буду несколько ваших удачных работ.
- Отправляетесь на сайты поиска работы и рассылаете свое резюме, указывая ссылку на ваши работы, которые вы заранее выложили в GitHub.
Вопрос первого трудоустройства был более подробно рассмотрен в нашей статье “FAQ начинающего программиста”.
Заключение
Таким образом, мы рассмотрели самые популярные направления в современном игростроении. Если желаете серьезно заниматься созданием игр - выбирайте язык С++ и соответствующий вашим потребностям движок. Если вы не гонитесь за высокой оптимизацией, лучшим выбором будет движок Unity и язык C#. Для iOS и macOS выбирайте Objective-C и/или Swift. Мобильная разработка имеет достаточно места для реализации амбиций при помощи Java, C++, C#, Swift и других языков. Ну а веб-пространство будет прекрасным плацдармом для HTML, JavaScript и ряда вспомогательных технологий. Вообще, умелые программисты могут создавать игры на каких угодно языках. Так что самое главное - изучить необходимые технологии, научиться хорошо писать код, и, конечно, быть влюбленным в геймдев. Тогда у вас все обязательно получиться!
Если вам понравилась эта статья, поделитесь информацией с теми, кому она может быть интересна. Пишите в комментариях, на какие еще вопросы, связанные с выбором специальности и планированием обучения вы хотите получить ответы. Мы постараемся ответить на них в наших новых обзорах!
Статті за схожою тематикою