Quest Soft Player (QSP) language provider
Смена публикатора в VSCode Marketplace
Раньше расширение находилось тут, но из-за непонятной блокировки аккаунта (подробности — тут) расширение приходится публиковать здесь. Может быть, старый аккаунт когда-нибудь разблокируют господа из Microsoft, но в это слабо верится.
Зочем?
— А-а, зачем мне эта ерунда, если уже есть QGen?! Обчитаются своих книжечек, а потом в гаражах кодють! Такую страну про...
Согласен, если вы — гений программирования, никогда не ошибаетесь в синтаксисе и не забываете, что делают операторы/функции, всегда даете правильные названия переменным и локациями и мгновенно можете отыскать в коде всё, что душе угодно, то что вы здесь забыли? Итак:
Щито оно умеет
На лету проверять синтаксис и невменяемо орать на вас в случае ошибок

— Вопль тысячи токенов
Подсказывать, что делает та или иная функция

Переименовывать переменные и локации (F2)

Искать определения переменных/локации и их использование (F12)

Форматировать убогий код

Показывать локации

Дико тормозить на больших файлах... к сожалению.
Щито оно не умеет, но могло бы
- IntelliSense, aka умные подсказки во время набора.
- Работать с проектом. К сожалению, сейчас оно работает с каждым исходником отдельно, и те друг о друге ничего не знают, хотя счастье так близко. Такая вот драма.
Допустим, я хочу попробовать
Под Windows нужен .Net Framework >= 4.6.1 (скачать можно тут, если лень гуглить).
Под другие платформы нужен .Net Core:
Под Linux в целом написано тут, для Ubuntu в частности — тут
На время написания инструкции достаточно было выполнить:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-3.1
Далее всё гораздо прозаичнее:
Установите VS Code
Создайте новый файл с Hello World'ом:
# начало
'На первый день Byte создал QSP...'
-
Непременно сохраните его с расширением .qsps
— отныне это формат для всех исходников QSP'а, просто потому что
И VS Code любезно должен предложить поискать расширение. Смело давите "Search"
Вот то единственное, что найдется (если, конечно, у меня не появились соперники, грр), и устанавливайте
На всякий случай перезапустите VS Code (F1
-> Developer: Reload Window
)
Всё
Проделал все в точь-точь, как написано, все равно ничего не работает
А черт его знает. Лучше свяжитесь со мной по контактным данным, что написаны внизу.
Ну накодил я, что теперь-то?
Скомпилировать в .qsp
и запустить. Сделать это очень просто:
- Убедитесь, что исходник сейчас открыт
- Жмите
F1
- Введите
QSP: Build and run
По-идеи, должно скомпилироваться в то же место, что и ваш исходник и запуститься.
Важно: исходник должен быть в кодировке Cyrillic (Windows 1251), иначе, например, классический плеер станет отображать кракозябры, вместо нормального текста. О том, как сменить кодировку, сами найдете, дети интернетов.
По-хорошему, я мог бы внедрить Watcher, чтобы он компилировал исходник каждый раз, когда его сохраняют, но обойдетесь.
У меня уже есть игра, но скомпилирована в .qsp
, как ее декомпилировать?
Запускаете (ох и ах) QGen. Жмете Игра
-> Экспорт
-> Текстовый файл формата TXT2GAM...
и, собственно, сохраняете, куда душа пожелает. Не забудьте сменить расширение файла на .qsps
.
Кстати, существует отдельная программа qsp2txt, но там же сообщением ниже пишут:
Эта утилита экспортит не все локации. Если в игре много локаций, она бесполезна.
Так что использовать на свой страх и риск.
По-хорошему, нужно бы выдрать из исходников QGen'а этот функционал, но вы уже знаете ответ :wink:
Важно
Поскольку добровольцем на испытания вызвался лишь один человек, то черт его знает, заработает ли оно вообще у вас. У меня-то, как у автора, всегда всё работает, ха-ха! Но делаем для других с любовью, так что, пожалуйста, все ошибки, недомогания и вопросы шлите на форум или сюда или свяжитесь со мной по нику Pseudopod#4902 в Discord'е.
Благодарности
- Garrett Fletcher, спасибо, что помог разобраться в этом языке. Без тебя я бы вряд ли справился. Да и приятно было пообщаться с родной душой и обменяться идеями (чего только один QSP на Lisp'е стоит!)
- Бари, спасибо, что отвлекал своими философствованиями, но без этого я бы перегорел
- Ionide-Fsharp, которыми вдохновился и у них же беспардонно стащил реализацию JSON-RPC, да и вообще всё стащил, чего уж греха таить. Но клятвенно поклялся, что сделаю по-своему!
Как это скомпилировать?
— Я не доверяю тебе, потому сейчас пересмотрю твой код...
Снимает шляпу: чтобы копаться в этом нужно быть действительно не из робкого десятка.
— ...скомпилирую его, а потом запущу, так уж и быть, дурак...
— Ладно, нужен dotnet 3.1.200, а дальше запустить *невнятное бормотание*...
Будущее проекта
Его нет: всё — тлен... пока что.