В дополнение...

… к flashgameblogs.ru/blog/actionscript/314.html

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

Например в редакторе у телепорта есть текстовый параметр trigger, в который можно записать имя триггера, который сработает, если игрок активирует телепорт. И можно добавить триггер «MoveActivatorTrigger» и задать ему в качестве конечной точки перемещения (marker) добавленный триггер «MarkerTrigger». Такая вот сейчас логика. И для каждого нужного в игре действия приходится делать отдельный триггер, а затем визуально раполагать его в редакторе уровней, прописывать параметры. В итоге сколько-нибудь сложный уровень начинает походить на мешанину триггеров, и уже бывает сложно с первого взгляда определить, что к чему относится и что делает…

С нормальными скриптами можно упростить разработку сложных игровых сценариев.

В следующем проекте скорее всего буду использовать её. Единственное добавлю, надо будет заранее (на этапе загрузки уровня) все скрипты компилировать, т.к. это отнимает некоторое время.

P.S. Уберите ограничение в 500 символов для постов-ссылок, неудобно же. И почему там нет форматирования текста?
  • +3

Комментарии (37)

0
А что мешает по мере создания уровня писать для него специальный уникальный класс который будет выполнять роль того самого «внешнего» скрипта и выполнять весь необходимый функционал внутри уровня? По моему подключение лишних скриптовых движков чтобы запрограммировать пару порталов на игровом уровне — это уже перебор, или нет!? :)
0
1. Чтобы уровни делал левел-дизайнер, а не программист.
2. Чтобы такой редактор можно было отдать игрокам.
3. Чтобы на одном движке лишь только силой художников, гейм-дизайнеров и девед-дизайнеров можно было сделать несколько разных игр.

Просто у себя я постепенно прихожу к единой игромейкерской платформе, которую в идеале вообще не нужно будет программировать. По крайней мере для игр определённого жанра.
0
хороший замах! напоминает редакторы от близарда (в какомто плане). Но вот третий пункт — я считаю голубая мечта любой компании. Ты считаешь такое возможно?
0
Сделать полноценное продолжение какой-нибудь приключенческой игры — вай нот? Основные возможности реализованы в движке от первой части, остальное расширяется с помощью скриптов.
В нашем (флешовом) случае скрипты работают с той же скоростью, что и сам код движка — поэтому можно программировать сколь угодно сложную логику.
0
Если я конечно правильно понял — это мега полезная весчь для ммо и т.п. игр, где необходимы постоянные поддержка и расширение.
0
Для ММО — это просто архи-полезная штука, а для флешевых игр, где поведение объектов должно меняться от уровня к уровню — просто полезная, а для тетрисов и стандартизированных физических платформеров — может пригодится для, например, локализации, хинтов, рекламы или ещё чего-нибудь не геймплейного, что хотелось бы править без компиляции.
Ну и для тулзов же — ваще мега-полезная штука.
0
Ну это конечно уже не в формате Flash игр, как мне кажется. Надо быть проще ;) В случае с порталами, я вообще не понимаю заморочек с триггерами, все должно быть проще: есть точка входа в портал, есть точка выхода из него — грубо говоря нужно поставить два объекта последовательно. А писать скрипты для программирования порталов, ну это уже как говорится трата ресурсов туда куда не надо :P
0
Если ты и кодер и левел дизайнер — то да :) А если только кодер, то гораздо приятнее 1 раз сделать продуманный двигл, отдать левел дизайнерам и пить себе чай :)
0
То есть свалить работу кодера на дизайнера уровней за счет возможности написания скриптов?! Ну-ну… :) Хороший кодер должен подготовить готовый функционал редактора уровней в котором можно все создавать одним кликом мыши — это легко делается для любого игрового жанра в формате флеш игр. Только если речь заходит о серьезных проектах на подобии StarCraft 2 или какой-нибудь Fallout, то да, там без скриптов уже никак…
0
Скрипты так же могут быть объектно визуализированы (аля ГеймМейкер). Но при этом уже не накидываться прям на игровое поле, а иметь свой отдельный визуальный редактор и на выходе генерить код.
Работа кодера — сделать движок, а не программировать логику уровней.
0
И все же, это уже уход от разработки игр в разработку тулзов, если говорить об уровне «аля ГеймМейкер». Я понимаю, что тут включается «подход программиста» в котором программист может доводить свой код и свои тулзы до совершенства постоянно улучшая и оптимизируя их. Но все же стоит помнить о гранях разработки и балансировать где-то по серединке.

