Разрабатывать игры стало проще. Появилось много движков, шаблонов, библиотек и фреймворков, предназначенных специально для игр. Бери и делай. Но вместе с тем возникли и новые сложности — теперь во всём этом нужно разобраться.
Да и необходимость программирования никто не отменял. Без него не поймёшь, как что работает, не объяснишь это другим, и не добавишь в игру что-то своё — движки дают только основу, не больше.
Как научиться программировать игры? Что именно вам понадобится, если вы решили встать на тернистый путь разработки игр, какие инструменты для этого бывают и когда их лучше использовать — рассказываем в этой статье.
Способы разработки
Создавать игры можно тремя путями:
- Написать всё с нуля — сложный способ, но стоит начать с него, чтобы разобраться в языках.
- Использовать движки — специальные программы для создания игр. Вариант полегче. Даже новичок, вооружившись мануалами из интернета, способен самостоятельно сделать игру.
- Найти заготовки — готовых шаблонов, где нужно просто поменять местами компоненты, достаточно, чтобы создать примитивную игру.
Эти способы могут пересекаться. Допустим, персонажа вы создали через движок, а его движения его запрограммировали. Или нашли готовый шаблон, но текстуры наложили уже в движке.
Игровые движки
Движок — это программное обеспечение для разработки игр.
Движки содержат множество разнообразных инструментов, которые сильно облегчают задачу: шаблоны игровой логики и поведения объектов, инструменты для дизайна пейзажей и ландшафта и работы с графикой и физикой объектов, визуальный редактор сцен, утилиту для анимаций и др.
Ещё движки поддерживают скрипты и API. Скрипты помогают писать команды, которые будут выполняться игрой всё время или после каких-то действий игрока. API же помогает упростить написание скриптов.
Движки «оживляют» игру. Поэтому игры уже давно не создают с нуля. Даже код не всегда надо писать — всё уже есть. Но чтобы процесс шёл быстрее, всё-таки важно тщательно изучить один из движков.
Вот самые популярные из них.
Unity
Unity, наверное, самый популярный игровой движок. Он подходит под разные платформы — десктоп, веб и мобильные устройства. На Unity создаётся большинство мобильных и инди-игр.
Интерфейс Unity
Он бесплатный, но если вы зарабатываете на своих играх больше 100 тысяч долларов в год, придётся делиться ими с разработчиками Unity.
Если спуститься на уровень кода, Unity поддерживает язык программирования C#, который отличается умеренной сложностью для изучения. Кроме того, у Unity огромное дружелюбное сообщество, а на ютубе можно найти много инструкций.
Преимущества. Удобная визуальная среда разработки, большая библиотека ассетов и плагинов, возможность портировать игры на разные платформы, возможность интегрировать игры со многими графическими или анимационными приложениями.
Unity — оптимальный выбор для новичков. В нём вы можете реализовать что-то несложное даже с минимальными навыками
Для каких игр подойдёт. Мобильные 2D и 3D-игры, одиночные и сетевые игры для десктопа, VR-игры.
Лучшие курсы по Unity для начинающих — в подборке
Unreal Engine
Unreal Engine — популярный игровой движок, который выпустила известная студия Epic Games. Он предназначен для больших игр с мощной графикой.
Этот движок подходит для быстрого прототипирования. У него открытый код, но нужно знать C++. Ещё один большой плюс — можно создать полноценную игру практически без кода. Всё необходимое можно сделать можно прямо в программе: здесь есть целых два редактора для работы с эффектами и материалами и Blueprints — инструмент, который позволяет строить логику игры через блок-схемы.
Интерфейс Unreal Engine. Источник изображения: docs.unrealengine.com
Преимущества. Гибкость, мультиплатформенность, большие графические возможности, качественное освещение, возможность создавать игры под VR, общая дружелюбность к разработчику и множество инструментов.
Для каких игр подойдёт. ААА-игры с большим бюджетом, шутеры, приключенческие экшены, VR-игры.
CryEngine
CryEngine — мощный движок от немецкой компании Crytek. На нём можно делать масштабные игры для любых платформ — десктопа, веба и мобильных устройств.
CryEngine подойдёт опытным командам, которые выпускают дорогие и ресурсоёмкие проекты. Но и изучить CryEngine не так легко,по сложности изучения он будет на первом месте из трёх движков.
Демо последней версии движка CryEngine 5.5 на примере шутера Hunt: Showdown
Преимущества. Графические возможности значительно выше, чем у Unity и Unreal Engine: артхаусный свет, реалистичная физика, сложная система уровней и продвинутая анимация — всё это вы сможете создать в CryEngine.
Для каких игр подойдёт. Крупномасштабные ресурсоёмкие игры и игры под ПК и консоли, включая PS4 и Xbox One.
Языки программирования
Языки программирования позволяют задавать условия и команды в игре: если А, сделай Б, а если В, сделай Д. Движки много берут на себя, но все равно программировать придётся много.
Перемещение по меню, переход между локациями, управление персонажем, движение камеры, смена музыки, диалоги, система квестов — для всего этого нужно писать код
Делать игры можно на любом языке. Но именно от языка зависит, сколько времени займёт разработка игры и для какой платформы будет релиз. А ещё язык влияет на производительность.
Вот на каких языках создают игры.
C++
С++ — кроссплатформенный язык, который позволяет эффективно управлять памятью и при этом не загружать её. Без него не обходится ни одна разработка серьезного гейм-продукта. Кроссплатформенность позволяет создавать игры для разных платформ: веб, онлайн или мобайл.
Этот язык помогает создавать механику игры — взаимодействие игрока с миром и мира с игроком. На нём пишут оптимизированные крупномасштабные игры уровня ААА. С++ также используют в мобильных играх, где нужно бережно обходиться с памятью устройства и поддерживать высокую производительность игры.
Этот язык считается одним из самых сложных для изучения. Браться за C++, не зная других языков и не обладая хотя бы мало-мальским опытом в программировании, — все равно, что начинать изучать математику с линейных уравнений.
Но если вы освоите С++, для вас откроются двери многих игровых студий. Ведь когда говорят о профессиональных программистах игр, обычно имеют ввиду именно программистов С++.
Для каких игр подойдёт. Ресурсоёмкие десктопные игры, игры на Unreal Engine, мобильные игры.
Fortnite, мегапопулярный онлайн-экшен на выживание, где зарегистрировалось более 350 миллионов человек, сделан на движке Unreal Engine, код для которого пишут на С++. Изображения: vgtimes.ru
Лучшие курсы по С++ — в подборке
C#
C# (Си шарп) уже не настолько производителен как С++ и, соответственно, не подойдёт для больших требовательных проектов. Но C# отличается кроссплатформенностью и универсальностью, поэтому на нём можно создавать 2D- и 3D-игры для Android и iOS.
Плюс, даже по сравнению с тем же С++, C# достаточно легкий для освоения и будет оптимальным вариантом для новичков, которые только начали путь в геймдев.
Если вы только стартуете в геймдеве и выбираете язык — начните с C#
Для каких игр подойдёт. Игры для разных платформ, игры на Unity, мобильные игры.
Игра в жанре интерактивного кино Life is Strange: Before the Storm, получившая высокие оценки критиков, написана на движке Unity, который поддерживает C#. Изображения: vgtimes.ru
Лучшие курсы по C# — в подборке
Java
Java — надёжный кроссплатформенный язык, который предназначен для создания мобильных игр для Android. Всё потому, что эта операционная система сама по себе отчасти написана на Java. А IDE Android Studio — популярная программа для разработки мобильного софта на Android, которая этот язык «понимает» по умолчанию.
Для каких игр подойдёт. Мобильные игры для Android.
Двухмерная аркада Gish — одна из лучших Java-игр
Лучшие курсы по Java — в подборке
Objective-C/Swift
Если вам ближе по душе «яблоко», смело выбирайте Swift и/или Objective-C. Эти два языка специально созданы под платформы компании Apple. Больше их практически нигде не используют.
Для каких игр подойдёт. Игры для iOS и macOS.
«Коррупции.Нет» — пример мобильной игры для iOS на Objective-C и Swift
Лучшие курсы по iOS-разработке — в подборке
JavaScript
На JavaScript пишут небольшие браузерные игры, потому что он умеет выполнять код прямо в браузере. Правда, используют здесь JavaScript не в одиночку, а вместе с HTML5. А конкретно — инструментом Canvas, который представляет собой холст, на котором можно рисовать с помощью JS-команд. Именно он позволяет создавать 2D-графику и делать анимированные фоны.
Для каких игр подойдёт. Браузерные игры, мобильные игры.
Стратегия PixelDefense, где нужно расправиться с наступающими врагами и спасти свой дом, создана на JavaScript и HTML5. Изображение: edopedia.com
Лучшие курсы по JavaScript — в подборке
Python
На Python пишут не полноценные игры, а только скрипты для них — взаимодействия персонажей, запуска сцен, обработки событий и др. Тем не менее, этот язык участвовал в создании многих игровых хитов.
Для каких игр подойдёт. Мобильные и браузерные игры.
Самый известный симулятор жизни Sims 4, который пользуется бешеной популярностью, отчасти написан на Python — как раз благодаря нему в игре можно менять параметры персонажей и жилища. Изображения: origin.com
Python активно использовали при создании знаменитого шутера Battlefield — от серверных элементов управления до внутренней логики игры. Изображение: vgtimes.ru
Лучшие курсы по Python — в подборке
В основном в разработке игр используют эти языки. Но в зависимости от проекта могут понадобится и другие.
Если вы уже выбрали какой-то конкретный движок, то и язык нужен подходящий — для каждого движка он свой. В случае с Unity — это C#, а Unreal Engine 4 поддерживает С++.
Но скорее всего одним языком дело не ограничится. В разработке игр изучать сразу несколько языков — не прихоть, а жизненная необходимость. Опытные программисты, работающие в крупных студиях, иногда пишут на семи-восьми языках одновременно.
Поэтому, если вы решили связать судьбу с производством крупных игр, будьте готовы стать «полиглотом». Чем больше языков вы освоите, тем более интересные и разнообразные задачи сможете получить, а шансы устроиться на работу мечты заметно возрастут.
Фреймворки
Если вы пишете игру на каком-либо из перечисленных языков, можете воспользоваться фреймворками. Свой фреймворк есть почти для каждого языка.
Фреймворк — это каркас, почти готовая игра. Нужно просто дописать для этого каркаса дополнительные функции, подогнав под свой проект.
Фреймворки дают максимальную свободу. Но при этом вы не можете пользоваться графическим интерфейсом, а все настройки и параметры приходится писать вручную.
Вот какие фреймворки используются в разработке игр:
- XNA и MonoGame для C#,
- PyGame для Python,
- JS и Babylon.JS для JavaScript,
- SceneKit и SpriteKit для
Платформер Celeste, который стал лауреатом 22-й ежегодной премии D.I.C.E. Awards и признан одной из лучших игр 2018 года, сделан на фреймворке XNA
Библиотеки
Библиотека — это набор готовых функций, классов и объектов для решения определённых задач.
Библиотеки, в отличие от фреймворков, не дают почти готовую игру, но предоставляют конкретные инструменты. Самые популярные в геймдеве библиотеки — графические и физические.
Графические библиотеки — позволяют растрировать игровые объекты и высчитывают, как изображения или 3D-модели должны выглядеть на мониторе. Это OpenGL, WebGL и DirectX.
Физические библиотеки — помогают работать с физикой: ускорять свободное падение, проводить импульсы или задавать векторы. Это Havok и PhysX.
Аналогичные библиотеки есть и для работы со звуком и другими аспектами игровой разработки.
Если вы создаёте игру на движке, ни фреймворки, ни библиотеки в большинстве случаев вам не нужны
Первый проект — с чего начать
Не стоит сразу начинать с глобальных проектов и пытаться создать свою многопользовательскую ролевую онлайн-игру или длинный платформер 16-битной эпохи.
Пусть они будут примитивными и даже незаконченными, зато вы не будете отвлекаться на более сложные детали вроде анимации. В будущем вы всегда можете доработать их.
В качестве первых «тренировочных» проектов берите что-то простое. Можно сделать свою версии известную игрушки — змейки, сапёра или крестиков-ноликов.
Для этого вы можете использовать куски кода, шаблоны и моды, которые есть в интернете в большом количестве. Так вы поймёте логику и структуру игровых приложений, вдоволь попрактикуетесь и набьёте руку.
А ещё пополните своё портфолио. Такой пусть даже небольшой проект покажет, что с производством игр вы знакомы не только в сухой теории, а в идеале — поможет вам попасть на стажировку или устроиться на позицию младшего сотрудника в игровую студию.
Если вы всерьёз решили научиться создавать игры, читайте вот эту статью — в ней подробно расписано, как освоить профессию и что для этого понадобится
Коротко о главном
- Сделать игру можно тремя способами: написать всё с нуля, использовать движки или заготовки.
- Основные движки для разработки игр: Unity, Unreal Engine и CryEngine. Если вы новичок — начните с Unity.
- Основные языки программирования для разработки игр: С++, C#, Java, Objective-С или Swift, JavaScript и Phyton. Если вы новичок — начните с C#.
- Облегчат разработку фреймворки и библиотеки. У каждого языка они свои. Если вы создаёте игру на движке, ни фреймворки, ни библиотеки в большинстве случаев не понадобятся.
- Если вы новичок, начните с небольшого тренировочного проекта, чтобы отточить навыки и пополнить портфолио.