Показаны сообщения с ярлыком flash. Показать все сообщения
Показаны сообщения с ярлыком flash. Показать все сообщения

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

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

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

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

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

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

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

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

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

среда, 28 марта 2012 г.

Flash Player: планы на будущее — много замечательного!

Снова привет!
Сегодня вместе с анонсом premium функционала и релизом Flash Player 11.2 / AIR 11.2, Adobe обновили свои планы на будущее относительно Flash и показали массу отличного функционала который появится в этом году!
Взгляните на переведённый быстрый копипаст из их поста:
Flash Player «Cyril»
После релиза Flash Player 11.2, во второй половине 2012го, Adobe планирует выпустить релиз Flash Player’а под кодовым названием «Cyril».
Некоторые из запланированных нововведений:
  • Поддержка клавиатурного ввода в полноэкранном режиме
  • Улучшенная поддержка аудио для работы с аудио с меньшими задержками
  • Возможность прогрессивной поточной передачи текстур для Stage 3D контента
  • Поддержка LZMA сжатия для ByteArray
  • События для кадров
  • Поддержка сжатия BitmapData в JPEG и PNG форматы
  • Поддержка требований к «песочнице» для Mac OS X App Store приложений
Здорово, не так ли?
Flash Player «Dolores»
Кроме того, вслед за «Cyril», Adobe планирует релиз ещё одной версии Flash Player под кодовым названием «Dolores».
Некоторые из запланированных нововведений:
  • ActionScript workers (позволяет исполнять ActionScript в нескольких параллельных потоках — многопоточность проще говоря)
  • Поддержка продвинутого профайлинга (Telemetry)
  • Расширение поддержки видео карт для Stage3D (начиная с 2005/2006)
  • Увеличение производительности ActionScript при компиляции под Apple iOS
  • API для получения индекса производительности — для получения сведений о производительности текущей среды
  • Событие мыши Release outside
  • ActionScript 3 API для прямого доступа к быстрым опкодам работающим с памятью (те, что используются в Alchemy) прямо из as3 кода! (премиум при использовании вместе со Stage3D)
[...] Читать дальше: Flash Player: планы на будущее — много замечательного!

понедельник, 26 марта 2012 г.

Фильтрация XML (E4X) при помощи регулярных выражений и сложных условий

Заметка в качестве продолжения темы о получении данных из XML.
Для фильтрации XML можно так же использовать регулярные выражения (RegExp) и собственные условия через функции фильтрации (помимо простых сравнений).
Не уверен, что данный синтаксис скушает любая среда разработки (по крайней мере FDT выдает ошибку, хотя синтаксис правильный).
Простой пример. У нас имеется список персонала одного из отделов компании, и нам необходимо узнать, кто из них родился в апреле.

Пример с использованием регулярного выражения: [...]
Читать дальше: Фильтрация XML (E4X) при помощи регулярных выражений и сложных условий

суббота, 24 марта 2012 г.

Фиксим утечки памяти в box2d(2.1a)

Данная тема уже подымалась ранее и там я описал простейший способ обойти этот баг - это пересоздать мир. Теперь хочу описать способ который полностью фиксит этот баг. Заключается он в изменении кода в box2d. Изменений мало, даже очень мало.

Добавим в класс b2Body, функцию Destroy с таким содержанием: [...]
Читать дальше: Фиксим утечки памяти в box2d(2.1a)

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

TheMiner и FlashDevelop

В этом руководстве речь пойдёт о TheMiner‘е (отличный Flash профайлер) и о FlashDevelop‘е (лучшая и бесплатная среда разработки для Action Script / haXe), соответственно подразумевается, что вы с ними знакомы и желаете использовать их совместно. Если не знакомы — рекомендую ознакомиться.
Всего есть два пути использования TheMiner во FlashDevelop:
- Используя TheMiner SWC, как любую другую внешнюю библиотеку.
- Добавляя TheMiner SWF в список профайлеров FlashDevelop.
Почему существует два пути? Потому что у каждого есть сови преимущества и недостатки, и, в зависимости от обстановки, тот или иной путь может оказаться наиболее подходящим.
Итак, давайте попробуем оба пути шаг-за-шагом. Пожалуйста запустите FlashDevelop и откройте \ создайте в нём as3 проект чтобы продолжить.

