Как программировать игры: языки, движки и все, что нужно знать начинающему разработчику

Учимся делать 2D-игры с нуля

Курсы и туториалы по созданию двумерных игр — вторая статья из цикла «Разработка».

Автор: Дмитрий Старокожев. Начал программировать на пятом курсе университета, влюбился в Objective-C и разработку под iOS, после чего попал в Pixonic. Работает ведущим разработчиком на проекте War Robots, а в свободное время преподаёт.

Вероятно, в ближайшее время кто-то из читателей этого цикла статей напишет первую строчку кода своего будущего прототипа. Потому что с движком мы уже определились и переходим к практике.

Учить программированию в одной статье нет смысла. К тому же, руководств в интернете множество. Многие наверняка будут делать свои первые прототипы в 2D — на этой теме и сконцентрируемся сегодня.

Если вы решили делать сразу в 3D, не спешите закрывать страницу — знания всё равно пригодятся. Приступим.

2D. Звучит олдскульно, правда? В наши дни разработка двумерных игр приобретает какой-то особый шарм. Чувствуешь себя ценителем, которому открылась недоступная другим истина. Но одного чувства прекрасного недостаточно — у разработки в 2D есть множество нюансов.

Очевидно, что главная особенность двухмерных игр — отсутствие третьего измерения. Как определить, кто ближе к зрителю: машина, куст или огромный боевой робот? Чтобы решить эту проблему, во всех 2D-движках предусмотрен механизм сортировки спрайтов — то есть двумерных графических объектов — по оси Z. Он может называться Z-order или Sorting Layers — в любом случае, с его помощью можно перемещать объекты со слоя на слой.

Другими словами, проблема уже решена за нас. Можно не тратить силы на изобретение велосипеда, а обратить свое внимание на особенности конкретных движков и жанров.

Для разработки прототипа звуки и анимация в большинстве случаев не так важны. Но нужно понимать, что работа с ними в 2D значительно отличается от 3D. В трёхмерном мире анимация скелетная: у каждой модели есть «скелет» (rig). Двигая его участки, разработчик анимирует модель.

А в 2D анимация создаётся покадрово: нужно создать атлас изображений, чтобы они стали последовательностью кадров анимации (sprite sheet). Уолт Дисней всё делал кистью и роллером, и это были шедевры (с). Этим же способом можно создавать очень красивых рисованных персонажей. Как в Cuphead, которая разрабатывалась на Unity.

А вот со звуком в 2D всё проще. Если при отрисовке мира отсутствие третьего измерения накладывает ограничения, то работа со звуком, наоборот, упрощается. Не нужно учитывать расстояние от слушателя (персонажа в игре) до источника звука — слушателем всегда будет выступать сам игрок.

Но нужна ли вообще прототипу музыка? Не думаю, что можно дать однозначный ответ (как и с анимацией). Давайте посмотрим на Hidden Folks. Это не просто 2D-игра, а настоящее произведение искусства.

Весь звук в Hidden Folks состоит из странных похрюкиваний и притопываний её разработчика, что само по себе USP — уникальное торговое предложение игры. Каждое прикосновение к экрану смартфона заставляет улыбнуться. Ладно, если запись похрюкиваний вам не подходит, в Asset Store Unity можно найти огромное количество платных и бесплатных ассетов для прототипа, а иногда и для релизной версии игры.

Рекомендации по выбору жанра можно прочитать в статье прошлого цикла. Здесь же мы будем говорить о некоторых путях, по которым можно пойти начинающему разработчику. Кому-то кажется, что вариантов не так много и обязательно надо закончить профильный университет с хорошей профессурой. Но если копнуть глубже, то обнаруживается бесконечный океан знаний, которые лежат прямо перед носом — остается только ухватиться за предоставленную интернетом возможность. Из доступного на ум сразу приходят:

  • Туториалы.
  • Онлайн-курсы.

Туториалы (tutorial) отличаются от курсов тем, что дают чёткий алгоритм действий для воспроизведения результата. Они не выходят за рамки поставленной задачи и отлично подходят, когда нужно сделать что-то конкретное, пока не пропал энтузиазм.

При первом поиске браузер выдаст миллионы ссылок с видеоуроками, статьями и готовыми проектами. Я подобрал несколько хороших вариантов по разным игровым жанрам. К тому же, среди других работ авторов можно найти ещё больше годного контента.

Есть YouTube-канал Brackeys. На нём — отличное вводное видео о том, с чего начать разработку платформера с плиточной графикой (tile based). Если сложно воспринимать на слух, можно включить английские субтитры.

