ЯРИЛ (Язык Разметки Интерактивной Литературы) - это парсерная платформа с визуальным редактором, не требующая редактировать исходный файл игры в текстовом редакторе. На текущий момент состоит из Редактора, Плеера и Тестера.
ЯРИЛ победил на Золотом Хомяке 2013 в номинации "Проект года" по мнению жюри!!!
Текущее состояние платформы, а также ссылки для скачивания: смотрите на вики-странице или в ветке новостей.
Архитектура игры на ЯРИЛе представляет собой множество локаций, предметов, действий (команд) и процедур обработки этих действий. Действия состоят из шаблонов команд для парсера и ссылки на процедуру. Процедура - это набор инструкций. Инструкции - это не код программы, а алгоритмическое дерево.
Редактор позволяет редактировать игру в формах, в частности: локации (название, описание, переходы), предметы (название, описание, словарь, первоначальное положение, признаки, перехваты действий), процедуры и действия:
Плеер:
Тестер (пока в зачаточном состоянии) используется для тестового прогона игр авторами в процессе разработки. Например, для игры можно написать несколько тестов для проверки различных сюжетных веток:
Проект поддерживается кросс-платформенным установщиком BitRock:
Неактивен
Евг написал:
А оно умеет "взять все"?
Пока нет, но это точно в планах. ![]()
Неактивен
Евг написал:
А оно умеет "взять все"?
Теперь умеет! ![]()
Неактивен
Vladimir написал:
После переустановки винды с Vista на 7 версию ваша ЯРИЛ успешно инсталлируется. Хотелось бы иметь к платформе инструкцию для разработки игр.
Инструкции пока нет... Что-то можно сделать в Редакторе, что-то пока только в файле игры (xml). Спрашивайте, что не понятно, расскажу, что к чему!
Будем работать над инструкцией...
Неактивен
Вообще, ещё есть страничка для обсуждения проблем, предложений
http://ifml2.reformal.ru/
UPD. Заменил на актуальную страницу http://ifml2.reformal.ru/
Неактивен
Новая версия Прототип 10 выпуск 1.
Изменения:
Отличия от 9го прототипа (с 05.09.2012):
д + Теперь работают роли на уровне Движка.
д + В роли добавлены триггеры для проверки доступности вложенных объектов.
к + Роль "контейнер" теперь проверяет, закрыт ли контейнер, и выводит описание вложенных предметов в зависимости от этого.
д + Инструкция "Вернуть значение" (return) для возврата результата, например, из триггеров.
д + Орператор "в" для проверки, входит ли предмет в коллекцию.
к + В игре "ZorkPort" можно открывать ящик и читать письмо.
д + Коллекция "Пустота" для симуляции создания и удаления объектов.
д * Улучшено вылавливание ошибок.
я ~ Папка Samples теперь называется Games.
д + Добавлено подробное логирование в файл ifml2.log.
ifml2-53426 контейнер и плоскость:
д + у объекта можно проверять наличие роли, а также получать значение свойства, данное ролью
к + "осмотреть" теперь описывает и лежащие сверху предметы
Неактивен
Нашёл, это был "Спелеолог". Вот исправленная версия - Прототип 10 выпуск 2
Неактивен
Привет ![]()
johnbrown написал:
1. Можно ли в Редакторе заменить отдельные команды из библиотеки глаголов или нужно ее отклучать совсем?
Можно. Нужно просто создать команду, которая по шаблонам будет совпадать с библиотечной. При поиске подходящего шаблона сначала рассматриваются команды истории и только потом команды библиотек. Также ещё можно перехватить в локациях или предметах любые команды - если, к примеру, нет необходимости полностью переделывать логику команды для всех предметов/мест, а только для некоторых.
johnbrown написал:
2. Как задавать условия? Интересует синтаксис.
Синтаксис подобен выражениям в других компьютерных языках - он почти математический + некоторые особенности. Поддерживаемые операции:
с логическими величинами - "и", "или", "не";
проверка вхождения элемента в коллекцию - "в";
получение значения свойства - точка (".") - используется в виде <объект>.<свойство>;
сравнение - "=";
сложение - "+".
Строковые литералы должны быть в двойных или одинарных кавычках. Скобки пока не поддерживаются. Операторы будут добавляться.
johnbrown написал:
3. Какие операции с переменными (кроме присваивания) поддерживает интерпретатор? Если поддеживает, то как это реализуется на практике?
В переменную можно записать значение любого выражения. В том числе, и выражения с этой же переменной - нужно просто использовать её в качестве операнда. К примеру, в переменную "x" можно положить значение выражения "x + 1", в итоге переменная увеличится на 1.
johnbrown написал:
4. Стили оформления редактируются в xml?
Стили оформления пока не поддерживаются, но есть в планах, как и графика.
Неактивен
johnbrown написал:
В переменную можно записать значение любого выражения.
Т.е. матемаматические операции полностью поддерживаются? А, скажем, rnd будет генериться?
Нет, пока не полностью. Похоже, вычитания ещё нет. ) Но это всё будет добавляться, просто пока острой необходимости не было. Добавить недолго. Рандом пока не работает, но тоже будет. Думаю, как его лучше реализовывать, чтобы было наиболее удобно пользоваться.
johnbrown написал:
А динамическое изменение свойств, описания комнат, объектов поддерживается?
Несистемные свойства можно менять динамически, но в Редакторе пока нет поддержки (только в XML). Динамические описания комнат реализованы сейчас через перехваты в локациях. А что имеется в виду под динамическим изменением объектов?
johnbrown написал:
На сколько вообще проект будет похож на ADRIFT, если, конечно, это есть в планах? Какие планы по развитию платформы, если не секрет?
Довольно сильно похож на Адрифт, насколько я могу судить... Какие-то планы видно в трекере http://www.hostedredmine.com/projects/i … ry_id=2469
Неактивен
johnbrown написал:
А что имеется в виду под динамическим изменением объектов?
Сорри, не так написал. Динамическое изменение свойств предметов (объект - контейнер, объект может быть съеден).
В ЯРИЛе такие свойства реализованы ролями. Динамического навешивания/снятия ролей пока не планировалось. Нужно ли оно?
Неактивен
johnbrown написал:
Динамического навешивания/снятия ролей пока не планировалось. Нужно ли оно?
В АДРИФТе, по-моему это реализовано. Ну, конечно, много не мало, но мне, если честно, рнд сейчас не хватает ) , ну, и справки какой-то минимальной. В АДРИФТЕ, кстати есть встроенная справка по матфункциям, очень удобно в одном клике от окна ввода. В целом, конечно, понятно,на то оно и мышинное программирование, но есть не очевидные моменты.
В ЯРИЛе пока нет матфункций) РНД - можно сделать и пораньше. Как его будет наиболее удобно использовать? Мне кажется, он чаще всего используется для каких-то случайных событий, нежели просто для генерации случайного числа. Для случайного выбора между n-ым кол-вом альтернатив, думаю, лучшим вариантом будет создание инструкции-ветвления (типы switch или case в других языках, или множественный if), с указанием случайного выбора ветви.
Или сейчас больше необходимо именно случайное число (каких-то очков, предметов и т.д.)?
johnbrown написал:
Вообще, есть смысл сейчас писать на ЯРИЛ? Может быть такое, что новые версии не будут поддерживать старые игры?
Смысл уже есть, т.к. игры уже можно писать. А платформа будет развиваться и дальше. Я постараюсь решить проблему с совместимостью, но в крайнем случае будет либо конвертация под новые версии, либо просто достаточно будет запускать игру в старой версии.
Неактивен
johnbrown написал:
ну, и справки какой-то минимальной. В АДРИФТЕ, кстати есть встроенная справка по матфункциям, очень удобно в одном клике от окна ввода. В целом, конечно, понятно,на то оно и мышинное программирование, но есть не очевидные моменты.
На справку пока не хватает времени.
Альтернатива - или новые функции и исправление багов, или справка. Притом при добавлении функций нужно постоянно обновлять справку.
Вообще, есть Skype-чат по ЯРИЛу, там сидят (кроме меня) уже поднаторевшие авторы, которые завсегда помогут и подскажут. Могу добавить в чат, если интересно и есть скайп-аккаунт.
Неактивен
Ок, посмотрим, что можно сделать.
Неактивен
johnbrown написал:
Rand(x,x1)
Мне бы этого хватило, т.к., как я понял, уже сейчас можно повесить перехват событий на переменную.
Пока решено сделать инструкцию "Бросить кость", у которой будет задаваться диапазон и имя переменной, которой присвоить выпавшее значение.
Следить за готовностью можно в трекере http://www.hostedredmine.com/issues/256159
Неактивен
Sonic написал:
Пока решено сделать инструкцию "Бросить кость", у которой будет задаваться диапазон и имя переменной, которой присвоить выпавшее значение.
Следить за готовностью можно в трекере http://www.hostedredmine.com/issues/256159
Инструкция готова, постараюсь в ближайшее время выпустить релиз.
Неактивен
Sonic написал:
Инструкция готова, постараюсь в ближайшее время выпустить релиз.
Готово! ЯРИЛ 2.0 Хоббит, глава 3
Выглядит так:
UPD. Исправил URL скриншота.
Неактивен
Пример броска кубика есть в поставляемой с платформой демке "Кувшин".
Неактивен
Серый Волк написал:
У игр платформы ЯРИЛ появилась страничка в рил-архиве. Желаю ей расти, толстеть и вообще.
Спасибо! Сейчас размещу в самом посте.
Только версия платформы уже новее той, что в архиве - уже 3ий Хоббит вышел https://dl.dropboxusercontent.com/u/878 … 140117.exe
Неактивен
Nex написал:
Присоединяюсь к пожеланиям.
Скачал, запустил игрушку. Как-то уж слишком притормаживает при вводе команд. Видимо, код не оптимизирован.
Спасибо! Интересно. Код реакции уже оптимизирован, он не интерпретируется. Возможно, дело в парсере или в отображении в GUI. В логах должно отображаться время... Правда, не уверен, что там логируется парсер. Но парсер логируется прямо в GUI, если ввести команду "!отладка" (начиная с Хоббит 3).
Неактивен
ЯРИЛ победил на Золотом Хомяке 2013 в номинации "Проект года" по мнению жюри!!! http://zh.ifiction.ru/results/
Неактивен
johnbrown написал:
Привет, Соник. Спасибо за генератор ,)
Скажи, а что ЯРИЛ не дружит с 7 явой?
Пока нет... вылезает ошибка при загрузке, пока не разобрался. Но инсталлятор всё равно использует свою яву, он её качает и ставит при необходимости.
johnbrown написал:
И еще вопрос. Можно сделать, чтобы название предметов не выводилось в локации. Если установить свойство 'часть пейзажа', то предмет взять не получится .(
Да, так и задумано. Раз часть пейзажа, то предмет нельзя взять - он же описан в локации.
Неактивен
johnbrown написал:
Да, так и задумано. Раз часть пейзажа, то предмет нельзя взять - он же описан в локации.
А можно сделать, чтобы предмет не выводился в описании и его можно было взять? )
А как тогда ты планируешь это потом учитывать в описании? Возьмёшь, а предмет останется в тексте?
Можно перекрыть действие описания локации в этой локации и рулить выводом описания по своему. )
Неактивен
johnbrown написал:
Да, наверное, так и придется сделать.
Просто бывают ситуации, когда есть некий "неисчерпаемый" источник, например колодец или предмет условно "невидим". Было бы здорово если бы можно было установить соответствующий флаг в свойствах. Такое мое скромное пожелание )
Колодец нельзя взять, всё равно придётся реализовать другую логику - например, действие "зачерпнуть воды из колодца": перемещать воду из пустоты в кувшин в руках. )
А для невидимых предметов - как и сказал АСБер - обычно другая механика. Хотя, это для скрытых - для тех, что не видно сперва, но открываются при каком-то действии. А если ты имеешь в виду подразумеваемый предмет - например, руль или рычаг передач в салоне автомобиля (не будешь же всё перечислять при описании), - то да, это интересный момент. Можно, в принципе, добавить признак для не упоминаемых предметов.
(Правда и для скрытых пока нет механизма, нужно подумать.)
Неактивен
johnbrown написал:
Просто хочется, чтобы была возможность не выводить описание предметов в локации и все, но чтобы при этом с ними можно было нормально взоимодействовать без лишних процедур и тп. О механиках пока не думал. Мне кажется не нужно слишком усложнять. Надо сделать базовые кирпичики из которых пользователь сможет сам сделать какую ему нужно механику.
Добавим признак "неупоминаемый".
http://www.hostedredmine.com/issues/376059
johnbrown написал:
Немного раздражает автосохранялка (из-за случайной перезаписи я потерял обучающий файл). Может не стоит выводить список файлов? Сохранить? Ок. И все.
Будет
http://www.hostedredmine.com/issues/358013
johnbrown написал:
И еще. Я не понял, как работают шаблоны? Ориентируюсь на игру спелеолог. Там на действии срубить есть варианты глагол и два падежа в выпадающем списке. У меня в шаблонах в литерале и в объкте в списках пустота.
Литерал - это список синонимов. Создаёшь литерал - список пустой - нужно добавлять синонимы.
При добавлении объекта должно появляться окно выбора падежа.
johnbrown написал:
И еще. Вот ты создал действие. Оно, по-идее, должно всплыть в перехватах в локации и в предмете. Вот, в локации действие у меня добавляется, а в прелмете нет. В чем загвоздка?
В перехватах в предметах появляются только действия, имеющие в шаблонах объект. Перехват срабатывает при вызове этого действия с этим предметов в качестве параметра.
johnbrown написал:
Скачал руслана&людмила и фавна, но они зашифрованы. Можно где-то сорцы взять или еще каких-нибудь игрушек для обучения?
В новой версии ЯРИЛа будет незашифрованная версия РиЛ. Рабочий вариант (кстати, в нём много доработок и исправлений) можно взять тут: https://dl.dropboxusercontent.com/u/878 … 160125.exe
Неактивен
Выпустил все обновления как новую версию - ЯРИЛ 2014 https://forum.ifiction.ru/viewtopic.php … 367#p31367.
Неактивен
Чуть позже отвечу на пост.
Возможно, быстрее и практичнее будет, если будешь задавать вопросы в скайп-чатике. Добавляй меня в друзья - michael.balanov, я тебя добавлю в чат. ![]()
Неактивен
johnbrown написал:
Скачал новую версию. Вынос процедур и действий в основное поле, по-моему давно напрашивался. Стало удобнее. А как ты считаешь, если сделать 4 колонки на одном экране это усложнит работу с программой или наоборот облегчит, позволив сразу видеть и объекты и действия, как например в менюшном редакторе DZQ?
Не знаю, боюсь, на маленьком экране может не уместиться.
Пока заметил только одну ошибку. Если установить роль предмета читаемый и в верхнее поле текста ввести одинарные ковычки 'текст' то, при попытке прочитать предмет игра вылетает с ошибкой.
Спасибо, проверю. http://www.hostedredmine.com/issues/376759
Планируется добавление пользовательских ролей(групп,тэгов)?
Да, планируется добавление пользовательских ролей. А что подразумевается под группами и тэгами?
И, еще пожелание, чтобы все изменения в редакторе сразу отображались, а то приходится выходить и заново входить. Не очень удобно, но я уже привык )
Не понял, а что не отображается? Вообще, в редакторе есть пункт меню "Запустить в Плеере" - туда попадает текущая игра (сохраняется во временный файл и загружается в Плеере).
Кстати, обратил сейчас внимание: чтобы взять предмет, нужно, чтобы он где-то лежал. По-моему, это не очень удобно.
Не совсем понял.
Сделал перенос предмета командой локация.предмет. Теперь в описании локации мне пишет 'здесь предмет'. При этом осмотреть его нельзя 'я не знаю слова предмет'.
А у него настроен словарь?
Соник, можешь рассказать как работают перехваты? Как я понял, если в процедуре нет инструкций, то выполняется перехват в предмете. А если есть, то не выполняется?
Нет, наличие инструкций в процедуре на перехват не влияет. Перехват сработает, если он есть. Если он типа "вместо" - то выполнится вместо выполнения процедуры. Иначе выполнится до или после процедуры.
Кстати, в процессе написания понял, что не хватает ивентов. Они бы прекрасно работали с процедурами, но ты, наверное, уже об думал.
Я думал про ивенты типа "изменилась переменная" или "игрок зашёл в локацию". Но это пока было на уровне мыслей. А чего именно хотелось бы?
Баг: процедуру можно сделать безымянной. Редактор никак не прореагирует. Переименовать не получится, только удалить.
Спасибо. Дописал в баг http://www.hostedredmine.com/issues/227497
В имени переменной почему-то нельзя использовать символ нижнего подчеркивания.
Исправим: http://www.hostedredmine.com/issues/358015
Какой синтаксис/команды используются для работы с ролями?
Роли при добавлении на предмет привносят ему свои свойства, а также признак с именем роли. Т.е. например, если роль "читаемый" (со свойством "текст") повесить на предмет, то у него появится свойство "текст" (к которому можно обращаться предмет.текст), а также признак предмет.читаемый (который будет равен логическому "да").
У действий есть исключения (или как-то так, не помню). Можно сделать, чтобы если действие написано пользователем не полностью выдавалась обработка из исключения? Меня синтаксис интересует. Вообще, к этому больше всего вопросов, особенно к проверкам условий. Хорошо, есть примеры, но они не всегда спасают, приходится самому додумывать.
У действий есть ограничения. Они проверяются по очереди при попытке выполнить действие. Если условие какого-то из ограничений будет истинным (логическое "да"), то выполняются инструкции ограничения, а действие и остальные ограничения уже не выполняются. Пример - в Руслане и Людмиле действие "трубить".
В условии допустимо только одно условие?
Какое условие ты имеешь в виду? Вообще, выражения поддерживают логические операторы: и, или, не.
Неактивен
johnbrown написал:
ЗЫ можно создать отдельный топик по чисто-техническим вопросам реализации языка.
Создал. Продублируй этот пост туда, пожалуйста.
Неактивен
Vladimir написал:
После переустановки винды с Vista на 7 версию ваша ЯРИЛ успешно инсталлируется. Хотелось бы иметь к платформе инструкцию для разработки игр.
Начата работа над учебником и справочником.
Неактивен
qwerty написал:
1) Кто-то писал о необходимости ставить "кучу мусора" или "всё эту "всю эту джава-помойку" или даже о какой-то ошибке. У меня всё запустилось нормально, НО вот хочу отметить известные мне замечания.
Не запускается у тех, у кого не стоит Джава. Планирую переделать - или добавить в инсталлер установку Джавы, или поставлять ЯРИЛ вместе с Джавой.
qwerty написал:
2) Что за ужас с представлением себя(то есть, гг)? В большинстве парсерок, что я видел, даже на Адрифте, возможность осмотреть себя- вполне естественная команда, как минимум, работающая на атмосферу, а порой и дающая важные намёки. Как игрок, я ожидаю, что и остальные известные игре команды будут адекватно восприняты по отношению к себе. Вот с этим надо что-то делать. Не надо так мучать авторов.
Да, ценное замечание. Есть идеи, какая механика должна быть у "себя"? Предполагаю, что в игре должен присутствовать игрок как сущность, соответственно, ему можно будет задать словарь, к нему можно будет обратиться (т.к. он будет в области досягаемости), да и инвентарь логично перенести в него.
qwerty написал:
3) И, да- про известные игре команды. Могу ошибаться, но, как я понял, известные платформе команды автору "не вырубить топором". А по мере добавления команд, новые команды будут использоваться и в старых играх. Так, комсомолец в игре "комсомолец" запросто и без ошибок произносит молитву "Отче Наш". То есть, в перспективе, автор будет иметь огромный список команд, большинство из которых ему нафик не нужны, НО с каждой из которых надо что-то делать, дабы избежать проблем // напр в RTADS-игре "Волк, коза и капуста", когда я запускал её в последний раз, можно было отдать капусту козе , что заводило всю игру в тупик, потому что коза ни в какую не отдавала капусту обратно; так же был момент в какой-то игре, где нельзя было шуметь, но можно было без проблем кричать и орать, потому что автор ничего не сделал с этими командами. // === я считаю, что у авторов должна быть возможность просматривать список известных игре команд И управлять этим списком: исключать или возвращать команды в список. А так же модифицировать реакцию на них. Помимо прочего, это сделает помощь, выводимую командой "помощь", более адекватной.
У платформы практически нет своих команд. По крайней мере, игровых точно нет, только несколько системных. Остальные расположены в библиотеке "Глаголы", которую можно не подключать, а сделать свои команды. В случае подключения библиотеки, если автор напишет свою команду, то она сработает первой. Про просмотр импортированных из библиотек команд - реализация была, но не помню точно, виден ли этот интерфейс сейчас. Про отключение импортированных команд хорошая идея, запишу фичу. Про перекрытие реакции - есть механизм перекрытия реакции команды на отдельном предмете / в отдельной локации, про общую реакцию надо подумать.
qwerty написал:
4) Мне не известно, вина ли авторов Ганметалла или авторов платформы в том, что при попытке говорить с некоторыми осматриваемыми персонажами, выдаётся сообщение "его здесь нет". Интересно было бы увидеть разъяснения.
Зависит от реализации игры - предметом ли сделан персонаж, доступен ли он в этот момент - и это если работает стандартный механизм шаблона глагол + предмет. Если же прописан литеральный шаблон (константная фраза), то тут зависит от прописанной реакции в игре. Вариантов много.
qwerty написал:
5) Некоторые платформы поддерживают команду "выходы", которая позволяет игроку включать/выключать автоматическое отображение списка выходов после описания локаций. Думаю, и на ЯРИЛе такая команда не будет лишней.
Да, дельное замечание, спасибо.
qwerty написал:
6) Вывод списка всех объектов, с которыми можно взаимодействовать, после описания локаций- довольно спорная особенность платформы. Для хорошей парсерки это означает повторение [почти] всех существительных после текста описания. И, да- вроде бы кто-то уговорил Sonic-a сделать возможность скрывать некоторые объекты, чтобы они не показывались в этом списке. Для меня всё это выглядит очень и очень странно... хотя, с другой стороны: если ЯРИЛ получится так прост, как это задумывается, то неизбежно большая часть игр на нём будет выполнена в стиле "недопарсерки", в которых списки объектов будут отнюдь не лишними. Возможно, хорошим выходом будет сделать команду для включения/отключения отображения списка объектов игроком.
Это же классика - вывод простых переносимых предметов после описания. Например, в TADS, в Inform. В ЯРИЛ сделано так: все добавляемые в локацию предметы перечисляются в этом выводе после описания локации. Если же предмет - декорация (упомянут в описании локации) или невидим, то на него можно повесить специальный признак, тогда он не будет перечисляться. Я ещё думаю над декорациями как отдельной сущностью, но пока этот вопрос ещё не проработан.
qwerty написал:
7) Дальнейшие замечания смогу сделать после того, как запущу редактор, для чего сначала сяду вспоминать старый путь к ЯРИЛу, затем помещу его туда и деинсталлирую, затем инсталлирую туда, где он сейчас. upd: да, я не люблю, когда каждая мелкая прога инсталлируется, а не запускается просто так.
Зачем помещать по старому пути? Там должен был остаться деинсталлятор.
В пользу инсталляции: разные ярлыки на запуск Плеера, Редактора, Тестера, в будущем - ассоциация файлов. Но я думаю о портабельной версии.
UPD. Добавил ссылки на заведённые задачи.
Неактивен
Антон Ласточкин написал:
Сейчас идет работа над интеграцией rinform в специальный проигрыватель для незрячих. Есть ли возможность сделать какой-то модуль (в виде dll, к примеру) с API для подключения к такому проигрывателю? Платформа - только Windows, желательно без привязки к JAVA-машине?
Сложный вопрос. Есть всякие инструменты по переводу джава-кода в exe (Excelsior JET), в .NET (IKVM.NET), но это надо тщательно тестировать и смотреть, выставляют ли такие сборки API.
Вообще, у ЯРИЛ есть консольный проигрыватель, и он работает как обычная консоль в Windows. Думаю, с неё программы могут читать?
Неактивен
Антон Ласточкин написал:
Спасибо за наводки. Дело в том, что консоль скринридеры могут читать, но вот не очень удобно. В проигрывателе tadswrapper уже сделана отправка текста прямо на API большинства скринридеров, сохранение и просмотр истории команд, стандартное меню для начала новой игры, сохранения, загрузки и т.п. Прикрутить движок ЯРИЛа будет не сложно, мне кажется.
Вообще, движок ЯРИЛа написан так, что к нему можно писать любой плеер. Но - на Джаве. Можно попробовать написать плеер с нативным API. Покопать надо.
Неактивен
Sonic написал:
Можно попробовать написать плеер с нативным API. Покопать надо.
Нашёл, как можно вызывать Java-методы из C++. tadswrapper на C++? Сможет так дёргать?
Неактивен
Антон Ласточкин написал:
Да, на С++. Дёргать сможет, только надо бы подсказать что и где
В принципе, можно с собой небольшую JAVA машину таскать, главное чтобы не надо было инсталляции - просто распаковал архив и движок запустился.
Думаю, это возможно. Осталось только позаниматься этим. )
Неактивен