Часто задаваемые Вопросы (Ча.Во.)
Список наиболее часто задаваемых вопросов и ответы на них.
Общие вопросы
Что такое текстовые игры, текстовые квесты, интерактивная литература?
Что такое QSP? Что это за сайт?
QSP - это система разработки текстовых игр. Проще говоря, с помощью QSP можно играть в текстовые игры и создавать собственные.
Хочу написать свою текстовую игру, с чего начать?
- Если у вас еще не установлен плеер QSP, скачайте и установите “Набор игрока”.
- Скачайте справку и редактор QGen со страницы “Разработка игр”.
- Откройте Учебник по QSP для редактора Qgen и следуйте его инструкциям.
Где взять исходный код?
Большая часть всех инструментов QSP в виде исходного кода представлена на GitHub: https://github.com/QSPFoundation.
Под какой лицензией распространяется плеер QSP? А игры?
Когда-то Байт отвечал на вопросы по поводу лицензий:
Spoiler
Вопрос: Лицензия на платформу QSP (в частности плеер). Какие права есть у автора игры в части распространения (в том числе и коммерческое) плеера совместно со своей игрой? И все ли авторы версий для разных ОС (windows, linux, mac os и т.п.) едины в этом вопросе?
Ответ: Классический плеер - под GPL, либа под LGPL. Другие плееры могут быть под своими лицензиями. Если меняем исходники либы или классического плеера, то нужно выкладывать модифицированные исходники. Распространять существующий плеер можно как угодно, в т.ч. коммерчески.
Вопрос: Лицензия на игру под QSP. Какие права есть у авторов самой игры в части распространения (в том числе и коммерческое)?
Ответ: Лицензию на игру указывает сам автор игры. Плеер и игры - разный контент. Соответственно, автор может как угодно распространять игру.
Вопрос: Какие права есть у авторов платформы QSP в части игр? Оставляют ли они за собой право без согласования с автором распространять игру (в том числе и на возмездной основе) либо получать доход от безвозмездного предоставления доступа к игре, например, от рекламы и т.п.? И все ли авторы версий для разных ОС (windows, linux, mac os и т.п.) едины в этом вопросе?
Ответ: См. п.2. Если автор игры специально не оговаривает условия распространения игры, считается, что игру может распространять кто угодно и как угодно.
Более точно лицензии на любой из продуктов платформы можно узнать в репозитории этого продукта: https://github.com/QSPFoundation.
F.A.Q. по разработке игр
Обсудить данный FAQ по разработке игр можно здесь - Обсуждение FAQ.
В сборнике самых часто задаваемых вопросов из темы “Как сделать?” уже дано множество ответов и решений: “Как сделать? F.A.Q.”
Обсудить сборник “Как сделать? F.A.Q.” можно здесь: F.A.Q.: Часто задаваемые вопросы из темы “Как сделать?”
Технические вопросы
Файл проекта - “.qproj”, зачем он нужен?**
Это т.н. “настройки проекта”. Там сейчас хранятся “папки локаций”. Этот файл нужен только при использовании QGen, и используется только на этапе разработки игры. Со временем, туда могут быть добавлены настройки QGen, специфичные для конкретного проекта.
Файл .qproj создается автоматически. Если случайно стереть его, ничего страшного не произойдет - просто придется заново рассовать локации по папкам. Сами локации никуда не денутся.
Для того, чтобы запустить игру, он не нужен.
Вопросы по программированию
Как сделать время?
Самый простой и понятный способ реализовать не совсем соответствующее календарному время изложен в этой короткой статье: Игровое время
Также см. Календарь по методу счёта Юлианских дней
Как сделать календарь?
Самый быстрый способ сделать очень точный календарь без использования циклов и громоздкого кода, это воспользоваться уже готовым решением от evp: Календарь по методу счёта Юлианских дней.
Как сделать бой?
Эта тема достаточно обширная и сложная, чтобы осветить её в нескольких предложениях. По этому поводу требуется написание большой статьи. Но вы можете посмотреть, как реализована простая система боя в уже существующем примере и модернизировать её.
В стартовой локации примера задаются изначальные параметры - сила удара игрока и противника, и очки здоровья.
В бою к силе удара прибавляется случайное значение - “0” либо “1”, меняющееся каждый раунд, и полученное значение вычитается из здоровья противника.
Бой заканчивается, как только здоровье одного из противников станет нулевым или отрицательным.
Как сделать диалоги?
Пример, показывающий реализацию 3-х видов диалогов.
- Простой линейный диалог
- Многовариантный диалог с использованием переменных.
- Простой случайный диалог
Подготовил пример — WladySpb Чистка текста — y4ndexx
Как использовать HTML?
Для того, чтобы использовать HTML-разметку в своей игре, необходимо включить режим распознавания HTML. Для этого переменной usehtml нужно присвоить значение отличное от нуля:
usehtml = 1
При включенном режиме распознавания HTML, все HTML-теги, выведенные вместе с текстом, будут обрабатываться плеером.
Список поддерживаемых HTML-тегов можно посмотреть на странице справки “Список поддерживаемых HTML-тегов для классического плеера”
Плеер qSpider поддерживает все теги, которые поддерживает современный браузер.
Работу с HTML-тегами демонстрирует пример, который можно скачать отсюда
Как “зациклить” музыку, сделать плейлист?
Вновь вопрос довольно обширный и сложный. Но усложняется он не тем, что само решение для зацикливания музыки сложно, а тем, что существует множество вариантов задачи и соответственно на каждую задачу существует минимум одно решение.
Наиболее распространённые примеры мы выделили в отдельную статью. Здесь вы найдёте:
- Ответ на вопрос “Как зациклить мелодию?”;
- Ответ на вопрос “Как сделать простой плейлист?”;
- Гибкий плейлист от Werewolf.
Как сделать “считаемые” предметы, например, “патроны: 50 шт.”?
- В статье “Считаемые предметы” изложено самое простое решение.
- Есть уже готовая Библиотечка, дополняющая инвентарь, от Ntropy.
Как сделать переход на метку в локации из действия?
Привычка к использованию оператора JUMP часто приводит автора к следующей проблеме: он хочет сделать переход из действия на метку в коде локации, но JUMP не срабатывает.
Это связано с тем, что область видимости меток ограничена блоком кода, в котором они находятся, а выполняемое действие - это отдельный блок кода.
Обойти это ограничение довольно просто:
!Начало локации
IF $args[0]<>'': JUMP $args[0]
...
...
:моя_метка
...
...
!Действие, из которого будет переход на нужную нам метку
ACT 'Переход':
GOTO $CURLOC,'моя_метка'
END
Как сделать действие, которое появляется при выполнении определенного условия?
Этот вопрос был рассмотрен множество раз в различных вариациях.
Например, есть синтетическая статья на основе темы “Действие по условию”.
Как вставить картинку?
Со всеми возможностями работы с изображениями в классическом плеере QSP вы можете ознакомиться на странице справки wiki.qsp.org/Графика.
Какие ограничения есть в QSP?
Актуальную информацию по ограничениям можно уточнить в соответствующем разделе справки: wiki.qsp.org/Ограничения
Или спросить на форуме: Ограничения QSP
Как вернуться на предыдущую локацию?
Запоминаем текущую локацию при переходе, чтобы потом вернуться на неё.
! В начале игры назначаем обработчик перехода на новую локацию.
$ONNEWLOC = 'ONNEWLOC'
! В локации "ONNEWLOC":
IF $CURLOC <> $nextLoc:
$prevLoc = $nextLoc
$nextLoc = $CURLOC
END
! В локации, из которой надо вернуться на предыдущую:
ACT 'Вернуться':
GOTO $prevLoc
END
Более подробный ответ на этот вопрос в статье “Как сделать возврат на предыдущую локацию?”.
Ещё более подробный ответ на этот вопрос есть в соответствующей теме на форуме.
Тёмная сторона силы
Использование массивов, многомерные массивы
- На форуме есть тема, посвящённая использованию массивов. Там можно задавать вопросы, если что-то с массивами не понятно.
- Подробная статья по массивам на нашей вики: Массивы.
- Ещё статья по многомерным массивам на вики: Многомерные массивы.
Использование фигурных скобок
Библиотечки, расширяющие возможности QSP
Плавное изменение оформления, действия по таймеру, локация-счётчик
- Плавное изменение цвета фона (статья на старом сайте)
- Плавное появление текста (статья в справочнике по самым часто задаваемым вопросам из темы “Как сделать?”)
- Мини-игра “Взорви зомби” - пример использования локации-счётчика
- тема на форуме Действие по таймеру
Настройка окошек классического плеера
Не нашли ответа на свой вопрос? Спрашивайте здесь - Как сделать?