Архив

Архив Январь 2010

Обработка передвижений мыши

23 Январь 2010 Нет комментариев

Обработка передвижений мыши в AS 3.0 на первый взгляд выглядит очень просто. И документация и десятки примеров в интернете показывают как это сделать:

sample_mc.addEventListener(MouseEvent.MOUSE_MOVE, SampleMouseMove);

Теперь, когда курсор мыши будет наведен на клип sample_mc, то будет вызвана функция SampleMouseMove, которая получит параметр типа MouseEvent из которого можно будет узнать координаты курсора и много другой информации.
Однако, внутри скрывается несколько нюансов, которые привели к тому, что у меня на правильный обработчик ушло несколько часов времени.
Читать далее…

Составляющие игрового процесса игр жанра tower defence

20 Январь 2010 Нет комментариев

Переиграл на днях в несколько новых игр из жанра tower defence и в самые популярные старые игры этого жанра. В результате задумался над тем какие же вообще элементы игрового процесса делают игры этого жанра столь интересными. Вот основные особенности, которые я смог выделить:

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

Читать далее…

Categories: Tower Defense 1 Tags:

Отчет #11

20 Январь 2010 Нет комментариев

Как и собирался, занялся подключением учета стоимости устройств в окне «Upgrade». Практически сразу наткнулся на логическую неувязку в интерфейсе, которую опишу потом в отдельном посте. Отложив эту часть в сторону переключился на реализацию всплывающих подсказок. И, если сам класс, который рисует окно подсказки не вызывал никаких сложностей – все, что было нужно, это аккуратно разбить нарисованное окно на 9 частей, перенести их во Flash, задать имена и атрибуты, а потом несколькими строками кода правильно расположить их в MovieClip’е, то вывод получившегося изображения на экран оказался неожиданно сложным.
К чему бы я не пробовал прикрепить MovieClip он отрисовывался не в том месте и не по тем координатам. Впрочем, это не самая сложная часть и думаю, что большинство сложностей вызвало то, что был поздний вечер и я пытался решить задачу подбором, вместо того, чтобы подумать.

Categories: Tower Defense 1 Tags:

Быстрая балансировка геймплея

15 Январь 2010 Нет комментариев

Обложка книги "Компьютерные игры. Как это делается"Небольшое предисловие: в 2000 году журнал Game-Exe вместе с издательством Логрус.РУ выпустил отличную книгу «Компьютерные игры. Как это делается». Книга представляет из себя подборку статей, написанных различными известными американскими разработчиками, в основном геймдизайнерами и продюсерами. Каждый писал о том, что ему было наиболее интересно, что он лучше знал и в целом книга рассказывает практически обо всех аспектах создания игр на рубеже тысячелетий.
В свое время я прочел эту книгу с огромным интересом и немного жаль, что ее сравнительно быстро «зачитали». Из всего, что там рассказывалось мне больше всего пригодился совет, кажется, Сида Мейера:




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

Цитата не точная, но смысл именно такой. Это действительно сильно ускоряет работу. Иногда бывает, что уменьшишь значение в два раза и видишь, что ничего не изменилось и тогда становится понятно, что можно сразу раз в десять уменьшать. Если уменьшать по двоечке, по троечке – на 1-2 процента, то до нужной величины можно было бы целый час добираться. А вот переборы при таком методе все равно редко происходят.

Categories: Разное Tags:

Загрузка и сохранение объектов и массивов во Flash

15 Январь 2010 1 комментарий

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

package
{
	public class clBox
	{
		public	var mName	: String;
		public	var mColor	: Number;
		public	var mX		: Number;
		public	var mY		: Number;
	}
}

Читать далее…

Отчет #10

15 Январь 2010 Нет комментариев

Как я и подозревал, с сохранением и загрузкой все оказалось не так просто. Простые типы, вроде Number или String сохраняются просто великолепно, а вот что-то более сложное уже вызывает проблемы. Конечно, если есть строка, то уже можно сохранить все. Немного терпения и все данные кодируются в строку, а при загрузке парсятся обратно, но в кои-то веки я захотел пойти по простому пути и зарылся в документацию.
Документация вопрос сохранения структур данных освещала невнятно, но в разных местах проскальзывали ссылки, что если класс зарегистрировать, то все может получится. Лучшее, что получилось у меня – это сохранить объект унаследованный от Sprite. При этом все дополнительные свойства, которые я в него добавил, и в которых, собственно говоря, и была основная суть, были проигнорированы и не сохранились. В итоге я все же нашел решение как сохранять все, что мне нужно, но изящным оно не выглядит.
Это десятый день работы над проектом и сорок пятый календарный. Даже с учетом, что параллельно с разработкой я изучаю AS3, мой темп приводит меня в ужас. Успокаиваю себя тем, что постепенно результативность труда увеличивается.

Categories: Tower Defense 1 Tags:

Apple App Store

14 Январь 2010 Нет комментариев

