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 Marker
Увеличить
Работа с XML Marker

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
Форум "Модная Цивилизация"
Главный редактор − NeverMind: NM[на]civfanatics.ru Техподдержка − The Pretender: ThePretender[на]civfanatics.ru