Flash разработка игр


Главная страница • Flashgamedev.ru | Разработка и Монетизация Флэш игр

 Форум   Темы   Сообщений   Последнее сообщение 

flashgamedev.ru

 
Аукцион (FGL) и спонсоры

Обсуждение спонсоров и аукциона

Модератор: flazm

794

14026

Сб окт 21, 2017 6:14 pm

q3olegka

Дистрибуция

Обсуждаем дистрибуцию, NG, Kongregate и другие порталы

Модераторы: Game_Telegraph, flazm

274

2699

Вс окт 22, 2017 5:11 pm

Stranger087

Монетизация

Рекламные сети, микротранзакции и проч.

Модератор: flazm

324

3265

Ср окт 18, 2017 8:23 pm

General

Разработка
 
Игровой дизайн

Жанры, разработка уровней, игровой баланс

Модераторы: Oleg Antipov, Smrdis

292

3957

Вт сен 12, 2017 8:44 am

Hitek55

Flash

исходники, библиотеки, уроки

Модераторы: Oleg Antipov, Smrdis

2183

34107

Вт окт 10, 2017 6:04 pm

mmx95

Adobe Air (mobile и desktop)

Starling, Genome2D, вопросы

Модераторы: Smrdis, TheRabbit

306

3253

Чт окт 26, 2017 6:22 pm

abyss

HTML5

Вопросы, библиотеки, уроки

Модераторы: Smrdis, Zebestov

217

3434

Пн окт 23, 2017 8:58 pm

KidWithGun

Unity3D

Вопросы, уроки, assets

Модераторы: Oleg Antipov, Smrdis

64

476

Пн окт 09, 2017 12:04 pm

Andreww

HaXe

Вопросы, примеры, библиотеки

Модератор: Smrdis

22

187

Ср окт 18, 2017 8:49 pm

ADF

Арт

где есть арт, где дешевле, как сделать самому

Модераторы: Oleg Antipov, General, Smrdis, Zarkua

289

10062

Вт сен 19, 2017 12:59 pm

Zebestov

Звук

все о звуке

Модераторы: Oleg Antipov, Smrdis

163

1027

Ср сен 13, 2017 4:06 pm

Vierarmig

Мобильные платформы (общие вопросы)

Общие вопросы по iOS, Android и другим платформам

Модераторы: Oleg Antipov, Smrdis, TheRabbit

367

3958

Чт авг 31, 2017 2:47 pm

animorf

Ищу тебя

Работу, партнера, сотрудника

Модераторы: flazm, MrFuby, p0lter

1390

7163

Чт окт 26, 2017 1:54 pm

PepperRacoon

Игры
 
Обсуждение игр

Обсуждение своих игр, комментирование чужих.

Модератор: J0x

1847

32843

Ср окт 25, 2017 8:10 pm

General

Форум
 
Конкурсы и ивенты

Конкурсы, конференции и события нашего сообщества и не только

Модераторы: General, romamik

125

6109

Ср окт 25, 2017 12:03 am

General

Платежи и переводы

MoneyBookers, PayPal, ООО, ИП, банки и кредитки

Модератор: Romixx

214

2597

Чт сен 28, 2017 4:47 pm

sbat

Разное

Предложения по форуму и все что не попало в другие разделы

Модераторы: flazm, Knight

960

18571

Пт окт 27, 2017 12:36 am

damager

Кто сейчас на форуме
Сейчас посетителей на форуме: 82, из них зарегистрированных: 2, гостей: 80 (основано на активности пользователей за последние 5 минут)Больше всего посетителей (189) на форуме было Ср окт 04, 2017 4:47 pm

Зарегистрированные пользователи: elio, Google [Bot]

Легенда :: Администраторы, Главные модераторы
Дни рождения

Поздравляем: AnnTenna

Статистика

Всего сообщений: 151784 | Тем: 10098 | Пользователей: 7076 | Новый пользователь: ChelseaK

Разработка инди-игры на Starling, или вторая жизнь Flash / Хабрахабр

С точки зрения графики большинство инди-игр завоевывают свою популярность не количеством полигонов в кадре или супер-качеством текстур, а необычным подходом к арту и вниманием к мелочам, причем большинство использует только 2D графику. На мой взгляд, для проектов в таком стиле отлично подходит Flash. Под флешем в данном случае следует понимать не только плагин для браузеров, который постепенно сдает свои позиции и уступает место HTML5, а саму “эко-систему”, которая позволяет использовать возможности и “идеологию” флеша для разработки под десктоп и мобильные платформы. Речь пойдет об Adobe AIR (кроссплатформенная среда для запуска приложений) и фреймворке Starling, используeмых в разработке инди игры.

Под катом — примеры практических решений и анимации эффектов.

Из вектора в растр
Проект представляет собой продвинутый порт некогда популярной флеш-игры для Steam, разумеется, в расширенном виде (например, число уровней увеличилось с 30 до 200+), и многие “подводные камни” пришлось обходить заново, уже на другой платформе.