Автор ролика приводит много примеров существующих проектов и объясняет, чем отличаются два различных подхода к созданию двумерных игр: sprite и tile based. В плейлистах канала можно найти староватый, но не потерявший актуальность туториал по созданию полноценного 2D-платформера с нуля — пошагово и со всем кодом, который можно повторить у себя и получить такой же результат.

На канале интересно практически каждое видео: даже если вы не планируете прямо сейчас врываться в разработку, стоит посмотреть хотя бы ролики о том, что нового появляется в Unity от версии к версии. Кстати, некоторые выпуски спонсирует сама Unity Technologies.

Еще один канал от энтузиаста — N3K EN. Можно найти ролики как по отдельным механикам или основам C # и Unity, так и плейлисты по разработке проектов с нуля. Например, создание прототипа Fruit Ninja за четыре часа в режиме реального времени со всем кодом.

Если учиться по видеороликам не очень нравится, есть хороший туториал в виде полноценной книги на английском языке. Она проведёт вас от установки Unity пятой версии до конца разработки двумерного скролл-шутера.

Наконец, есть официальные туториалы от Unity. Видео сопровождаются текстовыми описаниями и даже листингами программного кода. В процессе обучения создаётся roguelike RPG в tile based мире.

Чтобы в точности повторить результат, Unity сразу предлагает бесплатно скачать все ассеты этого проекта. Очень удобно и не надо ломать голову над тем, где взять симпатичные спрайты, а не разноцветные прямоугольники. В последнем ролике вы даже научитесь реализовывать управление персонажем под сенсорные экраны мобильных устройств.

Принимаясь за изучение нового туториала, не стоит волноваться о том, какую версию движка использует автор.

Unity везде ведёт себя похожим образом, а функции движка пятой версии доступны и в самой последней. Конечно, инструменты совершенствуются, но авторы обучающих материалов редко копают настолько глубоко, так что об этом можно не беспокоиться.

Если нужно подтянуть навыки программирования, то на арену выходит старый и проверенный игрок — Code School. Всё происходит прямо в интерфейсе сайта, который выглядит свежо и удобно. И не чувствуешь на затылке укоризненный взгляд Лобачевского со старого портрета над доской с графиком дежурств. Точно стоит обратить внимание хотя бы на бесплатные курсы, чтобы понять, насколько удобен такой формат обучения.

Есть официальные курсы от Unity, не надо далеко ходить. Кажется, что они и дальше готовы инвестировать в это направление (а после курсов можно еще получить сертификат).

У GeekBrains есть два отличных курса, разбитых по уровням сложности. Раз уж мы говорим о 2D-играх, нас интересует первый. Оба курса требуют определенной алгоритмической подготовки, программированию там не учат, только разработке на Unity.

Вы научитесь делать игры в 2D буквально с нуля: на первом уроке установите движок, а на восьмом уже запустите проект на Android. Вы даже можете заметить меня в списке преподавателей и случайно попасть на мой поток.

Хотите узнать, насколько глубока кроличья нора? Я падаю, стул тоже падает, здесь всё в 2D, и мне это очень нравится. Присоединяйтесь.

Наступает время самостоятельной работы. Пора писать код своей первой игры!

  • Определите главную механику. Например, у Tower Defence это строительство башен и волны врагов.
  • Найдите туториал по главной механике или по жанру в целом.
  • Реализуйте главную механику на практике, используя примитивную графику.

О нюансах 3D-игр и туториалах для них поговорим отдельно — в следующей статье.

Это статья из нашего большого проекта с vc.ru. Если выполнять все задания, можно — ни много ни мало — научиться делать видеоигры. И выиграть лимитированное издание PS4 Pro в конце каждого цикла статей.

Как сделать собственную игру на компьютер

+7 (499) 444-90-36 Отдел заботы о пользователях

Москва, Ленинский проспект, дом 6, строение 20

  • Участник Skolkovo
  • Премии Рунета 2018, 2019, 2020

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies

Как создаются игры?

Сфера разработки игр обширна, и тут всё зависит от конкретной игры, которую вы хотите сделать. Например, игру «крестики-нолики» может создать один человек на самом обычном компьютере без использования платных программ. А если ваша цель — выпустить приложение, в которое будут играть люди по всему миру, тогда вам понадобится большая команда и много ресурсов.

В первую очередь при создании игры нужно ориентироваться на свой уровень навыков и на свои возможности. Всегда можно найти нишу для реализации своих творческих амбиций, но некоторые навыки для этого нужно будет освоить в любом случае.

