Интерактивные аудиокниги: перезагрузка

Привет всем!
В эти холодные зимние дни мне вспомнился топик DoubleDragon 'а, написанный далеким (уже) летом 2015 г., и последовавшей за ним череды статей на тему интерактивных аудиокниг (ИА). Признаться, меня тогда очень обрадовала активность в этом направлении, тем более, что было даже объявлено о выходе новой версии AXMA Story Maker 4 с поддержкой ИА. И, казалось, совсем скоро начнут выходить новые аудиоигры, учитывая относительно высокую популярность платформы, и возможности для продвижения. Однако, к сожалению, чуда не случилось. За последнии неполные 2 года в официальной библиотеке Axm’ы появилась всего одна аудиокнигра. Еще один проект в сети – http://www.develgame.ru/, там люди тоже пытаются делать аудиоигры. Пока в их библиотеки три игры. Из зарубежных платформ, известных мне, – Hyena – также не снискала большой популярности у авторов.

Почему так получилось? Расскажу, как я это вижу.

Во-первых, сам «жанр» аудиоигр практически неизвестен широкой публики (и, даже, не всем любителям ИЛ, хотя аудиоигры – это, по-большому счету, те же текстовые игры, только озвученные). Основным его «потребителем», по-прежнему, остаются люди с нарушениями зрения. Вторая причина – озвучка. Многих отпугивает сложность работы, требующая много времени, хорошего оборудования, не говоря уже о необходимости обладать определенным дикторским мастерством. И, наконец: к каждой книгре (по крайней мере, из тех примеров, что я привел выше) пытались (и пытаются) подходить индивидуально, фактически, каждый раз «создавая» книгу-игру заново. Что я имею в виду?

По своей структуре книга-игра принципиально ничем не отличается от обычной книги, кроме порядка чтения параграфов (глав). Да, есть различия в оформлении, механике, но, в целом, большинство книг-игр строится по одной схеме: «параграф (выбор) – параграф (выбор)». В такой схеме достаточно легко выделить структурные элементы (параграфы). Более того, эту работу можно сделать автоматически, если научить парсер определять начало и конец параграфа. А, если использовать современные системы синтеза речи, то мы сразу решим вопрос озвучки. Да, эти системы работают не всегда хорошо, но технологии с каждым годом совершенствуются. И, что немаловажно, у игрока появляется выбор, каким голосом должна звучать игра. Таким образом, можно существенно упростить процесс создания ИА и адаптации существующих книгр в аудиоверсию.

Замечу, что парсеркам в этом смысле повезло больше. Незамутненный графическими элементами «чистый текстовый интерфейс» сделал парсерные игры идеальным объектом для программ экранного доступа, фактически решив проблему их адаптации.

Ну, да, ладно, есть, что есть. Но, мне стало интересно, можно ли самому сделать интерактивную аудиокнигу без регистрации и смс с минимальными затратами усилий и времени?

Проще всего, мне казалось, записать книгру в mp3 файл. Лучше всего для этой цели подошла широко известная в узких кругах программа Балаболка. Но, просто записать музыкальный файл было недостаточно, требовалось разбить его на параграфы. Благо, Балаболка это умела. Правда, необходимо было пройтись по тексту книги, и сделать двойной абзац перед параграфом, чтобы программа могла правильно нарезать mp3-шки. Можно было сделать скрипт, который вставлял бы пустые строки перед номерами параграфов, но мне тогда было лень этим заниматься.
В итоге, примерно, 15 минут у меня ушло на правку книги, еще минут 5 – у программы, на запись. В итоге, я получил нарезку из mp3-файлов-параграфов. Каждый файл уже назывался по номеру соответствующего параграфа. Можно было кидать на телефон, ноутбук, плеер, и играть.
«Ну, о’кей», – сказал я себе, и… забыл об этом «эксперименте» на полтора года.

Голосовой Интерпретатор Книг-Игр

Новогодние праздники 2017-го в Москве выдались на редкость морозными. КРИЛ был в самом разгаре, а у меня было много свободного времени. Правда, я предпочел самим играм их видеопрохождения, поскольку большинство из них были десктопными, а у меня не было технической возможности их запустить. Случилось так, что я вновь вспомнил про интерактивные аудиоигры. В поисках интересной и необычной игрушки на эту тему я набрел на аудиоигру «Стань стальной крысой». Она «весила» около 40 мб, и чтобы установить ее на мою старенькую мобилку пришлось удалить половину программ. Я поиграл в нее, и мне понравилось. Особенно, здорово было то, что можно было с помощью голосовых команд перемещаться по параграфам. Плохо было то, что книга была «вшита» в движок. Кроме того, почти все 40 мб приложения занимали записи программно-синтезированного голоса. Аналогичного результата, но используя гораздо меньше ресурсов, можно было добиться, если бы программа напрямую обращалась к tts-движку телефона. В общем, я задумался о создании своего «голосового движка» для книг-игр.

К своему «эксперименту» (см. выше) после игры в «Крысу» возвращаться уже не хотелось. Я понял, что интерактивная аудиокнига должна иметь голосовое управление в качестве основного средства взаимодействия, и работать непосредственно с текстом книги.

Делать движок под десктоп мне не хотелось. Для игры потребовался бы микрофон, компьютер, кресло. Ну, ладно, диван, если у вас ноутбук. Но, у меня не было ноутбука, а мне нужно было, чтобы я мог удобно запускать программу из любого положения, в т.ч. с дивана. Оптимальным было создание мобильного приложения (под Android).

