RU

Quest Navigator

Nex Moderator 15.01.2012 08:10 162 comments 94806 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)

Несовместимы? Плохо. Очень плохо (

rrock.ru,
я так поступал ещё до того, как узнал про Джобса. А вообще я с ним согласен. Иногда время дороже, чем идеальный результат.

MasterSet,
я уже говорил об этом. Игры несовместимы по оформлению. Для Quest Navigator нужно будет делать своё оформление. Больше в принципе ничего.

Понимаешь, сам плеер - классический, AeroQSP, Quest Navigator, состоит из двух частей. Первая - интерпретатор. Вторая - оболочка GUI. Вот первая часть у них у всех общая и полностью совместима. А во второй части, в оболочке, у каждого плеера свои поддерживаемые фичи.

Поэтому, например, в AeroQSP можно анимировать переходы между локациями, а в классическом - нет. И поэтому для каждого плеера свои форматы архивов, чтобы различать для какого плеера сделана игра. Чтобы пользователь не пытался, например, .aqsp запустить на классическом плеере.

Quest Navigator планируется как замена классическому плееру и AeroQSP, то есть все игры .aqsp будут перенесены в .qn. Quest Navigator самый универсальный по своей концепции, поэтому он будет поддерживаться на большем количестве платформ чем классический и AeroQSP. Следовательно и формат .aqsp больше не пригодится.

При этом я делаю с расчётом на то, чтобы игры классического плеера могли запускаться в Quest Navigator без каких-либо изменений. Для таких игр будет просто выбираться оформление по умолчанию. Конечно, кое-что будет отличаться (см. отличия Quest Navigator), но в целом игры будут рабочими.

Если бы Байт внедрил в библиотеку поддержку функции запросов к плееру, то игра умела бы “различать” разные плееры и было бы легко делать универсальные игры, подходящие для всех плееров. К сожалению пока что это не предвидится. В Quest Navigator поддержку этой функции я уже сделал.

Всё это слишком сложно для моего понимания. Ладно - будем смотреть по факту.

Плеер научился загружать игру и обновлять интерфейс.

Сделано самое основное: выполнение действий, обработка инвентаря и ссылок.

Реализованы операторы VIEW и MSG.

Реализован оператор MENU.

Реализован диалог INPUT, а также обработка ошибок в коде игры.

Реализован оператор WAIT и функция MSECSCOUNT.

Реализованы:
локация-счётчик;
показ и скрытие окошек;
функция запросов к плееру.

Выбираю библиотеку для проигрывания звуковых файлов в Quest Navigator.

Библиотека желательно кроссплатформенная (Windows и Linux, на Mac OS по идее встроенные средства должны работать).
Лицензия должна быть позволяющая без особых ограничений и оплаты использовать её для коммерческих игр.
Должна поддерживать самые распространённые форматы (MP3, WAV, желательно OGG, MIDI и трекерные модули).
Желательно чтобы подключалась без лишнего геморроя и шаманства.

Сейчас присматриваюсь к OpenAL и PortAudio.

FMOD, который используется в нынешнем классическом плеере, не подходит из-за лицензии. 500$ за каждую коммерческую игру на каждой платформе. Т.е. одна коммерческая игра на трёх платформах обойдётся в 1500$.

Ещё:
irrKlang, для коммерческих игр 65 евро (~2800 руб.). Покупка одной лицензии на разработчика для всех его игр.
BASS, для коммерческих игр 125 евро (~5400 руб.). Покупка одной лицензии на разработчика для всех его игр.
GStreamer, бесплатная под лицензией LGPL.
FFmpeg, бесплатная под лицензией LGPL.

Может кто-нибудь что-то посоветует?

У библиотеки OpenAL громоздкое API, к тому же проект по всей видимости не развивается. Последняя версия SDK от 2008 года.

PortAudio вообще непонятно что.

GStreamer и FFmpeg, пожалуй, слишком малоизвестные. Долго разбираться придётся.

Буду подключать SDL (лицензия LGPL). Фреймворк живой, известный, с примерами и исходниками проблем быть не должно.

а что ты хотел от ffmpeg

ясно же

С библиотекой SDL тоже возникла проблема: самый распространённый обработчик звуков, SDL_mixer, поддерживает только один канал для музыки. То есть проиграть одновременно 2 и более MP3 одновременно уже не получится.

Ограничивать авторов только из-за особенностей SDL_mixer не хочется. Буду продолжать искать подходящую библиотеку.

Ещё нашел SFML (лицензия zlib, полностью бесплатная) - но она не проигрывает MP3. Не годится.

Log in or Register to post comments.