вторник, 20 декабря 2011 г.

Создание порта движка для создания двухмерных игр Flixel на Haxe

1. Что такое Haxe?
Haxe – это объектно-ориентированный язык для кроссплаторменной разработки, в настоящее время в качестве целевых платформ для него выступают flash, javascript, php, c++ (в начале 2012 года ожидаются c# и java). Если Вы раньше писали программы на ActionScript 3, то синтаксис Haxe покажется Вам знакомым (еще один немаловажный плюс). При этом для haxe существует множество различных библиотек, существенно облегчающих различные задачи. Одной из таких библиотек является NME (Neko Media Engine), позволяющая пользоваться flash api при разработке графических приложений для Windows, Mac, Linux, Android, iOS, WebOS, HTML5 и, конечно, flash (куда же без него), это означает, что Вы пишете один код (ну, почти что один), и он работает на всех перечисленных платформах. Кроме того, программы под Windows, Mac, Linux, Android, iOS и WebOS используют аппаратное ускорение графики (через OpenGL, OpenGL ES), что на данный момент дает значительное преимущество в производительности перед флэшом (аппаратное ускорение в котором есть на персоналках, но на мобильных платформах его пока только обещают).

Читать дальше: Создание порта движка для создания двухмерных игр Flixel на Haxe

понедельник, 19 декабря 2011 г.

Что такое игровой фан, или как сделать игры интересными - доклад для FlashGamm 2011 в Киеве

В Киеве прошёл очередной FlashGamm, оставив после себя не только хорошие воспоминания, но и новые знакомства а также понимание куда двигаться дальше. Продолжая развивать тему геймдизайна, я поставил для себя планку разобраться с понятием “игровой фан” - тема фундаментальная и на столько сложная, на сколько и полезная.

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

Читать дальше: Что такое игровой фан, или как сделать игры интересными - доклад для FlashGamm 2011 в Киеве

четверг, 15 декабря 2011 г.

Делаем правильные swc библиотеки

Flex пока еще не отпускает меня, и приходится с ним возиться. Для начала, надо отметить, что Flex фреймворк в целом хорошая штука. Местами даже изящная штука (это я следую американскому стилю, которому меня научил Яков Файн: сперва похвалить, потом поругать).

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

Давеча я убрал maven/flexmojos из своих проектов, и заменил их ручной конфигурацией проекта в IDEA и ant скриптами. Надо сказать, что так проще и лучше. Во всяком случае, для меня этот вариант явно комфортнее.

Теперь, в отличие от варианта c flexmojos, проект действительно легко подымается с нуля на машине нового разработчика, сразу собирается и запускается. Все swc зависимости лежат прямо в папке libs в самом проекте. А все настройки IDEA комитятся в репозиторий вместе с кодом проекта (ну почти все, кроме workspace.xml).

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

У нас есть ряд модулей (swc библиотек), которые написаны на чистом AS, не имеют никаких зависимостей от Flex SDK, и используются во многих проектах. Несмотря на то, что зависимостей нет, compc все равно старательно сует внутрь swc файла кучу классов из sdk. В результате модуль получается привязанный к конкретной версии sdk. И попытка использовать его в проекте с другим sdk может давать непредсказуемые эффекты, вплоть до того, что проект просто не соберется.

Стало быть, задача в том, чтобы убедить compc не пихать внутрь swc ничего лишнего, кроме классов и ресурсов самого модуля. Увы, адобовские инженеры постарались, чтобы задача эта оказалась нетривиальной.

Читать дальше: Делаем правильные swc библиотеки

среда, 7 декабря 2011 г.

Сохранение звука с микрофона на ActionScript 3.0

То, что недавно казалось фантастикой, сегодня уже реальность. Начиная с версии FlashPlayer'a 10.1 у класса Microphone появилось событие sampleData.

SampleDataEvent
Это событие отправляется когда в буфере микрофона появляются аудио-данные. Событие имеет свойство data, которое содержит образцы записанных с микрофона данных. Естественно данные приходят в сыром формате. И проиграть их вне FlashPlayer'a не получиться. Поэтому их необходимо декодировать, предварительно собрав необходимое количество в бинарный массив ByteArray.

//
// Объявляем бинарный массив для хранения полученных с микрофона аудио-данных
var _samples_arr:ByteArray = new ByteArray();;
//
// Получаем экзмпляр микрофона
var _microphone:Microphone = Microphone.getMicrophone(-1);
//
// Вешаем обработчик события
_microphone.addEventListener(SampleDataEvent.SAMPLE_DATA, onMicrophoneSampleData, false, 0, true);
//
// Обработчик обновления данных в микрофоне
function onMicrophoneSampleData (e:SampleDataEvent):void
{
  //
  // Добавляем полученные данные в биннарный массив
  _samples_arr.writeBytes(e.data);
}

Для начала выполним преобразование в .wav-формат.

Читать дальше: Сохранение звука с микрофона на ActionScript 3.0

среда, 23 ноября 2011 г.

AlternativaGUI - простой способ создать комплексный интерфейс

Библиотека для создания пользовательских интерфейсов AlternativaGUI вышла в свет. Загрузить ее можно с официального сайта компании AlternativaPlatform в разделе GUI. Библиотека распространяется бесплатно и может беспрепятственно использоваться в том числе в коммерческих проектах. Согласно лицензионному соглашению нужно лишь указать в описании проекта ссылку на сайт alternativaplatform.com.

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

Особенности AlternativaGUI

  • Высокое быстродействие
    Быстродействие достигается слаженной работой всех компонентов интерфейса в одной системе. В базовых классах реализован только самый необходимый функционал, отсюда низкий расход ресурсов.
  • Гибкость
    Библиотека позволяет создавать различные графические элементы и может контролировать их свойства. Простота и понятность API библиотеки позволяет расширять все классы очень легко и дополнять именно тем функционалом, который нужен вам.
  • Лодируемость элементов
    AlternativaGUI позволяет разрабатывать интерфейс под различные разрешения экрана. Для этого применяется лодирование элементов (от LOD — Level Of Details) и их корректное масштабирование (для компонентов с растровой графикой). Каждый лодируемый элемент имеет несколько графических состояний (лодов). При переключении лода может меняться размер шрифта, размер иконки, могут быть скрыты неважные элементы или, наоборот, открывается дополнительная информация. Эту логику описывает разработчик. Переключение лода происходит автоматически. Особенно полезным лодирование может быть при разработке интерфейсов для мобильных устройств с различными разрешениями экранов.
  • Быстрота создания уникальных компонент
    Благодаря использованию базовых классов, создание и управление компонентой проходит на более глубоком уровне. Базовые классы не содержат никакой графики и определяют только логику работы компонентов.
  • Интуитивно понятный API
    Работа с компонентами AlternativaGUI похожа на работу со стандартными классами типа Sprite.

Для быстрого прототипирования интерфейсов была разработана заскинованная библиотека AlternativaGUI Default Theme, которая содержит основные компоненты. Данная библиотека предоставляется с исходным кодом.

Загрузить AlternativaGUI
Читать документацию
Открыть демонстрацию в новом окне

Читать дальше: AlternativaGUI - простой способ создать комплексный интерфейс

четверг, 3 ноября 2011 г.

Интервью с создателем FlashJS

Денис РадинДрузья, представляем вашему вниманию интервью с Денисом Радиным - автором движка FlashJS, переносящего методы разработки из Flash в HTML5 и JavaScript. Мы уже писали об этом проекте в статье "FlashJS – игровой движок на Javascript и HTML5 для флэшеров, open source".  

В этом интервью мы узнаем, как Денис пришел к идее переноса Flash в Javascript, есть ли альтенативы его решению, чем FlashJS лучше и что из этого может получиться. 

Интервью берет Ростислав Сирык, на вопросы отвечает Денис Радин.

 

- Денис, твой проект впечатляет - уже первые отзывы свидетельствуют о том, что люди оценили идею, да и реализация неплоха. Как ты пришел к тому, чтобы сделать такой движок?
- С 2001 года наблюдаю за развитием игровых и графических движков. Разрабатывал еще на GLScene, DelphiX вел разработку векторного движка для CAD систем под .Net и потом познакомился с Flash...

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

HTML5 сейчас извергается сотнями хитрых поделок от геймдева: какие-то получше, какие-то - использовать просто невозможно, но абсолютно всем далеко до того изящества и универсальности, которые флэш получил за свою многолетнюю историю.
К тому же, моя основная работа - разработка большой базы кода на AS3 и сейчас нам необходим iOS-фоллбек. Большой проект - много работы по переносу.  FlashJS все упрощает, экономит время и за это нравится руководству компании, где я работаю.

- А ты смотрел на то, что делает в этом направлении Adobe?
- Да, я тестировал инструмент Adobe Edge, и мне не показались удачными подход и реализация. Во-первых, Эдж не поддерживает знакомую флэшовую парадигму разработки - например, нет все тех же фреймов. Разработчики почему-то решили отказаться от правильных наработок и начали изобретать что-то свое [...]

Читать дальше: Интервью с создателем FlashJS

четверг, 20 октября 2011 г.

FlashJS – игровой движок на Javascript и HTML5 для флешеров, open source

Денис Радин (он же - Pixels Commander и идеолог iTSea), придумал, сделал и развивает библиотеку FlashJS для разработки игр на HTML5 в стиле Flash.

Это означает применение обьектной модели Flash Player коде, размещаемом в HTML-тэге <actionscript>. Уже доступны такие объекты и методы:

  • DisplayObject
  • addChild, removeChild, removeChildAt, getChild, getChildByName, numChildren
  • KeyboardEvent
  • Loader
  • onEnterFrame
  • alpha, rotation, x, y
  • и другие объекты из Flash, разработка продолжается.

Сам проект open source и выложен на FlashJS @ GitHub - Денис приглашает всех желающих к сотрудничеству. Есть онлайн-демо:

Flash JS Racing MiniGame Demo

Читать дальше: FlashJS – игровой движок на Javascript и HTML5 для флешеров, open source