Основу, т.е. сам парсер я написал за 2 дня. Он был довольно прост: программа «заглатывала» текстовый файл с книгой-игрой, делала внутреннюю разметку, могла понимать команды перехода по параграфам, т.е., в общем, соответствовала функционалу движка «Крысы», правда в ней пока не было сохранений. Я назвал платформу ГИКИ (Голосовой Интерпретатор Книг-Игр).

Одной из основных идей проекта была максимальная открытость: любой элемент книги-игры (параграф) должен быть доступен игроку в любой момент времени, независимо от того, в каком месте книги он находится. По такому же принципу должна была работать система сохранений. Т.е. все, как в традиционных книгах-играх.

Первоначально, предполагалось, что для каждой игры (книги) будет одно сохранение. Точнее, пока я делал проект «чисто для себя», сохранений вообще не планировалось. Зачем, если можно просто запомнить (записать) номер параграфа? Потом, мне в голову пришла идея с дневниками.
С технической точки зрения, дневник – это файл сохранения (лог) игры. Когда мы начинаем новую игру программа создает дневник, т.е. файл в который будет сохраняться наше прохождение. Но, кроме того, я задумал, что дневник можно будет читать как… обычный дневник. В процессе игры в него заносится весь тот путь, по которому мы шли. Сначала, в дневник записывались только название книги, время начала игровой сессии и номера параграфов. Я не имел понятия, что еще можно туда включить, но, постепенно, по мере того как функционал ГИКИ рос, для дневника нашлось масса применений. Вначале, я сделал, чтобы для каждого параграфа добавлялась краткая, буквально в одно предложение цитата из оригинального параграфа книги. Весь текст копировать не имело смысла – это бы только усложнило навигацию в дневнике, но теперь, по крайней мере, игрок мог вспомнить, что произошло с ним в данном параграфе.

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

Заметки – это некая памятка для игрока, которую он может оставить самому себе. При очередном заходе на параграф оставленная заметка автоматически зачитывается, даже, если пользователь начнет новую игру.
Статус – это «глобальные переменные» или характеристики, например, жизни, инвентарь. И заметки, и статус автоматически добавляются в дневник.

Ниже – пример дневника игры «Другой мир» (Antokolos )

«ДРУГОЙ МИР»
.................
=====и н ф о=====
Версия ГИКИ: 1.0
Путь к книге: ../../GIKI/gamebooks//Другой мир.txt
Параграфов: 96
Строк: 753
=================

***новая  игра***

===з а п и с ь===
21:12, 10-02-2017
=================
  прогресс: 0%
=================

# старт
 Антон Колосов (Antokolos) Другой мир Книга-игра на конкурс Мини-книг-игр 2014 В этой книге-игре очень простая боевая си- стема.

# 30
 Долину застилает туман, на улице уже насту- пили сумерки.

# 97
 Вы подскакиваете и понимаете, что лежите в своей постели.

# 3
 Вы стоите перед своим домом.

-----заметка-----
зайти в сарай

# 4
 Вы на главной площади Мехограда.

-----заметка-----
иду к изобретателю


===с т а т у с===
удача 1

со мной:
Снуппи

Для каждой игры, естественно, может существовать неограниченное количество дневников (сохранений).

Очевидно, что для полноценной игры одной возможности перехода по параграфам недостаточно. Были добавлены команды возврата к предыдущему параграфу, к началу книги, кубик, даже время можно было узнать, не прерывая игрового процесса. На данный момент, приложение понимает больше 25 команд, не считая синонимов. Первоначально, программа работала только с голосовыми командами. Естественно, что для этого требовалось интернет-соединение. Конечно, у игрока его могло и не быть в данную минуту. Я сделал возможность выбора «ручного» ввода в настройках. В лучших традициях IF, команды можно вводить, набирая на клавиатуре, и, в лучших традициях РИЛ, команды можно выбирать из списка меню. Кому как нравится.

Первоначально, на экране приложения выводилась лишь самая основная информация об игре (название книги, текущий параграф, прогресс). Самого текста книги не было. Мне казалось (и я до сих пор так считаю), что программа не должна превращаться в банальную «читалку». Основным средством взаимодействия должен оставаться голос. Однако, некоторая информация, например, правила, описывающие игровую механику, таблицы лучше воспринимается в виде текста, поэтому я сделал возможность вывода текста параграфа как отдельную команду.

Важный момент, о котором, конечно, нужно рассказать – это сами файлы книг. ГИКИ работает с файлами txt, сохраненными в кодировке utf-8. Обычно, никакой дополнительной обработки исходной книги не требуется. Важно только, чтобы номера параграфов стояли на отдельной строке, потому что любое отдельно стоящее число программа воспринимает как начало параграфа. Параграфы, кстати, могут идти совершенно в произвольном порядке. Поскольку большинство книг-игр представлены в формате pdf и doc(x), то, для начала игры, как правило, достаточно простой конвертации книги в txt. Бывают, конечно, книги со сканами без текстового слоя и защищенными текстами. Первые можно попытаться «прогнать» через программу оптического распознавания текста (OCR), а вот вторые конвертировать, к сожалению, не получится.
Подходя к заключению, хочу сказать, что не все, что хотелось, удалось реализовать. Например, пока не работает пауза при воспроизведении текста. Также, хотелось бы увеличить время ожидания голосовой команды. Наверняка, есть еще моменты, которые я пропустил. Но, в целом, я доволен тем, что получилось. Программа получилось такой, какой я ее задумал.
Очень надеюсь получить от вас обратную связь. Сделать это можно здесь, на форуме, или, например, через форму для обратной связи на сайте ГИКИ.

Спасибо за внимание!

Ссылки

Сайт программы ГИКИ

1 комментарий