RU

Quest Navigator

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

Nex:

Удалось загрузить HTML-файл с диска.

Это прорыв!
Новый движок тормозит так же, как и старый?

Это прорыв!

Ценю твой юмор :)
На самом деле возни очень много во всяких мелочах, и делая регулярно по одной небольшой задаче, проект движется гораздо быстрее чем если просто сидеть и пилить его “аврально”.
В частности для того чтобы загрузить файл с диска, пришлось заново разбираться с преобразованиями строк в C++. Проблемы с разными форматами строк - это проклятие C++ программистов. Что хуже всего, до сих пор никто не удосужился сделать внятный FAQ по строкам. Приходится выискивать инфу по крупицам. Так что работы было проделано прилично, несмотря на незначительный результат.

Новый движок тормозит так же, как и старый?

А вот это мы и проверим. Пока что не на чём.

Внезапно выявились проблемы с запуском Awesomium на Windows XP. Решения не нашёл.

Теперь буду пробовать node-webkit (говорят что он лучше AppJS).

Nex, в чем косяк?

rrock.ru,
не запускается. Access violation какой-то. У меня нет XP, проверялось на компе werewolf’а.

У меня на 8-ке тоже не запускается. Ни Quest Navigator, ни sample_webui.

Нашел я в чем косяк. При вызове ShowWindow посылается сообщение WM_SIZE. В обработке сообщений мы пытаемся получить экземпляр ViewWin по хэндлу из пришедшего сообщения. Для этого вызывается функция ViewWin::GetFromHandle(hWnd). В ней мы пытаемся найти view в g_active_views_. Но на момент вызова ShowWindow g_active_views_ пуст, так как текущий view мы добавляем только в конце конструктора. Переносим g_active_views_.push_back(this); перед вызовом ShowWindow и voila! Теперь проект запускается и на Win8 и на WinXP. Дело в том, что Win7 не посылает это самое WM_SIZE. вместо него посылается WM_WINDOWPOSCHANGED. Поэтому на Win7 программулина и не крашится.

rrock.ru,
огромное спасибо! Проблема решена. Теперь возвращаюсь к Awesomium.

Кстати про Awesomium. Лицензия гласит, что использовать можно абсолютно бесплатно в любых целях, до тех пор пока не заработаете на приложении более 100 000$ за год. То есть коммерческие игры можно делать на нём свободно.

Nex, за предыдущий год.

rrock.ru,
ну да, за предыдущий. А что, кому-то это грозит в ближайшем будущем? :)

Сделал загрузку html-файла указанного в командной строке.

На хабре появилась статья про awesomium: тыц. Теперь попрут статьи.

rrock.ru,
спасибо. Да, Awesomium удобнее node-webkit, не приходится ничего специфичного изучать для подключения натива.

В связи с тем, что игры для Quest Navigator будут несовместимы с играми для AeroQSP, нужно вводить новое расширение для игрового архива.

Решил пока что сделать такое

.qn

Если не придумается более подходящего, так и оставлю.

Nex:

Если не придумается более подходящего, так и оставлю.

сказал Стив Джобс, называя фирму “Яблоко”. :D

Log in or Register to post comments.