XML:Basic tutorial: Difference between revisions
Paradox-01 (talk | contribs) m (this feels incomplete without an expert tutorial ^_^) |
m (wording) |
||
Line 1: | Line 1: | ||
{{update}} | {{update}} | ||
==XML tutorial for Anniversary Edition== | ==XML tutorial for 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 | 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. | ||
===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 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 | :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. | ||
===Is that the same thing as this XML ''patch'' modding?=== | ===Is that the same thing as this XML ''patch'' modding?=== | ||
Line 16: | Line 16: | ||
===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]] | :[[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?=== | ===I've got the AE installed. What now?=== | ||
: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]]. | :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?=== | ||
Line 28: | Line 28: | ||
:Check out [[GDF|this overview]] of Oni's game files. | :Check out [[GDF|this overview]] of Oni's game files. | ||
===Is there an easy exercise to get | ===Is there an easy exercise to get started?=== | ||
: | :We're glad you asked: | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
Line 145: | Line 145: | ||
[http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/hover_an_instance.png http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/hover_an_instance_preview.png]<br>Windows | [http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/hover_an_instance.png http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/hover_an_instance_preview.png]<br>Windows | ||
| | | | ||
[http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/code_folding.png http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/code_folding_preview.png]<br>Macintosh ( | [http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/code_folding.png http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/code_folding_preview.png]<br>Macintosh (Xcode) | ||
|} | |} | ||
Line 161: | Line 161: | ||
==XML advanced tutorial== | ==XML advanced tutorial== | ||
The XML basic tutorial deals with | The XML basic tutorial deals with XML <=> .oni conversion and how to get the data into the game. | ||
The XML advanced tutorial shows that resource can depend on each other and that they work together with BSL. | The XML advanced tutorial shows that resource can depend on each other and that they work together with BSL. |
Revision as of 18:13, 18 March 2014
This page contains information that is out of date. |
XML tutorial for 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.
What is XML, first of all?
- EXtensible Markup Language is a plain-text file format designed to be both human-readable and machine-readable. It stores data in between tags, e.g. Some data here., 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 <?xml version="1.0" encoding="UTF-8" ?>. 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?
- In the old days, most of Oni's resources had to be edited by hex editor. Then 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 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.
Is that 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 THIS page to learn how (and why) you can make a patch mod.
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.
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.
I've got the AE installed. What now?
- OniSplit cannot be opened by simply double-clicking it; it's a command-line tool. But you are lucky -- we now have a GUI for it: Vago. It's best to install Vago through the AEI Tools menu.
What kinds of mods can I make?
- See 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.
- If you need some ideas look at this page: modding brainstorms.
Hmm, I want to modify the files in Chapter X. But what level file is that?
- Check out this overview of Oni's game files.
Is there an easy exercise to get started?
- We're glad you asked:
Mac: | PC: | ||
---|---|---|---|
converting an ONI file into an XML file | |||
Open Edition's AETools_Data folder and create a new folder named "ONIfiles".
|
Open Edition's GameDataFolder and create two new folders named "XML" and "ONI".
|
||
modifing the XML file | |||
Open the extracted file with a simple text editor. Search for "HasSupershield" tag and set its value to "1". Save file. | Open the extracted file with a simple text editor. Search for "HasSupershield" tag and set its value to "1". Save file. | ||
creating the ONI file | |||
Choose "Convert" tab. Now click onto "Select File(s) for Conversion" button and mark "ONCCk4_L.xml". Click "Choose" button. Then click "Select Destination Folder". Search for your ONIfiles folder, mark it, and click "Choose button."
|
Goto "XML -> ONI" section. Click first browse button and search for "ONCCk4_L.xml" inside the XML folder. Click second browse button and choose the ONI folder as target. Now click on Convert button.
|
||
creating and installing a mod package | |||
Choose "Package" tab.
The GUI is actually pretty much self-explaining.
|
|
Click on GUI's "AE Package" tab.
Browse Edition's GameDataFolder and choose the ONI folder as source folder. Browse Edition's install folder and choose the package folder as target.
|
|
testing the modification | |||
Let's test our modification. Therefore we start TCTF HQ redux (pre-last level). The supershield becomes automatically switched on at 51% overpower (301 healh points). "chenille" cheat works too. | Let's test our modification. Therefore we start TCTF HQ redux (pre-last level). The supershield becomes automatically switched on at 51% overpower (301 healh points). "chenille" cheat works too. |
Important tips for working with XML files
- Capitalization matters: OniSplit is case-sensitive when it processes the XML.
- Text indentation: most tags have some indentation (tabs). It is not needed by OniSplit but it helps one get an understanding of the hierarchy. Example:
good:
<Instance id="4" type="IGSA"> <Strings> <Link>#7</Link> </Strings> </Instance>
bad:
<Instance id="4" type="IGSA"><Strings><Link>#7</Link></Strings></Instance>
- Code folding: A simple text editor (and good use of the search function) is actually enough to work with Oni's XML. But big files might be easier to handle with what programmers call "code folding". Code folding is found in IDEs like Microsoft Visual Studio (Windows) and Xcode (Mac). Both are free.
- This allows you to fold whole instances and parent tags. Folded code can be previewed in Microsoft Visual Studio applications. Xcode provides an extra scroll popup.
Windows |
Extracting XMLs from the Mac command line (the Terminal)
Put the newest OniSplit.exe into the "Oni/GameDataFolder" folder.
Open the Terminal program then "change directory" to the GameDataFolder (Type "cd " then drag the GameDataFolder into the Terminal window, now press the RETURN key)
At this point you can enter the OniSplit commands, such as:
mono onisplit.exe -extract:xml xml_dir level0_Final/ONCCkonoko*.oni
("ONCCkonoko_generic" will be extracted in new folder "GameDataFolder/xml_dir".)
XML advanced tutorial
The XML basic tutorial deals with XML <=> .oni conversion and how to get the data into the game.
The XML advanced tutorial shows that resource can depend on each other and that they work together with BSL.
Read on HERE.
XML expert tutorial
The XML expert tutorial is about possibilities...
The more you know in general the more creative you can be.
Some resources are not always found to be connected (e.g. CHAR and CONS) but can be made to work together.
Read on HERE.