То, что я ищу, является механизмом выполнения сценариев для Java, который позволил бы пользователям писать простые сценарии для управления поведением и событиями для игры. Что-то, что:
просто - что-то легкое для взятия, специально для людей с некоторым основным опытом программирования/сценариев
обеспечивает большое управление - я могу легко запустить/остановить/приостановить сценарии и управлять, сколько времени выполнения каждый добирается, возможно, сколько пространства памяти они могут использовать
разделяется от самой среды Java - Никакой доступ от сценариев до любых объектов Java или классов, только к тем функциям, которые я явно обеспечиваю
Я считал Носорога механизмом JavaScript, и он удовлетворил бы моим целям, но от того, что я считал (пример), он разработан для интеграции с Java так много, что игра в песочнице его надежно была бы хитра. Я запустил бы с механизма, который не предоставляет сценариям доступа ни к чему по умолчанию, чем имейте полностью открытый, который я должен закрыть. Сценариям нельзя было бы всегда доверять, таким образом, из среды не должно быть легко убежать.
Я также рассмотрел бы разработку моего собственного языка с чем-то как ANTLR, но это - вероятно, больше усилия, чем я хочу вставить.
Какие-либо предложения?
Рассматривали ли вы Lua?
Предварительный просмотр документации Google из pdf по теме
Lyrio, G.H.S.O; Seixas, R.B .; Использование Lua в качестве языка сценариев в играх, закодированных на Java, Proceedings of The North American Simulation and AI in Games Conference - GAMEON-NA, EUROSIS, Montreal, Canada, 2008.
Вам следует попробовать Groovy , язык сценариев, который легко интегрирует с платформой Java.
Его синтаксис на 100% совместим с Java, но он также имеет упрощенный синтаксис, что делает его подходящим языком для реализации DSL.
Я не знаю наверняка, можете ли вы остановить / приостановить выполнение кода Groovy из программы Java, вам следует прочитать Groovy API .
При выполнении кода Groovy из программы Java можно указать контекст, передаваемый в сценарий, и запросить контекст, измененный сценарием, для выходных переменных. Сценарий можно полностью изолировать от базовой среды Java, создав GroovyShell с соответствующей конфигурацией компилятора .
JACL - один из таких языков. Он основан на TCL. Что бы вы ни делали, не изобретайте другого языка. Есть много хороших вариантов.