Jump to content

XML:Basic tutorial: Difference between revisions

tightening up language, downgrading those large FAQ headers to regular bold text
m (wording)
(tightening up language, downgrading those large FAQ headers to regular bold text)
Line 1: Line 1:
{{update}}
{{update}}
==XML tutorial for Anniversary Edition==
==XML modding with the Anniversary Edition==
First off, we'll assume that you understand the material in the [[Modding Oni]] article. This tutorial is written with the [[Anniversary Edition]] in mind, because the AE installs the modding tools you need, gives you the framework for testing your mod package, and globalizes more of Oni's data. Global data can be used in any level.
First off, we'll assume that you understand the material in the [[Modding Oni]] article. This tutorial is written with the [[Anniversary Edition]] in mind, because the AE installs the modding tools you need, gives you the framework for testing your mod package, and globalizes more of Oni's data so it can be used in any level.


===What is XML, first of all?===
;What is XML, first of all?
:[[wikipedia:XML|E'''X'''tensible '''M'''arkup '''L'''anguage]] is a plain-text file format designed to be both human-readable and machine-readable. It stores data in between tags, e.g. <tt><Data>Some data here.</Data></tt>, and these tags can be arranged in a hierarchy to keep things organized. The only technical difference between a normal text file and an XML file is that the file ends in .xml instead of .txt and that it typically begins with the string <tt><?xml version="1.0" encoding="UTF-8" ?></tt>. While you thus could easily make an XML file by hand in any text editor, there are programs listed below which are better suited for easy XML editing.
:[[wikipedia:XML|E'''X'''tensible '''M'''arkup '''L'''anguage]] is a plain-text file format designed to be both human-readable and machine-readable. It stores data in-between tags, e.g. <tt><Data>Some data here.</Data></tt>, and these tags can be arranged in a hierarchy to keep things organized. The only technical difference between a normal text file and an XML file is that the file ends in ".xml" instead of ".txt" and that it typically begins with the string <tt><?xml version="1.0" encoding="UTF-8" ?></tt>. While you thus could easily make an XML file by hand in any text editor, there are programs listed below which are better suited for easy XML editing.


===Okay, so what is XML ''modding''?===
;Okay, so what is XML modding?
:In the old days, most of Oni's resources had to be edited by [[wikipedia:Hex editor|hex editor]]. Then [[User:Neo|Neo]], writer of OniSplit, introduced XML exporting. This turns "binary data" -- raw Oni resource data -- into human-readable XML which allows much easier modding. You can then import your edited XML file back into Oni's resource format with a simple command. The list of file types with XML support can be seen [[XML:File_types|HERE]]. The instructions for doing this manually on the command line are found at the bottom of the page, but the illustrated guide below shows how to do this more easily with a GUI.
:XML modding is the process of using [[OniSplit]] to export "binary data" -- raw Oni resource data -- into human-readable XML, which allows much easier modding, then importing that data back into Oni. Media resource types with XML support may extract as a standard format file (e.g. PNG) with an XML file alongside it. The list of file types with XML support can be seen [[XML:File_types|HERE]]. Below are instructions for doing this manually on the command line as well as an illustrated guide on how to do this more easily with a GUI.


===Is that the same thing as this XML ''patch'' modding?===
;Is XML modding the same thing as this XML patch modding?
:Not quite; XML patching is based on XML modding, though. Once you understand everything on this page, read [[Making a patch mod|THIS]] page to learn how (and why) you can make a patch mod.
:Not quite; XML patching is based on XML modding, though. Once you understand everything on this page, read [[Making a patch mod]] to learn about patch mods.


===So I just export some data to XML and start editing, right?===
;So I just export some data to XML and start editing, right?
:Not so fast! A lot of the data is not that self-explanatory even as XML; it simply can't be, when the game engine is so complex. That's what the XML namespace on this wiki is for: documenting the game data tag by tag according to what you'll be seeing in the XML files, but just as importantly, explaining ''what all that data does''. That's important, because the wiki's original game data documentation in the [[OBD]] namespace was written for hackers and is lacking in plain-English explanations.
:Not so fast! A lot of the data is too complex to be self-explanatory in the XML format. You need to read the [[XML:File_types|XML File Types]] page to learn how the game data is interrelated and what it all does.


===What tools do I need?===
;What tools do I need?
:[[OniSplit]] will be your main tool. [[XmlTools]] is also needed for making XML patch mods. Installing the [[AE]] will automatically install these tools, and will update a tool whenever the AE Installer runs and detects a new version of one.
:[[OniSplit]] will be your main tool. [[XmlTools]] is also needed for making XML patch mods. Installing the [[AE]] will automatically install these tools, and will update a tool whenever the AE Installer runs and detects a new version of one.


===I've got the AE installed. What now?===
:Note that OniSplit cannot be opened by simply double-clicking it; it's a command-line tool. But you are lucky -- we now have a [[wikipedia:GUI|GUI]] for it: [[Vago (tool)|Vago]]. It's best to install Vago through the [[AEI#Tools|AEI Tools menu]].
:OniSplit cannot be opened by simply double-clicking it; it's a command-line tool. But you are lucky -- we now have a [[wikipedia:GUI|GUI]] for it: [[Vago (tool)|Vago]]. It's best to install Vago through the [[AEI#Tools|AEI Tools menu]].


===What kinds of mods can I make?===
;What kinds of mods can I make?
:See [[XML:File_types|HERE]] again. It's an overview of the kinds of resources that allow XML editing. But note that some types can be more difficult to mod than others.
:We can now make completely new levels. If you need some ideas, a few can be found on the [[Modding_brainstorms|Modding Brainstorms]] page.
:If you need some ideas look at this page: '''[[Modding_brainstorms|modding brainstorms]]'''.


===Hmm, I want to modify the files in Chapter ''X''. But what level file is that?===
;I want to modify the files in Chapter ''X''. What level file is that?
:Check out [[GDF|this overview]] of Oni's game files.
:See the [[GameDataFolder]] page.
 
===Is there an easy exercise to get started?===
:We're glad you asked:


==XML beginner tutorial==
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!colspan=2|Mac:
!colspan=2|Mac: