Архив рубрики ‘Flash игры’

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 Хитрых

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

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

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

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

134 Хитрых

Флэш-игра “Вирусный кризис”.

26.12.2008, автор: Stormit, рубрики: Flash игры, Новости

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

Флэш-игра “Вирусный кризис”

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

Это моя первая действующая игра на AS3. Не могу передать всех эмоций которые переполняли меня, когда я переносил свои наработки на 3-ю версию скрипта, но вспомнил я всех, особенно когда знакомился со сборщиком мусора.

Надеюсь игра вам понравится, мы старались сделать её весёлой.

42 Хитрых

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

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

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

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

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

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

33 Хитрых

Изометрия в два счёта

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

Для flash-игры TilePaving использовалась одна маленькая, но полезная хитрость. Никакой изометрии в программном понимании там и в помине нет. Все расчёты для плиток производятся в привычных координатах _x и _y. А интересный ракурс создаётся благодаря двум простым действиям: повернуть символ на 45 градусов (всю игру целиком), а потом сплющить её по вертикали на 50%. Сжать повёрнутый символ во флэше не так-то просто - маркеры трансформации помнят угол поворота и сохраняют возможность растяжения/сжатия по осям самого клипа. Чтобы обойти этот момент, нужно символ временно сгруппировать (Ctrl + g), сжать по высоте и затем разгруппировать (Ctrl + b).

 

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

38 Хитрых

Flash-игра TilePaving - головоломка для любителей поиграть в пятнашки

07.10.2008, автор: Stormit, рубрики: Flash игры, Новости

Первая моя игра, которая нашла своего спонсора в лице UGOPlayer через сайт FGL.

TilePaving Flash Game Splash

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

36 Хитрых

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

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

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

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

64 Хитрых

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

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

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

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

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

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

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

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

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

72 Хитрых

Mr. Coo: El Laberinto Esférico - флэш игра построенная на анимации

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

Совсем недавно мы общались с dedом pb|xto на тему: “Какими должны быть игры”. Что программисты делают виртуозные и играбельные движки, где геймплей строится на ловкости и быстром реагировании, а аниматоры “выезжают” на прикольных персонажах, качественной анимации и спецэффектах. И хотя я сторонник того, чтобы аниматоры начали программировать, а программисты рисовать, все же у каждого есть свой конек, с помощью которого можно делать самодостаточные игры.

И вот, удачный пример аниматорской игрушки - Mr. Coo: El Laberinto Esférico

Mr. Coo: El Laberinto Esférico

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

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

Одна из лучших игр в этом жанре.

27 Хитрых