Все мы читали множество историй о том, как популярны игры среди пользователей iPhone и как много денег можно заработать на их продаже. Маховик начал раскручиваться еще в 2008 году, но большая часть разработчиков обратила внимание на новый рынок уже в 2009 году. Во второй половине ушедшего года начали появляться уже не столь радужные истории, но я хочу рассказать сейчас не об этом.
На волне интереса произошла довольно некрасивая история, когда оригинальная flash игра Ragdoll Cannon от Johnny-K была один в один портирована американским разработчиком на iPhone без какого-либо указания авторства. Игра была платной и в первое время попала в топ-50 платных приложений, что по тем данным, которые раскрывают другие разработчики, означает получение довольно существенной прибыли: не сотни тысяч долларов, но и не несколько сотен тоже. Не надо уточнять, что никакой прибылью американец не поделился. Начало этой истории можно смотреть отсюда.
И не было бы никакого смысла об этом вспоминать, если бы не другая история с играми и iPhone, которая завершилась совсем противоположным образом. В США есть компания Mumbo Jumbo, которая является одним из лидирующих разработчиков на рынке казуальных игр. Компания серьезная: с инвесторами, юристами и довольно солидным годовым доходом. В свое время она даже купила компанию, которая занималась разработкой «больших» игр. У этой компании есть хитовая игра Luxor о которой, уверен, большая часть из вас слышали.
В Польше же есть другая компания – Codeminion. Тоже вполне серьезное предприятие, которое стала развиваться и приобрела известность после разработки удачной игры в жанре match3 – Magic Match. Некоторое время спустя они выпустили вторую оригинальную игру – StoneLoops! of Jurassica, игровая механика которой повторяла Luxor. Игра была сделана очень качественно, имела свои уникальные игровые возможности и оригинальный сеттинг. Такого же признания как Luxor или Zuma игра не получила, но мирно и спокойно продавалась вместе с ними на одних и тех же сайтах.
В начале прошлого года Codeminion выпустила StoneLoops! of Jurassica на iPhone. Через некоторое время Mumbo Jumbo выпустила на iPhone Luxor. Но Codeminion была первой. И StoneLoops становится более популярной игрой чем Luxor на этой платформе (а может дело было не только в первенстве игры). Игра два месяца находится в топ-10, а это уже очень существенный уровень дохода.
Осенью Mumbo Jumbo не выдерживает, и ее юристы подают в «Apple» жалобу на игру конкурента в которой обвиняют его во всех смертных грехах, включая и кражу исходного кода. Через три недели, в конце октября, StoneLoops! исключается из Apple App Store! Более детальное описание этой истории можно прочесть на английском языке в блоге разработчиков. С тех пор юристы Codeminion пытаются добиться возврата игры обратно в каталог, но пока безуспешно.
Из этих двух историй можно сделать следующие выводы: тот у кого юристы круче (или хотя бы просто есть), тот и получает более высокое место в рейтинге Apple App Store; на платформе iPhone запатентовать игровую идею все таки можно.

Ускорение отладки программы

12 Январь 2010 1 комментарий

При отладке программы иногда бывает необходимо включать и исключать различные участки кода. Это легко делается с помощью комментирования не нужного на текущий момент кода и в большинстве IDE это можно сделать довольно быстро при помощи горячих клавиш.
В языках программирования, чей синтаксис во многом копирует синтаксис C я уже много лет пользуюсь еще более простым и удобным способом работы с комментариями. Все дело в правильном комбинировании двух видов комментариев. Перед закрывающей скобкой комментария «*/» добавляем комментарий строки «//»

/*
Закомментированный текст
//*/

Теперь, чтобы быстро убрать комментарий нужно добавить всего один символ «/» перед открывающей скобкой, а об закрывающей можно забыть.

//*
Теперь текст работает
//*/

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

Отчет #09

12 Январь 2010 Нет комментариев

Приятно результативный день для разработки игры. Все еще занимаюсь окном «Upgrade», но окончание уже видно. Выбранные элементы становятся в указанные слоты и удаляются из общего списка. Те элементы, которые были в слоте раньше – в список возвращаются. Характеристики «башни» при этом изменяются и изменения отображаются на экране. На окончательные значения влияют базовые характеристики «башни», характеристики установленного оружия и защиты и характеристики дополнительных устройств – «gadgets».
Осталось сделать всплывающие подсказки с детальными характеристиками и добавить учет бюджета, чтобы устанавливать устройства можно было только в рамках накопленной к текущей игровой ситуации суммы.
После этого остается сделать следующий режим работы, а потом чуть более простое, но все равно довольно «веселое» окно исследований. Но об этом думать сейчас несколько тоскливо: хочется уже вернуться к оружию, взрывам и интеллекту «монстров».

Categories: Tower Defense 1 Tags:

Окно «Upgrade» – рабочая версия

11 Январь 2010 Нет комментариев

Это текущая версия окна «Upgrade». Все данные, включая названия, тестовые, а на кнопках нет иконок. Этот интерфейс нравился мне ровно двадцать минут после того, как я его завершил и мне постоянно хочется его изменить, как с точки зрения эргономики – слишком много пустого места вверху, так и с точки зрения дизайна – он удобный и понятный, но не атмосферный.

upgrade_window_01

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