Что такое хороший, простой язык сценариев для встраивания в игровой движок Java? - PullRequest
7 голосов
/ 30 июля 2010

Мне нужен механизм сценариев для Java, который позволил бы пользователям писать простые сценарии для управления поведением и событиями в игре. То, что:

  • просто - что-то легко подобрать, особенно для людей с небольшим опытом программирования / написания сценариев

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

  • отделен от самой среды Java - доступ скриптов к любым объектам или классам Java отсутствует, только к тем функциям, которые я явно предоставляю

Я рассмотрел движок JavaScript Rhino, и он подошел бы к моим целям, но из того, что я прочитал ( пример ), он разработан так, чтобы настолько интегрироваться с Java, что безопасная песочница его сложно. Я предпочел бы начать с движка, который не дает сценариям доступа ни к чему по умолчанию, чем иметь полностью открытый, который мне нужно закрыть. Скриптам не всегда можно доверять, поэтому из среды непросто вырваться.

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

Есть предложения?

Ответы [ 4 ]

4 голосов
/ 30 июля 2010

Рассматривали ли вы Lua?

Предварительный просмотр документов Google из pdf по теме

Lyrio, GHSO;Сейшас, РБ;Использование Lua в качестве языка сценариев в играх, написанных на Java, материалы конференции «Моделирование в Северной Америке и AI в играх» - GAMEON-NA, EUROSIS, Монреаль, Канада, 2008.

2 голосов
/ 30 июля 2010

Вам следует попробовать Groovy , язык сценариев, который легко интегрирует с платформой Java.

Его синтаксис на 100% совместим с Java, но он также имеет упрощенный синтаксис, который делает его подходящим языком для реализации DSL.

Я не знаю точно, можете ли вы остановить /Чтобы приостановить выполнение кода Groovy из Java-программы, вы должны прочитать Groovy API .

При выполнении кода Groovy из Java-программы вы можете указать контекст, передаваемый в сценарий, иВы можете запросить контекст, измененный скриптом, для получения выходных переменных.Сценарий может быть полностью изолирован от базовой среды Java, создав GroovyShell с соответствующей CompilerConfiguration .

1 голос
/ 30 июля 2010

JACL является одним из таких языков.Он основан на TCL.Что бы вы ни делали, не изобретайте другой язык.Есть много хороших вариантов.

0 голосов
/ 13 августа 2015

На мой взгляд, важен не только язык, но и способ взаимодействия. JSR 223 наиболее совместим между разными языками, но «родной» кажется лучшим (то есть полная интеграция объектов groovy)

...