Зомбошутер. ?ли как быстро освоить Action Script 2?

Сегодня, заблудившись у себя в папке с проектами, я совершенно случайно наткнулся на свои забытые эксперименты с Action Script 2. То есть, писав ранее о том, что «Грибник» — это первая моя игра, я немного преуменьшил :) Так как прежде чем браться за «Грибника», я занимался изучением флеша и пробовал писать всякие мини игры на AS2. В результате у меня получилось две незаконченные игры, об одной из которых я расскажу сегодня.

После экспериментов с ракетой, я взялся за более глубокое изучение AS2. Подход с написанием кода в кадрах очень удобен с дизайнерской точки зрения, но большую игру таким образом написать довольно сложно. Когда быстро что-то прототипируешь или экспериментируешь, очень удобно тут же писать коротенькие кусочки кода в кадрах. Но как только дело доходит до правок или поиска багов, то уже жутко не удобно скакать из кадра в кадр разных MovieClip'ов и пытаться воссоздать в голове игровой алгоритм, чтобы хотя бы примерно представлять где и что менять, не сломая при этом что-нибудь в другом месте. Поэтому в сложных играх лучше отделять «мух от котлет». То есть код должен быть отдельно от графики, чтобы в будущем не возникало проблем.

У AS2 есть возможность к клипам привязывать текстовые файлы с кодом, которые описывают поведение клипа, а если по науке — то это уже создание классов. Хоть AS2 мне и знаком по синтаксису того же JavaScript, но как работать в нем с классами я себе не представлял, а книжек об этом под рукой не было. Но далеко ходить не пришлось. Уже через пол часа поисков информации о классах в AS2, я нашел замечательный урок SHOOTORIAL.

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

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

Управление: герой следует по горизонтали за мышкой, стрелять — левая кнопка мыши. Монстров не ждите, они не прибегут :) В данном эксперименте стрелять можно только по кактусам, разрушая их.

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

 

 

 

Управление: герой следует по горизонтали за мышкой и пушка наводится на курсор мыши. Левая кнопка мыши — стрельба, можно зажать и не отпускать ее. Задача: завалить как можно больше врагов и не отдаться монстрам или не отстрелить себе случайно голову. Если обновить страницу, то при загрузки игры ландшафт обновится.

Кстати, продемонстрированный зомби в этой записи, был нарисован именно для этой стрелялки :)

Но игру я так и не завершил по двум простым причинам: 

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

Второе, и самое пожалуй интересное — оказалось, что даже AS2 с использованием классов очень не подходит для сложных игровых проектов из-за своего лояльного отношения к ошибкам программиста. Дело в том, что среда игнорирует наличие простых ошибок и не спешит об этом извещать пользователя. То есть, на деле одна не инициализированная переменная или написанная с опечаткой функция может нарушить работу приложения, и пока все оттрейсишь и найдешь, где у тебя в написании переменной буквы поменялись местами — может уйти не один вечер. Но слава богу AS3 не такой, в нем строгий подход к инициализации переменных и вообще ко всяким мелочам, за счет чего работа над кодом намного облегчается :) Но это не значит, что AS2 плохой, на самом деле он хороший. Просто нужно понимать, где его удобно и надежно использовать, а где нет ;)

 

В процессе чтения возникал вопрос: так что же, значит AS2 плох? Но в конце и так увидел ответ на свой вопрос. В программировании не разбираюсь, но видимо придётся.
Спасибо за статью. Познавательно.

Wyveren
5 Октября 2009
— 08:55
#

Я считаю что AS2 просто находка для новичков в программировании, он позволяет быстро разобраться что к чему и получить хороший результат. Мне самому он как раз этим очень понравился — нарисовал человечка тут же написал несколько строчек кода и персонаж уже бегает :)

Ant.Karlov
5 Октября 2009
— 15:16
#

"нарисовал человечка тут же написал несколько строчек кода и персонаж уже бегает"
А в АS 3 разве не так ? в чем отличие ?

Vasya
5 Октября 2009
— 16:32
#

В AS3 концепция Объектно Ориентированного Программирования (ООП) использована полностью и явно. Все что находится в ролике описано объектами, свойствами и методами. То есть практически на каждую мелочь есть свой класс объект, который необходимо обязательно корректно инициализировать и только потом использовать. В AS3 можно так же писать код в кадрах, но это уже противоречит ООП. К примеру при работе с AS2 часто нужны нестандартные подходы, привыкая к которым в будущем могут возникать сложности при работе с другими языками программирования.


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


Для меня AS3 оказался проще и удобнее лишь по той простой причине, что до этого я уже работал с другими языками программирования и у меня сформировался определенный образ и стиль мышления при написании кода который соотвествует концепции ООП. А при работе с AS2 некоторые нестандартные подходы меня озадачивали и даже местам усложняли работу :)

Ant.Karlov
5 Октября 2009
— 18:37
#

ордл

дл
11 Июля 2012
— 22:49
#

Я начал сначала изучать Флеш с книги Колина Мука, AS3, но концепция ООП дял меня оказалась настолько чужеродной после года программирования на PHP, что перейдя к AS2, я очень обрадовался. Простой, позволяющий писать код в парадигме функционального программирования, он очень лоялен к новичкам.
Ну а если сильно понадобится AS3, то с AS2 мне будет гораздо легче переходить, зная часть языка.

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

Флеш гейм-девелопер
19 Мая 2013
— 22:25
#

Здравствуй, меня зовут Дима, и если ты до сих пор интересуешься играми, то пожалуйста зайди на мой сайт, там найдешь статью для набора в группу, денег я не обещаю конечно, но так по дружески делать игры, не плохо бы =). Пока в группе никого нет. (пожалуйста зайди на него)
Сайт: http://club-as2.fo.ru/
Спасибо, хочу добавить, что блог отличный, и мне очень жаль если ты уже не занимаешься флешем.

Дима
28 Августа 2013
— 18:14
#