+183.33
52 читателя, 99 топиков

Глобальная система звуков. Создание собственного класса управления звуками с помощью паттерна Singleton

Эта публикация является переводом моей статьи о создании собственного Sound Manager-а (на украинском).

SoundЗанимаясь разработкой игры "Turtle Dreams to Fly" (сейчас доступна на FGL), я столкнулся с необходимостью управления звуками. Требовался обычный функционал: кнопки включить/выключить все звуки и музыку в игровом интерфейсе. Сложность ситуации заключалась в том, что разные звуки были привязаны к разным игровым объектам, и управлять ими с помощью единого интерфейса (кнопок mute music и mute soundeffects) представлялось невозможным.

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

Асинхронный A*

Хочу представить общественности, в том числе и для критики, свой велосипед реализующий асинхронный поиск пути по алгоритму A*.

Path planning
Читать дальше →
  • +12

Пишем Match-Three

1
Всем коллегам, здравствуйте.
Я начинающий FlashGame-разработчик. Скажу в самом начале, у меня нет ни одной выпущенной или проданной игры. Но мне понравился урок по созданию игры на механике match-three. Сам урок я понял с первого раза, а для чего же я сделал перевод? Во-первых, надеюсь это поможет кому-то, кто не силен в «инглише». Во-вторых, перевод позволил мне разобрать весь код по косточкам, очень тщательно.

Перед тем как я начну, выдам пару соглашений. Урок взят мной из книги Gary Rosenzweig — «ActionScript 3.0 Game Programming University». Я уже писал в своем личном блоге, что не все наши флеш-разработчики положительно относятся к этой книге. Перевод может показаться немного деревянным и не очень приятным на слух. Некоторые слова, выражения могут иметь более подходящие аналоги в русском языке. Если это будет критично, исправлю. В программе используется дополнительный класс PointBurst. Я не буду его сейчас описывать, а скорее всего сделаю это в следующем посте личного блога, т.к. это довольно интересный класс. Просто пока будем знать, что этот класс выдает эффект всплывающих очков в определенном месте.
И последнее, я не придумывал ничего нового, а просто сделал перевод, т.е. все благодарности автору книги Gary Rosenzweig.


Читать дальше →

Кеширование MovieClip

Когда я заметил, что мои игры сильно тормозят с релизной графикой я решил её как-то оптимизировать. Стандартный cacheAsBitmap не помог. Порывшись на форумах и гуглах я выяснил, что лучше самому кешировать клипы в Bitmap. Даже нашёл исходники кеширования от TouchMyPixel, разработчиков игры Scary Girl. Но он был слишком не универсальным, заставлял художника сделить за размером кадров. Поэтому взяв его за основу я написал свой класс, который превращает любой MovieClip в набор Bitmap'ов с учётом всех смещений. В дальнейшем этот класс можно будет использовать для создания атласов анимации, которые можно будет использовать при портировании Flash игр на другие платформы.
Читать дальше →

Прототип 3D сокобана на движке Alternativa3d Текстуры и Анимация

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

Эмануэль производит новые демки и посты со скоростью экспресса. Вот продолжение серии про сокобан на Flare3D:
сокобан с текстурами и финальная версия.

Я решил не отставать от шустрого итальянца и даже немного обогнать его. Поэтому сделал версию с текстурами и еще одну с анимацией 3d персонажа. Первая получилась обычным портом с одного движка на другой без включения мозга. При работе над версией с анимацией мозг и совесть внезапно включились и заставили переписать всё то чёрное шаманство которое было с камерой и осями. Еще добавил возможность полетать над игровым полем свободной камерой (только в версии с анимацией). Остальное под катом.
Читать дальше →

Как сделать полный stop() мувиклипу

Однажды столкнулся я с проблемой — нужно остановить мувиклип перед тем, как положить его обратно в пул. Чтобы гад не крутился там в небытии и не жрал ресурсы. Однако метод stop() останавливает только таймлайн самого мувиклипа, а все мувиклипы-дети, которые на нем крутятся — продолжают крутиться. Например, если у вас есть клип «танк», в котором есть анимация кручения гусеницами, но дополнительно в нем есть клип «человечек в люке», который машет флажком. То после метода stop() на танке гусеницы остановятся. А человечек все машет и машет, машет и машет. Танк может уже удалили, но пока его не зачистил гарбадж коллектор — он машет и машет, проц напрягается и напрягается. А если у вас реализован пул танков, то сотни танков в пуле и на каждом человечек машет и машет флажком… Ужос!

Читать дальше →

Родитель определенного класса

Иногда необходимо узнать, есть ли среди родителей дисплейОбжекта объект определенного класса.
Читать дальше →
  • +3

Прототип 3D сокобана на движке Alternativa3d

Хорошо известный итальянский блогер Emanuele Feronato выложил два поста с прототипом игрушки сокобан.

Flash 3D Sokoban prototype with Away3D
Flash 3D Sokoban prototype with Flare3D

В своих прототипах он использовал Away3d и Flare3d.
Я решил подхватить эстафету и сделать простейший сокобан на движке альтернативы.
Читать дальше →