
В дополнение...
… к flashgameblogs.ru/blog/actionscript/314.html
Сейчас у меня весь сложный скриптинг в движке реализуется с помощью системы триггеров, которые вызывая друг друга реализуют простейшую логику.
Например в редакторе у телепорта есть текстовый параметр trigger, в который можно записать имя триггера, который сработает, если игрок активирует телепорт. И можно добавить триггер «MoveActivatorTrigger» и задать ему в качестве конечной точки перемещения (marker) добавленный триггер «MarkerTrigger». Такая вот сейчас логика. И для каждого нужного в игре действия приходится делать отдельный триггер, а затем визуально раполагать его в редакторе уровней, прописывать параметры. В итоге сколько-нибудь сложный уровень начинает походить на мешанину триггеров, и уже бывает сложно с первого взгляда определить, что к чему относится и что делает…
С нормальными скриптами можно упростить разработку сложных игровых сценариев.
В следующем проекте скорее всего буду использовать её. Единственное добавлю, надо будет заранее (на этапе загрузки уровня) все скрипты компилировать, т.к. это отнимает некоторое время.
P.S. Уберите ограничение в 500 символов для постов-ссылок, неудобно же. И почему там нет форматирования текста?
Сейчас у меня весь сложный скриптинг в движке реализуется с помощью системы триггеров, которые вызывая друг друга реализуют простейшую логику.
Например в редакторе у телепорта есть текстовый параметр trigger, в который можно записать имя триггера, который сработает, если игрок активирует телепорт. И можно добавить триггер «MoveActivatorTrigger» и задать ему в качестве конечной точки перемещения (marker) добавленный триггер «MarkerTrigger». Такая вот сейчас логика. И для каждого нужного в игре действия приходится делать отдельный триггер, а затем визуально раполагать его в редакторе уровней, прописывать параметры. В итоге сколько-нибудь сложный уровень начинает походить на мешанину триггеров, и уже бывает сложно с первого взгляда определить, что к чему относится и что делает…
С нормальными скриптами можно упростить разработку сложных игровых сценариев.
В следующем проекте скорее всего буду использовать её. Единственное добавлю, надо будет заранее (на этапе загрузки уровня) все скрипты компилировать, т.к. это отнимает некоторое время.
P.S. Уберите ограничение в 500 символов для постов-ссылок, неудобно же. И почему там нет форматирования текста?
- +3
- elmortem
Комментарии (37)
2. Чтобы такой редактор можно было отдать игрокам.
3. Чтобы на одном движке лишь только силой художников, гейм-дизайнеров и девед-дизайнеров можно было сделать несколько разных игр.
Просто у себя я постепенно прихожу к единой игромейкерской платформе, которую в идеале вообще не нужно будет программировать. По крайней мере для игр определённого жанра.
В нашем (флешовом) случае скрипты работают с той же скоростью, что и сам код движка — поэтому можно программировать сколь угодно сложную логику.
Ну и для тулзов же — ваще мега-полезная штука.
Работа кодера — сделать движок, а не программировать логику уровней.
В формате флеш игр, работа кодера заключается в создании игры ;) В общем славно я тут по троллил. Основную цель и мысль твою понял. Буду рад потом почитать или услышать от тебя стоило ли это того.
Поэтому я стараюсь свои усилия направлять в ту область разработки, в которой хоть что-то понимаю. А это программирование и организация рабочего процесса.
Про ГеймМейкер — это я, конечно, загнул, я бы убился, пока его сделал. (: Но в целом для флешек скрипинг не такой объемный. Иногда вполне хватает одной двух строчек, в которых разберётся даже сценарист, не говоря уже про левел-дизайнера.
Оке, в Москве в следующем году подробнее расскажу, как напьёмся. (:
А тут человек хочет пройти чуть дальше в автоматизации и вынести настройки из редактора, чтобы сделать процесс редактирования еще более простым.
В моем случае использовался единственный нативный параметр имя объекта чтобы идентифицировать объекты в коде. О каком-либо скрипте тут и речи быть не может. Elmortem же рассматривает возможность написания скриптов во внешних (?) файлах которые должны вшиваться в игру и компилироваться run-time в игровой код. Если смотреть на такой подход в формате флеш платформера, то я даже и не знаю — по моему это непозволительная трата времени программиста и будущих ресурсов игры.
Скорость работы таких скриптов точно такая же, что и у самой игры, в чём трата ресурсов?
Ещё раз: для меня важно, чтобы редактор можно было отдать игрокам вместе с игрой (внутри игры), и при этом чтобы дать создателям уровней на ряду с простыми инструментами создания — адвансед инструментарий для сложных сценариев. Модинг — это лучшее изобретение человечества. (:
И Elmortem не говорил о ЛУА ;)
Скрипты типа луа внутри флеш это мегаизлишество. Если я правильно понял — предложеный вариант — jit-компилятор. Ну это может и покатит.
Однако пока-что, мне кажется такое по-настоящему имеет смысл для узкого типа жанров. Ну для жЫрного РПГ, например, типа Морровинд :), где надо скриптовать в первую очередь квесты прямо в редакторе.
Я не слыхал еще про выделенных левел-дизайнеров в нашей флеш-инди нише. Больших команд тоже. Вероятно для браузерок/социгр такое ближе.
Однако, если есть время прикрутить и радоваться — то почему-бы нет.
Ну а скриптовать смысл есть если писать свой редактор, тут спорить нечего.
Хотя вот п.3 это как-бы и есть флеш ИДЕ, причем — уже сделано. Но я понял, что от него не хочется зависеть.
У меня как раз написан свой редактор. Не такой навороченный, как Flash IDE, при этом в нём нет ничего лишнего, он подключается к самой игре и в нём есть то, чего нет в Flash IDE — настройки параметров объектов. Не (x, y, rotation), а параметров объекта. Увы, во Flash IDE приходится заморачиваться с этим. В своём редакторе — нет.
По вашем же словам получается, что Flash IDE ещё худший редактор, потому что там вообще по дефолту можно только объекты расставлять. Любое извращение и Flash IDE уже не впишется.
По вашему удобство разработки — это штамповка? Вы же не видели мой редактор, а говорите так, как будто изучили все его возможности и теперь выносите вердикт.
Я конечно не видел ваш редактор и не могу ничего говорить, но вы приводите свои доводы и я основываясь на них излогаю своё мнение.
Поэтому я считаю что сделать двиг для мач3- жанра можно. для простых пплатформеров = легко. Для РТС = можно. И для всех отдельно взятых жанров. Но вот универсальный — я не верю.)
Но вот все игровые элементы запрограммированы, что с ними делать дальше? Нужно как-то собирать из всего этого готовые уровни, в которые можно будет играть. Тут вступает в силу редактор, который позволяет удобно разместить игровые объекты и настроить их параметры. Мой редактор позволяет достаточно удобно задать объектам любые индивидуальные параметры, которые затем передаются объекту при инициализации. Триггеры — это способ кастомизировать поведение разных объектов в разных ситуациях. Подход, когда объекты имеют конкретные ограниченные возможности (дверь может быть только открыта или закрыта, рычаг может быть только выключён или выключен и т.д.), которые расширяют с помощью триггеров (при переключении рычага могут произойти разные действия, их лучше программировать отдельно, в триггерах, а не в самом рычаге, т.к. данные действия могут происходить не только при переключении рычага). Это правильный подход, позволяющий создавать интересные и разнообразные уровни.
В игре любого (абсолютно) жанра есть объекты, которые как-то взаимодействуют с другими объектами. Взаимодействие объектов друг с другом и с игроком — это и есть геймплей. Триггеры — это прослойка между объектами и между объектами и игроком. Триггерами описывается взаимодействие, которое логично вынести из самих объектов. При этом поведение и уникальное взаимодействие самих объектов программируется программистом.
Так что с помощью редактора можно сделать абсолютно любые уровни для любой игры, которой вообще нужны уровни.
Т.е. от редактора требуется только расставить объекты и задать им параметры. Со скриптами появится возможность ещё больше кастомизировать взаимодействие объектов.
Я вот честно не вижу игровых жанров, к которым нельзя было бы сделать уровень в моём редакторе. Исключая, конечно, сложные высоконагрузочные уровни — всё-таки тут техническое ограничение, а не идеологическое.
По поводу различий с Flash IDE стоит учитывать, что в моём редакторе устанавливаются именно игровые объекты (точнее некие данные, которые при загрузке уровня в игру станут игровыми объектами), а в Flash IDE вы оперируете именно графикой, хотя при некоторых извращениях можно задать графике различные параметры, некоторым это даже кажется удобным. Т.е. в моём редакторе нельзя установить прозрачность или наложить фильтры. Только положение, поворот, масштаб и заранее определённые параметры. При этом в параметрах может быть alpha или выпадающий список с фильтрами, но это должен разруливать уже сам объект при инициализации, редактор о графике вообще ничего не знает, кроме «вот эта картинка у нас как бэ вот этот объект изображает, рисуем на этом слое с таким поворотом и скейлом». (:
Не терпится увидеть что это и посмотреть что с помощью него делается)
хотя для меня всё равно необходимость этого под вопросом) скорей всего я не прав)
На самом деле я никогда ещё не сталкивался с созданием таких уровней и вообще не далел подобных по качеству игр. С художниками у меня беда. ):
Но для небольших игр, на 300-500 объектов, всё отлично работает.