TheMiner в качестве внешней SWC

1. Для начала, купите TheMiner или скачайте бесплатную версию для некоммерческого использования.
2. Распакуйте скачанный архив, зайдите в папку «SWCs» и выберите подходящую версию (в зависимости от требуемого языка), например TheMiner_en.swc [...]
Читать дальше: TheMiner и FlashDevelop

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

Упакованный SWF. Как распаковать?

Привет, друзья!
В этом посте я хотел бы рассказать о том, что из себя представляет упакованный SWF и как его можно распаковать динамически и статически.
Итак, что же такое упакованный SWF?
Если Вы никогда ранее его не видели, не поленитесь скачать простой классический пример упакованного SWF:
http://codestage.ru/files/flood/security/packed.swf
Запустив SWF, вы увидите немного текста в левом верхнем углу. Однако, если вы попробуете декомпилировать этот файл, то вы не увидите кода, который этот текст показывает.
Стоит отметить, что если бы в упакованном SWF были ещё какие-нибудь ресурсы (изображения, звуки, шрифты и т.д.), то их вы бы тоже не увидели. Это из-за того, что оригинальный SWF находится внутри того SWF что вы скачали и декомпилировали, и часто в зашифрованном виде.
Обычно все, что вы можете получить из таких SWF с помощью декомпиляторов — это код распаковщика\расшифратора и, возможно, сам зашифрованный SWF в виде набора байт (зависит от того, умеет ли используемый вами декомпилятор отображать тэг DefineBinaryData).
Такая «упаковка» на самом деле достигается с помощью простого Flex тэга [Embed].

Динамическая распаковка (dumping)

Динамическая — значит для распаковки потребуется исполнение SWF во Flash Player’е (далее — FP).
Т.к. FP не умеет проигрывать зашифрованную неведомо как SWF, то логично что перед проигрыванием, SWF должна расшифровываться и загружаться уже в чистом виде (например, с помощью Loader.loadBytes()).
Что более важно, распакованный и расшифрованный SWF будет в памяти все время, пока он исполняется FP’ром.
И это наш шанс достать его!
Существует два основных способа сделать это.
1) Динамическая распаковка с помощью утилит
Используя сторонние или даже самописные утилиты для поиска SWF в памяти процесса FP. Это самый быстрый, самый простой и обычно самый эффективный способ. Но он не вызывает ощущения что вы — тру крякер ;)
Существуют различные платные и бесплатные утилиты для этих целей.
Одна из наиболее продвинутых — это SWF Revealer, бесплатная утилита для владельцев лицензий на ASV. В некоторых случаях, она может обходить проверки на домен (которые не дают распаковаться и расшифроваться SWFке) и заставлять SWF запускаться в вашей среде.
Также достаточно легко гуглятся разные бесплатные дамперы.
2) Ручная динамическая распаковка
Поиск SWFки вручную, с помощью нахождения CWS (сжатый SWF) или FWS (несжатый SWF) заголовков, которые являются началом любого SWF. Если вы никогда не пробовали такой способ, я очень рекомендую попробовать! Он не только позволит немного подтянуть ваши скиллы в hex, но и подарит вам ощущение, что вы тру-крякер!)
Для поиска заголовков можно использовать любой HEX редактор, который умеет читать память процессов и имеет функцию поиска.
Если вы хотите искать упакованный SWF в памяти FP в котором проигрывается файл-пример по ссылке выше, то стоит начать с поиска FWS подписи (несжатый SWF) — просто ищите строку ‘FWS’, т.к. перед исполнением FP разжимает SWF, если он был сжат.
Если вы будете запускать и искать SWF в браузере, то закройте все лишние вкладки, чтобы снизить количество лишних SWF в памяти.
Обычно при таком поиске вы найдете несколько заголовков в памяти, т.к. сам FP держит там разные служебные SWF, например ту, что показывается после входа в полноэкранный режим.
Так что если вы сомневаетесь, то лучше проверить все найденные заголовки.
Итак, что же делать с найденным заголовками, спросите вы? Как их проверить, как узнать, где заканчивается SWF?
Пожалуйста, взгляните на этот скриншот:

