GameInfo: различия между версиями
Nikita (обсуждение | вклад) (→Модуль автоматической генерации GameInfo) |
Vvollo (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
− | GameInfo может использоваться в двух значениях: как общее название формата хранения библиографических метаданных в играх на [[платформе]] [[TADS]] (см. "[[#Общее описание|Общее описание]]") и как название специального модуля из набора стандартных библиотек [[TADS]] для автоматической генерации файла с такими метаданными (см. "[[#Модуль автоматической генерации GameInfo|Модуль автоматической генерации GameInfo]]"). | + | GameInfo может использоваться в двух значениях: как общее название формата хранения библиографических метаданных в играх на [[Платформа|платформе]] [[TADS]] (см. "[[#Общее описание|Общее описание]]") и как название специального модуля из набора стандартных библиотек [[TADS]] для автоматической генерации файла с такими метаданными (см. "[[#Модуль автоматической генерации GameInfo|Модуль автоматической генерации GameInfo]]"). |
== Общее описание == | == Общее описание == |
Текущая версия на 21:24, 12 октября 2021
GameInfo может использоваться в двух значениях: как общее название формата хранения библиографических метаданных в играх на платформе TADS (см. "Общее описание") и как название специального модуля из набора стандартных библиотек TADS для автоматической генерации файла с такими метаданными (см. "Модуль автоматической генерации GameInfo").
Общее описание
Платформа TADS имеет механизм, позволяющий включать прямо в скомпилированный файл игры библиографические метаданные, такие как название, имя автора, дата релиза и прочие. Вся эта система напоминает карточки для картотеки, а форма записи данных называется форматом GameInfo. Наличие данных в формате GameInfo позволяет обрабатывать большие количества игр в автоматизированном режиме, формируя каталоги и реализуя быстрый поиск по ним, и всё это без необходимости специально запускать каждую игру. Кроме того, присутствие в игре GameInfo позволяет отображать удобные описания в интерфейсе интерпретатора, если он поддерживает такую функциональность.
Технически система хранения метаданных в игре TADS представляет собой текстовый файл с названием gameinfo.txt, в котором в специальном формате записаны все данные, а сам этот файл добавлен в качестве ресурса в основной файл игры с расширением .gam для TADS 2 или .t3/.t3x для TADS 3. Общий формат gameinfo.txt выглядит следующим образом:
Name: Value Name: Value ...
То есть на каждой строке отдельно записывается пара из названия и значения свойства, разделённые знаком двоеточия.
Существует общепринятый набор свойств, которые ожидаются от GameInfo, но при необходимости разработчик игры может расширить их список, записав необходимую ему пару из названия и значения дополнительного свойства.
Файл gameinfo.txt может создаваться вручную, но это может оказаться неудобно из-за необходимости постоянно контролировать актуальность его содержимого. По этой причине TADS имеет средства его автоматизированной генерации.
Модуль автоматической генерации GameInfo
GameInfo | |
Тип | Библиотеки TADS |
---|---|
Разработчик(и) | Майкл Робертс |
Операционные системы | TADS |
Написано на | TADS |
Создаваемые форматы файлов | Текстовые файлы (*.txt) |
Сайт | tads.org |
Для облегчения процесса создания файла gameinfo.txt и привязки его содержимого к динамически изменяющимся данным проекта, например, к дате компиляции игры, платформа TADS в стандартном комплекте поставки имеет специальную дополнительную библиотеку gameinfo.t. Разработчику игры остаётся только реализовать в коде игры необходимую структуру данных, в которую записать интересующие названия и значения свойств для формата GameInfo, а файл gameinfo.txt будет создаваться уже автоматически при каждой компиляции проекта. При использовании для разработки среды TADS Workbench, можно настроить и автоматическое добавление генерируемого файла gameinfo.txt в ресурсы игры, в противном случае автоматизировать эту операцию можно через вызов консольных компиляторов ресурсов в скриптах сборки проекта (для TADS 2 компилятор ресурсов обычно называется tadsrsc, а для TADS 3 - t3res).
Для игр на TADS 2 в коде проекта необходимо создать функцию getGameInfo(), которая должна возвращать список, где каждый нечётный элемент будет являться названием свойства, а каждый чётный - его значением. То есть линеаризация двумерного массива - свойство с названием из элемента списка 2n - 1 имеет значение из элемента списка 2n, где n - натуральное число.
Наглядный пример автоматической генерации gameinfo.txt при помощи модуля gameinfo.t для TADS 2 можно посмотреть в примере использования библиотеки Metadata.
Для игр на TADS 3 в коде проекта необходимо создать объект класса GameID, внутри которого и будет храниться информация, использующаяся для генерации gameinfo.txt. Названия свойств такого объекта соответствуют названиям свойств по формату GameInfo, а значения свойств объекта значениям свойств описания.
Версии модуля
Для TADS 2 и TADS 3 существуют отдельные версии модуля GameInfo, распространяющиеся в общем комплекте стандартных библиотек соответствующей платформы.