В изначальной флеш игре использовалась растеризация контента при старте приложения(точнее, при первом переходе из главного меню на экран выбора уровень). Каждый кадр из каждого MovieClip’а сохранялся в отдельном объекте BitmapData. Разумеется, решение было очень “топорным”, но для простой флеш игры подходило неплохо.

В варианте игры для Steam (а впоследствии, возможно, и для мобильных платформ) этот вариант не подходит по двум причинам:

1. Большой объем занимаемой памяти после растеризации. Данные в MovieClip в Starling передаются через массив текстур. Текстура может быть не только загружена из файла, но создана с использованием данных из BitmapData. Правда, таком случае стоит помнить, что Starling (точнее, stage3D, на котором он построен) использует текстуры высотой и шириной равной степени двойки. Т.е. изображение размером 130x160 пикселей будет иметь “размер” в памяти равный 256x256.

2. Еще один минус — большое количество draw call’ов. К счастью, в Starling есть автоматический батчинг изображений (вывод нескольких спрайтов за одно обращение к графическому API), если они находятся внутри одной текстуры.

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

Первоначально планировался вариант генерации атласов “на лету”, используя DynamicTextureAtlas, а вся графика игры хранилась бы в векторном виде.

После тестового запуска выяснилось, что ресурсы flash-игры (в виде swc — библиотеки классов с закрытым исходным кодом) должны иметь четко определенную структуру, что не подходило для уже имеющихся наработок. Также выяснилось, что преобразование вектора в растр (по сути — отрисовка каждого объекта покадрово, причем именно средствами Flash) занимает достаточно много времени, и, чем больше был размер объекта в игре, тем больше времени занимала растеризация (понятно, что размеры всех элементов в пикселях для экранов разрешением 800x480 и 1920x1080 будут отличаться в разы).

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

От анимации — к частицам
После сохранения всей графики в виде png файлов и создания атласов выяснилось, что порядка 70% места занимают кадры различных эффектов, причем зачастую достаточно простых. Решение проблемы было очевидно — замена объемных анимаций (преобразованных из вектора) в анимации, созданные из составных частей. Это дает существенную экономию места, т.к., скажем, эффект взрыва звезды(показан ниже), сохраненный покадрово и помещенный в атлас, занимал бы текстуру размером 1024x1024 пикселей, которая бы заняла бы в памяти 4 Мб, тогда как составные части анимации суммарно занимают не больше 128x128 пикселей.

Пример части текстурного атласа с отдельными кадрами анимации:

И составные части эффектов:

Создание редактора частиц
Изначально я планировал использовать базовое расширение для Starling (Particle System), но после сбора тестового проекта обнаружился ряд вещей:

1. Даже самый богатый выбор настроек не дает того, что можно самому изменить в коде. Например, формулу изменения скорости полета частицы.

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

Пример эффекта из редактора Particle System:

В итоге было решено использовать самописный редактор эффектов.

Плюсы — возможность подключать не только систему частиц, но и добавить спрайты-подложки с изменяемыми скейлом, скорость поворота и альфой, а набор параметров создан исходя из желаний дизайнера. Каждый из эффектов состоял из нескольких слоев. 3 нижних слоя — для отдельных спрайтов, которые меняют свой скейл, угол поворота и прозрачность. 3 верхних — для партиклов, как правило — разлетающихся из одной точки.

Примеры эффектов

Сравнение эффектов из флеш-версии и сделанных в редакторе:

1. Анимация взрыва (слева — флеш версия):

2. Анимация взятия объекта (звезды), слева — флеш:

Отдельным плюсом версии с частицами является настраиваемый элемент случайности — каждый взрыв/эффект (одного типа) выглядит по разному, т.к. число частиц, их размер и скорость варьировались в определенных пределах, задаваемых в редакторе.

Эффекты обработки изображений
Еще один плюс работы со Starling’ом — доступные “из коробки” эффекты обработки изображений. Данные эффекты в игре используются в нескольких местах, например, после выигрыша и появления меню результатов сам фон уровня (и оставшиеся на нем объекты) постепенно меняются.

Первоначально мы, так же как и во флеш-версии, хотели сделать эффект, когда картинка уровня постепенно “заблюривается”, вращаясь по часовой стрелке (все это идет “фоном”, под меню результатов уровня). Но в версии со Starling использование этого эффекта очень резко уменьшало fps, даже в PC-версии игры (с 50-60 до 2-3 кадров в секунду).

Вместо этого было решено использовать эффект «выцветания» (идет “змейкой” слева направо и сверху вниз по элементам), изменяя прозрачность объекта и данные матрицы фильтра ColorMatrixFilter, что позволило сделать достаточно зрелищный эффект без просадки fps.

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

habrahabr.ru

