Инструменты пользователя

Инструменты сайта


help:txt2gam

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:txt2gam [2017/09/12 19:40]
aleks_versus
help:txt2gam [2026/02/14 17:34] (текущий)
aleks_versus [Дополнительная информация и полезные ссылки:]
Строка 1: Строка 1:
-Работа с утилитой TXT2GAM+[[help:​debugger|Назад: Отладчик]]
  
-Top Previous Next+====== TXT2GAM. Краткое руководство ======
  
-Программа "​TXT2GAM"​ (''​"txt2gam.exe"''​) предназначена для ​создания ​игр под платформу QSP в обычном текстовом редакторе.+Утилита "**TXT2GAM**" ("''​txt2gam.exe''​") предназначена для ​конвертирования ​текстовых файлов,​ написанных в специальном формате, в файлы QSP-игр "''​.qsp''"​. Таким ​образом вы можете создавать игры ​в обычном текстовом редакторе, а затем конвертировать их в обычные игры.
  
-Формат файла, обрабатываемого ​утилитой, представлен ниже.+ * [[https://​qsp.org/​attachments/​txt2gam011.zip|Скачать утилиту для Windows]]
  
 + * [[help:​txt2gam_linux|Сборка TXT2GAM на Linux]]
  
 +===== Формат TXT2GAM (QSPS) =====
  
-Начало локации обозначается ​символом "#"​после которого пишут название локации. Затем, построчно, необходимые операторы, а заканчивается локация символом "​-"​ (с новой строки), после которого ​может идти всё, что угодно (в том числе ничего)Следующая локация опять ​начинается ​с символа "#" ​и т.д.+Формат **TXT2GAM** так же называется ​форматом **QSPS**а текстовые файлы, записанные ​в этом формате и имеющие расширение ​"''​.qsps''", ​называются ​qsps-файлами.
  
-Пример исходного файла:+Использовать qsps-файлы предпочтительнее по трём причинам:​ 
 + * воспроизведение таких файлов поддерживается плеером **[[help:​qspider|qSpider]]**;​ 
 + * расширение для **[[https://​github.com/​gretmn102/​QSP-VSCode/​blob/​master/​README.md|MS Visual Studio Code]]** поддерживает подсветку синтаксиса qsps-файлов; 
 + * в **[[https://​github.com/​AleksVersus/​JAD_for_QSP|пакете для Sublime Text]]** встроена подсветка синтаксиса qsps-файлов.
  
-<sxh qsp>#Начало+Как было отмечено выше, файлы в формате **TXT2GAM** — это обычные текстовые файлы, в которых мы размещаем код QSP, при этом данный код нужно записывать по определённым правилам.
  
-'​It''​s only test of new utility.'​+==== Начало и конец локации ====
  
-'That is all.'+Начало локации отмечается символом ​''​**#​**''​ (решётка/​диез),​ после которого должен стоять пробел и название локации. Например так:
  
-act 'Далее':+<sxh qsp> 
 +# начало 
 +</​sxh>​
  
-goto 'next'+Конец локации обозначается двумя символами "​дефис" ​''​--''​ в отдельной строке. После этого в той же строке могут идти любые символы,​ например,​ снова название локации:​
  
 +<sxh qsp>
 +-- начало
 +</​sxh>​
 +
 +Между началом и концом локации записывается обычный код QSP, как если бы вы его писали в поле "​**Выполнить при посещении**"​ редактора **Quest Generator**. Вот пример кода в формате **TXT2GAM** с двумя локациями:​
 +
 +<sxh qsp>
 +# Начало
 +'​It''​s only test of new utility.'​
 +'That is all.'
 +act '​Далее':​
 +   goto '​next'​
 end end
 +-- (конец локации)
 + 
 +# next
 +$s='​Это последняя локация примера.'​
 +loop local i = 1 while i<​=len($s) step i += 1:
 +   *p $mid($s,​i,​1)
 +   wait 200
 +end
 +*nl & '​Это всё.'​
 +--
 +</​sxh>​
  
-- (конец локации)+Между локациями в таком файле может быть записан любой текст, он не попадёт в конечный файл игры. Поэтому вы можете помещать туда различные ​комментарии, команды препроцессора ​и другой сопроводительный текст.
  
 +Поскольку концом локации считается строка,​ начинающаяся с ''​--'',​ будьте внимательны при написании игры.
  
 +Так как, если вы пишете код в **Quest Generator**,​ такая строка,​ записанная в коде локации,​ хотя и будет вызывать ошибку,​ но всё же не сломает локацию. Однако,​ если вы сконвертируете игру с подобной ошибкой в qsps, а затем — обратно в игру, весь код локации после такой ошибочной строки потеряется.
  
-#next+<sxh qsp> 
 +начало 
 +# начало 
 +"​Какой-то код. Много-много кода 
 +Этот код попадёт в локацию"​ 
 +-- 
 +"А вот этот код не попадёт в локацию"​ 
 +-- начало (хотим,​ чтобы конец локации был здесь) 
 +  
 +# локация 2 
 +! какой-то код 
 +-- локация 2 
 +</​sxh>​
  
-$s='​Это последняя локация ​примера.'+Если не закрыть локацию строкой, ​начинающейся с ''​**--**'',​ новую ​локацию открыть будет нельзя, а значит строка, начинающаяся с символа ''​**#​**''​ может вызвать ошибку "​Неизвестное действие"​ в конечной игре:
  
-i=1+<sxh qsp> 
 +# начало 
 +"​Выводим текст"​ 
 +# локация 2 
 +"​Забыли закрыть локацию перед открытием новой"​ 
 +- локация 2 
 +</​sxh>​
  
-:loop+==== Базовое описание и базовые действия ====
  
-if i<​=len($s):+Если в **Quest Generator** вы использовали не только поле "​Выполнить при посещении",​ но так же поля "​Базовое описание"​ и "​Базовые действия",​ содержимое этих полей при экспорте игры в формат **TXT2GAM** будет сконвертировано в обычный код QSP, но размещённый между комментариями ''​! BASE''​ и ''​! END BASE''​ в самом начале кода локации. При этом:
  
-*p mid($s,i,1)+ Каждое действие из поля "​Базовые действия"​ преобразуется в многострочное действиекак если бы оно было записано в поле "​Выполнить при посещении"​. 
 + * Весь текст из поля "​Базовое описание"​ будет строкой для оператора "''​*P''"​.
  
-wait 200+Вот как это может выглядеть:​
  
-i=i+1+<sxh qsp> 
 +# Начало 
 +! BASE 
 +*P '​Укузя ​1.2
  
-jump '​loop'​+Привет! Вашему вниманию предоставляется небольшой квест про Укузю. Кто она такая, неизвестно.
  
-end+Если Вы прошли первую часть игры, то можно загрузиться.'​ 
 +ACT '​Начать!':​ 
 +   gosub '​menu'​ 
 +   goto '​norka'​ 
 +END 
 +ACT '​Проект':​ 
 +   goto '​proect'​ 
 +END 
 +ACT '​Загрузить':​ 
 +   goto '​saves'​ 
 +END 
 +! END BASE 
 +Fcolor = RGB(248,​194,​240) 
 +Bcolor = RGB(1,​0,​0) 
 +if nach = 0: msg '​Совет:​ Разверните окно на весь экран'​ & nach=1
  
-*nl & '​Это всё.'​+-- Начало --------------------------------- 
 +</​sxh>​ 
 + 
 +Как видите,​ в базовом описании был текст из нескольких строк, а в базовых действиях было создано три действия. Всё это сконвертировалось в обычный QSP-код, заключённый между комментариями ''​! BASE''​ и ''​! END BASE''​. 
 + 
 +Далее для удобства мы этот код с комментариями будем называть //​Базовым блоком//​. 
 + 
 +При конвертировании из формата ​**TXT2GAM** обратно в игру, происходит обратный процесс. 
 + 
 +Если в коде локации присутствовал //​Базовый блок// (комментарии ​''! BASE''​ и ''​! END BASE'',​ между которыми вы разместили код QSP), код этого блока будет преобразован в базовое описание и базовые действия локации в конечной игре. 
 + 
 +Однако,​ тут есть нюанс. 
 + 
 +Конвертер распознаёт только действия и оператор ''​*P'',​ добавленные в //​Базовый блок//. То есть все остальные операторы и выражения будут проигнорированы. 
 + 
 +Более того, будут проигнорированы все строки для оператора ''​*P'',​ заключённые не в кавычки,​ а так же все действия,​ названия которых не заключены в кавычки,​ или формируются динамическим способом. 
 + 
 +Вот наглядный пример:​ 
 + 
 +<sxh qsp> 
 +! BASE 
 +*PL "Этот текст не попадёт ​в Базовое описание, потому что используется неверный оператор."​ 
 +*P {Оператор верный,​ но текст записан в фигурных скобках.} 
 +*P "А этот текст попадёт в Базовое описание.
 + 
 +ACT $action_name:​ 
 +   ! Это действие не попадёт в Базовые действия,​ потому что 
 +   ! его название указано не константой 
 +END 
 +! END BASE 
 +</​sxh>​ 
 + 
 +Если в файле формата **TXT2GAM** в коде локации вы создали несколько //​Базовых блоков//,​ то — при конвертировании — в Базовое описание и Базовые действия будут добавлены только текст и действия из первого //​Базового блока//​. 
 + 
 +===== Использование утилиты TXT2GAM ===== 
 + 
 +**TXT2GAM** — это консольная утилита,​ т.е. она запускается командами из консоли,​ например из командной строки Windows. 
 + 
 +(Ознакомиться с основными командами командной строки вы можете в обучающей статье [[https://​sonikelf.ru/​vvodnaya-statya-po-rabote-v-konsoli-chto-takoe-konsol-komandy-konsoli-i-prochee-takoe-raznoe-cmd/​|"​Что такое консоль,​ команды и прочее такое разное — CMD"​]]). 
 + 
 +Пример работы с утилитой:​ 
 + 
 +<​sxh>​ 
 +txt2gam.exe game.txt game.qsp 
 +</​sxh>​ 
 + 
 +Здесь: "''​game.txt''"​ — исходный файл вашей игры, написанный в формате **TXT2GAM**;​ "''​game.qsp''"​ — конечный файл, в котором будет сохранена ваша игра. 
 + 
 +Предположим,​ вы написали игру в текстовом редакторе,​ и теперь она у вас лежит в виде файла "''​game.txt''"​ на диске "''​D:''"​ в папке "''​QSP\Games\myCoolGame''"​. 
 + 
 +Для удобства скопируйте утилиту **TXT2GAM** (т.е. файл "''​txt2gam.exe''"​) в папку с игрой. Теперь для конвертирования игры вам нужно сделать следующее:​ 
 + 
 + - Откройте консоль 
 + - Перейдите на диск "''​D:''",​ введя команду ''​**D:​**''​ в командной строке и нажав клавишу "​Enter"​. 
 + - Перейдите в папку с вашей игрой с помощью команды **cd**. В нашем примере это делается так ''​**cd "​QSP\Games\myCoolGame"​**''​ 
 + - Запустите утилиту **TXT2GAM**,​ указав в качестве параметров сначала исходный файл вашей игры (т.е. "''​game.txt''"​),​ а затем название файла, который хотите получить,​ например "''​myCoolGame.qsp''":​ 
 +<​sxh>​ 
 + txt2gam.exe game.txt myCoolGame.qsp 
 +</​sxh>​ 
 + 
 +Утилита поддерживает полные пути к файлам,​ поэтому вы можете использовать одну утилиту для конвертирования разных игр: 
 + 
 +<​sxh>​ 
 +txt2gam.exe "​D:​\QSP\Games\myCoolGame\game.txt"​ "​D:​\QSP\releases\myCoolGame\myCoolGame.qsp"​ 
 +</​sxh>​ 
 + 
 +Для получения дополнительной информации об утилите,​ запустите её в консоли без параметров:​ 
 + 
 +<​sxh>​ 
 +txt2gam.exe 
 +</​sxh>​ 
 + 
 +Если указать ключ ''​**u**'',​ исходный файл будет обрабатываться как Unicode-файл (кодировка **UCS-2 LE** / **UTF-16 LE**): 
 + 
 +<​sxh>​ 
 +txt2gam.exe game.txt myCoolGame.qsp u 
 +</​sxh>​ 
 + 
 +===== Дополнительные возможности утилиты =====
  
--</​sxh>​+==== Использование ====
  
 +Общий вид команды для консоли:​
  
-Пример запуска утилиты:​+<​sxh>​ 
 +txt2gam [txt file] [output file] [options] 
 +</​sxh>​
  
 +==== Опции. [Options] ====
  
 + * ''​a'',​ ''​A''​ — режим ANSI. По умолчанию утилита работает в режиме Unicode (**UTF-8**, **UCS-2** / **UTF-16**).
 + * ''​o'',​ ''​O''​ — сохранить игру в старом формате ("''​.gam''"​). По умолчанию используется новый формат ("''​.qsp''"​).
 + * ''​s[string]'',​ ''​S[string]''​ — вместо ''​[string]''​ нужно указать строку,​ с которой начинаются ваши локации. Т.е. это строка,​ которую вы можете использовать вместо ''#'',​ если это необходимо.
 + * ''​e[string]'',​ ''​E[string]''​ — вместо ''​[string]''​ нужно указать строку,​ которой будет отмечаться конец локации. Т.е. это строка,​ которую вы можете использовать вместо ''​--'',​ если это необходимо.
 + * ''​p[pass]'',​ ''​P[pass]''​ — вместо ''​[pass]''​ укажите пароль,​ который хотите установить на игру. По умолчанию ''​**NO**''​. Если пароль содержит пробелы,​ заключите его в кавычки.
 + * ''​c'',​ ''​C''​ — конвертировать текстовый файл в игру (режим по умолчанию).
 + * ''​d'',​ ''​D''​ — конвертировать игру в текстовый файл формата **TXT2GAM**.
 + * ''​t'',​ ''​T''​ — извлечь строки из текста. ​   ​
 + * ''​q'',​ ''​Q''​ - извлечь строки кода (между "​{"​ и "​}"​) из текста.
  
-''​txt2gam.exe game.txt game.gam''​+==== Примеры вызова:​ ====
  
 +<sxh>
 +txt2gam.exe file.txt gamefile.qsp pMyPassword
 +txt2gam.exe file.txt gamefile.qsp
 +txt2gam.exe file.txt gamefile.qsp a
 +txt2gam.exe gamefile.qsp file.txt d pMyPassword
 +txt2gam.exe file.txt gamefile.qsp o pMyPassword
 +txt2gam.exe file.txt gamefile.qsp o e@ pMyPassword
 +txt2gam.exe file.txt gamefile.qsp u o p"My Password"​
 +txt2gam.exe file.txt gamefile.qsp o
 +txt2gam.exe file.txt gamefile.qsp o e@
 +txt2gam.exe file.txt gamefile.qsp s@ e~
 +txt2gam.exe file.txt gamefile.qsp s@ e~ o
 +txt2gam.exe file.txt gamefile.qsp t u
 +</​sxh>​
  
  
-Здесь: "​game.txt"​ - имя исходного файла, "​game.gam"​ - имя файла, в котором будет сохранена игра. 
  
 +===== Дополнительная информация и полезные ссылки:​ =====
  
 + - В настоящий момент общепринятым расширением для текстовых файлов формата **TXT2GAM** можно считать "''​.qsps''"​. "​Просто потому что"​ (с) [[https://​github.com/​gretmn102/​QSP-VSCode#​допустим-я-хочу-попробовать|Pseudopod]].
 + - Есть готовая [[help:​txt2gam_emeditor|инструкция]] по подключению утилиты **TXT2GAM** к редактору **EmEditor**.
 + - Существует утилита **qsp2txt** для конвертирования игр в обратную сторону — из файлов игр "''​.qsp''"​ в текстовые файлы формата **TXT2GAM**. Исходная ссылка утеряна,​ можно скачать в [[https://​mega.nz/​folder/​jXwXlSRJ#​TF7P-soOJOWIC8MrBA-L1A|архиве программ QSP от Aleks Versus]].
 + - Существовали разные [[https://​qsp.org/​index.php?​option=com_agora&​task=topic&​id=686&​Itemid=57|подсветки синтаксиса для **Notepad++** и **AkelPad**]],​ но были утеряны.
 + - Подсветка синтаксиса для Sublime Text входит в **[[https://​github.com/​AleksVersus/​JAD_for_QSP|пакет QSP для Sublime Text]]**. В этот же пакет встроен плагин с конвертерами qsps и QSP-файлов в любую сторону.
 + - Существует подсветка для [[https://​qsp.org/​components/​com_agora/​img/​members/​20/​notepad-qsp.zip|Notepad++ от Олегуса]]. С этой подсветкой ассоциируются текстовые файлы с расширением "''​.tqsp''",​ однако вы можете отредактировать файл подсветки,​ указав нужное вам расширение.
 + - Werewolf разработал утилиту для конвертирования QSP-файла в текстовый формат (аналог **qsp2txt**),​ которая работает онлайн:​ [[https://​codepen.io/​srg-kostyrko/​full/​QWqdwxv|https://​codepen.io/​srg-kostyrko/​full/​QWqdwxv]]. Так же он разработал специальные пакеты для конвертирования файлов в любую сторону:​ [[https://​github.com/​QSPFoundation/​converters|https://​github.com/​QSPFoundation/​converters]].
 + - Существует учебник по написанию игр на QSP, если вы начинаете сразу с работы в текстовом редакторе:​ [[help:​txt2gam_manual|Пишем QSP-игру в текстовом редакторе]].
 + - Можно дополнительно обрабатывать qsps-файлы специальными программами перед тем, как конвертировать в файл игры QSP. Эти программы называются препроцессорами. В 2010 году NTROPY написал статью на эту тему: [[help:​txt2gam_preprocessor|"​Препроцессор при использовании TXT2GAM"​]]
  
-PS: +[[help:analyzer|Вперёд: Анализатор кода]]
-  - Между локациями может находиться любой текст, не начинающийся с символа "#"​. ​В результирующем файле ​данный текст присутствовать не будет. +
-  - При указании параметра "​u"​ в командной строке, исходный файл будет обрабатываться как Unicode-файл (кодировка UCS-2 LE / UTF-16 LE). +
-  - Для получения дополнительной информации об утилите,​ запустите её в консоли без параметров.+
  
help/txt2gam.1505245205.txt.gz · Последние изменения: 2017/09/12 19:40 — aleks_versus