Как сделать платформер в гд

Обновлено: 03.07.2024

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

Ориентирована скорее на новичков, так что если вы уже более-менее разбираетесь в левел-дизайне, то маловероятно, что найдёте что-то интересное.

Эта статья не фокусируется на программной части, однако вы должны не забывать о ней во время создания уровня. Его возможные размеры и количество объектов зависят от того, сколько людей работает над этим и как много времени доступно.

1. Выберите визуальный стиль.

2. Составьте список.

Составьте список всего, что встретит игрок на уровне. Это включает всё, что игрок увидит, узнает, услышит и тому подобное. Этот список должен включать в себя особые и обычные элементы:

Особые элементы обычно встречаются лишь раз на уровне(а возможно, и в игре).

Обычных элементов на уровне больше одного каждого.

Запишите, сколько раз раз будет встречаться каждый обычный элемент ( например, на уровне может быть собрано 50 монет или игрок может убить до 10 определённых врагов). Эти числа служат для оценки, они помогут определить сложность уровня. Например, может быть два злых тролля на уровне 1 и четыре злых тролля на уровне 2. Можете дать кому-нибудь(а лучше — всем) в команде проверить список.

Вот небольшой пример списка, который будет использоваться на изображениях далее:

  1. Встреча с первым противником.
  2. Получение первого бонуса.
  3. Обучение двойному прыжку.
  4. Обучение возможности разрушить некоторые объекты.
  5. Первая запертая дверь.
  6. Первый ключ для открытия запертой двери.
  7. Первый рычаг для активации подвижной платформы.
  1. Враждебные солдаты ( x30)
  2. Враждебные турели ( x10)
  3. Бонусы ( x30)
  4. Подвижные платформы ( x3)
  5. Запертые двери (x2)
  6. Ключи ( x2)
3. Сделайте грубый набросок уровня.

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

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

  1. Некоторые зоны слишком большие или слишком маленькие.
  2. Некоторые линии слишком прямые и длинные(это скучно).
  3. В целом уровень слишком простой или слишком заполненный.
  4. В целом уровень не выглядит интересным.

Пример грубого наброска уровня:


4.Сделайте грубые наброски особых зон.

Игроки должны найти каждый из элементов списка из пункта 2 где-то на уровне. Сделайте наброски всех зон, где игроки встретят особые элементы.

Чётко разделяйте проходимые и непроходимые пространства на набросках. На рисунках далее проходимые области белые, а непроходимые отмечены диагональной штриховкой (а также это двери и подвижные платформы).

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

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

Особый элемент 1: Встреча с первым врагом.


Особый элемент 2: Игрок находит первый бонус.


Особый элемент 3 : Обучение двойным прыжкам.


Особый элемент 4: Объяснение возможности разрушить некоторые объекты.


Особый элемент 5: Первая запертая дверь.


Особый элемент 6: Игрок находит ключ.



Особый элемент 7: Рычаг и активируемая им подвижная платформа.


5. Сделайте подробный набросок.

Разместите столько обычных объектов, сколько сможете(но не переборщите), но можете заниматься ими уже в редакторе уровней.

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

Пример подробного плана:



Особые элементы выделены цифрами:


6. Постройте каркас уровня.

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

Используйте минимально-необходимую графику для каркаса, чтобы было проще что-то изменять, если понадобится. Например, если у вас есть пять изображений травы, используйте на этом этапе только одно из них. Остальные четыре варианта можно будет добавить на пункте 8, во время декорирования уровня.

На этот момент окончательная графика может быть не закончена, поэтому можете использовать тестовую(разноцветные прямоугольники и другие формы), но желательно примерно того же цвета, что и конечный вариант. Цвет сильно воздействует на восприятие уровня.

7. Пройдите уровень.

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

Изменения уровня могут включат следующее:

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

Двигайте, добавляйте или убирайте бонусы для большего баланса.

Двигайте, добавляйте или убирайте противников, чтобы сделать игру проще или сложнее.

Важное замечание: Перед тем, как начать создавать первый уровень игры, нужно уже иметь прототип игровой механики, используя временные тестовые уровни. Если этого не сделать вам возможно придётся менять уровень после каждого изменения характеристик. Например, при смене максимальной высоты прыжка, придётся также корректировать и всё платформы, подстраивая их под новую длину и высоту прыжка. Это занимает достаточно много времени и лучше подобного избегать.

8. Украсьте уровень.

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

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

Как-то внезапно появилось необычное для меня желание что-нибудь перевести, это мой первый перевод, приветствуются любые замечания, постараюсь исправлять.

🏓 Создаем 2D-игру на Unity: инструкция для новичка

Недавно мы рассказали о том, как научиться разработке игр на Unity . Продолжим тему на практике и покажем, как новичку создать на этой платформе первую 2D-игру.

Если вы хотите получить более систематическое образование в области разработки игр, мы рекомендуем рассмотреть факультет разработки игр онлайн-университета GeekBrains.