Разработка мобильных приложений на Adobe Flash + AIR: обзор возможностей / Хабрахабр

Недавно замечательная flash-игра Machinarium заняла 1 место в рейтинге платных игр для iPad. Тем не менее много талантливых разработчиков flash-игр с опаской смотрят в сторону мобильных платформ. На русском языке информации по теме крайне мало. Надеюсь эта статья немного улучшит положение вещей. Желаю приятного прочтения.

Изначально Adobe AIR задумывалась как платформа для настольных приложений. Однако сейчас она поддерживает разработку stand-alone приложений для мобильных устройств, настольных компьютеров, домашних цифровых устройств. Такой широкий охват делает ее привлекательной платформой для разработки. В то же время каждая среда имеет свою уникальную специфику, которую надо учитывать.

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

Эта статья описывает возможности, предоставляемые AIR разработчикам приложений для смартфонов и планшетов под управлением iOS, Android и Blackbery Tablet OS.

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

Чтобы работать со всем этим многообразием размеров и плотностей, AIR предоставляет следующие ключевые API:

  • Stage.stageWidth, Stage.stageHeight: Эти два свойства хранят фактические размеры экрана. Причем их значение может изменяться в процессе выполнения, например когда приложение входит/выходит из полноэкранного режима или когда меняется ориентация устройства (про ориентацию чуть ниже)
  • Capabilities.screenDPI: Это свойство хранит количество пиксей на дюйм
Используя эти значения, приложение может адаптироваться под экраны с различными характеристиками.

Примечание: если вы ранее разрабатывали десктопные приложения на AIR, обратите внимание на то, что при разработке для мобильных платформ используется Stage, а NativeWindow не используется. Т.е. вы конечно можете проинстанцировать ссылку на него, но это не даст никакого эффекта. Эта возможность оставлена, чтобы можно было писать код, работающий одновременно и на мобильных устройствах и на десктопах. Чтобы узнать, доступен ли NativeWindow используйте NativeWindow.isSuppoted.

Мобильные приложения не обязаны поддерживать вращение экрана, но вы должны помнить, что не у всех мобильных устройств портретная ориентация (высота больше ширины) используется по-умолчанию. Приложения, которые не заинтересованы в возможности автоматического вращения экрана, могут отказаться от нее установив в значение flase в дескрипторе приложения. И напротив, вы можете установить в true и слушать события StageOrientationEvents у Stage.

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

AIR автоматически сопоставляет событиям мышки простые однопальцевые жесты, такие как нажатие одним пальцем на кнопку (tap). Это позволяет писать код, который без дополнительных изменений работает одинаково как на мобильных устройствах, так и на настольных компьютерах.

Для более сложного мультитач-взаимодействия AIR включает следующие API:

  • Multitouch: предоставляет информацию о том, какие виды тач-взаимодействия доступны
  • TouchEvent: События, получаемые приложением в процессе обработки прикосновений
  • GestureEvent, PressAndTapGestureEvent, TransformGestureEvent: Приложение получает эти события при обработке жестов (gestures)
Для приложений, которые работают со стандартными жестами системы (например щипок и разведение пальцев для масштабирования) установите Multitouch.inputMode в MultitouchInputMode.GESTURE. Единичные касания будут преобразованы в соответствующие жесты системой автоматически. Например для жеста уменьшения/увеличения будут возникать события TransformGestureEvent с типом TransformGestureEvent.GESTURE_ZOOM.

Если же приложения желает получать “сырую” информацию о прикосновениях, выставите Multitouch.inputMode в MultitouchInputMode.TOUCH_POINT. Система будет генерировать серии событий начала касания, перемещения и окончания касания, причем касание экрана может происходить в нескольких точках одновременно. Задача интерпретации таких множественных касаний ложится на приложение.

Ввод текста
Мобильные устройства с программной клавиатурой (т.е. отображаемой на экране, без физических клавиш) требуют особого внимания. Хотя такая клавиатура присутствует не везде, но использующие ее устройства начинают преобладать, и вы должны убедиться, что все работает хорошо. При отображении, программная клавиатура закрывает собой часть экрана. Чтобы учесть это, AIR сдвигает Stage таким образом, чтобы оставались одновременно видны и поле ввода и клавиатура, скрывая верхнюю часть приложения за пределами экрана. Такое поведение можно отключить и реализовать свое собственное. Для этого нужно установить параметр softKeyboardBehavior в дескрипторе приложения в значение none (значение по-умолчанию — pan).

Поле Stage.softKeyboardRect хранит размеры области, занимаемой программной клавиатурой. Слушайте событие SoftKeyboardEvent, чтобы знать, когда это значение изменяется.

