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

0
gamedevblogs.ru/blog/315.html и вот небольшое продолжение заметки, которое не влезло в 500 символов поста-ссылки.
0
Только вчера нашел его же ;)
Если посмотреть по Tamarin или ECMAScript в гуглокоде, то будут еще варианты.

На последнем Casual Connect Виталий Хить немного затрагивал эту тему(он использует hurlant), там презентация и аудио (на русском), есть что подумать ;)

ЗЫ Было бы все-таки интересно взглянуть на ваш движок и простейший пример работы.
  • abyss
  • abyss
0
я тоже сегодня задумался про скриптование в играх. есть lua движок написаный на алхимике. возможно получится портировать JavaScript VM под алхимика или питон. покапаю эту тему.
  • Dimka
  • Dimka
+1
Виртуальная машина в виртуальной машине? Да вы сумасшедшие!
+1
А я все не могу понять зачем в маленьких Flash играх использовать скриптовые языки. По моему это уже лишнее нагромождение функционала, если конечно рассматривать использование скриптового движка в формате какого-нибудь физического паззла или скролл-шутера.
0
Для удобства же. Когда триггеров штук 20 набирается или больше, то лучше всё-таки их программировать скриптами.
0
А какие есть преимущества у именно runtime-компилирования AS3, по сравнению с просто написанием игровой логики в хорошо структурированном скриптовом виде на том же самом AS3? Просто у AS3 неплохо развиты скриптовые фичи (array/object, нетипизированные переменные, замыкания и прочее), а компилятор mxmlc, например, достаточно быстрый. Все-таки любые промежуточные уровни и абстракции — зло, которое должно проникать в наши проекты только по строгой необходимости. ;)

Я в этом смысле очень поддерживаю идеологию Ruby, где принято даже конфигурационный файл писать на ruby, а не на XML.
  • sbat
  • sbat
0
Не понял, вы сейчас сравниваете as3 и as3? Нет никаких промежуточных абстракций. При этом не нужен квалифицированный программист для того, что поправить логику в уровне.
+1
Я правильно понимаю, что этот скриптовый движок исполняет именно AS3/JS, но в runtime?

Тогда единственное преимущество получается отсутствие перекомпиляции, правильно? Того преимущества, которое вы упомянули можно достичь и если уровни писать прямо в специально структурированных AS файлах, которые будет компилировать mxmlc или Flash CS в compile-time.

Просто скриптовать Джавовский или Сишный проект — это я понимаю. Все-таки, языки тяжеловесные, требуют много «лесов» и разработчиков в теме проекта. А цимус скриптовать Javascript, Actionscript, Ruby и прочие динамические и легковесные языки я не особенно вижу. Там несложно выделить просто отдельный package и писать в нем скрипты уровня.

PS: Это не в порядке критики все, конечно! Просто интересно понять ваш интерес к теме!
+1
Это не совсем движок. Это компилятор в AVM2, который затем исполняется самим флеш-плеером. Как бы рантайм-инъекция.

Интересно, вы предлагаете вместе с игрой (в которой будет встроен редактор уровней) на портал выкладывать ещё и mxmlc или Flash CS? Интересное предложение.

Мой интерес в том, чтобы редактор не был привязан ни к каким внешним тулзам и при этом позволял то же, что и с ними. Зачем mxmlc, если можно компильнуть прямо при загрузки уровня и это займёт не так много времени?
0
Этот use case мне стал понятен — спасибо. Я, наверное, не на 100% уверен, что армия фанатов будет настолько сильна, чтобы еще и скрипты писать. Но, в принципе, эксперимент интересен.
0
Никто ведь их не заставляет скрипты писать, они могут и простые уровни делать. При этом редактор будет работать даже без всяких внешних компиляторов.
0
Как бы рантайм-инъекция.
Рантаим-компиляция это хорошо, но придется еще продумывать хороший секьюрити лэйер, иначе там такого наинжектят.
0
Пусть, мне не жалко.
0
Например, превратят игру в порно-баннер, или если на сайте разрешён allowScriptAccess — с помощью JS начнут атаковать компы игроков ;)
0
Так сделать не получится. Работают только те классы, которые разрешены при компиляции. Из самого скрипта заимпортить классы не получится.
0
Должна быть какая-то совершенно адовая флешка, чтобы понадобился скриптинг. Я вот не могу представить флеш игру, в которой профит от скриптов перевесит затраты на их внедрение.

Но можно конечно просто делать, чтобы получать гиковский фан от технологий, сам таким иногда болею :).
+1
Не вижу никаких фантастических затрат на внедрение. Скачать архив, распаковать, подключить к проекту пару пакеджей — по моему это не большие затраты или я решительно чего-то не понимаю.

