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

Реклама AdMob и мобильные Air приложения

Короткий пост о том, как разместить баннер популярной сети AdMob в мобильном Air приложении. Рассмотрим один-два нюанса, решим проблему нежелательного масштабирования.

Итак начнем. Оставим без деталей несложный процесс регистрации на сайте AdMob, и создание нового сайта/приложения:

AdMob создание нового сайта или приложения

Для размещения баннера в приложении для iPhone и iPod Touch я выбираю iPhone App — мне это кажется логичным. Однако многие авторы подобных статей рекомендуют выбрать Smartphone Web. Такой вариант удобен тем, что сразу приводит нас к необходимому javascript коду вместо такой вот новости [...]

Читать дальше: Реклама AdMob и мобильные Air приложения

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-я: организация пирингового вещания

суббота, 15 октября 2011 г.

Пишем шейдер на AGAL

Ни для кого уже не секрет, что Flash Player 11 имеет поддержку GPU ускорения графики. Новая версия вводит Molehill API позволяя работать с видеокартой на достаточно низком уровне, что с одной стороны даёт полную волю фантазии, с другой требует более глубокого понимания принципов работы современной 3D графики.

В данной статье речь пойдёт о языке написания шейдеров – AGAL (Adobe Graphics Assembly Language). Предполагается, что читатель знаком с базовыми основами современной realtime 3D графики, а в идеале – имеет опыт работы с OpenGL или Direct3D. Для остальных же проведу небольшой экскурс:

  • в каждом кадре всё рендерится заново, подходы с частичной перерисовкой экрана крайне нежелательны
  • 2D – частный случай 3D
  • видеокарта способна растеризовать треугольники и ничего кроме
  • треугольники строятся на вершинах
  • каждая вершина содержит в себе атрибуты (координата, нормаль, вес и др.)
  • порядок задания вершин в треугольнике определяется индексами
  • данные вершин и индексов хранятся в вершинном и индексном буферах соответственно
  • шейдер – программа выполняемая видеокартой
  • каждая вершина проходит через вершинный шейдер, а каждый пиксель при растеризации через фрагментный (пиксельный)
  • видеокарта не умеет работать с целыми числами, но отлично работает с 4D векторами

Синтаксис
В текущей реализации AGAL используется обрезок Shader Model 2.0, т.е. фитчелист железа ограничен 2005 годом. Но стоит помнить, что это ограничение лишь возможностей шейдерной программы, но никак не производительности железки. Возможно, в будущих версиях Flash Player планка будет поднята до SM 3.0, и мы сможем рендерить сразу в несколько текстур и делать текстурную выборку прямо из вершинного шейдера, но учитывая политику Adobe, случится это не раньше выхода следующего поколения мобильных устройств.

Любая программа на AGAL является по сути низкоуровневым языком ассемблера. Сам по себе язык очень простой, но требует изрядной доли внимательности. Код шейдера представлен набором инструкций вида: [...]

Читать дальше: Пишем шейдер на AGAL

вторник, 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

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

Parallel rewards

Аддиктивность

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

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

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

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


 

Параллельные линейные награды

Это система, при которой к одному игровому действию привязано несколько разных типов наград с разной длительностью. Формула: награда + ожидание награды.
 
Поясню на примере. Есть игровое действие - выстрел.
  • Игрок стреляет в стену - ничего интересного не происходит. За выстрел в стену награды нет.
  • Игрок стреляет в противника, и противник умирает. Это награда, ведь тем самым игрок приближается к прохождению уровня, уменьшает количество препятствий. (Режим подкрепления с постоянным соотношением)
  • Теперь пусть за каждого убитого врага главный персонаж получает опыт - это уже добавляет интерес. Ведь одним действием игрок не только уменьшает количество препятствий, но и приближает момент получения классной награды - нового уровня.  (Модифицированный режим подкрепления с постоянным соотношением)
  • А теперь добавим врагам 5% вероятность выпадения чего-то приятного: аптечку, патроны, броню, энергию и т.д. Убивать становится еще интереснее.  (Режим подкрепления с вариативным соотношением)
  • Увеличим вероятность выпадения бонуса за хедшот до 20%. Величина (или частота выпадения) награды теперь также зависит и от мастерства игрока. Здесь мы разделяем игроков на тех, кто готов напрячься, но получить награду и на тех, кто просто хочет пройти игру и посмотреть сюжет или просто не хочет напрягаться.
  • Добавим разнообразия. Десять хедшотов подряд дают игроку возможность использовать управляемую ракету. Становится еще веселее.
  • Напоследок, следуя веянию времени, добавим бронзовое достижение за 1000 убийств, серебряное - за 2000 и золотое - за 3000.

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

Параллельные линейные награды я еще называю наградами за одинаковые действия. Они обычно используются для прокачки какой-то игровой возможности. Также их можно использовать и для того, чтобы поощрять игрока делать определенные действия. Именно такой подход я использовал в Collapse: Ярость для того, чтобы игроки не боялись использовать ближний бой.

Вспомните, как приятно, когда в РПГ (из современных, например, серия The Elder Scrolls) те навыки, которыми вы пользуетесь, параллельно прокачиваются. Вы своими действиями уже получаете какой-то результат. Например, убили врага мечом. Но при этом осознаете, что навык пользования мечом прокачивается. В Borderlands таким образом прокачивались навыки пользования разными типами огнестрельного оружия. Нередко во время очередной перестрелки мысль о том, что оружие прокачивается, греет не устающую от гринда геймерскую душечку.

Читать дальше: Parallel rewards

понедельник, 26 сентября 2011 г.

Что заставляет игроков переигрывать игры по несколько раз

Недавно меня спросили: “Есть ли у меня забавные игрушки с высокой реиграбельностью?” Немного подумав, я понял, что почти ничего не знаю о том, как сделать игру, в которую игроки будут возвращаться снова и снова. Следующие несколько недель я рыскал по интернету в поисках всего по заданной теме. Полученная информация вылилась в доклад для GameDevSat в Днепропетровске, который проходил 24.09.11.

Итак, почему же люди переигрывают одни и те же игры по несколько раз?

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

Читать дальше: Что заставляет игроков переигрывать игры по несколько раз