Перейти к основному содержимому

F.A.Q

Список наиболее часто задаваемых вопросов и ответы на них.

Общие вопросы​

Что такое текстовые игры, текстовые квесты, интерактивная литература?​

http://ifwiki.ru/FAQ

Что такое QSP? Что это за сайт QSP.org?​

QSP - это система разработки текстовых игр. Проще говоря, с помощью QSP можно играть в текстовые игры и создавать собственные.

Подробнее см. здесь - Информация о QSP

Хочу написать свою текстовую игру, с чего начать?​

  1. Если у вас еще не установлен плеер QSP, скачайте и установите "Набор игрока".
  2. Скачайте справку и редактор QGen со страницы "Разработчикам".
  3. Откройте Учебник по QSP для редактора Qgen и следуйте его инструкциям.

Что такое AeroQSP?​

Ответ здесь.

Где взять исходный код?​

qsp.dll, txt2gam, AeroQSP, справка - https://github.com/QSPFoundation/qsp

Редактор игр QGen - http://my-trac.assembla.com/q-gen (нынешняя версия на wxWidgets), https://github.com/rrockru/QtQGen (будущая версия на Qt)

Под какой лицензией распространяется плеер QSP? А игры?​

Полезно будет знать для всех. Байт отвечает на вопросы по лицензиям на плеер и игры QSP.

№ 1

Вопрос: Лицензия на платформу QSP (в частности плеер). Какие права есть у автора игры в части распространения (в том числе и коммерческое) плеера совместно со своей игрой? И все ли авторы версий для разных ОС (windows, linux, mac os и т.п.) едины в этом вопросе?

Ответ: Классический плеер - под GPL, либа под LGPL. Другие плееры могут быть под своими лицензиями. Если меняем исходники либы или классического плеера, то нужно выкладывать модифицированные исходники. Распространять существующий плеер можно как угодно, в т.ч. коммерчески.

№ 2

Вопрос: Лицензия на игру под QSP. Какие права есть у авторов самой игры в части распространения (в том числе и коммерческое)?

Ответ: Лицензию на игру указывает сам автор игры. Плеер и игры - разный контент. Соответственно, автор может как угодно распространять игру.

№ 3

Вопрос: Какие права есть у авторов платформы QSP в части игр? Оставляют ли они за собой право без согласования с автором распространять игру (в том числе и на возмездной основе) либо получать доход от безвозмездного предоставления доступа к игре, например, от рекламы и т.п.? И все ли авторы версий для разных ОС (windows, linux, mac os и т.п.) едины в этом вопросе?

Ответ: См. п.2. Если автор игры специально не оговаривает условия распространения игры, считается, что игру может распространять кто угодно и как угодно.

В особенных случаях (необходимость доработки плеера/либы, создание нового плеера, выпуск под спец. лицензией, участие в коммерческом проекте и т.п.) требуется отдельное обсуждение.

Файл проекта - ".qproj", зачем он нужен?​

Это т.н. "настройки проекта". Там сейчас хранятся "папки локаций". Этот файл нужен только при использовании QGen, и используется только на этапе разработки игры. Со временем, туда могут быть добавлены настройки QGen, специфичные для конкретного проекта.

Файл .qproj создается автоматически. Если случайно стереть его, ничего страшного не произойдет - просто придется заново рассовать локации по папкам. Сами локации никуда не денутся.

Для того, чтобы запустить игру, он не нужен.

Вопросы по программированию​

Как сделать время?​

Самый простой и понятный способ реализовать не совсем соответствующее календарному время изложен в этой короткой статье: Игровое время

Также см. Календарь по методу счёта Юлианских дней

Как сделать календарь?​

Самый быстрый способ сделать очень точный календарь без использования циклов и громоздкого кода, это воспользоваться уже готовым решением от evp: Календарь по методу счёта Юлианских дней.

Тема на форуме QSP.

Как сделать бой?​

Эта тема достаточно обширная и сложная, чтобы осветить её в нескольких предложениях. По этому поводу требуется написание большой статьи. Но вы можете посмотреть, как реализована простая система боя в уже существующем примере и модернизировать её.

В стартовой локациии примера задаются изначальные параметры - сила удара игрока и противника, и очки здоровья.

В бою к силе удара прибавляется случайное значение - "0" либо "1", меняющееся каждый раунд, и полученное значение вычитается из здоровья противника.

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

Пример реализации боя 1.0

Как сделать диалоги?​

Пример, показывающий реализацию 3-х видов диалогов.

  • Простой линейный диалог
  • Многовариантный диалог с использованием переменных.
  • Простой случайный диалог

Подготовил пример — WladySpb Чистка текста — y4ndexx

Пример реализации трёх видов диалога

Как использовать HTML?​

Для того, чтобы использовать HTML-разметку в своей игре, необходимо включить режим распознавания HTML. Для этого переменной usehtml нужно присвоить значение отличное от нуля:

usehtml = 1

При включенном режиме распознавания HTML, все HTML-теги, выведенные вместе с текстом, будут обрабатываться плеером.