Приложению, как правило, не надо заботится об открытии программной клавиатуры, это происходит само по себе, когда текстовое поле получает фокус. Однако, можно запросить автоматическое открытие клавиатуры для любого InteractiveObject, когда тот получает фокус (свойство InteractiveObject.needsSoftKeyboard) или открыть ее самостоятельно, вызвав InteractiveObject.requestSoftKeyboard(). Данные API не окажут никакого эффекта на устройствах, не поддерживающих программную клавиатуру.

Датчики
Взаимодействие пользователя с мобильным устройством не ограничивается одним мультитач-экраном. Приложения могут использовать информацию о местонахождении пользователя, а также реагировать на ориентацию и перемещения устройства в пространстве. AIR поддерживает оисанные возможности через следующие ключевые API:
  • Geolocation: Обрабатывает события, связанные с географическим положением устройства (широта и долгота), а также его передвижением (направление и скорость)
  • Accelerometer: Обрабатывает события, сообщающие о силах приложенных к устройству по осям x, y и z
Для некоторых приложений возможность геолокации — неотъемлемая часть (пример — приложение, определяющее местоположение ближайшего банкомата). В других приложениях геолокация может использоваться для удобства (пример — голосовая заметка, снабженная информацией о том, где она записана).

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

Оба описанных API дают возможность задать интервал опроса датчиков, т.е. частоту, с которой соответствующим слушателям будет отправляться актуальная информация. Стоит уточнить, однако, что выставленная частота не гарантируется, и может зависеть от различных факторов, таких как, например, аппаратные характеристики устройства.

Отображение web-контента
Современная среда выполнения должна содержать средства поддержки HTML-контента. В AIR для этого присутствует StageWebView API. StageWebView предоставляет AIR-приложениям доступ ко встроенным возможностям устройства по отображению HTML. Стоит отметить, что так как StageWebView использует HTML-движок самой платформы, то одинаковое отображение на разных платформах не может быть гарантировано.

Еще одним следствием использования нативных средств является то, что содержимое StageWebView не интегрировано со списком отображения приложения. Однако это содержимое может быть сохранено как растровое изображение методом drawViewPortToBitmapData(), а затем помещено в список отображения. Это можно использовать, например, для создания скриншота страницы или создания эффектов плавного перехода.

Для тех, кто знаком с HTMLLoader API в AIR, стоит отметить, что StageWebView не является его заменой. HTMLLoader содержит встроенную поддержку HTML и допускает размещение HTML и JavaScript, выполняемых вне песочницы браузера. StageWebView работает с HTML и JavaSctipt контентом в рамках традиционной песочницы браузера.

Если вы захотите отправить пользователя из своего приложения в браузер или приложения вроде YouTube или Google Maps, используйте navigateToURL().

Изображения
Когда разговор заходит о получении фотоснимков, не стоит вопрос “умеет ли устройство фотографировать”, а стоит другой: “сколько камер в этом устройстве?”. AIR для мобильных устройств включает API позволяющие работать как непосредственно с камерой, так и с уже полученными фотографиями.Классы CameraUI и CameraRoll Функционал встроенной камеры доступен через класс CameraUI. Как можно догадаться из названия, класс отличается от похожего класса Camera тем, что работает с пользовательским интерфейсом камеры а не непосредственно с ней. В зависимости от устройства это может выражаться в возможности пользователя выбирать между фото- и видеосъемкой, указывать разрешение снимков, включать/выключать вспышку, переключаться между фронтальной и тыльной камерами и т.п.

Однако мобильные устройства не только делают снимки, но и хранят их. Библиотека сделанных пользователем фотографий доступна через класс CameraRoll. Метод browseForImage() может быть использован для открытия стандартного диалога выбора изображения из библиотеки. Кроме того в эту область можно писать свои данные при помощи метода addBitmapData().

Класс MediaPromise CameraUI и CameraRoll возвращают медиаконтент с помощью события MediaEvent. В нем нет ничего необычного, за исключением поля data, которое имеет тип MediaPromise, через которое доступна соответствующая информация.

Как следует из названия, MediaPromise обещает предоставить содержимое, однако совсем не обязательно хранит его в себе. Это важный нюанс, поэтому стоит уделить несколько минут на его понимание.

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

Класс MediaPromise является оберткой, призванной упростить работу с этой неопределенностью, предоставляя доступ к медиаобъекту посредством единого интерфейса. Если приложение хочет работать с объектом прямо с запоминающего устройства, проверить его наличие там можно через MediaPromise.file (должно быть не null).

Если приложение пожелает обрабатывать медиаобъект в памяти, он всегда может быть прочитан через поток, доступный с помощью MediaPromise.open(). MediaPromise автоматически вернет содержимое медиаобъекта, независимо от того, где он находится — в памяти или на запоминающем устройстве. При использовании open() не забудьте проверить MediaPromise.isAsync, чтобы определить вид потока.

Наконец, если понадобится напрямую поместить медиафайл в список отображения, избегая лишнего копирования в коде, в классе Loader есть метод Loader.loadFilePromise(). Как видно из названия он работает с любыми FilePromise (MediaPromise реализует интерфейс IFilePromise).

Жизненный цикл приложения
На мобильных устройствах у приложений мало возможностей для управления своим жизненным циклом. Они не могут запускаться сами, а лишь при непосредственном участии пользователя (например с домашнего экрана или через URL, привязанный к приложению). В любой момент приложение может быть отправлено в фоновый режим, а затем и вовсе остановлено (обычно это происходит, когда текущему активному приложению не хватает ресурсов).

На некоторых мобильных платформах NativeApplication.exit() неприменима (inoperable, “no-op”). Вместо того, чтобы сохранять свое состояние при выходе, приложениям следует делать это при переходе в фоновый режим и/или через определенные промежутки времени.

Приложение получает события DEACTIVATE и ACTIVATE соответственно при переходе в ждущий режим и возвращении из него. AIR помимо этого дополнительно предпринимает некоторые специфические действия, детали зависят от платформы.

Фоновое поведение в Android На андройде приложения стремятся выпонять как можно меньше работы в фоне, однако жестких ограничений нет. Когда AIR-приложение переходит в фоновый режим, частота кадров снижается до 4 fps, и, хотя обработка событий продолжается, фаза рендеринга в цикле обработки событий опускается.

Таким образом, AIR-приложение на Android может в фоне выполнять такие задачи как скачивание/загрузка файлов, синхронизация информации. Тем не менее, приложение при переходе в фоновый режим должно самостоятельно предпринимать дополнительные шаги для уменьшения частоты кадров, отключать ненужные таймеры и.т.п.

Фоновое поведение в iOS В iOS у приложений нет реальной многозадачности. Приложения должны указывать, что они намереваются проявлять определенную активность в фоне (например удерживать voip-звонок или докачивать файл)

AIR не поддерживает такую модель работы, поэтому когда приложение переходит в фоновый режим, оно просто ставится на паузу. Это значит, что частота кадров выставляется в 0 fps, события не обрабатываются, рендеринг не происходит. Состояние приложения тем не менее хранится в памяти и восстанавливается при выходе из фонового режима.

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

Например, вы пишете игру и хотите отобразить на первом экране таблицу очков, хранящуюся локально. Выполнение этого кода может оказаться на удивление затратным. Поскольку код будет выполняться впервые, возникнут издержки, связанные с его интерпретаций/компиляцией, и выполнение пройдет чуть медленнее, чем обычно работает ActionScript-код в steady-state. Во-вторых, затраты на чтение информации из файловой системы. И наконец, затраты на позиционирование и отображение информации на экране.

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

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

Рендеринг Применение графических процессоров (GPU) изменило подход к оптимизации рендеринга. При рендеринге с использованием CPU работать с большими объемами пикселей — расточительно, целесообразнее использовать математическое описание форм объектов и их преобразование, и лишь после этого отрисовывать. Это традиционный подход, который используется в AIR для работы с векторным содержимым.

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

AIR позволяет взять лучшее из обоих подходов. Вы можете использовать все возможности flash по работе с векторными изображениями, а затем, закешировав результат как набор растровых изображений, эффективно отрисовать его на экране. Используйте BitmapData.draw() для этих целей.

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

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

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

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

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

Первый шаг на пути к явному управлению памятью — убедиться, что вы очищаете все ссылки на объект, если он больше не нужен. Вот пример: предположим, что у нас есть приложение, читающее при запуске XML-файл с настройками. После того, как настройки прочитаны и применены, в памяти хранится ссылка на корень дерева и соответственно связаное с ней дерево XML, которое нам уже не нужно. В таком случае нужно явно присвоить значение null ссылке на корень дерева, позволяя таким образом сборщику мусора освободить память.

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

Хранилище
Мобильные устройства предоставляют доступ к локальной файловой системе, где приложение может хранить свои настройки, документы и т.п. Как правило, приложение должно рассчитывать на то, что данные доступны только ему, и нет возможности делиться этими данными с другими приложениями. На всех устройствах хранилище доступно через свойство File.applicationStorageDirectory.

Addroid, помимо того, предоставляет дополнительную возможность использовать файловую систему на SD-карте, доступную по пути “/sdcard”. В отличие от основного хранилища, она доступна для чтения и записи всем приложениям на устройстве. Следует однако помнить, что SD-карта может быть извлечена из устройства или быть вставлена, но не смонтирована.

Учитывая распространенность камер на мобильных устройствах, не стоит забывать, что есть еще специальное общее хранилище для фотографий. Доступ к нему можно получить через CameraRoll API, упомянутое ранее в разделе “Изображения”. И хотя на некоторых платформах доступ к фотографиям можно получить непосредственно через файловую систему, это плохо сказывается на портируемости приложения и является плохой практикой.