Ну и естественно гиковский фан. Если есть возможность сделать хорошё и есть время, чтобы сделать хорошё — почему бы и не сделать хорошё? (:

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

В любом случае, надо сначала попробовать, а потом я подробнее про это расскажу. Хотя это точно будет не раньше февраля.
0
Скачать, подключить не сложно. Но ведь придется организовывать обмен данными со скриптом и как-то обрабатывать ошибки. Тут зависит от того как в апи скрипта организован биндинг, может быть просто, а может быть и геморно.
0
Т.е. вы даже по ссылке поленились сходить и вики там почитать? Ну ок.
0
Сложности обнаруживаются на этапе разработки, а не на этапе беглого чтения документации. Т.е.сложить мнение нужно реально пощупать.
0
Это понятно. Не понятен скепсис.
0
Нет скепсиса, просто не вижу явного применения. Пока флешки слишком простые.
0
Согласен, скрипты не панацея, а всего лишь инструмент. И как любой инструмент нужно применять его только там, где он полезен.
Мы сейчас делаем довольно замороченный платформер, и там сейчас используется 9 триггеров. Чтобы сделать интересную логику на каждый объект может приходится по 2-4 триггера, что не очень удобно. От того я и задумался над скриптами. Т.е. не совсем «скриптинг ради скриптинга, потому что это круто», хотя не исключаю немного своего программерского фанатизма. (:
0
Поглядел, есть события с сообщениями об ошибках компиляции и исполнения. С этим всё ок. (:
+1
По-моему все вопросы в теме возникают ровно потому, что не понятно кто целевая аудитория этого самого скриптинга?

Вот говорится, что решится куча проблем. Кем решится? Предлагается левел-дизайнеру срочно стать программистом? Скорее всего быстрее пересобрать проект из IDE, главное по запуску предусмотреть попадание левелдизайнера сразу в сохраненный уровень, а не в меню для экономии времени на рутинных правках.

Или ЦА это массовая аудитория на порталах? Сколько там людей владеющими технологиями в принципе? Этож какой проект должен быть, чтобы люди стали делать моды. Фалаут5 наверное.

Но в любом случае успехов :)
0
Для вас скриптинг — это километровые портянки запутанного кода? Зачем собирать проект из IDE, которые нужно дополнительно ставить, настраивать и т.д. если всё то же самое мы может получить без IDE?
0
Вы на вопрос не ответили ) Вы делаете продукт. Вы думали для кого вы его делаете?

Я же думаю дело в том, что те кто в курсе AS3 уже имеют настроенную IDE (FD+flex sdk). Остальным придется учиться. Чтобы возникло желание учиться, надо что-то этакое.
0
Видимо вы и программист и левелдизайнер и геймдизайнер и художник в одном лице. Увы, у меня не так. И мои левел-дизайнеры не имеют настроенную IDE, не хотят разбираться в тонкостях программирования на as3 и т.д. Им достаточно знать, есть если написать
move("player", 100, 100);

то персонаж телепортнётся в точку с координатами (100;100). Для этого не нужно изучать прграммирование.
Или ещё проще: Они нажмут в специальной форме кнопочку "+", выберут из списка «Move Actovator» и ведут в специальную форму X и Y.
Я пока ещё не продумывал внешнее юзабилити скриптинга, т.к. пока для меня это перспективная идея на следующий год. Вот в следующем году и расскажу, на сколько это всё получилось удобно и полезно.

Всем остальным: Конечно, это ещё не готовая технология, не обкатанная. Надо пробовать, смотреть что получается. Пока подобными экспериментами занимается только Абсолютист, на сколько мне известно. Не стоит говорить, что скрипты — отстой, только потому, что вам они не нужны и вы вообще делаете игры в одиночку и программируете уровень вручную в коде считая это правильным подходом. (:
0
Вас прет и это хорошо, но идея глобальная очень :)
Если для «своих» — то инжектинга можно не боятся. Если для всех, то
что будет если вместо мув встретится:
for(var i:int; i<100; i++) 
navigateToURL(new URLRequest("http://disney.com"), "_blank")

Если это визуальный конструктор то зачем создавать код, почему не проще интерпретировать «большим switch-case», всеравно «player» это не тоже самое что player.move(100,100)

p.s. у нас над проектами 3 человека работает с разной специализацией, сейчас попробуем левелдизайн зааутсорсить.
p.p.s критический взгляд это же тоже не плохо :)
0
Ваш скрипт не будет работать, если не подключить соответствующие библиотеки, а их можно подключать только вне скрипта, при компиляции.
Так что на этом уровне там есть защита, просто подключаем при компиляции только игровые классы. А уж с игрой пусть делают, что хотят.

А большой switch-case — это ужасно и не правильно. (:

На самом деле идея в том, чтобы сделать для «своих» адвансед функционал, но при этом чтобы можно было отдать полноценный работающий редактор игрокам в составе самой игры. А там уж не хотят игроки скриптить — не надо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.