Архив рубрики ‘ActionScript’

Особенности создания персонажа в Box2D для платформерной игры

13.12.2010, автор: Stormit, рубрики: ActionScript, Flash игры, Анимация, Новости

В этот раз FlashGamm превзошёл мои ожидания по размаху. Более 400 человек! Можно было покатать на MaxRacer от Alternativa3D, сыграть в реальную русскую рулетку c Arvara, пообщаться с кем хочешь и вообще, просто познавательно провести время. Отличное мероприятие, спасибо тем кто его устроил, кто пришёл туда с докладами и тем, кто пришёл их послушать.

Выкладываю свой доклад с FlashGamm Kyiv 2010. Тема доклада предполагает, что вы уже знакомы с физическим движком Box2D и уже что-то пробовали на нём сделать. И, надеюсь, что у вас это получилось. Если же вы ещё с ним никогда не работали, то вот полезный набор для ликбеза:

Box2D 2.1 Manual (или предыдущая версия движка, зато на русском )

Box2D в картинках

Todd`s Box2D Tutorials

Этого хватит с головой! Ну и сам доклад с комментариями:

Читать полностью »

57 Хитрых

Инструменты создания искусственного интеллекта

27.10.2010, автор: Stormit, рубрики: ActionScript

Недавно съездил с докладом на Casual Connect. Как обычно бывает после подобных встреч, вернулся с массой впечатлений. Час общения с компетентными людьми даёт больше опыта и знаний, чем пол-года сёрфинга в сети. Поэтому в очередной раз советую всем: посещайте такие мероприятия как можно чаще и не пропустите FlashGamm, который пройдёт 4-5 декабря в Киеве (я там тоже буду).

Но сейчас не об этом. Выкладываю свою презентацию с CasualConnect Kiev 2010, а также код и небольшой пример как с ним работать.

Цель доклада - немного изменить подход к программированию ИИ персонажа. Иными словами - как задать персонажу сложное поведение во время игры, когда он выполняет большой набор действий и принимает новые решения. В качестве “умного” объекта могут быть не только бегающие в игре объекты. Это также может быть “окружающая среда” (например, уровень игры, который напускает на вас противников, когда вам легко играть или подкидывает аптечку, когда у вас мало жизней). Читать полностью »

55 Хитрых

Заготовка для флеш-игры или как сделать себе приятно :)

10.10.2010, автор: Stormit, рубрики: ActionScript

Раньше я считал флеш-игру сделанной, когда в неё можно было начать играть, нажав Ctrl+Enter во флеше. И почему-то я не учитывал что нужно ещё сделать странички с заставкой, главным меню, настройками и т.д. Хотя часто этот процесс может отнять несколько дополнительных дней. А ещё обиднее, если эти дни не учитывались при оценке стоимости игры. Вообщем, каждый раз к самой игре нужно разрабатывать ещё и саму оболочку-интерфейс. Со временем это становится неинтересно и хочется как-то использовать свои предыдущие наработки. Можно взять свою предыдущую работу, выкинуть оттуда всё лишнее и на тебе - интерфейс готов. Чтобы даже на это не тратить время, полезно иметь под рукой прототип интерфейса-оболочки для flash-игры.

Я просто выложу исходник и поясню как там всё работает. Это первый код на AS3, опубликованный здесь мною.  Статья также будет полезной тем кто хочет перейти на 3-ю версию ActionScript, но ещё не сделал этого. Сам пример и ниже пояснения к нему:

Читать полностью »

65 Хитрых

Презентация с UAFPUG в Киеве по платформенному движку + исходник с уровнем

31.12.2009, автор: Stormit, рубрики: ActionScript, Flash игры, Анимация, Новости

Поздравляю всех с Новым Годом! В новом году желаю всем игроделам делать только удачные флеш-игры :)С долгами в Новый Год нельзя, поэтому выкладываю презентацию с UAFPUG, которая проходила в Киеве, в октябре месяце.

а также, как и обещал, исходник к готовому уровню: 

Download: Simple Platform Engine Source  Simple Platform Engine Source (112.1 KB, 11,402 hits)

97 Хитрых

“Cкроллинг”, или как смещать фон вместо персонажа

13.07.2009, автор: Stormit, рубрики: ActionScript, Flash игры

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

Спешу ответить.
Есть один способ, самый простой, на мой взгляд, вот его и рассмотрим. Возьмём конечный результат из “предыдущего примера”, теперь “обернём” всё полученное в новый символ game. Наглядно результат показан на слайде 1 - код, персонаж, противники (если есть), платформы, графика и всё всё всё, должно оказаться внутри этого клипа. Такой клип можно смещать, масштабировать, крутить, копировать в другой fla-файл - игра будет работать.

Читать полностью »

87 Хитрых

Динамический фон для баннеров и flash-игр

24.06.2009, автор: Stormit, рубрики: ActionScript, Flash игры, Игровые баннеры

Урок от ANIMEFISH.COM

Привет!

Представляю вниманию очередную хитрость для флеш девелоперов - “Создание динамических текстур во флеш”. О чем это я? Частенько в играх, в анимации, существует необходимость использовать качественные текстуры для различных заливок (для фонов, объектов и т.д.) Однако, найти такую текстурку достаточно сложно, подготовить ее к использованию в ролике - тоже сложно (если вы к тому же не владеете растровыми редакторами - это еще проблематичней), импортируемая текстура имеет вес (и не малый) а для вашей игры, например, необходимо много текстур. Но самое важное - это найти ту текстуру, которая бы гармонировала бы с вашей графикой.

Что же делать? Какие пути выхода?

  1. Нарисовать всю картинку целиком - ну тут даже не каждый художник сможет справиться, даже профи :)
  2. Предлагаю воспользоваться моим способом - динамически создавать свою текстуру прямо во Flash!

Начнем. Читать полностью »

53 Хитрых

Простой платформенный движок для флеш-игр

16.06.2009, автор: Stormit, рубрики: ActionScript, Flash игры

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

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

У этого движка есть свои плюсы и минусы. К недостаткам можно отнести:
1) отсутствие физики (есть только гравитация)
2) отсутствие наклонных поверхностей
3) платформы только прямоугольной формы
4) в сложных уровнях, во избежание глюков, требует дополнительной настройки персонажа
5) есть небольшая “дерганность” персонажа при контакте с платформами (связано с тем, что пересечение с платформой компенсируется не по направлению движения, а с раскладкой на оси X и Y).

К достоинствам:
1) прост в разработке
2) простое и быстрое построение уровней сложной формы
3) персонаж автоматически шагает по невысоким ступенькам
4) несёт в себе определённую стилизацию и хорошо подходит для пиксельной графики.

Читать полностью »

230 Хитрых

Альтернатива “Cache as bitmap” - разгружаем процессор

27.03.2009, автор: Stormit, рубрики: ActionScript

Наверное многие знают и умело используют такую замечательную возможность во флеше как “Cache as bitmap“. При этом, с клипа делается виртуальный снимок в виде картинки и вектор не пересчитывается для отрисовки каждый кадр. Можно рисовать графику в векторе прямо во флеше, потом в панели свойств включить кэширование и на выходе плеер получает растровую картинку. Очень удобно, можно быстро вносить изменения и сразу любоваться результатом минуя фазу экспорта/импорта в PNG. Плюс ко всему - экономия траффика.

Звучит приятно и обычно всё хорошо работает, но я столкнулся с тем, что с клипами больших размеров, тормоза частично остаются. В одной платформенной игре у меня был фон 1200х1200, который лежал на заднем плане и должен был просто смещаться, пока персонаж бегает по уровню. Так вот, анимация происходила с небольшими рывками. Такое впечатление, что флэш время от времени пересчитывает данные и делает “обновлённый” снимок с клипа. Так или иначе, но факт имел место и такие тормоза были. Это решалось заменой векторного фона растровым (PNG), но такая флешка весила очень много.

Но не зря мы все так любим флеш - у него в арсенале достаточно инструментов чтобы решить эту проблему. Мы снимаем с флеша ответственность по растеризации векторной графики и берём её на себя. Будем использовать BitmapData и маленькую функцию, приведённую  ниже.  В добавок мы получаем возможность обрабатывать нашу картинку как игре угодно: добавить следы от взрыва, осколки, пятна.

На примере ниже можно увидеть как это работает. Большое количество градиентов и  объектов нас больше не пугают, потому что пикселы отрисовать в разы быстрее чем рассчитать вектор по точкам. Так будет видеть flashPlayer наш клип:

Читать полностью »

43 Хитрых

Crimsonland 3: Выживание на практике

19.03.2009, автор: Stormit, рубрики: ActionScript, Flash игры, Игровые баннеры

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

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

Итак, из предыдущих постов у нас есть главный герой, готовый ринуться на толпы врагов. Я заменил базуку на пулемёт и немного повысил его манёвренность (скорость ходьбы и поворота). Слайд 1.

Подробно о том, как теперь устроен клип body клипа hero показано на слайте 2. При щелчке мышью, начинает проигрываться анимация стрельбы и во втором кадре вызывается функция placeBullet(), которая добавляет пулю на сцену. Это единственное место в этом примере, где вызов функции идёт из клипа, а не с главной линейки. Обратите внимание, что появился вспомогательный клип dot - он нужен чтобы пересчитать по нему правильные координаты пули в момент вылета из ствола. Это идеальный способ, когда дуло не находится точно на осях X и Y. Внутри всех вспомогательных клипов я пишу _visible = false. Так они не заметны для глаза, но доступны для кода.

Дальше создаём клип для противника с именем spider и прочую атрибутику: пулю (bullet) и спецэффект для поражения (boom). Клип spider состоит из 2-х кадров (состояний). В первом клип с анимацией ходьбы (здесь же и клип hit, который нужен для проверки попадания), а во втором - клип а анимацией погибания (когда анимация доигрывается, в последнем кадре вызывается _parent.removeMovieClip() которая удаляет противника (в данном случае _parent - это клип spider). Клип пули bullet - просто рисунок снаряда (при _rotation = 0 смотрит вправо). Клип boom - имитация кровавого всплеска. Все эти клипы присутствуют на линейке, но лежат далеко за пределами сцены чтобы случайно не попали в кадр (или выполнить для них _visible = false). Потом с каждого будет создаваться дубликат и использоваться по необходимости.
Создаём прямоугольный клип ground который площадью должен покрыть всю сцену. Противники будут появляться, учитывая его границы, а пули будут удаляться (в смысле delete), когда вылетят за его пределы. Слайд 3.
Читать полностью »

86 Хитрых

Воспоминания о Crimsonland 2: наведение на цель

27.02.2009, автор: Stormit, рубрики: ActionScript, Flash игры, Игровые баннеры

Это небольшое дополнение к предыдущему посту, которое может сделать флеш-игру ещё интересней.

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

Читать полностью »

36 Хитрых