ЭИК
Введение

Основы XML

Синтаксис XML на примерах Barotrauma: элементы, атрибуты, вложенные теги, %ModDir% и правила игры.

Что такое XML

XML — это текстовый формат для описания структурированных данных. Большая часть контента Barotrauma задаётся именно в нём. Формат простой: разберёшься, даже если никогда не программировал.

Элементы и теги

Базовая единица XML — элемент, у него есть открывающий и закрывающий теги:

<Item>
</Item>

<Item> — открывающий тег, </Item> — закрывающий. Всё, что между ними, принадлежит этому элементу.

Атрибуты

У элемента могут быть атрибуты — пары имя="значение", которые его уточняют:

<Item identifier="alienwrench" name="Alien Wrench" variantof="wrench" scale="0.2">
</Item>
  • identifier — уникальный идентификатор предмета.
  • name — отображаемое имя.
  • variantof — наследование от другого предмета (тут от wrench).
  • scale — масштаб отрисовки.

Вложенные элементы

Внутри элемента могут лежать другие, вложенные. Теги без содержимого можно самозакрывать — писать /> вместо отдельного закрывающего тега:

<Item identifier="alienwrench" name="Alien Wrench" variantof="wrench" scale="0.2">
  <Sprite texture="%ModDir%/alienwrench.png" sourcerect="0,0,256,112"
          depth="0.55" origin="0.5,0.1" scale="0.1" />
</Item>

<Sprite ... /> — самозакрывающийся спрайт (Sprite) внутри предмета.

Правила Barotrauma

  • Один корневой элемент. В файле может быть только один корневой элемент (не считая необязательной строки с кодировкой).
  • Уникальные атрибуты. Внутри одного элемента имена атрибутов не должны повторяться.
  • Регистр. Имена тегов и атрибутов обычно регистронезависимы, но держись единого стиля — так читается лучше.

Ссылки на файлы мода: %ModDir%

Чтобы сослаться на файл внутри своего мода, пиши %ModDir% — игра сама подставит путь к папке мода:

<Sprite texture="%ModDir%/textures/mygun.png" sourcerect="0,0,256,128" />

Нужен файл из другого мода — используй %ModDir:[Имя мода]%:

<Sprite texture="%ModDir:Some Other Mod%/shared.png" sourcerect="0,0,64,64" />

Кодировка и комментарии

В начале файла можно указать кодировку. Ставь UTF-8 — иначе кириллица и спецсимволы поедут:

<?xml version="1.0" encoding="utf-8"?>

Комментарии игра не читает, они для тебя:

<!-- Это комментарий: его игра игнорирует -->

Где новички спотыкаются

  • Незакрытый тег: <Item> без </Item> или без />.
  • Забыл кавычки: значения атрибутов всегда в кавычках (scale="0.2").
  • Несколько корневых элементов в одном файле — так нельзя.
  • Спецсимволы <, >, & прямо в значении — экранируй как &lt;, &gt;, &amp;.

Дальше соберём из этих файлов полноценный мод — переходи к структуре мода.