В формате флеш игр, работа кодера заключается в создании игры ;) В общем славно я тут по троллил. Основную цель и мысль твою понял. Буду рад потом почитать или услышать от тебя стоило ли это того.
0
Антон, увы, такие универсалы, как ты — ольшая редкость. И вдвойне увы, что я не один из них. ):

Поэтому я стараюсь свои усилия направлять в ту область разработки, в которой хоть что-то понимаю. А это программирование и организация рабочего процесса.

Про ГеймМейкер — это я, конечно, загнул, я бы убился, пока его сделал. (: Но в целом для флешек скрипинг не такой объемный. Иногда вполне хватает одной двух строчек, в которых разберётся даже сценарист, не говоря уже про левел-дизайнера.

Оке, в Москве в следующем году подробнее расскажу, как напьёмся. (:
0
И это говорит человек, в игре которого объекты создавались похожим методом (на основе имени). ;)

А тут человек хочет пройти чуть дальше в автоматизации и вынести настройки из редактора, чтобы сделать процесс редактирования еще более простым.
+1
Фигасе «похожим образом» :) Если бы я прикрутил, например Lua чтобы парсить уровни из Flash IDE в AS3 то можно было бы потыкать меня в это носом.

В моем случае использовался единственный нативный параметр имя объекта чтобы идентифицировать объекты в коде. О каком-либо скрипте тут и речи быть не может. Elmortem же рассматривает возможность написания скриптов во внешних (?) файлах которые должны вшиваться в игру и компилироваться run-time в игровой код. Если смотреть на такой подход в формате флеш платформера, то я даже и не знаю — по моему это непозволительная трата времени программиста и будущих ресурсов игры.
0
Парсить уровни из Flash IDE можно с помощью JSFL, я об этом как-то уже рассказывал и даже скидывал кому-то универсальный код для парсинга и упаковки в XML.
Скорость работы таких скриптов точно такая же, что и у самой игры, в чём трата ресурсов?

Ещё раз: для меня важно, чтобы редактор можно было отдать игрокам вместе с игрой (внутри игры), и при этом чтобы дать создателям уровней на ряду с простыми инструментами создания — адвансед инструментарий для сложных сценариев. Модинг — это лучшее изобретение человечества. (:
0
Смысл один — автоматизировать процесс.

И Elmortem не говорил о ЛУА ;)
0
Портал может быть включен или выключен, портал может в разных случаях кидать тебя в разные места (специальный переключатель на уровне меняет пункты назначения), портал по сценарию может быть не исправен, и если у тебя нет определённого девайса — взорвётся. Да мало ли что взбредёт в голову этим безумный левел-дизайнерам пополам с гейм-дизайнерами. (:
0
Ну раз такое дело, то конечно… Но я бы не давал левел-дизайнерам делать то, что им взбредет в голову. Лучше сделать небольшой функционал но зато отлаженный и надежный с которым левел-дизайнеры должны создавать уровни, чем давать полную свободу и потом бодаться с отлаживанием каждого уровня отдельно ;) имхо.
0
Всё равно каждый уровень отлаживать. Мы ж не тетрис пишем. Баланс приходится сохранять, кривую сложности и т.д. Скрипты как раз позволяют делать интересные сценарии малыми силами. Быстро всё менять и править. Буквально пара-тройка строк кода могут сильно разнообразить уровень. При этом программисту ну нужно забивать себе голову логикой игры — только возможностями, которые попросили гейм-дизайнеры.
+1
звучит всё шикарно, хрчется увидеть результат и конечно услышать что это дало на выходе) Какой выхлоп) А вобще такую штуку надо давать сразу игрокам. Но самое главное конечно — стоит ли этого сама игра..)
0
P.S. Уберите ограничение в 500 символов для постов-ссылок, неудобно же. И почему там нет форматирования текста?
лучше оформить предыдущий пост не как пост-ссылку, а как обычный пост, а содержание этой заметки переместить туда под кат. будет отлично! и обсуждение будет в одном месте.
0
Да ладно, всё равно тот топик про скрипт-движок, а этот про то, как у меня сейчас работает логика игры.
0
Вставлю свои 5 коп. Будет время — загляну посмотреть как там реализовали все, какой биндинг, как обрабатываются ошибки.

