Ковырясь в игрушке Project Nomads унтре архива с основными данными обнаружил весьма занятную штуку — собсно скрипты, которые описывают действия каждого объекта, обработчики событий и вообще все, написанные на Tcl'е, закодированы/заархивированы, короче в бинарном формате. Хотя текст переодически проглядывает ничего изменить низя — игра вылетит с ошибкой. А изменить оч. хочется.
Кусок первой строчки файла:
0BON' $parser:nbinscriptserver$ $class:nroot$
Сначала была идея, что $parser: это указание Тцлю, что прежде чем работать надо обратится к парсеру (ну поздно было, соображалось плохо =)). Собсно стал искать "парсер" в сорсах движка (ака "Небула Девайс 1").
Длительное ковыряние показало — что этот "парсер" — есть фантом. Он разрабатывался чисто чтобы, когда-нибудь, в теории сделать поддержку нескольких скриптовых языков — т.е. "nbinscriptserver" — это класс который надо было создать и который должен был работать с файлом, правда, к моменту выхода игры на это дело забили и создавался класс, прописанный жестко =) (более того — никакого упоминания "nbinscriptserver" в папке с движком не нашлось). После чего в этом классе вызывался метод "RunScript" — который передавал имя файла (!) библиотеке Тцля и получал результат. Т.е. это фишка Тцля? Соответственно вопрос — а как его "распаковать" обратно?
З.Ы. Чисто в теории возможно, что реализация "парсера" таки была сделана к выходу игры, и класс "nbinscriptserver" лежит где-то унутре самой игры, т.к. релиза "Небула Девайс 1" так никогда и не было, то что я нашел — альфа. Собсно появилась сразу "Небула Девайс 2", в которой эта фишка реализована.