Как сделать шутер платформер
Сегодня мы будем создавать первую часть игры "Платформер-шутер" в Scratch!
Ты узнаешь:
- как подготовить фон для игры
- как работать с переменными
- как работать с другими блоками и создать эффект гравитации в Scratch
и многое другое.
►►Смотрите видео и записывайтесь к нам на обучение по программированию в Scratch: bit.ly/3naZd0v
►► И не забывайте подписаться на наш канал: hupack.info/both/SBe.
Где нас можно найти ►
---------------------------------------
★ Наш сайт: bit.ly/3xNrhdX
★ Skype: itgen.by (Айтигеник)
★ Вконтакте: itgeniokids
★ Фейсбук: ITGEN.IO/
Megjegyzés: 21
Привет, а можете сделать систему аккаунтов для сохранения прогресса игры. Или можете сделать игру танчики против исскуственного интелекта?
Сегодня я хочу поделиться с вами некоторыми рекомендациями для создания платформеров от Scott Rogers — этот человек принимал участие в разработке: God of War, Maximo series, Pac-man World, Dawn to Life series, Darksiders и другие.
Не так давно мне прислали подборку картинок с рекомендациями по созданию платформеров. Я кликнул пару картинок — тема показалась мне интересной, но за отсутствием времени отложил их изучение на потом. Сегодня, в преддверии праздников, разбирая завалы на рабочем столе, я вновь увидел эти картинки и решил познакомиться с ними поближе. �? уже через пять минут просмотра я понял, что будет большим грехом не поделиться ими с вами, ведь здесь практически вся базовая информация о создании действительно качественных и удобных платформеров.
К сожалению, я не нашел автора перевода, поэтому не смог связаться с ним для получения разрешения и указать ссылку первоисточник перевода.
Автором оригинальных рекомендаций является Scott Rogers, а сами рекомендации были опубликованы еще в далеком 2008 году. Впрочем с тех пор данная информация совсем не потеряла актуальности. Я, как и автор данных рекомендаций, надеюсь, что они помогут сделать ваш платформер лучше и интереснее. Приступаем!
Кликайте на картинки чтобы их увеличить.
Ссылки по теме
Ну и напоследок несколько ссылок по теме, включая архив картинок в оригинальном размере:
А при разработке Зомботронов все это было осмыслено и учтено?
@Алексашка, нет, к сожалению, многое из описанного здесь, в Зомботронах не учтено и в плане геймплея есть косяки.
Данный материал ко мне попал в руки буквально чуть больше месяца назад, а нашел я у себя его в папке на разбор только сегодня.
Кстати, про магическую цифру 3, подтверждаю — идеальная цифра, тоже постоянно ей пользуюсь. Сколько надо сделать видов камней? Мм.. пусть будет 3, а сколько сделать видов деревьев? Тоже 3! А почему 3? Ну не много вроде и не мало, при этом и разнообразие какое-то получается — так я рассуждал несколько лет назад, а сейчас уже просто за правило взял, ведь во всех проектах это сработало на ура ;)
Если на вашем компьютере нет программы , скачайте её с официального сайта : . Обязательно скачайте программу GD с этой страницы, чтобы получить . Установите или распакуйте и запустите программу. Начальная страница выглядит так:
При желании, вы можете прочесть эту страницу, чтобы получить быстрый обзор интерфейса программы GDevelop. Заметьте, что внешний вид GDevelop может быть изменен: зайдите в Файл > Параметры, затем выберите Оформление и желаемый результат.
Видео
Проверка столкновений с помощью функции hitTestPoint()
Запустите приложение и проверьте как оно работает. Обратите внимание, что персонаж падает, но не останавливается на платформе. Для этого нужно доработать код, добавив проверку столкновений с платформой. В AS3 есть два метода проверки столкновений, первый это hitTestObject(), который проверяет, столкнулись или пересеклись два объекта, второй это hitTestPoint(), который проверяет, столкнулась или пересеклась точка и объект. Вы, наверное, помните, что когда мы конвертировали объекты в символы, то для персонажа указали точку регистрации внизу, а для платформы сверху слева. Так вот теперь будем использовать hitTestPoint() и проверять на столкновение точку персонажа и объект платформу.
При возникновении пересечения (столкновения) точки регистрации объекта char с платформой, объекту char устанавливается значение координаты y, точно такое же как и значение y платформы.
Проверьте, как работает пример, запустите приложение, теперь персонаж приземляется на платформу.
Список (массив) платформ
Так как в игре будет много платформ, то будет не просто проверять столкновение с каждой. Чтобы решить эту проблему давайте создадим список (массив) платформ, в который будут добавляться платформы. Используя оператор for будем проходить по всему списку и проверять каждую платформу, а также выполнять другие действия с ней, если это необходимо.
Чтобы каждая платформа добавлялась в список, добавьте следующий код в кадр символа Platform.
Давайте разместим еще платформы и проверим, как работает приложение.
Звуки и музыка
Давайте добавим в игру музыку и звуки. Для начала скачайте архив sounds.zip, в котором содержатся все музыкальные файлы для данной игры. Затем в Layout Editor (Редактор уровня) добавьте новый объект, который называется Xaudio2 — он появится в списке объектов сцены. Смотрите рис. 111.
Порталы
Создадим объект oPortal и в событии Create объявим переменную pair (пара). Эта переменная будет хранить id другого портала, к которому игрок будет телепортироваться. Таким образом вы сможете получить доступ ко второму порталу через первый.
От oPortal я унаследовал два объекта: oPortalBlue и oPortalPink, у каждого свой соответствующий названию спрайт.
Создадим новую комнату и добавим туда несколько порталов.
В редакторе комнаты если нажать на какой-нибудь слой, слева высветится меню свойств этого слоя. Если выделить слой Instances, в этом меню будут перечислены все экземпляры объектов, находящиеся на этом слою, там же будут написаны их идентификаторы.
При двойном нажатии на один из экземпляров высветится меню, где можно настроить этот конкретный экземпляр: изменить значения переменных, идентификатор или код создания. Изменение параметров выделенного экземпляра не затронет остальные экземпляры этого же объекта в комнате. В разделе Creation Code можно указать, какой портал будет являться парой для выделенного. Для этого пишем pair = *идентификатор другого экземпляра портала*;.
В моем случае id другого портала — inst_6CB6ED9F, у вас это название будет другим. По желанию это наименование можно изменить на более понятное, например, instPortalBlue1.
То же самое следует проделать с остальными тремя порталами.
Теперь в объекте oPlayer добавим событие пересечения с oPortal и добавим этот код:
other в любом событии пересечения двух объектов — это ссылка на экземпляр объекта, с которым пересекся экземпляр, вызвавший это событие.
Запускаем и смотрим результат.
Предварительный просмотр
Теперь можно проверить как работают выбранные поведения.
На ленте Scene выберите Preview :
Ваш любимый браузер будет открыт, и игра будет запущена Вы можете перемещать персонажа с помощью клавиш со стрелками и использовать кнопку Shift для прыжка! На данный момент объект не имеет анимации, мы добавим ее позже.
Если объект не движется, убедитесь, что вы добавили правильное поведения. Убедитесь, что вы добавили поведение Platform объекту Grass , o в противном случае игрок будет вылетать за пределы экрана.
Добавление анимации для главного героя
Пришло время добавить в игру главного героя. Скачайте архив с анимацией персонажа по этой ссылке — character.zip. Распаковав архив, внутри вы обнаружите 4 папки с анимацией.
Для начала загрузим анимацию стойки. Для этого вернитесь к слою scenery (выделив его) и создайте в Layout Editor (Редактор Уровня) новый объект спрайт. В Picture Editor (Редактор изображений) загрузите кадр анимации с именем frame01 из папки standing. Переименуйте спрайт в character и переместите его поближе к спрайту basis. Далее переходим на панель в правой части экрана и внизу выбираем вкладку Animator (Анимация). На панели отобразится список анимаций. Смотрите рис. 25.
Курсы
Если нужно подтянуть навыки программирования, то на арену выходит старый и проверенный игрок — Code School. Всё происходит прямо в интерфейсе сайта, который выглядит свежо и удобно. И не чувствуешь на затылке укоризненный взгляд Лобачевского со старого портрета над доской с графиком дежурств. Точно стоит обратить внимание хотя бы на бесплатные курсы, чтобы понять, насколько удобен такой формат обучения.
Есть официальные курсы от Unity, не надо далеко ходить. Кажется, что они и дальше готовы инвестировать в это направление (а после курсов можно еще получить сертификат).
У GeekBrains есть два отличных курса, разбитых по уровням сложности. Раз уж мы говорим о 2D-играх, нас интересует первый. Оба курса требуют определенной алгоритмической подготовки, программированию там не учат, только разработке на Unity.
Вы научитесь делать игры в 2D буквально с нуля: на первом уроке установите движок, а на восьмом уже запустите проект на Android. Вы даже можете заметить меня в списке преподавателей и случайно попасть на мой поток.
Переход на следующий уровень
Создадим объект oDoor и привяжем к нему спрайт.
Создаем в oPlayer событие столкновения с oDoor.
Пишем в нем room_goto_next();.
Это все. Осталось лишь добавить еще одну комнату и поставить дверь.
Дополнительный курс
На нашем сайте также есть . В ходе огромной программы вы изучите не только язык Питон, но также научитесь создавать веб сайты за счёт веб технологий и фреймворка Джанго. За курс вы изучите массу нового и к концу программы будете уметь работать с языком Питон, создавать на нём полноценные ПК приложения на основе библиотеки Kivy, а также создавать веб сайты на основе библиотеки Джанго.
Эксперт в медицинских тренажерах VR на Unity, физических симуляциях и сетевых играх.
Что такое Unity
Unity — это и среда разработки, и игровой движок, с помощью которого создаются проекты для разных платформ: ПК, мобильных устройств, игровых консолей и интернет-платформ, — поэтому он называется кроссплатформенным. В Unity есть инструменты для создания объектов, их перемещения, работы с графикой, текстурами и звуком, поэтому сделать полноценную игру с его помощью можно даже в одиночку.
Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — Genshin Impact, успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.
В игровой индустрии существуют десятки разных движков. Одни разработаны под конкретную игру, на других можно делать игры конкретного жанра (шутеры от первого лица, платформеры, гонки), а есть универсальные, вроде Unity, которые открывают разработчикам больше возможностей. Уникальность Unity заключается в сочетании нескольких факторов. Кроме того, что этот движок позволяет создавать проекты под разные устройства и не ограничивает разработчика конкретным жанром, он:
- имеет практически неограниченный бесплатный функционал;
- не требует глубокого знания языков программирования для создания первых простых проектов;
- имеет многочисленное и активное сообщество, в котором можно найти ответ на любой вопрос, потому что среди такого большого количества людей кто-то обязательно уже сталкивался с вашей проблемой.
Посмотрите также: Как установить Unity
Как создать простую игру
При создании собственного проекта важно помнить, что разработка кода — это примерно 20% игры; гораздо большее значение в ней имеют другие аспекты:
Разработчик игр на Unity
Перед созданием игры важно продумать все эти моменты и представить общую картину, а также найти референсы, на которые можно ориентироваться, продумать опорные точки сюжета и механики. Для создания игры именно на Unity также пригодится понимание некоторых базовых терминов, с которыми постоянно придется сталкиваться в процессе разработки:
Русского языка в настройках нет, так что придется совершенствовать технический английский. Всего Unity занимает 11,3 Гб,поэтому перед установкой лучше проверить свободное место на диске и почистить его при необходимости.
Следующий шаг — создание Unity ID. Можно регистрироваться с помощью почты или использовать предложенные аккаунты, например Google, Facebook или Apple. Важно поставить первые две галочки: согласие с условиями использования Unity и признание политики конфиденциальности. Третья галочка — это согласие на маркетинговые рассылки, ее ставить не обязательно.
После регистрации Unity предложит создать тестовый проект Microgame. На выбор предлагается пять шаблонов:
- LEGO Microgame;
- шутер от первого лица;
- картинг;
- платформер;
- пустой 3D-шаблон.
Можно выбрать любой из них и посмотреть, как работает создание игры в конкретном жанре. Обучающий материал пошагово демонстрирует назначение различных окон в интерфейсе и принцип работы с элементами игры: как заставить двигаться персонажей, поменять текстуру объекта или его форму. В обучении окно Scene, в котором происходит вся работа с элементами, уже заполнено различными объектами, но при создании проекта с нуля оно будет пустым.
Создание проекта
После обучения можно перейти к созданию своей первой игры на Unity с помощью кнопки NEW в меню проектов.
Новому проекту присваивается имя, выбираются место хранения на диске и темплейт — то есть шаблон для разработки, внешний вид и функционал которого зависит от количества измерений в игре. Проще начинать с 2D-проектов, так как для этого формата создано больше готовых ассетов. Конечно, можно сразу начать делать 3D-игры, но в этом случае многие элементы и анимации придется самостоятельно создавать с нуля или выделять бюджет на то, чтобы делегировать эту часть работы другим специалистам.
Настройка интерфейса
В стандартном интерфейсе проекта шесть элементов рабочей области:
- Верхняя панель инструментов— в ней находятся стандартные вкладки File, Edit, Help, как во многих других интерфейсах, а также вкладки Assets, GameObject, Components и Window.
- Scene — окно сцены, в котором выстраивается игровое пространство (элементы игрового мира, текстуры, фигурки персонажей и прочее).
- Games — это окно игры, в котором можно посмотреть глазами пользователя, как будут двигаться элементы и работать игровые механики.
- Hierarchy — окно иерархии, в нем перечислен список всех элементов (GameObject), которые помещены в окно Scene.
- Project — это система папок, в которых хранятся ассеты по категориям (текстуры, шрифты, звуки и т.д.).
- Inspector — окно для изменения элементов игры, их размера, цвета, положения в пространстве и других характеристик.
Добавление объекта
Объекты на экран Scene можно добавить из Asset Store. Для этого на панели инструментов нужно кликнуть на вкладку Window –> General –> Asset Store.
В строке поиска можно по названиям найти нужные компоненты, например, сет Free Platform Game Assets.
Как и другие ассеты, он загружается с помощью кнопки Import.
Перед загрузкой появится список всех компонентов, которые содержит этот пакет; некоторые из них можно исключить. Если в списке есть персонажи, текстуры или другие элементы, которые вам не нужны, можно просто снять галочки, и пакет загрузится без них.
После установки все ассеты будут доступны в окне Project. Теперь можно комбинировать и перемещать эти объекты, менять их форму, причем сделать это можно с помощью мыши или горячих клавиш, не написав ни одной строчки кода. Например, из перечня платформ самых разных видов можно выбрать одну и мышкой перетащить ее в рабочую область.
Шаг 2. Перенести в область Scene
Работа со скриптами
За поведение игровых объектов отвечают присоединенные к ним компоненты (Components). Базовый компонент любого объекта — Transform, он отвечает за положение элемента в окне Scene, возможность поворачивать и масштабировать его. К базовому компоненту можно добавить, например, Renderer, который меняет цвет, или RigidBody, который отвечает за массу и физику объекта. Но кроме базовых компонентов, объектам можно задавать особые условия, и для этого как раз используются скрипты.
Базовые элементы скриптов — это:
- using — элемент в коде, который подключает библиотеки;
- public class — в этой строке обычно прописан класс MonoBehaviour, он содержит набор функций, необходимых для работы скрипта;
- void — те самые функции, с их помощью прописываются действия, происходящие в игре.
Рассмотрим, например, функцию start. Любое действие в ней произойдет только один раз, когда запустится игра. Пропишем здесь print (“Hi”).
И можно заметить, что в консоли это слово выводится один раз.
Функция update — повторяющаяся, ее можно использовать, например, для передвижения объекта. Для этого в скрипте задается переменная int i = 0, она выводится на экран с помощью функции print (i) и увеличивается на одну единицу за каждый шаг с помощью i++.
В консоли можно будет заметить, что апдейт действительно срабатывает каждый фрейм и объект, к которому применен этот скрипт, плавно движется.
Настройка триггеров
Для понимания сути триггеров важно усвоить, что такое коллайдер (Collider). Это компонент, который присваивается объекту в пространстве игры, задает форму и делает его твердым, недоступным для прохождения сквозь него. Например, если мы разместим монетку в 2D-пространстве и захотим сделать так, чтобы она упала на платформу, то без использования компонента Collider ничего не получится — монетка пролетит сквозь платформу.
Поэтому обоим объектам необходимо присвоить компонент Box Collider 2D — это тонкая зеленая линия, которая обводит элементы по контуру, и за счет этой рамки они становятся твердыми, то есть один не может пройти сквозь другой.
Так объекты обязательно соприкоснутся и монета встанет на платформу.
Триггер (Trigger) — это пространство на карте, при попадании объекта в которое происходит действие; он тоже обводит объект или область в пространстве по краям. По сути, это тот же коллайдер, только триггер позволяет объектам проходить внутрь этой области. Представьте, что на ту же самую платформу вместе с коллайдером наброшен триггер, и при попадании персонажа внутрь триггерной области активируется телепорт — персонажа перебрасывает в другую точку карты.
Чтобы создать триггер, нужно накинуть тот же самый компонент коллайдера, но поставить галочку Is Trigger.
Триггеры распознают три варианта взаимодействия области на карте и объекта:
- OnTriggerEnter — объект зашел в зону;
- OnTriggerStay — объект находится в зоне;
- OnTriggerExit — объект покинул зону.
Что дальше?
Разработчик игр на Unity
Уже во время обучения вы создадите себе портфолио, сможете брать подработки и откликаться на вакансии.
Читайте также: