Sublime Text + QSP. QSP-Builder для Sublime Text

Sublime Text + QSP. QSP-Builder для Sublime Text

Всем привет.

В общем, тут как-то звёзды сошлись.

Вопросы Викара и попытка редизайнить свой сайт заставили ознакомиться с git и github; перелопачивание старого QSP-кода заставило пожалеть об отсутствии системы контроля версий в Qgen; а Pseudopod показал, что оказывается можно разрабатывать игры на QSP и не в QGen. Ещё до кучи я возобновил своё знакомство с Python, ну а поскольку моим любимым текстовым редактором уже многие годы остаётся Sublime Text, всё это вылилось в попытку написать скрипт вроде того, что предлагал evp когда-то (http://qsp.su/index.php?option=com_agor … ;Itemid=57).
И к моему удивлению заработал сначала скрипт, а потом мне даже удалось превратить это в почти самостоятельную Build System (ну, конечно, многое придётся прописать руками).
Получился QSP-Builder for Sublime Text и умеет он: собирать из разрозненных файлов в формате TXT2GAM файлы ".qsp" и запускать их в плеере. Таким образом осуществляется как бы прямой запуск игры (на основе только что написанных файлов) из Sublime Text. Для конвертирования правда требуется заранее установить утилиту TXT2GAM, ну и само собой плеер так же должен быть установлен заранее. В общем, кому интересно, прошу ознакомиться. Надеюсь в будущем это снимет неудобства совместной разработки игр на QSP.

https://github.com/AleksVersus/JAD_for_QSP
https://i.ibb.co/6ZNNVRH/syntaxis.pnghttps://i.ibb.co/37M7Cyg/image.pnghttps://i.ibb.co/xFdmqxQ/image.pnghttps://i.ibb.co/gPKG82Q/image.png
О проблемах, замечаниях и предложениях просьба отписываться сюда, или на Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript . За остальными ресурсами мне тяжело будет следить.

Что даёт 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, но я и правда фанат этой программы.

Изменено: aleksversus
11.Апр.21 15:48:45
Aleks Versus
воздвигатель башни
useravatar
Онлайн
1617 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Новости на сегодняшний день:
1. Билдер собирает файлы игр QSP из текстовых файлов в кодировке utf-8 и с раcширениями .qsps, .qsp-txt, .txt-qsp.
2. Написана основная часть подсветки синтаксиса QSP для Sublime Text. Неплохо справляется со всеми моими файлами:
* Мне очень нравится, как подсвечиваются комментарии, проверял на очень сложных — работает прекрасно
* Вменяемо подсвечиваются начало и конец локаций, их содержимое.
* Сейчас идёт борьба за рекурсивную подсветку во вложенных выражениях и скобках.
* Многие синтаксические ошибки уже подсвечиваются довольно адекватно.
3. Добавил скрины в шапку.

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1617 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Aleks Versus,
В планах есть как-то подсвечивать html? Ибо он в строках и всё это сливается в одно сплошное месиво sad

Oliver
Magni nominis umbra
useravatar
Offline
588 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Oliver,
На самом деле я только вчера добавил включение подсветки HTML.
(В принципе можно любую уже имеющуюся в sublime text подсветку таким же макаром встраивать. Например, сам HTML поддерживает встраивание подсветки кода JS и CSS. Единственная проблема это адекватные маркеры начала и конца таких фрагментов кода)

Что умеет подсветка синтаксиса сейчас

1. Подсветка текста между локациями, как комментариев. Так как весь этот текст игнорируется при экспорте в QSP.
2. Распознавание начала и конца локации и соответственно подсветка этих элементов.
3. Подсветка сложных многострочных комментариев.
4. Подсветка строковых констант.
5. Подсветка числовых констант, системных переменных, операторов и функций.
6. Подсветка вложенных выражений (подвыражений) в строках.
7. Подсветка основных синтаксических ошибок:
    * Лишний `$` перед именами числовых системных переменных или функций.
    * Отсутствие `$` перед именами текстовых системынх переменных и функций.
    * Звёздочка `*` перед именем операторов, кроме `*pl`, `*p`, `*nl`, `*clr`.
    * Неверное число операндов у операций типа `+`, `-`, `*`, `<`, `>` и т.д.
    * Подсветка неправильных имён переменных типа `123build`.
    * Разрыв строки кода внутри вложенного выражения.
    * Подсветка лишнего `end`, а так же `else` и `elseif` вне конструкций условий.
    * Подсветка неправильной записи `else` и `elseif` в многострочном условий.
    * Незакрытый многострочный `act` или `if` вызывает подсветку элемента "конец локации", как ошибки.
8. Подсветка HTML-кода в фигурных скобках и строках при вставке тегов `<html>`, `</html>`.
https://i.ibb.co/gPKG82Q/image.pnghttps://i.ibb.co/6RrtqJX/image.pnghttps://i.ibb.co/zSHs73D/image.pnghttps://i.ibb.co/xFdmqxQ/image.pnghttps://i.ibb.co/6ZNNVRH/syntaxis.png
Автоматический включение подсветки QSP-кода

Подсветка автоматически включается для файлов с расширениями ".qsps", ".qsp-txt", или ".txt-qsp". Если Вам нужно чтобы подсветка QSP-кода автоматически включалась для файлов с другими расширениями, пропишите в начале таких файлов строку:

Код:

QSP-Game

После слова `Game` можно поставить пробел и добавить ещё какой либо текст, например название игры или модуля.

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1617 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Aleks Versus,
О, красота. Спасибо за работу!

Oliver
Magni nominis umbra
useravatar
Offline
588 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Совершенно забыл поделиться новостями, так как отписывался в дискорде, и всё вылетело из головы. Но в соседней теме sal0mander напомнил.
Чтобы экспортировать проект из Quest Generator в текстовый вид (чтобы локации были разбиты на отдельные файлы и рассортированы по папкам), в формате TXT2GAM, был разработан скрипт на Python.
Лежит этот скрипт здесь: github/JAD_for_QSP/QBST/spliter

Разделитель для QSP-игр в формате TXT2GAM
Данный скрипт предназначен в первую очередь для того, чтобы разделять большие файлы игр, написанных в формате TXT2GAM, на локации.

Требования к файлам
Исходный файл, который будет разбиваться на различные файлы, должен быть в идеале экспортированным из Quest Generator в формате TXT2GAM.

В идеале кодировка UTF-16 с BOM-символом в начале. Либо кодировка UTF-8.

Начало локации должно записываться как:

Код:

# название_локации

Конец локации обязательно должен записываться как

Код:

--- название_локации ---------------------------------

Как использовать
Экспортируйте игру в текстовый файл формата TXT2GAM. Можно сделать это прямо из Quest Generator'а: меню "Игра - Экспорт - Текстовый файл формата TXT2GAM..."
Скопируйте получившийся текстовый файл в папку со скриптом, туда же скопируйте файл проекта с расширением .qproj. Данный файл служит опорным файлом для размещения локаций по папкам.
И экспортированный текстовый файл и файл проекта переименуйте в game.txt и game.qproj соответственно.
Запустите скрипт. На данном этапе у вас наверняка уже установлен Python, и файлы .py ассоциированы с ним. Поэтому достаточно просто попытаться открыть файл, как вы это делаете с любым другим. Если файлы скриптов не ассоциированы с Python, попробуйте щёлкнуть правой кнопкой мыши по файлу скрипта, выберите пункт "Открыть с помощью... - Выбрать другое приложение" и укажите путь к интерпретатору Python.
Может открыться окно командной строки и ненадолго зависнуть.
Результат
По завершении работы скрипта в папке со скриптом появится папка export_game, в которой будут лежать все файлы локаций, рассортированные по папкам, как это было в Quest Generator.

Имена файлов при этом будут сгенерированы автоматически из имён локаций, все запрещённые символы будут заменены на символ нижнего подчёркивания _.

Если в результате работы скрипта получатся совпадающие имена файлов, к именам файлов будут добавлены числа. То же самое касается случая, когда вы повторно запускаете скрипт в папке с уже разбитыми на файлы локациями.

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1617 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Добавлены сниппеты:
https://i.ibb.co/dJC48X1/bandicam-2021-06-06-00-10-04-287-00-00-00-00-01-14.gif
Сниппеты — это стандартные фрагменты кода, которые можно вставить, набрав ключевое слово, или часть строки кода, и нажав клавишу Tab. Переключаться между полями вставленного фрагмента так же можно с помощью клавиши Tab.

Вот какие сниппеты вы можете использовать:

newloc или последовательный ввод # (диез и пробел) - добавляет новую локацию:

Код:

 # название_локации

!@ Код, выполняемый при посещении локации
--- название_локации ---------------------------------

addobj - добавляет одну из строк кода:

Код:

 addobj "Название предмета","путь к файлу картинки/picture.jpg",позиция

addobj "Название предмета"

act - добавляет действие:

Код:

 act "Название действия":

     !@ Код действия
end

if - добавляет конструкцию условия:

Код:

 if условие_выполнено:

!@ Если условие выполнено
     !@ Код, который выполняется, если условие выполнено
end

ifelse - добавляет условие с ветвлением:

Код:

 if условие_выполнено:

!@ Если условие выполнено
     !@ Код, который выполняется, если условие выполнено
else:
!@ Если условие не выполнено
     !@ Код, который выполняется, если условие не выполнено
end

JAD_QBST v.0.3

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1617 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Внёс кое-какие изменения, но пока что только в исходники.
1. Теперь доступна вставка стандартных HTML-тегов вокруг выделенного текста по нажатию одной-дух клавиш.
2. Можно нажать Ctrl+R и это вызовет меню GOTO, которое позволит переместиться к любой локации в текущем файле (локации подтягиваются в список), или к метке (так же подтягиваются в список).
3. Можно нажать Ctrl+Shift+R и переместиться к любой локации в проекте.
4. Так же добавлена автоматическая вставка отступов, если пишешь act, loop if и т.п., а затем после двоеточия нажимаешь Enter. end напротив сокращает отступ. Таким образом автоматизируется "правильное" преформатирование.

До очередного релиза переписывать README особо не буду, но чуть-чуть поправил, так как установка теперь слегка изменилась. Горячие клавиши и система сборки теперь будут размещаться рядом со схемой подсветки, т.е. в QSP.sublime-package.

Буду думать, как автоматизировать установку.

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1617 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Отличная работа, Алекс. Продолжай в том же духе, упрощай авторам жизнь!

Oliver
Magni nominis umbra
useravatar
Offline
588 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Sublime Text + QSP. QSP-Builder для Sublime Text

Oliver,
спасибо. Если будут идеи, что добавить, или может о чём рассказать по Билдеру/Сниппетам/Подсветке, жду их здесь, в этой теме.

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1617 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
1005
Всего опросов:
14
Всего сообщений:
16790883
Всего сообщений сегодня:
2
Пользователи форума:
 
Всего пользователей:
2570
Последним зарегистрировался:
Jebcek