Потихоньку пилю свой HTML-движок для визуальных новелл.
Визуальные новеллы, если кто не знает - это такая художественная форма, что-то среднее между аудиокнигой, театром и игрой: нужно читать/слушать много текста, проникаться сюжетом, смотреть на меняющиеся декорации и появляющихся на экране героев. Иногда есть интерактив и ветвления сюжета - обычно нужно делать какие-то выборы из предложенных 2-3-4 пунктов.
Мысль простая: вот все борятся против DRM, что, мол, DRM портит музыку, видео и книги, привязывая их к какому-нибудь онлайн-сервису который рано или поздно закроется и унесет с собой все. Некоторые борятся за сохранение старых игр: делают эмуляторы, портируют движки на современные платформы и т.д. Но никто не борется за сохранение визуальных новелл, которые по идее ничем не отличаются в этом плане от музыки, видео, книг и игр. Платформы, для которых они выпускались, точно так же устаревают и их точно так же становится невозможно читать, если даже ты их вполне себе легально купил.
Для квестов вот есть ScummVM. Чем мы хуже? Родилась мысль, что надо сделать «как ScummVM», но для визуальных новелл - то есть универсальный свободный движок, который мог бы проигрывать многие подобные произведения. После полугода раздумий и экспериментов, мысль эволюционировала до того, что надо делать не столько универсальный движок, сколько универсальный формат, в который можно будет сконвертировать данные из любого другого движка. Движков же может быть много, и они становятся страшно простыми: им всего лишь надо уметь интерпретировать программу, состоящую буквально из 4-5 типов команд («показать текст», «показать графику», «проиграть звук» + flow control).
Хочу показать то, над чем работаю в данный момент - http://www.pixic.ru/i/50p1J1Y2S1X83811.png
- по центру - собственно движок, в котором запущена поконверченная новелла Edelweiss Eiden Fantasia; движок написан на HTML5+JS; т.к. у нас есть полный контроль над движком - в отличие от оригинала мы можем показать текст сразу на 2 языках (японском и русском); в отличие от оригинала это можно сразу открыть на мобильном телефоне/планшете и будет работать.
- справа - описание контейнерного формата файла движка BGI (Buriko General Interpreter) в формате Kaitai Struct - это такой замечательный инструмент для реверс-инжиниринга файловых форматов, активно использую уже второй месяц, страшно упрощает копание во всякой проприетарной бинарщине
- слева - этот же формат, открытый в визуализаторе - эдакий продвинутый hex-viewer, показывает, какие структуры занимают какие места в hex-дампе, позволяет смотреть их в виде дерева, быстро проверять какие-то идеи, что же там может быть зашифровано
Сейчас готов proof-of-concept движка и конвертеры из форматов BGI (ну, вот, например, Edelweiss Eiden Fantasia, что на скрине), Kirikiri (тысячи новелл на нем), Ren'Py (почти все любительское на нем), Whale (Nora to Oujo to Noraneko Heart, Caramelbox (Otome wa Boku ni Koishiteru), есть наброски по еще 2-3 движкам.
Морально готовлюсь выложить это все в open source. Самое сложное - нужно придумать название :) Есть мысли? Вообще, кому-нибудь все это интересно?