RU

Quest Navigator для Windows

Nex Moderator 07.07.2013 15:47 325 comments 223974 views

Плеер “Quest Navigator” для Windows находится в стадии активной разработки.

Ссылка на скачивание самой свежей версии: http://appcast.text-games.ru/quest-navigator-latest

Утилита для логирования ошибок и консольного вывода Javascript: LogApp.exe

Документация: Quest Navigator

Исходный код: http://github.com/Nex-Otaku/quest-navigator-awesomium

Edited at 01.04.2017 09:00 (8 years ago)

Простите за назойливость.

Конечно, для запуска классических игр, “сборка” в отдельной папке в какой-то степени оправдана. Однако, если в папке с игрой присутствует gameAwesomium.html, есть папка skins, то это означает, что игра адаптирована под Навигатор (пусть не standalone, но все необходимые ресурсы есть и находятся по правильным путям). В этом случае кэширование, кажется, излишне.

И не стоит забывать об эффективном использовании дискового пространства (карты памяти в случае мобильных игр).

Нет ли информации о планах поддержки “экзотических CSS-свойств” в будущих версиях Awesome?

Spoiler

Единицы измерения vw, vh, vmin и vmax сейчас поддерживаются всем чем угодно. Они входят в W3C Candidate Recommendation 30 July 2013. Жаль, что Avesomium их не поддерживает, хотя Chrome, на котором, если я правильно понимаю, базируется Awesome, их поддерживает уже давно. Но на “нет” и суда нет.

evp,
я, наверное, непонятно выразился. Если игра сделана как standalone, то ничего никуда не “кэшируется”. Всё берётся из папки игры.

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

CSS-свойства, у меня нет никакой такой информации. Буду рад, если ты изучишь этот вопрос самостоятельно и поделишься результатами с остальными.

Nex,
видимо, это я неверно (плохо) выразил свою мысль.

Скажем, есть CoolGame для стандартного плеера. Если я ее запускаю Навигатором, то кеширование оправданно и вы понятно описали причины и цели, которые этим достигаются.

Теперь, есть SuperGame, написанная специально для Навигатора. В стандартном плеере она корректно работать не будет. Разумеется, в папке SuperGame есть скин, CSS и JS, а также есть gameAwesomium.html с правильными путями. Но там нет файлов самого плеера. То есть, эта игра - не standalone. Как сделать такую игру вы описали тут. Такой игре не нужно кеширование, у нее все есть при себе для того, чтобы нормально работать. Или я что-то еще упустил из вида?

Nex:

CSS-свойства, у меня нет никакой такой информации. Буду рад, если ты изучишь этот вопрос самостоятельно и поделишься результатами с остальными.

Вот, что я пока обнаружил:
[*] отсутствует поддержка единиц измерения vh, vw, vmin, vmax (практически замены нет);

[*] не поддерживается calc (тоже не лечится);

[*] имеется устаревшая (очень устаревшая) поддержка линейных градиентов: вместо linear-gradient следует использовать -webkit-linear-gradient;

[*] вместо transition следует использовать -webkit-transition и почему-то при использовании конструкции типа:

.buttonGT a:hover
{
  -webkit-transition: .5s linear;
  background-position: -200% 0, 0 0, 0 0, 0 100%, 0 4px, 0 92%;
}
.buttonGT a:active
{
  top: 1px;
}

длительность анимации 0,5 сек передается от класса .buttonGT a:hover классу .buttonGT a:active. Приходится записывать так:

.buttonGT a:active
{
  -webkit-transition: 0s linear;
  top: 1px;
}

В других браузерах такой особенности нет, возможно это такая вендорная реализация.

Пока что все, но думаю, что чем дальше в лес, то тем толще будут партизаны :)

evp,
по “кешированию”. К сожалению, нет времени сейчас подробно ответить. Позже.

Как можно изменить фон игры в локациях?

body  в skins/game.css работает отлично, меняя фон всей игры.
Но если нужно изменить фон при переходе в другую локацию? $BACKIMAGE = ‘pic/background/room.png’ не работает.

ZoloX,
$BACKIMAGE в Навигаторе отключен, как и другие переменные оформления. Всё оформление в Навигаторе делается через HTML, CSS и Javascript.

Переключение фонов я делаю так.

1. В CSS прописываю стили для классов элемента BODY. Каждому классу соответствует свой фон.

2. В Javascript-файле скина описываю функцию, которая меняет класс BODY.

3. В игре, при заходе на локацию, проверяю, какой нужен фон, и вызываю функцию Javascript. В элементе BODY меняется класс, а за ним меняется и фон.

Помимо фона, точно таким же образом можно менять и расположение окон, отступы от границ окна и прочие вещи. Это позволяет, например, красиво оформить “обложку” - заглавный экран игры.

Спасибо, получилось!
В js не силен, так что упростил до минимума, вставил

<script>document.body.style.backgroundImage = "url(pic/background/house.png)";</script>

в локации. В дальнейшем планирую прикрутить условия для смены на нужный фон.

ZoloX,
для вызова Javascript следует использовать оператор EXEC, с префиксом “JS:”.

EXEC('JS:document.body.style.backgroundImage = "url(pic/background/house.png)";')

Nex,
Спасибо. А как можно реализовать всплывающие подсказки при наведении, например, на изображение?
Через html - title=“подсказка” и CSS - data-title=“подсказка” , content: attr(data-title); не получается.

ZoloX,
не знаю.

Навигатор рассчитан на тач-устройства, поэтому никаких операций с “наведением курсора мыши” на нём не предусматривается.

ZoloX,
Nex, конечно , прав. …но не совсем. Псевдокласс :hover работает в Навигаторе.

Пример:
CSS

Spoiler
/* Всплывающая подсказка */
.tooltip {
	position: relative;
	}
.tooltip em {
	display: none;
	}
.tooltip:hover em {
	font-style: normal;
	display: block;
	position: absolute;
 	background: hsla(0,0%,0%,.5);
	color: hsla(0,0%,100%,1);
	padding: 3px 5px;
	bottom: 22px;
	right: 0;
	box-shadow: 0 0 5px #ccc;
 	border-radius: 5px;
}
.tooltip:hover em i {
	position: absolute;
	bottom: -7px;
	right: 5px;
	border-top: 7px solid  hsla(0,0%,0%,.5);
	border-left: 7px solid transparent;
	display: block;

QSP

USEHTML = 1
*nl'<span class="tooltip">Наведите на меня курсор.<em>Йа тултипко! :)<i></i></em></span>'

Nex, в чем смысл использования оператора EXEC, если тег <script> тоже работает?

evp,

Nex, конечно , прав. …но не совсем. Псевдокласс :hover работает в Навигаторе.

Я имел в виду, что обеспечение таких вещей не входит в задачи плеера. Так точнее.

Авторы вольны творить на движке что угодно, хоть шутеры, хоть мультиплеерные онлайн-игры. Тем не менее, официально поддерживаться будут только те фичи, которые необходимы для классических текстовых игр.

в чем смысл использования оператора EXEC, если тег <script> тоже работает?

Например, в том, что описание может перезаполняться на уровне JS-API несколько раз. В таком случае, тег “<script>” выполнится лишний раз.

Исполнять код через вывод текста, это в принципе неправильно. Есть специальная функция, её и следует использовать.

evp,
Nex,
Спасибо.

Nex,
Если случайно организовать бесконечный цикл, то закрытие окна Навигатора (крестиком справа вверху) не приводит к остановке самого процесса. Приходится его убивать через диспетчер задач. :( При Сталине В Quest Soft Player такого не было.

И еще о CSS.

По всей видимости, Навигатор не поддерживает Модель Flexible Box. Есть три версии этой модели - синтаксис 2009 года, синтаксис 2012 года и современная от 25/03/2014. И ни одна не работает в Навигаторе. С префиксами -webkit и без них. Хотя поддержка в Chrome синтаксиса 2009 года (с префиксом -webkit) была еще с 4-й версии и продолжалась по 20-ю версию. Последующие версии Chrome поддерживают современный им синтаксис (21-28 весии с префиксом -webkit, остальные без префиксов). У нас “внутри” Навигатора, кажется, 18-я версия Chrome.

Собственно вопрос: почему так?

Log in or Register to post comments.