XML обзор
Материал из Modiki.
Обзор XML в Civilization IV
- XML (eXtensible Markup Language — расширяемый язык разметки) - язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных для обмена информацией между программами [1].
XML в Civilization IV
Назначение XML в программной структуре Civilization IV ведущий программист Firaxis Mustafa Thamer описывает следующим образом:
Мы использовали XML в качестве основного языка для описания данных. Хотя у нас были простые инструменты, такие как .ini файлы, и более комплексные инструменты, например Python, XML удачно заполнил нишу простого, но мощного механизма для передачи данных в игру. Представление кодовых переменных в легко изменяемой форме бесценно для разработки, настройки и проверки игры, и в то же время необходимо для поддержки создания модов, что было одной из наших начальных целей. Кроме игровых правил и переменных, данные XML оперируют с режимами камеры, путями анимации, расположением ассетов, текстами локализаций, аудио параметрами, а также со многими другими схемами игры. XML хорошо соответствует потребностям команды разработчиков Civ, так как данные XML во многом самоописательны и существует большое количество XML-редакторов.
XML файлы
Таким образом XML в Civ4 используется как простой инструмент хранения переменных, используемых в Python, DLL, EXE. Изменяя эти переменные мы можем менять результат действия определенных игровых функций, но не можем изменять и добавлять сами функции. Все xml-файлы игры расположены в каталоге Assets\XML и тематически разбиты на подкаталоги. В файлах Shema задается структура хранения данных, а сами данные хранятся и изменяются в остальных xml-файлах. При создании мода изменяемые файлы должны размещаться в соответствии с их расположением в папке игры.
Структура XML
XML — это иерархическая структура, предназначенная для хранения любых данных, визуально структура может быть представлена как дерево. Важнейшее обязательное синтаксическое требование — то, что документ имеет только один корневой (root) элемент. Это означает, что текст или другие данные всего документа должны быть расположены между единственным начальным корневым тегом и соответствующим ему конечным тегом.
Остальная часть XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках; закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта. Содержимым элемента называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы [2].
XML теги Civ4
Конкретно в Цивилизации 4 используются несколько видов тегов, каждый из которых предназначен для хранения данных определенного типа:
- Single Line Tags (однострочные теги) - подразделяются на следующие категории:
- Text Tags (текстовые теги) - значение тега воспринимается как текст.
<Type>CIVILIZATION_AZTEC</Type>
- Boolean Tags - фактически являются переключателеми. Используются только два значения (0/1), которые отключают/включают определенные игровые возможности. Как правило название такого тега начинается со строчной b.
<bPlayable>1</bPlayable>
- Integer Tags (числовые теги) - задают значения в виде целых чисел. Как правило название такого тега начинается со строчной i.
<iCost>100</iCost>
- Floating Point Tags (дробные теги) - задают значения в виде десятичных дробей. Как правило название такого тега начинается со строчной f.
<fScale>1.0</fScale>
- Multi Line Tags (многострочные теги) - состоят из нескольких однострочных тегов.
<FreeTech> <TechType>TECH_MYSTICISM</TechType> <bFreeTech>1</bFreeTech> </FreeTech>
- Кроме того, успотребляются теги комментариев, содержимое которых выполняет только вспомогательную функцию при редактировании и не влияет на игровой процесс:
<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by Alex Mantzaris (Firaxis Games) -->
Редактирование XML
XML представляет собой структурированный текст, поэтому для редактирования xml-файлов подойдет любой редактор простого текста (но НЕ текстовые процессоры типа Word, WordPad и тд.!). Самым очевидным из них является стандартный Notepad (Блокнот), входящий в состав операционной системы. Большинство моддеров успешно пользуются Блокнотом, несмотря на его минимализм.
Более полезными для редактирования могут быть продвинутые редакторы простого текста, такие как Notepad++. Notepad++ распространяется бесплатно и добавляет две важные функции для редактирования: возможность отменить внесенные изменения и подсветка структурированного синтаксиса XML.
Однако наиболее удобными являются все таки редакторы, изначально предназначенные для редактирования XML. XML Marker - по моему, наиболее легкий в освоении и использовании инструмент. Помимо проверки xml синтаксиса и встроенного текстового редактора, он позволяет просматривать, редактировать и сортировать (!) данные в табличном виде, что представляет собой очень важное достоинство как раз для моддинга Civ4 (см. скриншот). Кроме того, табличное (а не текстовое) восприятие данных XML способствует лучшему понимаю возможностей xml-моддинга в игре.
Единственной функцией, которой не хватает XML Marker, является grid-редактирование, с помощью которого можно удалять и добавлять целые колонки атрибутов. Этой функцией обладают более мощные xml-редакторы, например используемый Firaxis Altova XML Spy. Обсудить эти и другие редакторы XML вы можете на нашем форуме.
- Чтобы ознакомиться со значением тегов Civ4 и перейти к непосредственному моддингу игры, см. основной раздел XML в Civilization 4.
- Обсудить эту статью и задать вопросы по XML моддингу можно в этой теме форума.
| Моддинг Civilization IV |
|---|
| World Builder -- XML -- Python -- SDK |
| Форум "Модная Цивилизация" |

