RU

Quest Navigator

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

Где-то уже лежат исходники QSP для айфона - можно взять их за основу.

Byte,
и где же?

Byte,
спасибо.

Посмотрел на исходники. Увы, этот проект не компилируется, а для того чтобы “взять за основу” там слишком много кода - непонятного мне, т.к. на Objective-C я никогда не писал. Но все равно спасибо за ссылку.

Буду пытаться разобраться с Objective-C.

Насколько мне известно, тот проект - рабочий, на нем запускали несколько игр.

Byte,
на этапе сборки не находит “AppRegistrator.h”. Видимо, с тех пор в IOS SDK что-то поменялось. Все-таки год прошел.

Ну фиг с ним, я буду разбираться пока. Может даже буду заглядывать в тот проект, если возникнут затруднения. Сейчас пробую прикрутить PhoneGap.

Пустое приложение на фреймворке PhoneGap собрано и запустилось на девайсе. Теперь предстоит сделать с нуля нативный(Objective-C) плагин для PhoneGap, который будет связывать библиотеку QSP и PhoneGap.

Структура проекта теперь такая:

Библиотека QSP -> PhoneGap FrameWork -> iOS UIWebView -> Javascript

Придется заново реализовывать сохранения, таймер и проигрывание музыки, а также все детали “низкого уровня”, которые были сделаны при разработке Флэш-версии. Поэтому разработка займет немало времени. Но буду стараться как можно больше времени уделять разработке. Также при затруднениях буду сверяться с кодом старого айфон-плеера, по ссылке Байта. По мере продвижения буду, как обычно, писать в этой теме.

Плеер научился выводить описание и выполнять действия.

Плеер научился показывать картинки в тексте.

Частично сделано оформление.

Сделал основную часть оформления и ссылки.

О! Отличная новость! =)

Изначально минимальная поддерживаемая версия iOS была запланирована 3.0, но теперь я решил повысить планку - до iOS 4.0.
Начиная с этой версии поддерживаются регулярные выражения для строк, а встраивать отдельные библиотеки мне очень не хочется. Радует то, что на айфоне пользователи апгрейдятся гораздо активнее, чем на Windows и Android, поэтому “старичков” настолько мало, что ими можно смело пренебречь.

Сделал реакцию на выбор предмета в инвентаре. Вынес библиотеку в отдельный поток. К сожалению, появился - вероятно из-за многопоточности - небольшой, но неприятный лаг. Оптимизировал все что смог, но избавиться от лага не удалось. Проявляется нечасто, но задержка заметная - примерно полсекунды. Остается надеяться, что обработка локации-счетчика и фоновая музыка не усугубят ситуацию. Ссылки и действия нажимаются хорошо, практически без осечек.

Log in or Register to post comments.