Развертывание
В мире мобильных устройств распространение приложений происходит в основном через специальные магазины (app marketplaces). Эти магазины включают в себя специальный функционал на устройствах, для поиска, установки и обновления приложений.

Для размещения в конкретном магазине, AIR-приложение должно быть преобразовано в специальный формат, специфичный для каждой платформы. Например для размещения в Apple App Store это .ipa-файл, а для Android marketplace — .apk. Сделать это можно прямо из Flash Builder или, например, используя утилиту ADT.

Все магазины мобильных приложений требуют, чтобы приложение было подписано. Для iOS сертификаты выдает Apple. Для Android-устройств разработчики сами создают сертификаты, действительные как минимум 25 лет, и которыми они должны подписывать каждое свое приложение и обновления к нему. Таким образом, если вы публикуете свое приложение на разных площадках, вам нужно оперировать несколькими сертификатами.

Когда вы готовите приложение к размещению в Android market, помните что AIR там устанавливается отдельно (на iOS копия AIR идет в составе каждого приложения). Если ваше приложение запускается на устройстве с неустановленным AIR, пользователь будет перенаправлен на его установку (см. также флаг -airDownloadURL у ADT).

Что дальше?
Разработка с использованием Adobe AIR дает возможность создать единое мобильное приложение, которое может быть развернуто на множестве мобильных устройств, включая смартфоны и планшеты под управлением Android, iOS или BlackBerry Tablet OS.

Это достигается путем использования кроссплатформенных абстракций (например при доступе к фотографиям), предоставления информации о динамических свойств устройств (например размер экрана). В то же время AIR не мешает, когда помощь не требуется (например при использовании API файловой системы).

Разработка кроссплатформенных мобильных приложений требует от программиста знаний об эфективном использовании памяти и о жизненном цикле приложения. Объеденив эти познания со средой выполнения AIR, можно быстро создавать кросплатформенные приложения.

Полезные ссылки
БлогиРазработка мобильных игр на flash + AIRКнигиHigh Performance Flash: Performance tuning for Flash, Flex, AIR and Mobile applications, E. Elrom, 2012 — предзаказ на АмазонеDeveloping Android Applications with Adobe AIR, V. Brossier, O'Reilly, 2011Adobe AIR, Дж. Лотт, 2009 — Первая русскоязычная книга по Adobe AIRAdobe AIR Bible, B. Gorton, Wiley, 2008ФорумыФорум Adobe по мобильной разработке на AIRСтатьиСтатья «Что нового в AIR 3?»Flex/AIR for iOS Development Process Explained!Создание iOS приложения при помощи Flash CS5.5 + AIR 2.7РазноеAIR Native Extentions (ANE): подборка инфыКоллекция полезных ссылок по мобильной разработке на Adobe AIRОфициальная страница Adobe AIRAdobe AIR Developer CenterAdobe Mobile and Devices Developer CenterAdobe AIR CookbookTourDeFlex — сборник информации по flash-платформе. В том числе и по мобильной разработке

habrahabr.ru

Создание игр - flash

gcup.ru

Away3D - это 3D-движок для платформы Flash. Проект был начат Александром Задорожным и Робом Бейтманом в 2007 году и развивается до сих пор. Away3D является движком под управлением платформы лицензирования Apache 2.0, и он может свободно использоваться для любых целей, в том числе для коммерческих проектов. Away3D в настоящее время находится под руководством Фондом Away, а также при поддержке компании Adobe Systems, поэтому он на платформе Flash.

Соответственно, большинство браузеров, типа Chrome, Microsoft Edge и Safari, также к 2020 году будут постепенно выводить Flash из оборота, чтобы ослабить актуальность использования устаревшей технологии. Компании Google, Microsoft, Mozilla, Facebook и Apple имеют собственные графики вывода Flash из оборота...

FGL начинался почти 10 лет назад как сервис для разработчиков и издателей Flash-игр, он так и назывался Flash Game License. Через этот сервис разработчики искали спонсоров, а издатели выбирали нужные проекты для своих порталов и пр. Тогда оборот через сервис был 400000 $, но в прошлом месяце Flash-игры в сервисе набрали лишь 5000 $...

10 июня 2016 года в сервисе Steam состоится релиз игры «Crimson Room: Decade» для PC Windows. Эту игру разработали студии Dream Holdings, Takagism, а издала компания Degica. Нужно отметить, что данная игрушка впервые вышла 10 лет назад на Flash, став весьма популярной на разных игровых вебсайтах (800 миллионов просмотров). Собственно, к юбилею своего проекта разработчики решили сделать её новое воплощение...

Нужно отметить, что этот движок распространяется с открытыми исходными кодами, бесплатен, устойчив к нагрузкам благодаря MongoDB, состоит из компонентов и гибок для подключения сторонних модулей, с предусмотренной поддержкой сторонних расширений, типа RPG.JS, Flash, Unity и т.п...

