
Урок: создание Простого Платформера на AS3
Привет ребят! В ответ на вопросы на форуме, я вспомнил с чего сам все начинал, пришел в благодатное расположение духа и решил вот собрать небольшой видео урок для новичков, по созданию платформера. Использовал подход описанный еще у xitri, собсвенно код в кадрах, hitTestObject и все такое… ничего необычного, но думаю новичкам — самое то. Когда сам только начинал очень хотелось такого вот урока))) Если будет 3 часть, то покажу как сделать наклонные платформы, делается легко, а выглядит круто:D
Часть 1: www.youtube.com/watch?v=Epe_zLYPk8E
Часть 2: www.youtube.com/watch?v=Ai1573hJ0U4
P.S. Снимал без какой-либо особой подготовки, так что за всякие «ааа», «эээ», запинки и затырки заранее извиняюсь!
Часть 1: www.youtube.com/watch?v=Epe_zLYPk8E
Часть 2: www.youtube.com/watch?v=Ai1573hJ0U4
P.S. Снимал без какой-либо особой подготовки, так что за всякие «ааа», «эээ», запинки и затырки заранее извиняюсь!

Рефакторинг и оптимизация растрового рендера
Рефакторинг – это улучшение читаемости кода без изменения его функционала.
Оптимизация – увеличение эффективности работы программы.
В этой публикации я хочу на небольшом примере показать, как происходит рефакторинг и оптимизация. Никакой теории не будет, так как она уже давно описана в большом количестве книг. Перейдем сразу к практике. Для примера возьмём симпатичную флешку из публикации Растровый рендер в as3. Двигаем тысячи картинок с разрешения Platon. Если посмотреть на код, то можно увидеть, что внутри не всё так симпатично. Это нам и нужно. Предлагаю не закрывать статью по ссылке выше, чтобы исходный код был у вас перед глазами. Будем улучшать.
Читать дальше →
Оптимизация – увеличение эффективности работы программы.
В этой публикации я хочу на небольшом примере показать, как происходит рефакторинг и оптимизация. Никакой теории не будет, так как она уже давно описана в большом количестве книг. Перейдем сразу к практике. Для примера возьмём симпатичную флешку из публикации Растровый рендер в as3. Двигаем тысячи картинок с разрешения Platon. Если посмотреть на код, то можно увидеть, что внутри не всё так симпатично. Это нам и нужно. Предлагаю не закрывать статью по ссылке выше, чтобы исходный код был у вас перед глазами. Будем улучшать.
Читать дальше →

Растровый рендер в as3. Двигаем тысячи картинок

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

Обещанный мой SoundManager
В посте о SoundManager камрада jarofed я рассказал какие требования к этом классу у меня:
Цитата:
Несколько камрадов высказали желание глянуть на мою реализацию. Я минимально прокомментировал код и выкладываю.
Читать дальше →
Цитата:
… А основные сложности и возня у разработчика возникают тогда, когда надо организовать честную паузу, следить за количеством каналов и менеджить их по приоритетам (а не просто глушить несчастливый канал, например у меня одновременно идет перестрелка, взрывчики и один ярко выделяющийся на фоне старт баллистической ракеты — если число каналов переполнилось, то убрав один из выстрелов я мало что потеряю, а вот если заглохнет резко один выделяющийся старт ракеты, то это fail).
Потом, а что делать с зацикленными спецэффектами? Например едет танчик, пока он жив — крутится по циклу жужжание мотора и гусениц. Надо запоминать того кто вызвал спецэффект и уметь принудительно его останавливать.
Кроме того, тюнить громкость и стереобазу каждого эффекта в аудиоредакторе это неверно (да и долго), поэтому каждый саунд должен импортироваться нормализованным и в коде в библиотеке должен иметь связанный с ним саундтрансформ.
Далее, громкость при произвольном накоплении большого количества однотипных звуков начинает уходить в хрип. Это тоже надо менеджить, в частности проверять, а не произошел ли звук одновременно с таким-же по времени и рядом по позиции? Тогда запускать только один, и подхачить громкость соответственно, но не до хрипа.
Плюс еще всегда хорошо для однотипных часто повторяющихся звуков (выстрелов, попаданий итп) — иметь некоторый набор звуков. Иначе в ухо начинает резать. Соответственно, в коде запуск такого звука — это вызов метода с передачей типа «попадание_в_плоть». А уже менеджер рандомно пустит что-то из набора.
Несколько камрадов высказали желание глянуть на мою реализацию. Я минимально прокомментировал код и выкладываю.
Читать дальше →

Глобальная система звуков. Создание собственного класса управления звуками с помощью паттерна Singleton
Эта публикация является переводом моей статьи о создании собственного Sound Manager-а (на украинском).
Занимаясь разработкой игры "Turtle Dreams to Fly" (сейчас доступна на FGL), я столкнулся с необходимостью управления звуками. Требовался обычный функционал: кнопки включить/выключить все звуки и музыку в игровом интерфейсе. Сложность ситуации заключалась в том, что разные звуки были привязаны к разным игровым объектам, и управлять ими с помощью единого интерфейса (кнопок mute music и mute soundeffects) представлялось невозможным.
Конечно, сегодня существует множество готовых решений (например, класс SoundManager), но их использование показалось мне не слишком удобным в первую очередь из-за неполного понимания чужого кода и нежелания «связываться» с его оптимизацией/отлавливанием багов и т. д… Поэтому было решено создавать свой собственный класс управления звуками, в котором будет только нужный функционал и который будет идеально вписываться в структуру игры.
Читать дальше →

Конечно, сегодня существует множество готовых решений (например, класс SoundManager), но их использование показалось мне не слишком удобным в первую очередь из-за неполного понимания чужого кода и нежелания «связываться» с его оптимизацией/отлавливанием багов и т. д… Поэтому было решено создавать свой собственный класс управления звуками, в котором будет только нужный функционал и который будет идеально вписываться в структуру игры.
Читать дальше →

Захват экрана флешки
Задача: захватить экран флешки. >>p.s. удобно для создания презентаций проектов.

StatisticFrame [monitoring fps & memory]

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

Обновление Cirrus (ранее Stratus)
Первое нововведение — это передача ключа разработчика в качестве второго параметра, а не через URI, что делает ключ более защищенным.
Пример:
Второе — передача напрямую сообщений клиенту. Рекомендуется использовать данную передачу всего несколько раз, т.к. при данном методе происходит большая нагрузка чем при использовании P2P.
Пример:
Оригинал — http://blog.z-13.ru/2011/01/update-cirrus/
Более подробно — http://forums.adobe.com/thread/780788?tstart=0
Пример:
var nc:NetConnection = new NetConnection();
nc.connect("rtmfp://p2p.rtmfp.net", "000000000000000000000000-000000000000");
Второе — передача напрямую сообщений клиенту. Рекомендуется использовать данную передачу всего несколько раз, т.к. при данном методе происходит большая нагрузка чем при использовании P2P.
Пример:
// on sender peerID 9876 sending to peerID 1234
nc.call("relay", null, "1234", "INVITE");
// on receiver peerID 1234, this callback happens
nc.client.onRelay("9876", "INVITE");
Оригинал — http://blog.z-13.ru/2011/01/update-cirrus/
Более подробно — http://forums.adobe.com/thread/780788?tstart=0

Как делалась первая игра. Советы начинающим
Всем Привет. Меня зовут Андрей, и я с детства увлекался видеоиграми. Идея делать флеш игры засела мне в голову пару лет назад, но всё как-то не было времени. Я читал форумы и блоги разработчиков, играл в игры, завёл тетрадку куда записывал свои идеи, но руки как-то не доходили. Оказалось, самое трудное это начать.
Я очень рад, что моя половина разделила моё увлечение и всячески помогала мне в этом, не только советами но и делом.
Эта статья не в коем случае не является 100% руководством к действию, в ней я описываю наш “путь” первой игры. Возможно профи увидят в написанном много глупостей и очевидностей, или знают как реализовать той или иной функционал более изящным методом. Профи, пишите комментарии о ляпах и помогите советом нам, начинающим.
Есть такая поговорка: «Счастье, плохой наблюдательный пункт». Именьно поэтому я решил написать статью с “наблюдательного пункта“ после создания первой игры. Пока ещё свежи воспоминания.
Читать дальше →

Я очень рад, что моя половина разделила моё увлечение и всячески помогала мне в этом, не только советами но и делом.
Эта статья не в коем случае не является 100% руководством к действию, в ней я описываю наш “путь” первой игры. Возможно профи увидят в написанном много глупостей и очевидностей, или знают как реализовать той или иной функционал более изящным методом. Профи, пишите комментарии о ляпах и помогите советом нам, начинающим.
Есть такая поговорка: «Счастье, плохой наблюдательный пункт». Именьно поэтому я решил написать статью с “наблюдательного пункта“ после создания первой игры. Пока ещё свежи воспоминания.
Читать дальше →

Видеоподкасты по паттернам проектирования
Для всех любителей паттернов проектирования — видеоподкасты на английском языке (AS3).
Уже рассказывалось о посетителе, команде, хранителе и стратегии.
Можем заодно обсудить кто как использует паттерны в разработке игр. Я, например, одно время злоупотреблял синглтонами, сейчас вроде отошел. Вот такие простыни в коде встречались:
Ну и state machine, куда-же без нее.
Уже рассказывалось о посетителе, команде, хранителе и стратегии.
Можем заодно обсудить кто как использует паттерны в разработке игр. Я, например, одно время злоупотреблял синглтонами, сейчас вроде отошел. Вот такие простыни в коде встречались:
LevelTimer.instance.update();
MovementManager.instance.update();
Camera.instance.update();
HeroManager.instance.update();
PeopleManager.instance.update();
EnemiesManager.instance.update();
OrbsManager.instance.update();
CastleManager.instance.update();
PrisonsManager.instance.update();
BonusesManager.instance.update();
BombsManager.instance.update();
ShipsManager.instance.update();
Ну и state machine, куда-же без нее.