Список поддерживаемых HTML-тегов можно посмотреть на странице справки "Список поддерживаемых HTML-тегов для классического плеера""

Работу с HTML-тегами демонстрирует пример, который можно скачать отсюда

Как "зациклить" музыку, сделать плейлист?​

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

Самый примитивный вариант зацикливания представлен в справочнике по самым часто задаваемым вопросам из темы "Как сделать?": Как зациклить мелодию.

Чуть более сложные варианты с зацикливанием целых плейлистов представлены в статье "Как сделать плейлист?".

Ну и самым продвинутым вариантом на сегодня является Гибкий плейлист от Werewolf'а.

Как сделать "считаемые" предметы, например, "патроны: 50 шт."?​

А вот это вопрос довольно простой. Понятное и очевидное решение изложено в статье "Как сделать считаемые предметы?" в справочнике по самым часто задаваемым вопросам из темы "Как сделать?".

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

Как сделать переход на метку в локации из действия?​

Привычка к использованию оператора JUMP часто приводит автора к следующей проблеме: он хочет сделать переход из действия на метку в коде локации, но JUMP не срабатывает.

Это связано с тем, что область видимости меток органичена блоком кода, в котором они находятся, а выполняемое действие - это отдельный блок кода.

Обойти это ограничение довольно просто.

!Начало локации
IF $args[0]<>'': JUMP $args[0]
...
...
:моя_метка
...
...
!Действие, из которого будет переход на нужную нам метку
ACT 'Переход':
GOTO $CURLOC,'моя_метка'
END

Как сделать действие, которое появляется при выполнении определенного условия?​

Этот вопрос был рассмотрен множество раз в различных вариациях. Можете ознакомиться с соответствующей статьёй в справочнике по самым часто задаваемым вопросам из темы "Как сделать?" на форуме qsp.org.

Так же есть синтетическая статья на основе темы "Действие по условию".

Как вставить картинку?​

Со всеми возможностями работы с изображениями в классическом плеере QSP вы можете ознакомиться на странице справки wiki.qsp.org/Графика.

Краткая статья с наиболее распространёнными примерами вывода изображения есть в справочнике по самым часто задаваемым вопросам из темы "Как сделать?" на форуме qsp.org.

Какие ограничения есть в QSP?​

Актуальную информацию по ограничениям можно уточнить в соответствующем разделе справки: wiki.qsp.org/Ограничения

  • Максимальное количество одновременно видимых действий на локации: 50
  • Максимальное количество подключаемых файлов: 100
  • Максимальное количество аргументов: 20 (для плееров версии 5.7.0 и ниже — 10)
  • Максимальная вложенность выражений: 30
  • Максимальное количество операторов в выражении(на одном уровне вложенности): 100
  • Максимальное количество пунктов пользовательского меню: 100
  • Максимальное количество предметов в инвентаре: 1000
  • Максимальное количество одновременно проигрываемых звуков: 500

Длина строки теоретически ограничена только объемом доступной оперативной памяти, либо размером типа "int": 2 гигабайта текста.

Числовые переменные принимают значения от -2147483647 до 2147483647.

Количество переменных ограничено 12800, при этом не допускается более 50 переменных с одинаковым хэшем имени.

Количество элементов массива ограничено размерностью "int", в зависимости от того, как собрана библиотека, 32768 или 2147483648 соответственно.

Количество локаций ограничено размером типа "int". В зависимости от того, как собрана библиотека, "int" будет ограничивать либо 32768, либо 2147483648 локаций.

Как вернуться на предыдущую локацию?​

Запоминаем текущую локацию при переходе, чтобы потом вернуться на неё.

! В начале игры назначаем обработчик перехода на новую локацию.
$ONNEWLOC = 'ONNEWLOC'

! В локации "ONNEWLOC":
IF $CURLOC <> $nextLoc:
$prevLoc = $nextLoc
$nextLoc = $CURLOC
END

! В локации, из которой надо вернуться на предыдущую:
ACT 'Вернуться':
GOTO $prevLoc
END

Более подробный ответ на этот вопрос в статье "Как сделать возврат на предыдущую локацию?".

Ещё более подробный ответ на этот вопрос есть в соответствующей теме на форуме.

Тёмная сторона силы​

Использование массивов, многомерные массивы​

Для ответа на этот вопрос подготовлена синтетическая статья на основе соответствующей темы.

Так же смотри статью о том, что такое массивы на сайте aleksversus.narod.ru.

Использование фигурных скобок​

Фигурные скобки в QSP предназначены в освновном для того, чтобы записывать обычный код QSP в виде текстового значения. Например, мы можем вписать в переменную $somecode некоторый код:

$somecode = {
p 'sdasdasd'
er = 3454
$d = 'sdsd'
'asdad'
if args[0] = 23: pl 'asdasdasd'
}

А затем выполнить этот код с помощью оператора dynamic в любом месте игры:

dynamic $somecode, 23

Фигурные скобки поддерживают вложенность, в отличие от кавычек и апострофов. И в отличие от кавычек и апострофов не поддерживают подвыражения.