Можно попробовать научиться разработке игр самостоятельно, но важно учитывать, что на первых порах особенно легко запутаться и разочароваться, потерять интерес к делу.

Создание игры — это серьёзный длительный процесс, который требует от разработчика большой включённости.

Поэтому лучше всего начинать свой путь в этой сфере с поддержкой преподавателя-наставника. Важно, чтобы у вас был человек, к которому вы всегда сможете обратиться за советом, за помощью в ситуации, которая кажется неразрешимой.

Если попытаться коротко описать путь создания игры от идеи до релиза, то его можно сформулировать так:

  1. Идея. Разработчик или команда разработчиков придумывают основную сюжетную линию и героев игры.
  2. Создание геймдизайн-документа и написание сценария игры.
  3. Визуал и графика. Команда отрисовывает героев, фоны, меню игры.
  4. Программирование, то есть написание кода и интегрирование отдельных элементов из приложений-помощников и выбранного игрового движка (графика, интерфейс, физика игры).
  5. Тестирование. Игра выпускается в ограниченный доступ. Небольшое количество пользователей может поиграть и обнаружить недостатки, не замеченные разработчиком.
  6. «Пофиксить». Команда исправляет выявленные тестированием ошибки в игре.
  7. Релиз. Выход игры на широкую аудиторию.

Языки программирования

Языки программирования позволяют задавать условия и команды в игре: если А, сделай Б, а если В, сделай Д. Движки много берут на себя, но все равно программировать придётся много.

Перемещение по меню, переход между локациями, управление персонажем, движение камеры, смена музыки, диалоги, система квестов — для всего этого нужно писать код

Делать игры можно на любом языке. Но именно от языка зависит, сколько времени займёт разработка игры и для какой платформы будет релиз. А ещё язык влияет на производительность.

Вот на каких языках создают игры.

С++ — кроссплатформенный язык, который позволяет эффективно управлять памятью и при этом не загружать её. Без него не обходится ни одна разработка серьезного гейм-продукта. Кроссплатформенность позволяет создавать игры для разных платформ: веб, онлайн или мобайл.

Этот язык помогает создавать механику игры — взаимодействие игрока с миром и мира с игроком. На нём пишут оптимизированные крупномасштабные игры уровня ААА. С++ также используют в мобильных играх, где нужно бережно обходиться с памятью устройства и поддерживать высокую производительность игры.

Этот язык считается одним из самых сложных для изучения. Браться за C++, не зная других языков и не обладая хотя бы мало-мальским опытом в программировании, — все равно, что начинать изучать математику с линейных уравнений.

Но если вы освоите С++, для вас откроются двери многих игровых студий. Ведь когда говорят о профессиональных программистах игр, обычно имеют ввиду именно программистов С++.

Для каких игр подойдёт. Ресурсоёмкие десктопные игры, игры на Unreal Engine, мобильные игры.

скриншот Fortnite

скриншот Fortnite

Fortnite, мегапопулярный онлайн-экшен на выживание, где зарегистрировалось более 350 миллионов человек, сделан на движке Unreal Engine, код для которого пишут на С++. Изображения: vgtimes.ru

Лучшие курсы по С++ — в подборке

C# (Си шарп) уже не настолько производителен как С++ и, соответственно, не подойдёт для больших требовательных проектов. Но C# отличается кроссплатформенностью и универсальностью, поэтому на нём можно создавать 2D- и 3D-игры для Android и iOS.

Плюс, даже по сравнению с тем же С++, C# достаточно легкий для освоения и будет оптимальным вариантом для новичков, которые только начали путь в геймдев.

Если вы только стартуете в геймдеве и выбираете язык — начните с C#

Для каких игр подойдёт. Игры для разных платформ, игры на Unity, мобильные игры.

Игра в жанре интерактивного кино Life is Strange: Before the Storm

Игра в жанре интерактивного кино Life is Strange: Before the Storm

Игра в жанре интерактивного кино Life is Strange: Before the Storm

Игра в жанре интерактивного кино Life is Strange: Before the Storm, получившая высокие оценки критиков, написана на движке Unity, который поддерживает C#. Изображения: vgtimes.ru

Лучшие курсы по C# — в подборке

Java — надёжный кроссплатформенный язык, который предназначен для создания мобильных игр для Android. Всё потому, что эта операционная система сама по себе отчасти написана на Java. А IDE Android Studio — популярная программа для разработки мобильного софта на Android, которая этот язык «понимает» по умолчанию.

Для каких игр подойдёт. Мобильные игры для Android.

