Эффект электрошока в 2 кадра

31.08.2009, автор: Stormit, рубрики: Анимация, Игровые баннеры

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

Первое что нам нужно - это персонаж для опытов. Можете нарисовать его в любой позе, главное чтобы она контрастировала с той, когда персонаж получает разряд (слайд 2). Читать полностью »

24 Хитрых

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

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

Урок от ANIMEFISH.COM

Привет!

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

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

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

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

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.
Читать полностью »

58 Хитрых

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

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

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

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

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

25 Хитрых

Делаем во флэше движение персонажа как в Crimsonland

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

Думаю, что многих в своё время зацепила игра Crimsonland. Лично мне нравится как там реализовано управление главным героем. При нажатии клавиши “Вверх” персонаж смещается не строго вверх, а туда, куда смотрит. Кнопки “Вправо” и “Влево” только поворачивают героя и меняют направление движения.

Такое движение сделать во флеше очень просто, достаточно знать формулы синуса и косинуса. Этим мы и займёмся. Читать полностью »

101 Хитрых

Эффект сильного ветра в 2 кадра

07.11.2008, автор: Stormit, рубрики: Анимация

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

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

Таким же образом можно передавать и фоновую скорость, например, мелькание воздуха за иллюминаторами самолёта. Нужно ускорить персонажа? - Заставьте фон двигаться быстрее. Читать полностью »

25 Хитрых

Игровые баннеры тоже игры - презентация для FlashGamm в Киеве

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

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

Использование флэш-игр в рекламе

Основной смысл - как сделать из flash-игры рекламный продукт.

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

31 Хитрых

Добро всегда побеждает зло - игровой баннер

15.10.2008, автор: Stormit, рубрики: Анимация, Игровые баннеры, Новости

На днях был сделан игровой баннер для Доброблога. Идею долго выдумывать не пришлось - название блога говорит само за себя.

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

Персонажей для баннера придумал и оживил (а точнее вывел из своих миров) - Никита Котов

50 Хитрых

Пиксельный поиск пути

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

Это продолжение предыдущего поста о простом движке для flash-игр. Тогда, в самом конце возникла мысль уйти от метода hitTest() и перейти на пиксельный просчёт. И чтобы сравнить оба способа и выбрать лучший вариант, сделал небольшой визуальный тест.

Кстати, в тот раз я написал не совсем правильный код. Команда break не выводила процесс из вложенного цикла и бессмысленно терялось много процессорных ресурсов. Странно, но никто по этому поводу не отписался. Значит либо все “внимательно” читают и пробуют, либо верят на слово ;)
Этот баг я поправил. Дальше по слайдам: Читать полностью »

58 Хитрых

Простой движок для флэш-игр типа “Вид сверху”

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

Давно я не писал новых статей. На то есть много причин, главные из которых - отпуск и новая флеш-игра (как найдётся спонсор, выставлю её на обозрение). Блог не умер и не собирался умирать, новые материалы будут публиковаться по мере появления свободного времени. Многие вещи у меня лежат в полуготовом состоянии и дорабатываются до состояния “интересно” - раньше выкладывать нет смысла.

Ближе к теме. Есть множество flash-игр, в которых пользователь видит уровень как-бы с высоты птичьего полета - сверху. Одна из основных задач, с которыми сталкивается разработчик в таких играх - программно организовать проходимые зоны и препятствия.

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

  1. Блочное решение. Карта разбивается на кубики и у каждого стенки задаются как свойства “left”, “right”, “top” и “bottom”. Если объект вошёл в кубик, он свободно может по нему перемещаться. Перейти в соседний можно только если смежные грани не имеют стенок. Для оптимизации можно количество стенок уменьшить в 2 раза оставив только “left” и “top”. Две остальные сработают у соседних кубиков.
  2. Реализовать физический движок с нулевой гравитацией.

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

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

Пойдём от простого к сложному. Читать полностью »

60 Хитрых