Журнал изменений UrqW
(Изменения каталога игр не записываются в этот документ.)
Версия 1.1 (в разработке)
- Интерпретатор URQL:
- Добавлено: Поддержка кодировки UTF-8 для игр и плагинов.
- Добавлено: Возможность добавить ссылкам в тексте выпадающее меню со списком действий и скрывать отдельные пункты меню в зависимости от значений специальных переменных с префиксом
hide_.
- Добавлено: Возможность выполнить код JavaScript из кода URQL и получить его результат с помощью системной переменной javascript.
- Добавлено: Системные переменные:
- date - получить текущую дату (только при отсутствии специальных правил urq_mode).
- file_content - получить содержимое файла из пакета игры в виде текста по его внутреннему пути.
- file_url - получить относительный URL-адрес файла из пакета игры по его внутреннему пути.
- image_caption - установить или получить видимую подпись к изображению.
- instr_leave_spc - установить или получить режим обработки пробелов для оператора instr.
- last_btn_caption - получить название последней активированной кнопки выбора или ссылки в тексте.
- location - получить имя текущей локации, вне зависимости от способа перехода в эту локацию (только для режима совместимости с AkURQ).
- quest_path - всегда имеет значение в виде пустой строки (только для режима совместимости с AkURQ).
- time - получить текущее время.
- urq_type - всегда имеет значение 1 (только для режима совместимости с AkURQ).
- urqw_game_ifid - получить IFID игры (или пустую строку, если он отсутствует).
- urqw_game_lang - установить или получить язык контента игры.
- urqw_title - установить или получить заголовок страницы UrqW.
- urqw_version - получить версию UrqW.
- Добавлено: Оператор clst для очистки экрана от текста.
- Добавлено: Оператор clsl для очистки текста от ссылок.
- Добавлено: Оператор varkill (прямой аналог perkill).
- Добавлено: Возможность задать произвольные названия для предметов инвентаря, вариантов использования предметов инвентаря и пунктов выпадающих меню у ссылок в тексте вместо названий, основанных на именах переменных и меток (используются специальные переменные с префиксом
display_).
- Добавлено: Поддержка пользовательских альтернативных текстовых описаний для изображений, добавляемых с помощью системной переменной image или оператора image.
- Добавлено: Игнорирование пробельных символов в начале любых строк.
- Добавлено: Автоматическая нормализация внутренних путей к файлам: обратные косые черты (бэкслеши) заменяются на косые черты (слеши), а также удаляются все косые черты в начале пути.
- Добавлено: Режим совместимости с AkURQ.
- Добавлено: Автоматическое экранирование HTML (включено по умолчанию в режимах совместимости с RipURQ и URQ_DOS).
- Изменено: Оператор clsb теперь только удаляет кнопки, но не очищает текст от ссылок.
- Изменено: Инициализация переменной с помощью оператора instr без присваивания значения инициализирует переменную со значением в виде пустой строки, а не игнорируется.
- Изменено: При присваивании строкового значения переменной с помощью оператора instr ведущие и конечные пробельные символы в строке значения удаляются. Вернуть прежнее поведение с сохранением пробелов можно с помощью системной переменной instr_leave_spc.
- Исправлено: Если предмет в инвентаре имеет в названии символ подчёркивания (например,
inventory_item), для него существует метка использования без уточнения действия (например, use_inventory_item), а переменная скрытия действия имеет положительное значение (например, hide_use_inventory_item = 1), то при клике на ссылку предмета в панели инвентаря всё равно происходит срабатывания действия.
- Исправлено: Если при присвоении значения системным переменным image или music перед знаком равно есть пробел, то конструкция ошибочно интерпретируется как выполнение одноимённых операторов с некорректным путём к файлу.
- Исправлено: Оператор not сразу после левой скобки обрабатывается некорректно.
- Исправлено: Некорректная обработка переменной tokens_delim.
- Исправлено: Некорректная обработка оператора goto в режиме совместимости с URQ_DOS.
- Плеер игр:
- Добавлено: Поддержка настраиваемой интернационализации и переводы интерфейса на русский, английский, армянский, белорусский, межславянский (латиница), украинский и эсперанто языки.
- Добавлено: Дифференцированная языковая разметка, соответствующая языку интерфейса и языку игрового контента.
- Добавлено: Настройка кодировки игры при открытии с главной страницы.
- Добавлено: Возможность переименовать и очистить слоты сохранения через меню дополнительных действий, а также скачать и загрузить сохранение в виде файла.
- Добавлено: Настраиваемая загрузка игры с автоматическим сохранением прогресса между сессиями.
- Добавлено: Настраиваемое предупреждение о возможных ошибках при загрузке сохранения для другой версии игры.
- Добавлено: Поле даты в каталоге игр.
- Добавлено: Возможность фильтровать игры в каталоге по языку и названию, а также сортировать по дате и алфавиту.
- Добавлено: Меню с дополнительной информацией и настройками в панели инструментов.
- Добавлено: RSS-канал новых игр в каталоге.
- Добавлено: Игры, добавленные в каталог, имеют отдельные URL-адреса для идентификации и индексации поисковыми системами.
- Добавлено: Тег с каноническим URL-адресом (отдельные URL-адреса для главной страницы с каталогом и для каждой игры, запускаемой по идентификатору).
- Добавлено: Возможность задать игру, загружаемую при любом открытии index.html.
- Добавлено: Новые ключи объекта игры в файле games.json:
- date - для указания даты первой публикации игры.
- lang - для указания одного или нескольких языков игры.
- Добавлено: Возможность задать настройки плеера с помощью get-параметров:
- Идентификатор игры для запуска - id (значение: идентификатор).
- Язык интерфейса - lang (значение: код локализации).
- Режим URQ - mode (значение: “urqw”, “ripurq”, “dosurq” или “akurq”).
- Кодировка игры - encoding (значение: “UTF-8” или “CP1251”).
- URL для открытия игры - url (значение: строка URL-адреса).
- Отображение раздела отладки игры в меню - debug со значением “1”.
- Добавлено: Поддержка файла manifest.json в пакете игры, который используется для определения параметров плеера и метаданных игры, а также начальных значений некоторых системных переменных.
- Добавлено: Поддержка записи iFiction из “Вавилонского договора” в пакете игры, которая используется для хранения расширенных метаданных игры в унифицированном формате.
- Добавлено: Автоматическое фокусирование элементов управления при работе с диалоговыми окнами (меню, сохранение и загрузка игры).
- Добавлено: Настройка уровня громкости для звуков игры.
- Добавлено: Присвоение переменной music значения в виде пустой строки останавливает циклическое воспроизведение аудиофайла.
- Добавлено: Воспроизводимые музыка и звуки игры запоминаются при сохранении игры, а также возобновляются с того же места при загрузке из сохранения.
- Добавлено: Настраиваемое автоматическое фокусирование первого элемента управления на экране игры, а также надписи об ожидании любого нажатия и об окончании игры.
- Добавлено: Возможность настроить запрос о подтверждении закрытия страницы.
- Добавлено: Отключаемые горячие клавиши для активации кнопок выбора, быстрых действий и кластерной навигации по областям интерфейса (см. справку в меню).
- Добавлено: Нумерация кнопок выбора при включённых горячих клавишах.
- Добавлено: Возможность сворачивать и развлорачивать разделы на главной странице.
- Добавлено: Отображение подробной информации об UrqW на главной странице.
- Добавлено: Отображение версии UrqW в интерфейсе плеера.
- Добавлено: Заголовки в диалоговых окнах сохранения и загрузки игры.
- Добавлено: Поддержка открытия игр в формате .qsz.
- Изменено: Варианты использования предмета в инвенторе отображаются, когда предмет принимает системный фокус, а не только когда на него наводится мышь.
- Изменено: Варианты использования предмета в инвенторе, формируемые из названий меток использования, отображаются с пробелами вместо подчёркиваний.
- Изменено: При окончании игры через оператор quit ссылки и кнопки удаляются, а не просто перестают реагировать на действия пользователя.
- Изменено: При запуске игры по идентификатору предпочтение отдаётся идентификатору игры из get-параметра id (сохранена поддержка запуска игры по идентификатору фрагмента (хэшу), но только если get-параметр id отсутствует).
- Изменено: При загрузке игры из архива как плагины читаются и загружаются файлы с названиями style.css и script.js (как документировано), а не все файлы .css и .js (как было фактически).
- Изменено: При запуске игры по идентификатору из папки плеер ищет файл urqw/main.qst и, если не найден, то main.qst вместо файла quest.qst. Директория расположения main.qst считается директорией игры.
- Изменено: При запуске игры по идентификатору из папки сначала загружаются и обрабатываются файлы manifest.json и записи iFiction, а также файлы плагинов (style.css и script.js), и только после этого файл игры main.qst.
- Изменено: Новый звук, воспроизводимый при помощи оператора play, останавливает предыдущий (оригинальное поведение RipURQ, URQ_DOS (WCL) и AkURQ), а не воспроизводится параллельно.
- Изменено: Звуки игры, инициированные посредством оператора play при нулевой громкости, начинают воспроизводиться с нулевой громкостью, а не игнорируются.
- Изменено: Отслеживание нажатий клавиш не по коду символа, а по коду клавиши.
- Изменено: Оптимизация вёрстки, в том числе для валидности HTML и поисковой оптимизации.
- Изменено: Небольшая правка отступа информативного окна.
- Исправлено: Ссылки исчезают из текста при загрузке сохранённой игры.
- Исправлено: Текстовый вывод, содержащий переносы строк, всегда отображается как блочный элемент.
- Исправлено: Абзацы, содержащие текстовый вывод с блочными элементами, не имеют отступа слева.
- Исправлено: Воспроизведение музыки и звуков игры не останавливается при перезапуске или загрузки из сохранения.
- Исправлено: При повторном выполнении оператора music с одним и тем же аудиофайлом повторного воспроизведения этого файла не происходит.
- Удалено: Отдельный курсор UrqW для выбора и активации кнопок (вызывал проблемы одновременной активации двух элементов управления и был заменён на кластерную навигацию на основе стандартного системного фокуса).
- Улучшения доступности (accessibility):
- Добавлено: Текстовые метки для элементов управления панели инструментов.
- Добавлено: Текстовая метка для кнопки инвентаря в интерфейсе для экранов размера XS.
- Добавлено: Текстовый префикс для визуально выделенного слота автосохранения.
- Добавлено: Настраиваемое объявление обновления описания с помощью вспомогательных технологий.
- Добавлено: Настраиваемое объявление обновления кнопок выбора с помощью вспомогательных технологий.
- Добавлено: Настраиваемое объявление описания с помощью вспомогательных технологий при нажатии горячей клавиши (см. справку в меню).
- Добавлено: Настраиваемое объявление описания с помощью вспомогательных технологий при встряхивании устройства.
- Добавлено: Настраиваемая фокусируемость изображений с помощью клавиатуры.
- Добавлено: Ссылки на панели инвентаря, не выполняющие никаких действий, имеют атрибут aria-disabled, который информирует об отсутствии связанных действий, но не подавляет фокусируемость элемента.
- Добавлено: Обозначение для вспомогательных технологий наличия выпадающего меню у элемента инвентаря.
- Изменено: Каждая ссылка в выпадающем меню элемента инвентаря имеет роль пункта меню.
- Изменено: Текстовые метки у графических иконок плеера.
- Исправлено: Ссылки в тексте игры не фокусируются с клавиатуры, а также не имеют роль ссылки.
- Исправлено: Некорректное представление абзацев в тексте игры для программ экранного доступа.
- Исправлено: Кнопка инвентаря в интерфейсе для экранов размера XS не меняет своё семантическое состояние (свёрнуто/развёрнуто) после первой активации.
- Документация:
- Добавлено: Начата подготовка новой документации на русском и английском языке.
- Добавлено: Руководство для участников проекта (контрибьюторов) (см. файл CONTRIBUTING.md в репозитории).
- Изменено: Обновление основной русскоязычной документации.
- Инфраструктура разработки и сопровождения:
- Добавлено: Автоматизация сборки и развёртывания UrqW с каталогом игр через GitHub Actions на GitHub Pages при изменениях в master.
- Добавлено: Скрипт check-locale для проверки полноты локализации.
- Добавлено: Скрипт valid-json для валидации файла games.json.
- Добавлено: Скрипт pack-games для упаковки игр из директории games для каталога.
- Добавлено: Скрипт gen-rss для генерации RSS-канала новых игр в каталоге.
- Добавлено: Скрипт gen-license-report для генерации отчёта о лицензиях сторонних компонентов.
- Добавлено: Скрипт gen-docs для генерации документации в формате HTML.
- Добавлено: Скрипт pack-release для упаковки релизной сборки UrqW.
- Добавлено: Команда
npm run build для сборки UrqW для производственных сред с каталогом игр.
- Добавлено: Команда
npm run release для сборки UrqW для релиза без каталога игр.
- Изменено: Все игры в каталоге добавлены как подмодули из отдельных репозиториев и перепакованы с файлами manifest.json и записи iFiction.
- Изменено: Поддерживаемые плагины с примерами использования (функциональными тестами) добавлены как подмодули из отдельных репозиториев и размещены в директории quests как игровые пакеты.
- Изменено: Тесты, проверяющие корректность работы движка, перемещены в директорию quests/tests.
Версия 1.0 (от 20.01.2017)
- Первая стабильная версия.
12.10.2015
- Первая публично представленная работоспособная версия.
21.09.2015
- Начало разработки (первый коммит).