F.A.Q
Список наиболее часто задаваемых вопросов и ответы на них.
Общие вопросы
Что такое текстовые игры, текстовые квесты, интерактивная литература?
Что такое QSP? Что это за сайт QSP.org?
QSP - это система разработки текстовых игр. Проще говоря, с помощью QSP можно играть в текстовые игры и создавать собственные.
Подробнее см. здесь - Информация о QSP
Хочу написать свою текстовую игру, с чего начать?
- Если у вас еще не установлен плеер QSP, скачайте и установите "Набор игрока".
- Скачайте справку и редактор QGen со страницы "Разработчикам".
- Откройте Учебник по 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.
Вопрос: Лицензия на платформу QSP (в частности плеер). Какие права есть у автора игры в части распространения (в том числе и коммерческое) плеера совместно со своей игрой? И все ли авторы версий для разных ОС (windows, linux, mac os и т.п.) едины в этом вопросе?
Ответ: Классический плеер - под GPL, либа под LGPL. Другие плееры могут быть под своими лицензиями. Если меняем исходники либы или классического плеера, то нужно выкладывать модифицированные исходники. Распространять сущес твующий плеер можно как угодно, в т.ч. коммерчески.
Вопрос: Лицензия на игру под QSP. Какие права есть у авторов самой игры в части распространения (в том числе и коммерческое)?
Ответ: Лицензию на игру указывает сам автор игры. Плеер и игры - разный контент. Соответственно, автор может как угодно распространять игру.
Вопрос: Какие права есть у авторов платформы QSP в части игр? Оставляют ли они за собой право без согласования с автором распространять игру (в том числе и на возмездной основе) либо получать доход от безвозмездного предоставления доступа к игре, например, от рекламы и т.п.? И все ли авторы версий для разных ОС (windows, linux, mac os и т.п.) едины в этом вопросе?
Ответ: См. п.2. Если автор игры специально не оговаривает условия распространения игры, считается, что игру может распространять кто угодно и как угодно.
В особенных случаях (необходимость доработки плеера/либы, создание нового плеера, выпуск под спец. лицензией, участие в коммерческом проекте и т.п.) требуется отдельное обсуждение.
Файл проекта - ".qproj", зачем он нужен?
Это т.н. "настройки проекта". Там сейчас хранятся "папки локаций". Этот файл нужен только при использовании QGen, и используется только на этапе разработки игры. Со временем, туда могут быть добавлены настройки QGen, специфичные для конкретного проекта.
Файл .qproj создается автоматически. Если случайно стереть его, ничего страшного не произойдет - просто придется заново рассовать локации по папкам. Сами локации никуда не денутся.
Для того, чтобы запустить игру, он не нужен.
Вопросы по программированию
Как сделать время?
Самый простой и понятный способ реализовать не совсем соответствующее календарному время изложен в этой короткой статье: Игровое время
Так же см. Календарь по методу счёта Юлианских дней
Как сделать календарь?
Самый быстрый способ сделать очень точный календарь без использования циклов и громоздкого кода, это воспользоваться уже готовым решением от evp: Календарь по методу счёта Юлианских дней.
Как сделать бой?
Эта тема достаточно обширная и сложная, чтобы осветить её в нескольких предложениях. По этому поводу требуется написание большой статьи. Но вы можете посмотреть, как реализована простая система боя в уже существующем примере и модернизировать её.
В стартовой локациии примера задаются изначальные парам етры - сила удара игрока и противника, и очки здоровья.
В бою к силе удара прибавляется случайное значение - "0" либо "1", меняющееся каждый раунд, и полученное значение вычитается из здоровья противника.
Бой заканчивается, как только здоровье одного из противников станет нулевым или отрицательным.
Как сделать диалоги?
Пример, показывающий реализацию 3-х видов диалогов.
- Простой линейный диалог
- Многовариантный диалог с использованием переменных.
- Простой случайный диалог
Подготовил пример — WladySpb Чистка текста — y4ndexx
Пример реализации трёх видов диалога
Как использовать HTML?
Для того, чтобы использовать HTML-разметку в своей игре, необходимо включить режим распознавания HTML. Для этого переменной usehtml нужно присвоить значение отличное от нуля:
usehtml = 1
При включенном режиме распознавания HTML, все HTML-теги, выведенные вместе с текстом, будут обрабатываться плеером.
Список поддерживаемых HTML-тегов можно посмотреть на странице справки "Список поддерживаемых HTML-тегов для классического плеера"
Работу с HTML-тегами демонстрирует пример, который можно скачать отсюда
Как "зациклить" музыку, с делать плейлист?
Вновь вопрос довольно обширный и сложный. Но усложняется он не тем, что само решение для зацикливания музыки сложно, а тем, что существует множество вариантов задачи и соответственно на каждую задачу существует минимум одно решение.
Самый примитивный вариант зацикливания представлен в справочнике по самым часто задаваемым вопросам из темы "Как сделать?": Как зациклить мелодию.
Чуть более сложные варианты с зацикливанием целых плейлистов представлены в статье "Как сделать плейлист?".
Ну и самым продвинутым вариантом на сегодня является Гибкий плейлист от Werewolf'а.