Это заголовок одной из SWF в памяти FP при проигрывании файла-примера, найденный поиском по строке ‘FWS’ (совершенно случайно это оказался заголовок искомого упакованного файла, который мы и хотим найти ;) )
Что же дальше? А дальше необходимо посмотреть какой длины получается найденный SWF. Длина расположена в 4 байтах начиная с 4го: [...]

Читать дальше: Упакованный SWF. Как распаковать?

среда, 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

четверг, 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

вторник, 18 октября 2011 г.

Adobe Flash Player и передача потоковых данных без участия сервера, часть 1-я: организация пирингового вещания

Как известно недавнее обновление продуктов Adobe Flash Player до 10.1 и Adobe AIR до 1.5 версий осуществило целый фурор, презентовав новый протокол связи Real-Time Media Flow Protocol (RTMFP). Заранее попрошу не путать вышеупомянутый с Real-Time Messaging Protocol (RTMP) для использования которого был необходим Adobe Flash Media Server (FMS) на стороне обслуживающего сервера.
    Разработчики обещают, что протокол будет обладать низкой задержкой во времени при пересылке пакетов, но самое главное, протокол ориентирован на организацию пиринговой сети

Читать дальше: Adobe Flash Player и передача потоковых данных без участия сервера, часть 1-я: организация пирингового вещания

вторник, 4 октября 2011 г.

AlternativaPlatform на конференции Adobe MAX 2011

Конференция Adobe MAX 2011 проходит в Лос-Анджелесе с 1 по 5 октября 2011 года. Мы выступили золотым спонсором мероприятия и представили на нем свои последние разработки в области отображения трехмерной графики с аппаратным ускорением в среде Flash Player. Генеральный директор компании Александр Карпович и арт-директор Иван Зыков выступили с докладом “Amazing new possibilities in Flash with Alternativa3D”, рассказав о возможностях графического движка Alternativa3D 8. Разрабатывать и запускать проекты на базе движка можно уже сегодня.

Наряду с графическим движком и серверной частью мы создаем собственный онлайн-редактор AlternativaEditor. Уже сейчас его можно использовать как бесплатный инструмент для публикации 3D-моделей. После загрузки модели в редактор по адресу editor.alternativaplatform.com пользователь получает ссылку и код для встраивания объекта в блог или сайт. Впоследствии AlternativaEditor также будет доступен партнерам компании как полноценный инструмент для изменения параметров игрового мира и перемещения объектов в реальном времени непосредственно во время игры.

Увидеть возможности AlternativaPlatform можно своими глазами, загрузив интерактивную демонстрацию “Танков Онлайн 2.0″ на картах “Арена” и “Крушение“, а также промо-игру MAX Racer, созданную по просьбе Adobe Systems для демонстрации возможностей Stage3D (Molehill 3D APIs) на Adobe MAX 2010.

Читать дальше: AlternativaPlatform на конференции Adobe MAX 2011

четверг, 15 сентября 2011 г.

Пьеса «Разработка многопользовательской сетевой игры.» Часть 3: Клиент-серверное взаимодействие



Часть первая: Архитектура
Часть вторая: Протокол

С третьей частью я немного задержался. Но как говорится лучше поздно чем никогда…

Итак, продолжаем разговор.