Двухмерная аркада Gish — одна из лучших Java-игр

Двухмерная аркада Gish — одна из лучших Java-игр

Лучшие курсы по Java — в подборке

Objective-C/Swift

Если вам ближе по душе «яблоко», смело выбирайте Swift и/или Objective-C. Эти два языка специально созданы под платформы компании Apple. Больше их практически нигде не используют.

Для каких игр подойдёт. Игры для iOS и macOS.

 «Коррупции.Нет» — пример мобильной игры для iOS на Objective-C и Swift

«Коррупции.Нет» — пример мобильной игры для iOS на Objective-C и Swift

Лучшие курсы по iOS-разработке — в подборке

JavaScript

На JavaScript пишут небольшие браузерные игры, потому что он умеет выполнять код прямо в браузере. Правда, используют здесь JavaScript не в одиночку, а вместе с HTML5. А конкретно — инструментом Canvas, который представляет собой холст, на котором можно рисовать с помощью JS-команд. Именно он позволяет создавать 2D-графику и делать анимированные фоны.

Для каких игр подойдёт. Браузерные игры, мобильные игры.

Стратегия PixelDefense

Стратегия PixelDefense, где нужно расправиться с наступающими врагами и спасти свой дом, создана на JavaScript и HTML5. Изображение: edopedia.com

Лучшие курсы по JavaScript — в подборке

Python

На Python пишут не полноценные игры, а только скрипты для них — взаимодействия персонажей, запуска сцен, обработки событий и др. Тем не менее, этот язык участвовал в создании многих игровых хитов.

Для каких игр подойдёт. Мобильные и браузерные игры.

симулятор жизни Sims 4

симулятор жизни Sims 4

симулятор жизни Sims 4

симулятор жизни Sims 4

Самый известный симулятор жизни Sims 4, который пользуется бешеной популярностью, отчасти написан на Python — как раз благодаря нему в игре можно менять параметры персонажей и жилища. Изображения: origin.com

Battlefield

Python активно использовали при создании знаменитого шутера Battlefield — от серверных элементов управления до внутренней логики игры. Изображение: vgtimes.ru

Лучшие курсы по Python — в подборке

В основном в разработке игр используют эти языки. Но в зависимости от проекта могут понадобится и другие.

Если вы уже выбрали какой-то конкретный движок, то и язык нужен подходящий — для каждого движка он свой. В случае с Unity — это C#, а Unreal Engine 4 поддерживает С++.

Но скорее всего одним языком дело не ограничится. В разработке игр изучать сразу несколько языков — не прихоть, а жизненная необходимость. Опытные программисты, работающие в крупных студиях, иногда пишут на семи-восьми языках одновременно.

Поэтому, если вы решили связать судьбу с производством крупных игр, будьте готовы стать «полиглотом». Чем больше языков вы освоите, тем более интересные и разнообразные задачи сможете получить, а шансы устроиться на работу мечты заметно возрастут.

Настройка интерфейса

В стандартном интерфейсе проекта шесть элементов рабочей области:

  1. Верхняя панель инструментов в ней находятся стандартные вкладки File, Edit, Help, как во многих других интерфейсах, а также вкладки Assets, GameObject, Components и Window.
  2. Scene — окно сцены, в котором выстраивается игровое пространство (элементы игрового мира, текстуры, фигурки персонажей и прочее).
  3. Games — это окно игры, в котором можно посмотреть глазами пользователя, как будут двигаться элементы и работать игровые механики.
  4. Hierarchy — окно иерархии, в нем перечислен список всех элементов (GameObject), которые помещены в окно Scene.
  5. Project — это система папок, в которых хранятся ассеты по категориям (текстуры, шрифты, звуки и т.д.).
  6. Inspector — окно для изменения элементов игры, их размера, цвета, положения в пространстве и других характеристик.

Stencyl

Еще одна среда для разработки простых компьютерных игр, которая не требует от пользователя знания кодов и языков программирования. Вам придется работать со схемами и сценариями, представленными в виде блоков. При этом разрешается перетаскивать объекты и характеристики мышкой. Несмотря на то, что в блоках предусмотрены десятки вариантов, авторы Stencyl позаботились и о тех, кому этого может не хватить. Так, разрешается прописывать в блоках свой код. Правда, для этого понадобится разбираться в программировании.

Пользователям, которые работали в Photoshop, понравится графический редактор Scene Designer, предназначенный для рисования игровых миров. Его инструментарий поразительно напоминает меню популярного фоторедактора.

Stencyl_программы для создания игр

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector