Пакет QSP для Sublime Text (подсветка синтаксиса и билдер)
Всем привет.
В общем, тут как-то звёзды сошлись.
Вопросы Викара и попытка редизайнить свой сайт заставили ознакомиться с git и github; перелопачивание старого QSP-кода заставило пожалеть об отсутствии системы контроля версий в Qgen; а Pseudopod показал, что оказывается можно разрабатывать игры на QSP и не в QGen. Ещё до кучи я возобновил своё знакомство с Python, ну а поскольку моим любимым текстовым редактором уже многие годы остаётся Sublime Text, всё это вылилось в попытку написать скрипт вроде того, что предлагал evp когда-то (https://qsp.org/forum/777-sovmestnaa-razrabotka).
И к моему удивлению заработал сначала скрипт, а потом мне даже удалось превратить это в почти самостоятельную Build System (ну, конечно, многое придётся прописать руками).
Получился QSP-Builder for Sublime Text и умеет он: собирать из разрозненных файлов в формате TXT2GAM файлы “.qsp” и запускать их в плеере. Таким образом осуществляется как бы прямой запуск игры (на основе только что написанных файлов) из Sublime Text.
Сейчас для установки вам достаточно:
1. Скачать архив с последним релизом со страницы релизов https://github.com/AleksVersus/JAD_for_QSP/releases
2. Распаковать архив и скопировать файл QSP.sublime-package в папку Packages в месте установки Sublime Text (Например, в C:\Program Files\Sublime Text\Packages)
3. Profit. Подсветка синтаксиса QSP и билдер установлены в Sublime Text.
Предварительно должен быть установлен по особому пути плеер, либо в файле проекта прописан путь к нужному плееру. Внимательно читайте документацию: https://github.com/AleksVersus/JAD_for_QSP#readme
https://github.com/AleksVersus/JAD_for_QSP



О проблемах, замечаниях и предложениях просьба отписываться сюда, или на aleksversus@mail.ru. За остальными ресурсами мне тяжело будет следить.
Что даёт QSP-Builder для Sublime Text:
- Контроль версий. Поскольку все части игры хранятся в виде текстовых файлов (исходного кода), они легко обрабатываются системами контроля версий, например GIT. Таким образом, вы можете проследить все этапы создания вашей игры, и быстрее находить ошибки.
- Совместная разработка. Вы можете организовать общий репозиторий, например на GitHub, и разрабатывать игру командой, при этом видя, кто и какие изменения вносит в проект.
- Удобство модульной разработки. Вы можете одновременно в одной программе работать над всеми модулями вашей игры, или открывать для каждого модуля своё окно, или пользоваться любыми иными возможностями Sublime Text, а затем собрать и запустить игру, нажав всего одну комбинацию клавиш. QBST соберёт все нужные вам файлы “.qsp” и запустит игру в плеере по нажатию пары клавиш.
- Один редактор - много плееров. В специальном файле проекта можно для каждой игры указать собственный плеер. Таким образом, одну игру вы можете разрабатывать например для qSpider, одну для Quest Navigator, а другую для классики. И вам не придётся ставить себе три Quest Generator с разными настройками для плееров.
- Sublime Text. Sublime Text умеет подсвечивать HTML, JavaScript и CSS, что очень сильно облегчает разработку игр для Quest Navigator и qSpider. Если вам сильно не хватало проверки орфографии в QGen, то здесь вы можете себе её сделать. Поиск и замена лишь по определённым файлам и папкам (а значит и локациям)? В Sublime Text есть и это. Сложно придумать, что умеет QGen и не умеет Sublime Text — гораздо проще придумать, что умеет ST и не умеет Quest Generator.
В конечном счёте всё превратилось в рекламу Sublime Text, но я и правда фанат этой программы.
Оказалось, что написать скрипт для конвертирования было проще, чем я думал. Поэтому выпускаю новый релиз.
https://github.com/AleksVersus/JAD_for_QSP/releases/tag/v.0.6
(Не форматирую, лень.)
Изменения в билдере и пакете для SublimeText:
Вспомогательные скрипты:
[2022.07.01] Багфикс. Ругался на отсутствие .qproj.
[2023.02.22] Написаны конвертеры в одну и в другую сторону. Все подключаемые модули вынесены в пакет qSpy.
[2022.07.24] Исправлена ошибка в препроцессоре, которая не позволяла использовать имена меток, состоящие из уже существующих имён меток.
Описание вспомогательных скриптов в папке qSpy.
Подсветка синтаксиса:
[2022.07.18] Багфикс. Неверно подсвечивались ключевые слова в составе других слов.
[2022.07.24] Багфикс. Неверно подсвечивались операторы +=, -= и т.п. Не подсвечивалась, как конец локации строка с отступом и -, теперь подсвечивается, как ошибка.
[2022.07.24] Изменены горячие клавиши для вызова сниппетов HTML-форматирования. Скорее всего я их совсем исключу:
ctrl+alt+b - Оборачивает выделенный текст в теги <b> и </b>
ctrl+alt+i - Оборачивает выделенный текст в теги <i> и </i>
ctrl+alt+p - Оборачивает выделенный текст в теги <p> и </p>
ctrl+alt+f - Оборачивает выделенный текст в теги <font color=#000000 size=0> и </font>
ctrl+alt+d - Оборачивает выделенный текст в теги <div> и </div>
ctrl+alt+h - Оборачивает выделенный текст в теги <h1>-<h6> и </h1>-</h6>
alt+h - Оборачивает выделенный текст в теги <qhtml> и </qhtml>
[2022.08.30] Добавлен сниппет цикла. Вызывается набором ключевого слова loop.
Возможны ошибки с кодировками. Вроде бы всё проверил, но не уверен, что действительно всё.
Билдер перенесён внутрь пакета QSP и подключается к Sublime Text автоматически как плагин.
То есть. Теперь не нужно устанавливать отдельный интерпретатор Python, не нужно править пути ни в самом билдере, ни в файле настроек. Просто:
- Качаете данный релиз github.com/JAD_QBST_v.0.7.rar
- Распаковываете архив
- Копируете QSP.sublime-package в папку Packages установленного Sublime Text (например в C:\Program Files\Sublime Text\Packages)
- Билдер запускается из Sublime Text сочетанием клавиш Сtrl+F5, сам собирает вам игру и запускает в плеере (плеер должен быть предварительно установлен, иначе игра соберётся, но не запустится).
Ну и внимательно читайте документацию, по-прежнему нужен файл проекта, если вы пишете каждую локацию в отдельном файле. Если пишете всё в одном файле, игра соберётся и без файла проекта.
Новый релиз пакета QSP для Sublime Text v.0.8
Изменены различные scopes для подсветки синтаксиса. Они стали более адекватными семантике Sublime Text.
Добавлены в основное меню Tools вспомогательные инструменты, облегчающие конвертирование игр и перенос проекта игры с Quest Generator на Sublime Text
Конвертеры позволяют конвертировать одиночные файлы. QSP-файл можно сконвертить в qsps и наоборот.
Сплиттер одиночного файла позволяет сконвертировать QSP-файл и/или разбить получившийся qsps-файл на отдельные файлы, каждый из которых будет содержать только одну локацию. При этом, если рядом находится одноимённый файл .qproj файлы-локации будут рассортированы по папкам соответственно этому .qproj.
Сплиттер проекта делает то же самое, только обрабатывает все файлы QSP или qsps в папке.
Установка не изменилась. Нужно просто скопировать QSP.sublime-package из архива в папку с установленным Sublime Text в подпапку Packages.
https://github.com/AleksVersus/JAD_for_QSP/releases/tag/v.0.8
Не публиковал здесь новостей о выходе новых версий пакета QSP для Sublime Text, поскольку изменения были незначительны и связаны в основном с багфиксами. Но теперь пришло время объявить, что
вышла версия 0.11 пакета QSP для Sublime Text.
Со страницы релизов вы можете скачать как отдельный установочник пакета, так и архив, в котором лежат: установочник, инструкция и примеры в папке [disdocs].
Вот список основных изменений, не считая версии 0.9:
* Добавлены все операторы, функции и системные переменные в списки автоподстановок.
* При создании новой локации редактор подскажет вам, что эта локация уже существует в проекте (пока что полноценно работает только на новых проектах)
* Различные мелкие правки алгоритмов и синтаксиса.
* Добавлен инструмент для быстрой генерации проекта.
* Создан установочник для пакета. Теперь пользователям Windows пакет можно ставить в несколько кликов.
* Добавлен инструмент для быстрого создания файла игры.
* Некритические ошибки теперь тоже выводятся в консоль.
* Добавлены подсказки по ключевым словам в статусбаре.
* Исправлены scopes и списки Символов для удобного поиска названий локаций и меток.
* Добавлен файл рабочего пространства для проекта QSP `qsp-project-workspace.json` — не удаляйте его.
* Добавлена автоподстановка названий локаций при вводе конструкции неявного вызова функций.
* Удалены сниппеты для оборачивания текста в HTML-теги.
Перед установкой новой версии пакета строго рекомендуется удалить старую.
Так же очень рекомендую прочитатьинструкцию, или, если вы это уже сделали, хотя бы новые разделы.
Пакет QSP для Sublime Text, версия 0.13.
Исправления:
- исправлены ошибки автоподстановки имён локаций.
- устранено подтягивание в workspace локаций из не сохранённых файлов
- исправлены ошибки в подсветке неизвестного действия (ложная подсветка перед ключевыми словами)
- исправлены ошибки в подсветке унарного минуса.
- исправлена некорректная подсветка “склеившихся” системных переменных. Теперь они подсвечиваются, как ошибка.
- обновлена подсветка подвыражений в строках.
- исправлены некоторые ошибки в логике плагина.
Новое:
- Добавлена подсветка локальных и глобальных переменных в новых инструментах Analyse
- Добавлен поиск повторяющихся имён локаций в новом инструменте Analyse
- Всплывающее окно при вводе повторяющегося имени локации или метки заменено на аннотацию.

Пакет QSP для Sublime Text v.0.15
Основным изменением в данном релизе стало внедрение конвертера QGC от studentik, что ускорило сборку проектов в несколько раз.
Пакет QSP для Sublime Text, v.0.16
Релиз, как всегда, доступен на гитхабе
Подсветка обновлена, поддерживаются нововведения в синтаксисе для плееров 5.9.0.
Ещё появился новый параметр в qsp-project.json, который называется assets. Этот параметр позволяет автоматически копировать файлы из папок с исходниками в релизные папки.
Пакет QSP для Sublime Text, v.0.18
Если подзабыли, как устанавливать.
Масштабный рефакторинг и переписывание отдельных модулей плагина, как подготовка к написанию анализатора кода.
**Исправления:**
- Аннотация типов и масштабный рефакторинг.
- Полностью переписаны конвертер и препроцессор, встроенные в плагин.
**Новое:**
- Работа с базовыми описанием и действиями согласно нового формата **TXT2GAM**.
- Препроцессор теперь умеет выводить ошибки, допущенные в директивах или базовом синтаксисе QSP.
- Новый параметр для модулей ‘start_qsploc_file’, позволяющий указать, локации из какого файла будут первыми в конечной игре/модуле. Этот параметр позволяет игнорировать порядок файлов в элементах ‘files’ и ‘folders’ и всегда собирать модуль с одними и теми же локациями в начале. Не влияет на обработку игры препроцессором. Препроцессор по-прежнему “читает” файлы сначала из элемента ‘files’, и лишь затем из элемента ‘folders’, что позволяет подключать qsps-файлы без локаций с одними лишь командами препроцессора. **Большое спасибо, devgor88, за первичную реализацию параметра и предложенный пулреквест**.
**Не исправлено:**
- Подвисания, когда в Sublime Text открывается большой проект. Это связано со сканированием всех файлов проекта и обновлением их в WS. Пока что думаю, как это победить.