Скрипты типа луа внутри флеш это мегаизлишество. Если я правильно понял — предложеный вариант — jit-компилятор. Ну это может и покатит.

Однако пока-что, мне кажется такое по-настоящему имеет смысл для узкого типа жанров. Ну для жЫрного РПГ, например, типа Морровинд :), где надо скриптовать в первую очередь квесты прямо в редакторе.

Я не слыхал еще про выделенных левел-дизайнеров в нашей флеш-инди нише. Больших команд тоже. Вероятно для браузерок/социгр такое ближе.

Однако, если есть время прикрутить и радоваться — то почему-бы нет.
0
Ну я плохой левел-дизайнер и плохой гейм-дизайнер. Нагенерить идей для игр — это пожалуйста, у меня только самых перспективных из придуманных уже штук 30 записано. А вот развить и сбалансировать эти идеи так, чтобы было интересно в это играть — увы, тут я хорошё, если на двоечку потяну по пятибальной шкале. Поэтому приходится геймдизайн обсуждать коллективно, а левел-дизайн аутсорсить или отдавать кому-то из команды, у кого душа лежит к уровням «текущего» проекта.
0
побуду занудой: замечательно, что ты знаешь, где на клавиатуре находится буква Ё, но «хорошо» пишется с «О»!
Ну а скриптовать смысл есть если писать свой редактор, тут спорить нечего.
Хотя вот п.3 это как-бы и есть флеш ИДЕ, причем — уже сделано. Но я понял, что от него не хочется зависеть.
0
вот пункт 3 у меня вообще вызывает много вопросов. сейчас самая доступная среда для такого — флеш ИДЕ. Переплюнуть неудастся ниразу уж наверняка если и другие не могут.
0
Вы считаете Flash IDE удобным редактором уровней? Да вы извращенец, определённо. Как-нибудь я покажу вам свой редактор. (:
0
Очень часто пишу хорошо через «Ё». Не знаю даже почему. ):
У меня как раз написан свой редактор. Не такой навороченный, как Flash IDE, при этом в нём нет ничего лишнего, он подключается к самой игре и в нём есть то, чего нет в Flash IDE — настройки параметров объектов. Не (x, y, rotation), а параметров объекта. Увы, во Flash IDE приходится заморачиваться с этим. В своём редакторе — нет.
+1
В КС5 компоненты за пару кликов делаются, передачу параметров а-ля WCK сейчас очень просто реализовать. А хороший универсальный редактор написать, тоже задача нетривиальная.
+1
Я же и сказал — приходится заморачиваться с этим. А редактор у меня уже есть достаточно универсальный и расширяемый. С каждой новой игрой я его не переписываю, а лишь расширяю функционал. Не вижу смысл использовать громоздкий Flash IDE, когда есть удобный специализированный редактор. Как только заработаю с его помощью 50к баксов — выложу исходники. (:
+1
ОК, надеюсь 49к уже заработал)) Думаю, внешний редактор, все же не для всех игр полезен. Например, для физ.игр он очень полезен, для отладки физики не нужно каждый раз компилировать, как полезен и для тайловых движков. Но для здоровых «хэндмайд» уровней а-ля Mining Truck 2 (кстати сегодня релиз) мне кажется просто производительности плеера не хватит, если даже Flash IDE иногда ложится на большом количестве объектов.
0
не надо даже брать игры типо мининг трак. Любые игры, с нестандартным геймплеем, мегаизвращёными идеями и т.п. и ваш редактор уже не впишется. Ну а чтобы штамповать игры, чего вроде афтор и хочет добится, мб.
0
Не вижу связи между расстановкой объектов и их настройкой и геймплеем (взаимодействием объектов). Если игры, где вообще не нужен редактор, но тут уж он никакой не нужен, не встроенный в игру, ни внешний.
По вашем же словам получается, что Flash IDE ещё худший редактор, потому что там вообще по дефолту можно только объекты расставлять. Любое извращение и Flash IDE уже не впишется.
По вашему удобство разработки — это штамповка? Вы же не видели мой редактор, а говорите так, как будто изучили все его возможности и теперь выносите вердикт.
0
если вы написали приложение, заменяющее ИДЕ по удобству и качеству, и всё программирование сводится к созданию триггеров (аля варкрафт 3) то: первое = отлично, удобство эт хорошо. второе: на тригерах далеко не уйдёшь.

Я конечно не видел ваш редактор и не могу ничего говорить, но вы приводите свои доводы и я основываясь на них излогаю своё мнение.

Поэтому я считаю что сделать двиг для мач3- жанра можно. для простых пплатформеров = легко. Для РТС = можно. И для всех отдельно взятых жанров. Но вот универсальный — я не верю.)
0
По моему вы не совсем понимаете, что такое редактор. Никто не говорит, что не нужно программировать сами объекты. Конечно, они для каждой игры уникальны и их нужно программировать. Программисту. В нормальной IDE для программирования. Да.
Но вот все игровые элементы запрограммированы, что с ними делать дальше? Нужно как-то собирать из всего этого готовые уровни, в которые можно будет играть. Тут вступает в силу редактор, который позволяет удобно разместить игровые объекты и настроить их параметры. Мой редактор позволяет достаточно удобно задать объектам любые индивидуальные параметры, которые затем передаются объекту при инициализации. Триггеры — это способ кастомизировать поведение разных объектов в разных ситуациях. Подход, когда объекты имеют конкретные ограниченные возможности (дверь может быть только открыта или закрыта, рычаг может быть только выключён или выключен и т.д.), которые расширяют с помощью триггеров (при переключении рычага могут произойти разные действия, их лучше программировать отдельно, в триггерах, а не в самом рычаге, т.к. данные действия могут происходить не только при переключении рычага). Это правильный подход, позволяющий создавать интересные и разнообразные уровни.

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

Я вот честно не вижу игровых жанров, к которым нельзя было бы сделать уровень в моём редакторе. Исключая, конечно, сложные высоконагрузочные уровни — всё-таки тут техническое ограничение, а не идеологическое.

По поводу различий с Flash IDE стоит учитывать, что в моём редакторе устанавливаются именно игровые объекты (точнее некие данные, которые при загрузке уровня в игру станут игровыми объектами), а в Flash IDE вы оперируете именно графикой, хотя при некоторых извращениях можно задать графике различные параметры, некоторым это даже кажется удобным. Т.е. в моём редакторе нельзя установить прозрачность или наложить фильтры. Только положение, поворот, масштаб и заранее определённые параметры. При этом в параметрах может быть alpha или выпадающий список с фильтрами, но это должен разруливать уже сам объект при инициализации, редактор о графике вообще ничего не знает, кроме «вот эта картинка у нас как бэ вот этот объект изображает, рисуем на этом слое с таким поворотом и скейлом». (:
0
для человека не особо сведующего в программировании — я теперь понял смысл достаточно хорошо)

Не терпится увидеть что это и посмотреть что с помощью него делается)

хотя для меня всё равно необходимость этого под вопросом) скорей всего я не прав)
0
Ну, если уж Flash IDE не справляется… (:
На самом деле я никогда ещё не сталкивался с созданием таких уровней и вообще не далел подобных по качеству игр. С художниками у меня беда. ):
Но для небольших игр, на 300-500 объектов, всё отлично работает.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.