четверг, 31 мая 2012 г.

Мантры о системах частиц - Particle systems in Flash

Мгновение, застывшее во времени!

Ниже вы можете ознакомиться с несколькими статьями о создании системы частиц для Flash. Эти статьи я уже выкладывал в сеть и довольно давно, потом они пропали и вот, я решил сдуть с них пыль и вернуть на место. 

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

Приятного ознакомления с материалом. :)

PS: Извиняюсь, за мудацкий способ встраивания флешек в текст этой статьи. Но бесплатный sites.google, где я храню SWF файлы, напрочь отказывается предоставлять к флешкам доступ без этой дурацкой процедуры с кликом по ссылке.

PPS: Оказалось пользователям Internet Explorer повезло еще меньше :) Если у вас белые окошечки вместо флешек, то пока вариант только один: качните архив по ссылке и внутри найдете swf файлик, который можно посмотреть локально на компе.

Читать дальше: Мантры о системах частиц - Particle systems in Flash

понедельник, 28 мая 2012 г.

Факторы успешности современных мобильных игр

Tiny wings, angry birds, cut the rope На FlashGAMM 2012 Алексей Тарасенко, игровой дизайнер Zeptolab, рассказывал о том, как сделать успешную мобильную игру.
Организаторы конференции выложили этот и другие доклады на своем сайте.  Можно скачать и ознакомиться. А я хочу просто выписать здесь основные тезисы.

Факторы успешности современных мобильных игр:

  1. Простота игровой механики
  2. Ориентация на широкую аудиторию игроков
  3. Интуитивное управление
  4. Короткая игровая сессия
  5. Облик главного героя
  6. Неожиданный, оригинальный игровой сеттинг
  7. Юмор
  8. Разнообразие геймплея
  9. Поддержка и развитие игры апдейтами
  10. «Отшлифованность» игры
  11. Маркетинговый подход
Читать дальше: Факторы успешности современных мобильных игр

пятница, 4 мая 2012 г.

Компонент для работы с растровыми шрифтами

Продолжая работу над портом движка Flixel на Haxe, столкнулся с необходимостью оптимизации работы с текстом. Проблема заключается в следующем: стандартный класс движка FlxText сильно завязан на использование метода draw(), и при обновлении текста создается новый экземпляр класса BitmapData, еще одним недостатком является то, что для каждого такого текстового объекта создается свой экземпляр класса TileSheet (если в качестве целевой платформы установлен c++, neko или android). В общем видно, что такая реализация класса для отображения текста довольно неудачна и нужно искать другие решения. И тут на сцену выходят растровые шрифты -- каждый символ такого шрифта представляет собой по-сути простое изображение и работать с ними можно точно также, как и с обыкновенными изображениями. В наборе классов Flixel Power Tools как раз есть такой класс FlxBitmapFont и я его уже давно портировал, но в нем также присутствует довольно раздражающее меня ограничение -- он поддерживает только моноширинные шрифты (все символы таких шрифтов должны иметь одинаковую ширину), а мне же хотелось чего-нибудь более универсального. И недавно мне на глаза попался движок Pixelizer (упоминал его в одном из предыдущих сообщений), в котором очень понравилась реализация такого компонента: в нем уже был такой функционал, как изменение цвета шрифта, обводка и тени, поддержка многострочного текста и др. Встала задача по переводу этого добра на другие рельсы:
  1. Реализация в виде отдельного компонента, не завязанного ни на какой из движков -- такой класс нужен был для того, чтобы наконец-то закончить портирование прелоадера Flixel.
  2. Реализация в виде плагина для Flixel, которую можно использовать непосредственно в играх.
Самая первая версия порта была готова через 1-2 дня, но сразу же вылезли проблемы с производительностью: для отрисовки текста использовался метод draw(), позволяющий задавать тексту цветовую трансформацию и прочие параметры. Нужно было искать другой способ отрисовки. Подумав немного и посмотрев на реализацию спрайтов в Flixel, пришел к следующему решению: на входе имеем набор растровых изображений, представляющих собой исходные изображения символов растрового шрифта, а для того, чтобы отображать масштабированный и "окрашенный" текст создается дополнительный массив трансформированных изображений символов, таким образом, мы можем использовать уже гораздо быстрый метод copyPixels() (после такого преобразования нагрузка на процессор при отрисовке текста снизилась в 2-4 раза).
Завершив с оптимизацией, я приступил к реализации дополнительных "фишек":
  • настройка размера шрифта
  • настройка расстояний как между символами, так и между строками текста
  • настройка переноса слов
На это ушло еще несколько дней, скачать и посмотреть что получилось можно со странички репозитория - https://github.com/Beeblerox/BitmapFont [...]
Читать дальше: Компонент для работы с растровыми шрифтами