Pull to refresh

Фичи новой версии игрового фреймворка Flixel 2.5

Reading time 4 min
Views 2.1K
Original author: Flixel Community
Не так давно вышла новая версия Flixel, довольно известного и популярного фреймворка для создания игр (последние изменения на github датируются 28 апреля). Теперь порядковый номер фреймворка достиг циферки 2.5. Данное обновление включает в себя несколько, на мой взгляд, интересных фич, которые могут ещё больше упростить жизнь Flash-разработчиков. Если вам интересен Flixel, то настоятельно рекомендую ознакомиться с оригинальным описанием, которое содержит ряд примеров, демонстрирующих новые фичи, о которых речь пойдёт ниже.

Камеры

Одной из новых фич Flixel является появление гибкого и мощного класса для управления камерами, который называется (ВНЕЗАПНО!) FlxCamera. По-умолчанию, новый проект создаётся с одной камерой, размеры которой совпадают с размерами окна FlashPlayer. Доступ к этой камере может быть получен через ссылку FlxG.camera. Вы можете заменить эту камеру или добавить дополнительные камеры для создания таких эффектов, как «split-screen», «картинка-в-картинке» или «мини-карта». Каждая камера является независимым визуальным объектом, с собственными настройками приближения, цветового оттенка, вращения и масштабирования. Так же, каждый игровой объект поддерживает свой список камер, поэтому вы можете достаточно просто настроить определённые игровые объекты для отображения в определённых камерах. Разработчики игр в стиле «приключения» так же могут ознакомиться с исходным кодом игры «Mode», чтобы узнать больше способов для использования камер в играх.

Поиск пути

Понятие «поиска пути» означает поиск ответов на вопросы «Как дойти из точки A в точку B?» или «Есть ли возможность дойти из точки A в точку B?». В классе FlxTilemap появилась новая функция FlxTilemap.findPath(), которая возвращает объект FlxPath, который является списком «узлов» (объектов FlxPoint). Думайте об этом списке как просто о списке координат X и Y в пространстве, которые начинаются из стартовой позиции и заканчиваются финишной позицией. Когда вы найдёте валидный путь, вы можете передать эти данные любому FlxObject используя функцию FlxObject.followPath(). Эта функция «говорит» объектам, что нужно начать следовать заданному пути. Вы можете настраивать скорость, направление (обратное, yoyo и т.п.), а так же задать возможность «следования» пути только по горизонтали (удобно для объектов, реагирующих на гравитацию). Эти настройки позволяют использовать пути не только для организации AI персонажей, но так же и для организации «лифтов», движущихся платформ и зацикленной фоновой анимации.

Повторы

«Повторы» — новая и мощная фича Flixel. «Повторы» — это список с информацией о нажатых кнопках клавиатуры и данных о поведении мышки, в соответствии с временем. Так как Flixel в большей степени разграничивает функционал своих компонентов, мы можем использовать информацию «повторов» для пересоздания игровых сессий, которые были записаны кем-то другим. «Повторы» могут быть использованы для отладки, создания «attract-mode» режимов, внутри-игровых демо-режимов, а так же создания роликов. Управление «повторами» может осуществляться через «VCR» панель в слое-отладки, или напрямую через такие функции, как FlxG.loadReplay(), FlxG.recordReplay(), и FlxG.reloadReplay(). Разработчики игр в стиле «приключения» так же могут ознакомиться с исходным кодом игры «Mode», чтобы увидеть примеры загрузки «повторов» из файла, для создания «attract mode» режима.

Группы и столкновения

Игровые объекты Flixel могут быть «сохранены» внутри FlxGroup объектов. Группы могут быть использованы для упрощения, автоматизации и организации обновления, отрисовки, поиска столкновений, контролирования камер, расчёта величины скроллинга и многого другого. Когда вы хотите избежать вызова таких ресурсоёмких функций, как FlxG.collide() больше нескольких раз в каждом «игровом цикле», вы можете использовать вложенные группы, как способ упростить эти вызовы. Например, объекты в вашей игре разделены на 3 разные группы: Apples, Pears и Bananas. И вы так же хотите организовать функционал «приземления» объектов. Для реализации этого функционала вам может показаться хорошим решением вызывать функцию FlxG.collide() 3 раза: FlxG.collide(Apples, ground), FlxG.collide(Pears, ground), FlxG.collide(Bananas, ground). Более лучшим решением будет создание 4-й группы, допустим она будет называться Fruit, и добавить в эту группу 3 группы объектов (Apples, Pears, Bananas), и после этого можно вызывать функцию FlxG.collide(Fruit, ground). В этом случае вы сохраните функционал «приземления» игровых объектов, а так же получите значительный прирост производительности.

Tilemaps и Auto-Tiling

Вдохновившись старыми видео-играми, в которых игровое окружение создавалось из сетки квадратных «тайлов», разработчики Flixel создали класс FlxTilemap. Каждая ячейка сетки имеет номер или индекс, с помощью которого можно ссылаться на определённую часть графики, которая в свою очередь может использоваться несколько раз для создания игрового пространства. Тайловая графика имеет множество преимуществ, например, легко понять, как тайлы должны отображаться, как тайлы должны перекрывать объекты, и какие особенными свойствами должен обладать каждый тайл. Flixel так же предоставляет алгоритмы для автоматического размещения тайлов стен и пола, основываясь на массивах с бинарной информацией о тайлах. Это — простая и гибкая система, которая хорошо подходит для быстрого прототипирования.

Частицы

Понятия «частиц» и «излучателей частиц» относятся к отдельным классам, которые используются для создания специальных эффектов и поведения. «Излучатели» являются объектами, которые создают частицы и управляют ими. FlxParticle — это простое расширение класса FlxSprite, а FlxEmitter — это просто расширение FlxGroup, поэтому системы частиц в Flixel не сильно отличаются от других обычных групп спрайтов. Системы частиц просто добавляют функционал для создания и «запуска» частиц, а частицы обладают некоторыми свойствами, для настройки их поведения, чтобы оно выглядело более реалистично. Класс FlxEmitter так же обладает некоторыми свойствами для настройки «разброса» скоростей, скорости вращения, гравитации, поведения при столкновениях и др.

Сохранения игры

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

P.S.:

Первоначально узнал о выходе Flixel из поста на flashgameblogs.ru.
Tags:
Hubs:
+17
Comments 8
Comments Comments 8

Articles