Двумерные игры сравнительно просты: для них не требуется сложных 3D-моделей, программный код по сравнению с 3D-проектами выглядит понятнее. Такие игры популярны как на десктопах, так и на мобильных устройствах. Unity также позволяет разрабатывать игры и для браузеров.

За последние годы вышло много популярных двумерных игр:

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

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

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

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

В первую очередь создадим новый проект и откроем его настройки (Edit → Project Settings). Во вкладке Editor установим параметр Default Behaviour Mode в значение 2D

Настройка проекта Детальная настройка проекта

Следующим шагом сохраним текущую активную сцену, назвав ее, например, Scene1. Теперь создадим основные игровые объекты: ракетку, мяч и менеджер игры, в котором будет храниться основная логика игры.

1. Создаем пустой объект, переименовываем в GameManager.

Создаем пустой объект

Создаем пустой объект

3. Создаем квадратный спрайт, называем его Pad (Assets → Create → Sprites → Square). Аналогично создаем круглый спрайт Ball (Assets → Create → Sprites → Circle). Масштабируем спрайт Pad со следующими параметрами – x:0.5, y:2.5, z:1.

Создаем спрайты

Создаем спрайты

4. Создаем префабы для Pad и Ball, после чего добавляем к ним компонент Box Collider 2D (включаем параметр Is Trigger) и компонент Rigidbody 2D (выставляем параметр Body Type в значение Kinematic).

Добавляем .компонент Box Collider 2D Настраиваем.компонент Box Collider 2D Добавляем компонент Rigidbody 2D Масштабируем спрайты

6. Заполняем скрипты следующим кодом.

GameManager.cs Ball.cs Pad.cs

6. Добавляем к префабу Ball и Pad теги с аналогичными именами. Выделив префабы, в инспекторе мы можем видеть выпадающий список тегов. Там же расположены и кнопки для добавления и редактирования тегов.

7. В настройках камеры выставляем параметр Projection в значение Orthographic, а параметр Clear Flag – в значение Solid Color.

Настройка камеры

Настройка камеры

8. Настраиваем кнопки, как показано на следующих скриншотах (Edit → Project Settings → Input Manager).

Настройка ввода, основное Настройка ввода, первый игрок Настройка ввода, второй игрок

Вот и всё, игра готова!

Пинг-понг, итоговый результат

Пинг-понг, итоговый результат

Билд для платформы Windows

1. Официальный туториал от Unity, где детально рассмотрен процесс создания roguelike RPG.

2. Youtube-канал Brackeys , где можно найти серию видеоуроков по созданию 2D-платформера.

3. Youtube-канал N3K EN содержит множество уроков как по отдельным компонентам Unity, так и полноценные серии уроков по созданию игр с нуля.

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

В числе прочего вы разработаете 2D-платформер с физическими загадками и динамическим освещением, научитесь портировать его на мобильные устройства. Кроме того, разработаете полноценную браузерную стратегию, а также игру в жанре двухмерных гонок.

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


Peaceful (ID: 59919444 ) – С виду милый уровень, но по середине вас ждёт “переворот событий”.
PeaceKitty (ID: 62367947 ) – Тоже самое, что и 1 только с другим оформлением.
Ship challenge (ID: 70197989 ) – С виду челлендж на стрейт(Ровный полёт), но посередине вас ждёт скример.
Lostlocked (ID: 48021363 ) – Потерянный Deadlocked.

TRANING LEVEL (ID: 71154827 ) – Уровень с тренировкой почти всего.
Ship Traning (ID: 25133872 ) – Качественный уровень для тренировки корабля (Самолёта).
Fingerdash Wave (ID: 28577547 ) – Уровень для тренировки волны Fingerdash.

DVA TOCHKA DVA (ID: 71218435 ) – Уровень со свинг коптером.
Icon RACE (ID: 60855450 ) – “Мультиплеер” в geometry dash.
Vertical Mode (ID: 60034405 ) – Вертикальный режим в geometry dash.
Brick Mobe (ID: 59850300 ) – Режим “кирпича” в geometry dash.
Long Ship (ID: 69998111 ) – Режим длинного корабля (самолёта).

BLOODSTEREO (ID: 69746761 ) – Конец Bloodbath’а и начало Stereo Madness.
Sakupen wall (ID: 69094363 ) – Стена которую можно разрушить (С анимацией).
EPIC BATTLE ZA FULL (ID: 70686211 ) – Эпическая битва за фулл с луной.
RIP Michigun (ID: 67997502 ) – Уровень в честь бывшего модератора Michigun’а.
Fun Dance Drop (ID: 66667058 ) – *Без описания*.
02Bounce (ID: 66241482 ) – Уровень с аниме тяночкой.
1ST LEVEL (ID: 128) – Первый пользовательский уровень Geometry dash.
YOUVE BEEN TROLLED (ID: 57436521 ) – Легкий Insane уровень. (С орбами, звездами)

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

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

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

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

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

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

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

А в 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.

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также: