Skip to content

resource.toml

Каждый ресурс — это папка внутри resourcesDir с файлом resource.toml. Это канонический справочник по полям resource.toml (и соседнего stream.toml). Про понятие ресурса и раскладку папок — см. Resources; про ключи server.tomlserver.toml.

Parser resource.toml учитывает кавычки и многострочные массивы (мощнее, чем parser server.toml). Ключи принимаются и в kebab-case, и в camelCase.

Пример

toml
enabled = true
type = "js"
main = "server/main.js"
client-type = "js"
client-main = "client/main.js"
client-files = ["client/**", "shared/**"]
deps = ["shared-core"]
exports = ["getInventory"]

[config]
debug = true
maxInventorySlots = 40

Поля

Ключ (алиасы)ТипDefaultНазначение
typestring""Серверный runtime: js, csharp, go, asset-pack, dlc, rpf. Исполняется только js.
mainstring""Серверный вход (напр. server/main.js). js с непустым main авто-запускает серверный JS-host.
client-type / clientTypestringнаследует type (или js), если задан client-mainRuntime клиентского входа
client-main / clientMainstring""Клиентский вход; попадает в манифест автоматически
assets-base / assetsBasestring/assets/<name>/HTTP-база для кода ресурса
stream-base / streamBasestring/stream/<name>/HTTP-база для файлов под stream/
stream-manifest / streamManifeststringавтоПуть к stream-манифесту; авто-детект (см. ниже)
enabledbooltrueЗагружать ресурс; false пропускает его
client-files / clientFilesstring[][]Globs файлов, отправляемых клиенту
deps / dependenciesstring[][]Имена зависимостей (публикуются в манифесте)
exportsstring[][]Имена экспортов
таблица [config]{}Пользовательские scalar-настройки, доступные через getResourceConfig()

Примечания:

  • Семантика type. type хранится как есть; серверный host запускает только jsmain). Дескрипторы csharp/go — preview, текущим сервером не исполняются. asset-pack/dlc/rpf только раздают/стримят файлы.
  • Default client-type. Если client-main задан, а client-type пуст, он наследует type (или js, если type тоже пуст).
  • Порядок загрузки и зависимости. Ресурсы грузятся в порядке списка resources из server.toml (или в порядке файловой системы, если список пуст). deps / dependencies записываются и публикуются в манифесте, но текущий загрузчик НЕ переупорядочивает ресурсы по ним.

Таблица [config]

Каждый scalar под [config] становится JSON-значением: true/false и числа проходят без кавычек, всё остальное — JSON-строкой. Объект доступен коду ресурса:

js
const config = varion.getResourceConfig();   // сервер: [config] этого ресурса

Globs client-files

client-files / clientFilesfiles из stream.toml) принимают:

ШаблонЧто матчит
path/to/file.jsровно этот файл
dir/*обычные файлы прямо в dir (один уровень)
dir/**каждый файл под dir (рекурсивно)
**каждый файл в папке ресурса (рекурсивно)

Пути с .. и абсолютные пути отклоняются. Каждый раскрытый файл публикуется по /resources/files/<resource>/<path>; client-main раскрывается и добавляется автоматически.

URL-адреса

Клиентские файлы отдаются по /resources/files/<resource>/<path>. К тем же файлам ведут два алиаса:

  • /assets/<resource>/... (база по умолчанию /assets/<name>/)
  • /stream/<resource>/... (база по умолчанию /stream/<name>/)

Любой файл, чей путь относительно ресурса начинается с stream/, публикуется в манифесте по /stream/<resource>/... — независимо от типа ресурса.

stream.toml

Для стримингуемых игровых файлов ресурс может нести stream.toml. Он используется как stream-манифест, если на него указывает stream-manifest, если main заканчивается на .toml, либо если stream.toml лежит в корне ресурса (авто-детект).

toml
files = ["stream/**"]

[meta]
"stream/handling.meta" = "HANDLING_FILE"
"stream/vehicles.meta" = "VEHICLE_METADATA_FILE"
  • files — globs (те же правила, что у client-files) стримингуемых файлов.
  • [meta] — сопоставляет путь относительно ресурса с тегом data-файла GTA (напр. HANDLING_FILE). Записи с ../абсолютными путями или пустым тегом отбрасываются.

Любой файл под stream/ получает URL /stream/<resource>/.... Клиентскую сторону см. в Streaming assets.

Объявляются, но не парсятся

required-permissions / optional-permissions встречаются в некоторых дескрипторах и старой документации, но текущий серверный бинарник не парсит их из resource.toml и не включает в клиентский манифест. Считайте их зарезервированными.

Varion Multiplayer Platform