Основы 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"). - Несколько корневых элементов в одном файле — так нельзя.
- Спецсимволы
<,>,&прямо в значении — экранируй как<,>,&.
Дальше соберём из этих файлов полноценный мод — переходи к структуре мода.