Форум » » Тем кто пользуется txt2gam (использование препроцессора) » Ответить

Тем кто пользуется txt2gam (использование препроцессора)

Ntropy: При написании игры без использования QGen, исходный текст не зашифрован и может редактироваться любым текстовым редактором. Это также даёт возможность обработать текстовый файл игры перед тем как он будет превращен в qsp-файл, например удалить отладочный код или не используемые фрагменты текста, также собрать один файл из нескольких мелких. В мире программирование на C эта возможность называется "препроцессинг" и выполняется утилитой cpp, которая идет в пакете с компиляторами C. В нашем случае удобно использовать утилиту которая не привязана к языку С и и может быть использована отдельно от компилятора — GPP для Win32. Что бы воспользоваться этим, нужно добавить в текст специальные инструкции и обработать текст утилитой GPP, после такой обработки текст уже не будет содержать инструкции и может быть преобразован в qsp-файл без ошибок. Инструкции (основные): #define <имя> — определить флажек, на который можно будет позже ссылаться #define <имя> <значение> — определить значение, которое можно будет позже ссылаться #undef <имя> — удаление значения, или флажка #ifdef <имя> — если флаг или значение определены, то весь текст после этого условия до #endif или до #else будет выведен в итоговый файл #else — окончание фрагмента регулируемого инструкцией #ifdef, последующий текст выводится если условие в #ifdef не выполнено #endif — окончание фрагмента регулируемого инструкцией #ifdef или #else #ifndef — аналогично #ifdef, однако проверяется что флаг или значение не определены, весь текст после этого условия до #endif или до #else будет выведен в итоговый файл. #include "<имя файла>" — в выходной файл вставляет текст из указанного файла (из той же папки), если файл содержит инструкции он также будет обработан Поскольку в txt2gam по умолчанию для обозначения начала локации используется символ "#" важно что бы имена локаций не назывались бы по имени инструкции (define, ifdef, и т.п.). Также не стоит включать инструкции в комментарии и строки, лучше их записывать на отдельных строчках. Доступны также и другие инструкции, о них можно узнать в документации или спросить в этой теме. Для запуска текста игры на обработку нужно открыть текстовый терминал и набрать команду: [pre2]gpp.exe <входной файл> -o <выходной файл>[/pre2] Другие ключи запуска можно узнать запустив как: gpp.exe --help Приведу пример использования Исходный файл: [pre]#define HTML # Start #ifdef HTML USEHTML 1 #endif - Start[/pre] после обработки в выходной файл запишется [pre]# Start USEHTML 1 - Start[/pre] Если же убрать инструкцию #define например заменив на #undef то после обработки в выходной файл запишется [pre]# Start - Start[/pre] То есть текст закрытый регулируемый инструкцией #ifdef был вымаран из конечного результата. Прошу задавать вопросы в этой теме. P.S. Документация на английском и домашний сайт GPP

Ответов - 0



полная версия страницы