В третьей части нашей постановки мы реализуем протокол, напишем сервер и клиент которые будут взаимодействрвать по сети. И (ОМГ!) танки будут ездить!
Под катом то, что вы давно хотели, но боялись спросить…

Пьеса «Разработка многопользовательской сетевой игры.» Часть 3: Клиент-серверное взаимодействие

пятница, 26 августа 2011 г.

Бот для Flash-игры / Внедряемся в Flash


В рамках недели ботов для браузерных игр.

Эта неделя богата на статьи о ботах для бразуерных игр.
Во всех статьях для управления ботом использовался AutoIT. Это простой и хороший способ чтобы начать делать бота «в лоб», он не требует никаких знаний об игре, кроме как знания правил и графического интерфейса. Для серверной части игры такой бот вообще будет выглядеть как обычный пользователь, если не брать во внимание невероятную усидчивость и производительность такого игрока.

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

В первой статье я наткнулся на комментарий со ссылкой на пост Adobe Profiler Fail, что побудило меня исследовать эту возможность в целях автоматизации действий в Flash-играх.

Читать дальше: Бот для Flash-игры / Внедряемся в Flash

понедельник, 11 июля 2011 г.

Генетические алгоритмы для флешеров

Пишет makc3d:
Давным давно в далёкой галактике Балаклаве, как раз перед тем, как уехать с ITSea 2011, я с Ростом пытался убедить знающих людей сделать доклад о генетических алгоритмах, однако все они отказались под предлогом того, что в этой теме слишком много математики. Разумеется, объяснить принципы генетических алгоритмов вполне возможно и без математики - как говорится, на пальцах - что я и попытаюсь сделать в этом посте.

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

Давайте рассмотрим этот процесс на примере решения следующей простой задачи: в начале координат стоит пушка и стреляет под углом 45° снарядом с начальной скоростью v; т.е. уравнения движения снаряда имеют знакомый из школьного курса вид x = vt/√2 и y = vt/√2 - gt²/2. Необходимо найти такое значение v, при котором снаряд упадёт на заданном расстоянии. Эта задача легко решается в явном виде, но в целях этого поста представим себя очень ленивыми математиками и используем генетический алгоритм.

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

Генетические алгоритмы для флешеров

вторник, 28 июня 2011 г.

Компонент Table на ActionScript 3

Потребовалось отображать табличные данные на чистом as3 без использования компонентов Flex (типа DataGrid) или Flash. Как обычно, первым на очереди был гугл. Но, к своему удивлению, ничего бесплатно-приемлемого найти не удалось. Изваял свой. Старался сделать компонент максимально простым в использовании. Можно загрузить swc-файл и подключать к любому проекту. Версия Flash-плеера не меньше 10-й.

Читать дальше: Компонент Table на ActionScript 3

среда, 1 июня 2011 г.

Flash и HTML5 – друзья, а не конкуренты

Flash и HTML5 рассматривают как конкурирующие платформы. Любители холиваров всегда готовы подробно объяснить, почему одна из них правильная, а другая не имеет права на существование, и должна быть уничтожена. Между тем, эти платформы не совсем конкуренты, и решают довольно разные задачи.

Как это всегда бывает, каждая платформа имеет свои достоинства и недостатки. Интересный момент в том, что в данном случае достоинства одной платформы неплохо компенсируют недостатки другой, и наоборот. Поэтому Flash и HTML5 могут успешно применяться вместе, в одном проекте, и гармонично дополнять друг друга.

Я постараюсь быть беспристрастным, насколько это возможно, при том что я по большей части флэш разработчик :)

Хотел бы отметить такой нюанс: почти все флэш разработчики в какой-то мере имеют дело с HTML и JavaScript, если и не пишут такой код, то понимают, в какой среде работает их приложение. Между тем для большинства JavaScript разработчиков флэш является черным ящиком. Я постараюсь его открыть [...]

Читать дальше: Flash и HTML5 – друзья, а не конкуренты.