Объявлено проведение очередного соревнования для игроделов FGL Game Jam, для участия в котором нужно за 72 часа сделать свою игру на технологиях Flash, HTML5 или Unity. Стартует соревнование в 3 часа ночи по Москве 28-ого июня 2014 года. Не пропустите объявление темы...

Поиск в Интернете
Друзья сайта

GameDev, Уроки OpenGL, Программирование, Создать Minecraft

Разработка и создание веб браузерных Flash игр Рекламные html5 или Флеш игры на заказ .K Studio.ru. Промо Flash игры и приложения для сайта.

Занимаемся созданием и разработкой рекламных браузерных веб игр на технологии html5 или флеш (Adobe Flash) на заказ. Браузерные флеш игры нужны для пиара бренда/фирмы, проекта, сайта, корпоративных игр в соцсетях, на игровых порталах, для повышения узнаваемости обьекта брендирования или пиара. Игры между пользователями в однопользовательском и многопользовательском режимах. Игры с развитием персонажа. Казуальные игры, игровые приложения для соц.сетей, логические, тир, классические, ходилки и другие типы браузерных игр.

Надежная доставка.

Война до последнего патрона. J-DSL

Гонки 3D.

Реальные 3D гонки на флеше. дистрибьютер AMD

Путешествие.

По морю среди островов. ОЧАКОВО

Охота за ушами.

Охота на инопланетных зайцев. CRESYN

Разговор в пробке.

Общаться с девушкой в машине. meetpeopleintraffic.com

Розы ветров.

а роза упала на лапу азора. яндекс.ру

СеалексМен.

Супермен наевшийся таблеток. SEALEX

Шустрый вагончик.

Наполнять вагончик металлом. Металлопрокат.ру

Семейная разборка.

Ловить подушкой всякие вещи. GREEN SNAKE

Доставка боем.

Необходимо доставить груз в боевых условиях. ГРАФИТЕК

Доставка боем-2.

Едешь на танке, громишь всё подряд. ГРАФИТЕК

Всходы и Доходы.

Засевать поле деньгами и смотреть как они прорастут. УРАЛСИБ

Танковые войны.

10 разных уровней, 7 видов танков и прочее. MAIL.RU

Футбол.

Игра про футбол аля yetisport. AVS

SMART VEGAS.

Строить игровой слот зал. SmartGames

Телемарк.

Лыжная гонка с препятствиями в стиле телемарк. В.СМИРНОВ

Долина змей.

Из рогатки бахать по змеям. GREEN SNAKE

Слот.

Однорукий бандит для интернет казино. Д.МАЗАЙ

Попкорн.

Про сумашедшую попкорницу. AVS

ХХХ-лепота.

Помоги любовникам добраться до красавиц. МЕДИАХАУЗ

Ковбой Папричи.

Стреляй по бутылкам с кетчупом конкурентов. СОСТРА

Х-CREATOR.

Платформер. Хождение робота по мукам. IBM / INTEL

Дед Мазай.

Подбирать зайцев =). ALTESIGN.COM

Снегурочка на шаре.

С горы спускать снегурку. YANDEX.RU

Допрыгни до звёзд.

Прыгучий Дед Мороз. YANDEX.RU

Операция "KIT".

Спаси китов от радиоактивных отходов. GRAFITEC

Тетрис J.

Устаканить надо всё. J-DSL

Найди пару.

Запаренная игра. J-DSL

Арканоид J.

Отбивать ... J-DSL

Horse race.

Ставить на бегущих лошадей. MARINA

Помидор

Чеканка помидором. SOSTRA

Тир 2.5D.

Панорамный тир. SHAMTU

Tetris.

Подарок на день рождения. Частный клиент

Последний забег Чебуратора.

Спортивная игра про Чебургена. ваша организация

Пакмен.

Классическая игра про пакмена. ваш сайт

Постапокалипсис.

Про НГ и мутантов. ваша контора

Антипопса.

Рокер напрягает попсовиков. ваша реклама

Игры для портала.

Портал игр с призами. cityexpress

САЙТ.

Flash сайт РА. FMP.COM.UA

Бар Budvar.

Швейка напоить пивом. Будвайзер

ЯХТА.

Управление яхтой в океане. WINSTON

Зачистка.

Игра про зубы(стоматолог). RIX

Арканоид.

Кирпичи, шарики, бита. SUNNYGAMES

Битва Пересвета.

Древне-русский тир. НАЙЛЕД

Нью Год.

Свинокопилка. ISIC

Арканоид.

Зимний арканоид. SunnyGames

Fish Tales.

Поедать рыб. SunnyGames

Стрелки.

Зубной пастой в друг друга по очереди стрелять. ДизайнКонтора

Активная защита.

Защита зубов от кариеса. BLENDAMED

Столбы.

Уворачиваться от столбов. для сайта фильма

Бутылочка.

