Сохранение и загрузка сценариев Java - PullRequest
1 голос
/ 28 февраля 2010

В настоящее время я пишу небольшой движок для 2D-игр на Java.
Как часть движка я хочу поддержать сценарии как основной способ реализации внутриигровых событий.

  • Сценарии могут работать долго
  • несколько сценариев могут работать параллельно
  • звонки на код Java ограничены

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

  • Есть ли скриптовые движки для java которые поддерживают это? (JavaScript или другое)
  • Как они справляются с многопоточность и звонки в Java код

  • Есть ли какие-нибудь хорошие ресурсы для решения этой проблемы онлайн?

Спасибо
Редактировать: Для ясности, что я хочу сделать

  1. Игра начинается. Один или несколько сценариев запускаются параллельно
  2. Игрок вызывает функцию сохранения
  3. Сценарии паузы
  4. Состояние сценариев сохраняется продолжить или закончить
  5. Игрок вызывает функцию загрузки
  6. загружено состояние скриптов
  7. сценарии возобновления

Я хотел бы знать, существуют ли скриптовые движки для java, которые поддерживают приостановку и сохранение их внутреннего состояния таким образом.
(Поддержка официального API Java-скриптинга не требуется)

Ответы [ 2 ]

1 голос
/ 01 марта 2010

То, о чем вы говорите, - это, по сути, запуск сопрограмм, а также возможность сериализации состояния сопрограммы. К сожалению, я мало что знаю о Java или о доступных ей средствах написания сценариев, но некоторые разработчики игр используют Lua , который включает сопрограммы , с Плутон , библиотеку сериализации, которая - Мне сказали, - позволяет вам сохранить все ваши отдельные состояния сопрограмм. Очевидно, это означает, что все соответствующие состояния находятся в сопрограмме, и что такие ссылки, которые сохраняются, все еще имеют смысл, когда вы читаете их обратно - это обычно означает доступ через предсказуемые дескрипторы и значения идентификаторов.

0 голосов
/ 28 февраля 2010

Я не уверен, что это решение вашей проблемы. Вот некоторые из скриптов, которые я знаю, которые работают в jvm

  1. Rhino javascript engine, mozilla.org/rhino
  2. движок Clojure lisp, clojure.org
  3. groovy, groovy.codehaus.org

Может быть, эта статья поможет

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/scripting/

...