
Рассматриваем преимущества Phaser и его ключевые особенности
Разбираем функционал, который предстоит разработать в ходе модуля
Устанавливаем локальный сервер в редакторе VSCode для запуска разрабатываемой игры
Знакомимся со структурой проекта
Создаем программный каркас приложения
Загружаем и рисуем на экране фоновое изображение
Загружаем и выводим на экран спрайты карт
Выносим функционал сцены в отдельный ES6 класс
Создаем ES6 класс карты префаба спрайта
Устанавливаем каждой карте свое изображение
Переворачиваем карту по событию клика
Разработка основой игровой логики
Перезапускаем игру при открытии последней карты
Скейлинг спрайтов
Используем Phaser.Tween для запуска анимации переворота карт
Загружаем и подключаем кастомный шрифт
Выводим на экран текст
Реализуем функционал обратного отсчета с помощью Phaser.Time.TimerEvent
Проигрываем звуковые эффекты и музыкальный трек с помощью Phaser.Sound.WebAudioSoundManager
Используем Phaser.Tween для создания анимации вылета карт
Завершаем работу над игрой добавлением анимации улета карт
Цель: Нарисовать бэкграунд
Знакомимся с игрой модуля
Разбираем структуру проекта
Создаем стартовую сцену
Загружаем и выводим на экран бэкграунд
Цель: Загрузочный экран и организация предзагрузки ресурсов
Создаем загрузочную сцену и сцену предзагрузки ресурсов
Реализуем переход между сценами
Цель: Переход со стартовой сцены на игровой уровень
Добавляем сцену игрового уровня
Выводим текст Tap to start на стартовой сцене
Реализуем переход со стартовой сцены на сцену уровня по событию тапа используя Phaser.Input.InputPlugin
Цель: Вывести на экран спрайт дракона
Склеиваем изображения дракона в один спрайтлист при помощи TexturePacker
Загружаем полученный атлас в прелоадере
Выводим первый фрейм атласа на сцене уровня
Цель: Реализовать движение дракона на экране по нажатию на клавиши клавиатуры
Создаем класс игрока префабом GameObjects.Sprite
Подключаем физический движок Phaser.Physics.Arcade
Реализуем логику движения в зависимости от нажатой клавиши используя Phaser.Input.Keyboard.KeyboardPlugin
Выполняем обновление позиции игрока на сцене уровня
Цель: Сделать скроллинг фона
Загружаем бэкграунд как Phaser.GameObjects.TileSprite
Запускаем движение бэкграунда для ощущения эффекта полета
Цель: Вывести на экран вертолет противника
Создаем и загружаем атлас из изображений вертолетов противника
Реализуем префаб противника
Добавляем противника на правый край экрана
Цель: Создавать противников используя префаб группы
Создаем префаб группы Phaser.Physics.Arcade.Group и добавляем в нее противников
Цель: Создание противников по таймеру
Цель: Использовать для создания новых врагов уничтоженные вертолеты
Обновление спрайта при обновлении сцены
Активация и деактивация спрайтов
Деактивируем объекты вышедшие за левый край экрана
При создании новых противников используем деактивированные ранее объекты
Цель: Огоньки пламени выпускаемые драконом
Загружаем спрайт пламени
Реализуем префаб пламени и префаб группы
Запускаем выстрелы по таймеру
Цель: Реализовать пересоздание пуль
Определяем момент уничтожения пули и деактивируем спрайт
Используем деактивированные спрайты при создании новых объектов
Цель: Вынести общий код движущихся объектов в базовый класс
Определяем общий функционал
Переносим общий код в базовый класс
Цель: Реализовать стрельбу вертолетами противника
Загрузить спрайт пули вертолета
Разрабатываем функционал выстрелов врагов
Цель: Обрабатывать столкновения всех движущихся объектов
Определяем правила столкновений объектов
Выполняем обработку при возникновении событий столкновений
Цель: Обработка событий завершения игры
Определяем события завершения
Используем Phaser.Events.EventEmitter для установки и отслеживания события
Запускаем собственные события из сцены
Цель: Вывести статистику уровня на стартовой сцене
Выводим на экран набранные очки за уничтожение врагов
Передаем в стартовую сцену число набранных очков и статус завершения уровня
Выводим полученные данные в стартовой сцене
Рисуем окно статистики с помощью Phaser.GameObjects.Graphics
Цель: Запустить анимацию маха крыльев
Создаем покадровую анимацию при помощи Phaser.Animations.AnimationManager
Цель: Запустить анимацию взрыва при уничтожении вертолета
Создаем и загружаем атлас взрыва
Запускаем анимация взрыва в отдельном префабе
Цель: Проигрывать музыкальную тему и звук взрыва
Загружаем звуковые файлы в прелоадере
Добавляем звуки на уровень
Запускам тему при старте уровня
Воспроизводим эффекты при столкновении
Цель: Реализовать Loading Bar
Используем Phaser.GameObjects.Graphics для отрисовки прогресс бара
Цель: Создать карту уровня в Tiled
Загружаем набор игровых ассетов
Создаем новую карту в программе Tiled
Добавляем слои травы, дороги, песка и земли
Заполняем созданные слои из заданного набора тайлов
Цель: Добавить игровые объекты и экспортировать финальный json файл карты
загружаем набор изображений объектов
подготавливаем нужные слои и расставляем объекты
экспортируем готовый json карты
Цель: Установить шаблон проекта phaser
Скачиваем репозиторий шаблона
Устанавливаем git и node
Устанавливаем зависимости проекта
Знакомимся со структурой игры
Выполняем команды сборки и запуска
Цель: Создать структуру сцен
Создаем сцены инициализации, загрузки ресурсов и игрового уровня
Реализуем масштабирование при изменении размеров экрана
Знакомимся с возможностью экспорта и импорта классов в ES6
Цель: Подключить tilemap и отрисовать слои
Получаем итоговый json файл карты
Загружаем игровые ассеты в сцене прелоада ресурсов
Знакомимся с возможностями Phaser.Tilemaps.Tilemap и реализуем отрисовку слоев карты
Цель: Добавить на карту объекты столкновений
Подготавливаем спрайтлист объектов в TexturePacker
Загрузить ассеты в сцене предзагрузки ресурсов
Подключаем физический движок MatterJS
Реализуем добавление объектов со слоя объектов
Цель: Вывести на экран машину игрока
Получаем позицию из заданной в Tiled точки на карте
Создаем класс игрока для отрисовки машины в нужном месте
Позиционируем игровую камеру относительно машины игрока
Цель: Реализовать газ и задний ход
Получаем направление движения по нажатию клавиш вверх и вниз
Используем Phaser.Math.Vector2 для определения скорости с учетом угла поворота
Устанавливаем скорость машины на основе направления движения и угла поворота спрайта
Цель: Реализовать повороты налево и направо
Получаем направление поворота по нажатию клавиш влево и вправо
Определяем новое значение угла разворота
Устанавливаем новый угол поворота спрайту машины
Цель: Реализовать ускорение и торможение
Плавно увеличиваем скорость при разгоне и плавно снижаем при торможении
Вы хотите попасть в геймдев?
Изучаете программирование и хотите прокачать свои скиллы в разработке программ? Есть идея игры, но не знаете, как подступиться к технической реализации?
Этот курс для вас!
В ходе обучения мы изучим популярный игровой фреймворк Phaser 3, используемый для создания отличных HTML5 игр.
Почему именно Phaser?
Несмотря на то, что Phaser крайне прост в освоении, его используют серьезные игровые студии при разработке коммерческих игр. С его помощью можно решить практические любые задачи. После прохождения одного этого курса вы будете обладать всеми необходимыми навыками для самостоятельного создания браузерных игр самых разных жанров.
Зачем создавать HTML5 игры?
Рынок HTML5 игр сегодня на пике развития. Социальные сети активно развивают свои игровые платформы для поддержки HTML5 игр и ищут новых разработчиков. Одноклассники постоянно проводят конкурсы в HTML5 направлении с розыгрышем щедрых призов. Facebook открыл платформу Instant Games, а Вконтакте активно работает над HTML5 платформой Direct Games. Instant игры можно запустить даже в Telegram!