Крути бутылочку. для сайта фильма

   Мы, пользуясь разнообразными средствами (одно из них Adobe Flash), пытаемся реализовать свои идеи, и если эти идеи стоящие, то инструмент в наших руках помогает сделать их достойно. Идеи и вдохновление всегда возникают при правильном подходе.

   Основным преимуществом html5 или флеш (Adobe Flash) технологии является то что размещение роликов, игр, презентаций и прочее не требует никаких настроек серверных скриптов и не занимает много места. 100% поддержка html5 или флеш (Adobe Flash) технологии на браузерах для стационарных компьютерах, ноутбуках, ультрабуках и нетбуках.

   Анимационные ролики, то есть мульты делаются быстрее по сравнению с бумажным постраничным методом. Процесс такой - рисуется отдельные элементы, вставляются звуки и прочее в соответствии со сценарием создаваемого мульта. В итоге получается компактный файл 300-2000 Kбайт (в avi формате в несколько раз больше). Главным в этой цепи является сюжет. От него будет зависить интерес людей к вашему творению.

   Игровые Flash баннеры обладают большей кликабельностью, плюс можно добавить больше информации в ролик и поэтому всё больше рекламодателей отдают предпочтение именно им. Делается он обычно из материалов заказчика (фото продукта и рекламный слоган) и добавляет что-то дизайнер.

   Flash открытки приятный подарок на какой-либо праздник или событие.

   Игры на html5 или Флеше за последнее время приобрели большую популярность и отсюда соответствующие выводы. Необходимо знание Action Script и наличие хорошего художника-дизайнера чтобы написать игру с сохранением очков игроков и т.д. Также они служат украшение любого сайта, если они сделаны в соответствии с контентом.

   Игры по типу Advertgames (рекламные промо игры) создаются для управления вниманием потребителей в процессе онлайновой игры. Это погружение потребителя в игровую среду, созданную вокруг конкретного бренда. Advertgaming идет от рекламы в играх к рекламе как игре. Игры сочетают в себе рекламную кампанию с онлайн игрой, в которую встраивается маркетинговое сообщение. На многих крупных брендовых сайтах фигурирует html5 или флеш игра с упоминанием каким-либо образом рекламируемого товара или одноразовая рекламная акция.

Масштаб цен на html5 или флеш игры в зависимости сложности сценария и качества графики от 100 до 7000 $. Есть бюджетный вариант разработки это использование уже сделанных нами игр и использование клипарт-графики от 20 до 200 $.

ЗАКАЗАТЬ HTML5 или FLASH (ФЛЕШ) ИГРУ ИЛИ ФЛЕШ САЙТ ИЛИ ИГРОВОЙ БАННЕР Phone: по запросу на е-мейл Skype: kotletov E-mail: [email protected]

www.kstudio.ru

Разработка интерактивных развлечений, Flash игр и приложений

РАЗРАБОТКА ИГР И ПРИЛОЖЕНИЙ

Нужна игра для стимулирования Вашего бизнеса?

В студии Эйфория Вы можете заказать компьютерную игру под Ваш формат развлечения. Создаем клиенто-серверные приложения, Flash (ActionScript), Unity3D (C#), вспомогательный инструментарий для игр (редакторы, утилиты).

Срок разработки: от 25 рабочих дней.

Мы занимаемся разработкой игр и приложений для различных целей.

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

Инструменты разработки

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

Мы предлагаем услуги:

  • Приложения клиент-сервер.
  • Разработка flash-игр и приложений на ActionScript.
  • Разработки на игровом движке Unity3D.
  • Создание дополнительных инструментов для игр (сервисные программы, программы редактирования).

Время выполнения заказов: от 25 рабочих дней.

Основной инструментарий, используемый нами:

  • Интегрированная среда программирования C++ Builder.
  • Среда разработки приложений Delphi.
  • Программные платформы VC++ и VC#.
  • Среда разработки от Apple xcode.
  • Мультимедийная платформа Flash.
  • Среда разработки игровых приложений Unity.
  • Конструктор игр Godot.

Специфика работы

Применение среды Unity 3D дает нам возможность проводить адаптацию игровых приложений для разных мобильных платформ. Среди поддерживаемых мобильных устройств такие системы, как iOS и Android.

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

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

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

Ход разработки

Разработка интерактивных игр — процесс, требующий творческого подхода. Его итог заранее предсказать невозможно. Однако сотрудничество разработчиков и заказчиков, сопровождающее процесс разработки, дает замечательные результаты.

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

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

Помимо перечисленных, мы работаем со следующими программными продуктами:

  • Разработка игровой логики (Squirrel).
  • Скрипты PHP на субд sqlite.
  • Настройка 1С.
  • Создание парсеров.
  • Системы контроля версий.

Разработке игр помогает большое количество готовых классов и API приложений.

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

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

С уважением,гениальный менеджер студии ЭйфорияДмитрий Белянин.

arteuphoria.ru


Смотрите также