Подробнее можно прочесть здесь: "Фигурные скобки"

Модуль Олегуса для работы с таблицами данных​

Таблицы данных — это не те таблицы, которые вы можете наблюдать на экране при использовании тега "<table>". Таблицами данных называется определённый способ хранения данных в виде условных строк и столбцов.

Olegus t.Gl. написал для QSP модуль работы с такими таблицами данных. Что с его помощью можно делать:

  • Создавать таблицу с произвольным числом колонок.
  • Добавлять, находить и удалять строки в таблице.
  • Получать и устанавливать значения произвольных ячеек в таблице.
  • Сортировать строки таблицы как по одной, так и по нескольким колонкам в порядке возрастания и убывания.
  • Для доступа к отдельным строкам (чтение или запись значений ячеек) использовать не только номера строк, но и уникальные значения из какой-либо колонки (работа с индексом).
  • Выгружать строку таблицы в ассоциативный массив.
  • Перебирать таблицу в любом направлении: от первой строки до последней и наоборот.
  • Выбирать, копировать и удалять строки таблицы (как все, так и по заданному фильтру).
  • Получать число строк в таблице (как всех, так и по заданному фильтру).

Более подробно можно о модуле можно почитать на форуме qsp.org в теме "Модуль для работы с таблицами данных", или на официальной странице модуля на форуме ifiction.ru в теме "Модуль для работы с таблицами данных в QSP". Полная документация на модуль здесь.

Модуль Олегуса для работы с меню (расширение функционала оператора "menu")​

Что можно делать с помощью модуля для расширения функционала оператора "MENU":

  • Передавать в вызываемую локацию/функцию произвольное число параметров.
  • Получать время, затраченное игроком на выбор пункта из меню.
  • Добавлять в меню пункты, появляющиеся в нём только при соблюдении ряда условий.
  • Прописывать выполняемый код прямо в настройках пункта меню, без отсылки к другим локациям/функциям.

Более подробно о модуле можно прочитать на форуме qsp.org в теме "Модуль для работы с меню (расширение функционала оператора "menu")", или на официальной странице модуля на форуме ifiction.ru в теме "Модуль для работы с меню (расширение функционала оператора "menu") в QSP". Полная документация на модуль здесь.

"Типограф" — модуль для форматирования текста​

Платформа QSP позволяет задействовать возможности HTML для форматирования текстов описаний и всего такого, и это хорошо. Плохо то, что писать html-ready текст — сущая мука: теги загромождают текст и мешают его восприятию в редакторе.

Чтобы хоть немного облегчить подобную работу, Olegus t.Gl. написал небольшой модуль для форматирования текста. Он позволяет использовать сокращённые формы записи тегов, что изрядно облегчает как написание, так и визуальное восприятие "исходного" текста.

Например, для вставки заголовка в обычный html-текст, в него нужно добавить запись: "<h1>Заголовок</h1>". Для вставки параграфа, растянутого по ширине, — "<p align=justify>Текст</p>". С помощью представляемого модуля данные записи можно сократить до "з1. Заголовок" и "п. Текст" соответственно.

Кроме этого есть сокращённые формы для выделения текста: жирный, курсив, подчёркнутый, подстрочный, надстрочный и т.п.

И можно отметить автоматическую расстановку длинных тире и правильных кавычек.

Более подробно о модуле можно прочитать на форуме qsp.org в теме "QSP:Типограф" — модуль для форматирования текста, или на официальной странице модуля на форуме ifiction.ru в теме "QSP: Типограф" — модуль для форматирования текста. Полная документация на модуль здесь.

Плавное изменение цвета фона​

Для реализации плавного изменения цвета фона вы можете воспользоваться готовым решением от Antipod.

Плавное изменение цвета фона аналогично по своему решению задаче по плавному проявлению текста: Плавное появление текста

Мини-игра "Взорви зомби" - пример использования локации-счётчика, также см. Действие по таймеру​

Мини-игра - взорви зомби. :) Сделана для Таэль.

Ожидание взрыва осуществлено в локации-счётчике.

Важно: Помните, что ограничивая игроку время, вы можете попасть в одну из ловушек плохого гейм-дизайна. Игрок попросту ничего не успеет прочитать и сделать. А ведь это текстовые игры, в которых основное место должно занимать повествование, а не нервирование игрока. :)

Статья на сайте qsp.org: Мини-игра "Взорви зомби" - пример использования локации-счётчика

Скачать игру: Взорви зомби.qsp

Настройка окошек классического плеера с помощью qspgui.cfg​

Подробную, но не полную, информацию по настройке окон классического плеера вы можете найти в статье Структура конфигурационного файла классического плеера версии 5.7.0

На форуме qsp.org так же существует тема Настройка окошек классического плеера с помощью qspgui.cfg

Если не нашли ответа​

Не нашли ответа на свой вопрос? Спрашивайте здесь - Как сделать?

АВТОР: NEX
19.02.2009 09:15

Оригинал: FAQ