RU

Quest Navigator

Nex Moderator 15.01.2012 08:10 162 comments 94925 views

Flash плохо поддерживает сенсорные экраны, поэтому попытка напрямую портировать AeroQSP на iOS провалилась.
В связи с этим я решил разработать новый плеер, взяв за основу AeroQSP и переписав весь код, отвечающий за вывод на экран и взаимодействие с пользователем. Название - Quest Navigator. В первую очередь плеер делается с расчетом на мобильные устройства. В будущем, возможно, этот плеер будет доработан для работы в Windows, с тем чтобы заменить нынешнюю версию AeroQSP.

Сначала планируется сделать его на iOS, далее попытаюсь собрать под Android, и уж потом для Windows.

Принципиальные отличия от нынешней версии AeroQSP:
1. Используется не самописный HTML-рендер Байта, а нативный компонент браузера. Грубо говоря, игра будет запущена в “браузере по умолчанию”. Как следствие, в Quest Navigator должно работать то, что работает в обычном браузере - атрибуты, теги, форматирование текста, списки, таблицы и пр.
2. Будет использоваться JQuery(последней стабильной версии).
3. Поначалу не будут поддерживаться эффекты переходов между локациями, возможно будет реализовано позже.
4. Поначалу не будет поддерживаться “выделение действия” при наведении на него курсора - т.к. в мобильных устройствах курсора нет, а тормозит работу сильно. Для совместимости, обработчик выделения($ONACTSEL) будет вызываться сразу перед событием “действие нажато”. Возможно будет доработано позже.
5. Поначалу не будет строки ввода - т.к. с ней нужно возиться, используется она редко, а времени на разработку мало.
6. Поначалу не будет стрелочек для прокрутки текста - т.к. на мобильных устройствах это неудобно, будет скроллирование как обычно, “перетаскиванием” текста. Возможно, стрелочки будут добавлены позже.
Статус проекта на сегодняшний день:
Все уже работает.
Quest Navigator для Android
Quest Navigator для Windows
Quest Navigator для iOS

Исходный код:
JS+HTML фреймворк (папка “www/qsplib”) - http://github.com/Nex-Otaku/quest-navigator-core
Библиотечный проект для Android - http://github.com/Nex-Otaku/quest-navigator-library-android
Плеер для Windows и Macos на основе Awesomium - http://github.com/Nex-Otaku/quest-navigator-awesomium
Основная библиотека интерпретатора QSP для Quest Navigator - http://github.com/Nex-Otaku/qsplib-experimental

Текст этого сообщения будет меняться по мере работы над проектом. Также в теме буду отписываться об изменениях.

Если есть вопросы, спрашивайте, отвечу.

Edited at 30.07.2014 15:58 (11 years ago)

Попытался подключить GStreamer, но не вышло. Фреймворк слишком большой, огромная куча всяких штук, мало документации и примеров. Чтобы создать на нём что-то сложнее “проиграй мне этот звуковой файл”, пришлось бы погрузиться в него с головой на пару недель. Сидеть и долго тщательно разбираться как всё в нём устроено, по большей части методом тыка и изучения исходников.

Нашёл старую - 2006 года - но симпатичную библиотеку Audiere. Лицензия LGPL, поддержка основных форматов есть. Буду подключать, с виду штука рабочая.

Nex, а что собираешься делать с MIDI? Ну и в Audiere нет поддержки MacOS.

rrock.ru,
MIDI редко используется, на первое время без него вполне можно обойтись. Самые нетерпеливые могут сконвертировать MIDI в MP3 или OGG. А если хочется размер файла поменьше, то можно с лёгкостью перевести в трекерный формат IT - просто открыть их в редакторе Modplug Tracker и сохранить как IT.

Это, конечно, нужно будет упомянуть в документации.

В MacOS нужно будет использовать стандартные средства системы.

Полностью реализовал всю работу со звуком через Audiere. Трек запускается с задержкой около секунды, но в принципе сойдёт и так. Для фоновой музыки это не критично.

Почему только фоновая музыка важна? Фоном можно самому себе что угодно запустить на винампе. Критичны для игры как раз звуковые эффекты.

MasterSet,
для текстовой игры? Серьёзно?

Ну в принципе можно попробовать что-нибудь сделать с этим. Какую-то предзагрузку с кэшированием.
Вроде этого:

! при старте игры
PLAY '1.mp3', 0
PLAY '2.mp3', 0
PLAY '3.mp3', 0
CLOSE ALL

Или найти более продвинутую звуковую библиотеку. Я вот пока нашёл только одну подходящую.

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

Серьёзно. Пример игры? Да хотя бы моя первая - “Куртуазная Баллада”. Там богато озвучена боёвка.
На самом деле в половине моих игр это надо. И будет надо впредь.

MasterSet,
сделал кэширование. При включенном кэшировании, если прервать трек на середине, потом запустить заново, слышен небольшой тихий щелчок. Поэтому по умолчанию кэширование отключено.

Включается опцией командной строки

-enable-sound-cache

при запуске Quest Navigator.

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

Кэшировать файлы надо будет вручную, код я приводил выше.

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

тогда ок

Превью: https://dl.dropboxusercontent.com/u/59679439/temporary/qn_preview.zip
Можно запустить и побаловаться.

Не работает, из важного:
1. Загрузка и сохранение состояний игры.
2. Строка ввода.

Все остальные функции плеера реализованы.

Для запуска тестовой игры запускайте файл runtest.cmd

А на пальцах? Куда это писать?

MasterSet,
в командной строке.

Блин, приеду из отпуска и попробую, сейчас вообще аврал :((

MasterSet,
у тебя в Кобольдии используется устаревшая форма ссылок по номеру действия:

<a href="1">...</a>

Такие ссылки не работают в Quest Navigator, потому что противоречат браузерным стандартам. См. здесь подробно.

Байт вроде бы обещал убрать такие ссылки в следующей версии плеера. Убирай из всех своих игр, заменяй на нормальные “EXEC:”.

Реализовал загрузку и сохранение из игрового меню.

Log in or Register to post comments.