Introduction to modding: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(swapping a blanked page for an orphaned one, how's that for smooth?)
(partial rewrite to try to provide more logical introduction)
Line 1: Line 1:
{{finish}}
{{finish}}


This page provides an introduction to modding that does not assume that you have much modding experience or knowledge of the Oni engine.
<div class="toclimit-2">
<div class="toclimit-2">
__TOC__
__TOC__
Line 7: Line 8:
==Introduction to modding==
==Introduction to modding==
[[Image:No_easy_button.png|150px|right]]
[[Image:No_easy_button.png|150px|right]]
Creating a game is like writing a theater play: in both cases, you have ''stages'', ''actors'', ''scripts'', and ''music''. A level is built so that when the player performs certain actions or reaches certain locations on the ''stage'', further events are set in motion according to the ''script''. The player is told what to do through various textual instructions, cutscenes, and/or voice acting (more "scripts") and as he plays he interacts with [[wiktionary:artificial_intelligence|AI]]-driven ''actors''. ''Music'' will often play dynamically behind all this, changing along with the flow of events. Modifying, or "modding", a game can be simpler and easier because you might only be changing or creating some of the above elements.
Modifying, or "modding", a game is generally easier than creating one, because you might only be changing some of the game's existing elements, or creating a limited amount of new data. Nevertheless, modding can be an intimidating field to get into. Our community does not have the polished modding tools of the big engines like Unreal (but we're getting better). You should have a [[wiktionary:DIY|DIY]] personality and a high tolerance for technical details. If this page seems like a chore to read, for instance, then you are definitely not ready for Oni modding :-) We do not yet have any modding solutions with a big red button that says "easy".


Nevertheless, modding can be an intimidating field to get into. But if you take things one step at a time, you can learn a lot about how to make games; in fact, many game developers start out as modders. Like learning a new language, modding your first game is always the hardest, and then you learn the common points that languages/games share, and you can more easily pick up new ones. Additionally, there are lots of different ways for someone to mod; whether your talent is art, sound, modeling or design in general, there's something for you to do, and collaborating with others to divide the work according to your abilities can lead to a memorable, rewarding creative experience.
Like learning a new language, modding your first game is always the hardest, but after that you can more easily pick up new ones. If you take things one step at a time, you can learn a lot from Oni about how to make games in general; in fact, many game developers started out as modders. Additionally, there are lots of different ways for someone to mod; whether your interest is in coding, art, sound, 3D modeling, or general game design, there's something for you to do, and collaborating with others to divide the work according to your abilities can lead to a memorable, rewarding creative experience.


Now, our community does not have the polished modding tools of the big engines like Unreal (but we're getting better). Because of the [[wiktionary:DIY|DIY]] nature of our work here, it's recommended that you have a high tolerance for technical details. We do not yet have any modding solutions with a big red button that says "easy".
==High-level introduction to the Oni engine==
Oni runs on a custom engine that Bungie could build for both Windows and the Macintosh (later, PlayStation 2 support was added, however console games are not easily modded, so we do not work with the PS2 version of Oni). At the time development started, Bungie did not yet have a true 3D engine, and Oni's lead coders intended their work to be reused in future Bungie titles, so they tried to make it well-engineered and portable. The engine consists of various "modules" or subsystems. Since Oni was inspired by an [[Anime|animé]] film, some of the subsystems have colorful animé-related names like [[wikipedia:Akira (film)|Akira]] (environment), [[wikipedia:Motoko Kusanagi|Motoko]] (graphics), and [[wikipedia:My Neighbor Totoro|Totoro]] (animation).


So, if you still want to learn about Oni modding, here's a first pro tip:
Unfortunately, the game was rushed to completion during a change of ownership (see [[Oni]] for the full story), and it was not possible for the developers to release any tools or information to aid the fans in modding. The game data also reflects Oni's rocky development, being assembled somewhat haphazardly, and both including unused resources and also missing a number of resources that the engine looks for during gameplay. One good thing that can be said about the engine is that it is solid enough to run smoothly over the errors it encounters in the data. That being said, it's easy to crash the engine when modding, as is the case with all game engines.


To create new bsl and xml files on Windows, make a new txt file and rename the suffix to bsl or xml. Check [http://www.computerhope.com/issues/ch000573.htm#0 THIS] page, it tells you how to display file extensions.
Due the lack of modding tools/information at the time of Oni’s release, fans had to tame the wild jungle of raw game data and create modding tools on their own through reverse-engineering. It took over seven years to unlock most of the game's secrets –- and the work is still ongoing (see [[History of Oni modding]]). But to make a long story short, we can now mod almost all types of data effectively, allowing us to create entirely new levels with new characters, new scripts, new voice acting, and new music. Now we're turning our focus to making tools that are user-friendly so artists can work more freely.


Altogether, we have identified 124 types of resources in the game data, however Oni only uses about 88 of these types (often called "file types" on this wiki, and "tags" in many other game modding communities). It may sound intimidating at first, but depending on the kind of modding you want to do, you might be able to start working with only a little knowledge of the engine.


==Introduction to the engine==
==Introduction to the game data==
Oni runs on an engine that was custom-written for the game and that could be built for both Windows and the Macintosh (later, PlayStation 2 support was added). At the time development started, Bungie did not yet have a true 3D engine, and Oni's lead coders intended their work to be reused in future Bungie titles, so they tried to make it well-engineered and portable. The engine consists of various "modules", sometimes with colorful names like [[wikipedia:Akira (film)|Akira]] (environment), [[wikipedia:Motoko Kusanagi|Motoko]] (graphics), and [[wikipedia:My Neighbor Totoro|Totoro]] (animation). Unfortunately, the game was rushed to release during a change of ownership, and it was not possible for the developers to release any tools or information to aid the fans in modding.
A game can be compared to a theater play: in both cases, you have ''stages'', ''actors'', ''scripts'', and ''music''. A level is built so that when the player performs certain actions or reaches certain locations on the ''stage'', further events are set in motion according to the ''script''. The player is told what to do through various textual instructions, cutscenes, and/or voice acting (more ''scripts''), and he interacts with [[wiktionary:artificial_intelligence|AI]]-driven ''actors''. ''Music'' will often play dynamically behind all this, changing along with the flow of events.


Due the non-existence of modding tools at the time of Oni’s release, fans had to tame the wild jungle of raw game data and create modding tools on their own through reverse-engineering. It took over seven years to unlock most of the game's secrets –- and the work is still ongoing. Read the full story [[History_of_Oni_modding|HERE]]. But to make a long story short, we can now mod almost all types of data effectively, meaning we can create entirely new levels with new characters, new scripts, new voice acting, and new music. Now we're turning our focus to making tools that are user-friendly so artists can work more freely.
In Oni's case, the stages, actors, and music (and other sounds) are all packed together, which is not unusual for games, and found in the files inside GameDataFolder\ that end in ".dat", ".raw", and, on Macs, ".sep". The scripts are stored in separate, plain-text files ending in ".bsl", in the IGMD\ folder inside GameDataFolder\. The player's progress is stored in persist.dat, next to the Oni application.


Altogether, we have identified 124 types of resources in the game data, however Oni only uses about 88 of these types (often called "file types" on this wiki, and "tags" in many other game modding communities). It may sound intimidating at first, but many of the data types fold into each other, such that you only need to know a few file types well, and the rest are created for you. Depending on the kind of modding you want to do, you might be able to start modding with only a little knowledge of the engine.
*See [[Oni (folder)]] for information on each file, or;
*Continue reading to learn about the types of modding you can perform.


==Kinds of modding==
==Introduction to types of modding==
===Scripting===
===Scripting===
The easiest kind of modding is scripting. Scripts are written in the BungieFrameWork Scripting Language and stored as plain-text files with the suffix .bsl, so we often refer to scripts as "BSL mods". Scripts take a lifeless level and spawn characters in it (the AI-driven NPCs and Konoko), give the level a logical flow of events, make the AIs play certain roles, drive cutscenes, and alter the level's appearance.
The easiest kind of modding is scripting. Scripts are written in the BungieFrameWork Scripting Language and stored as plain-text files with the suffix .bsl. Scripts take a lifeless level and spawn characters in it (the AI-driven NPCs and Konoko), give the level a logical flow of events, make the AIs play certain roles, drive cutscenes, and alter the level's appearance.


Scripting is the easiest way to mod because you can work with existing game data, and only have to modify BSL files using a text editor. It's quick and easy to see the results of your work (just reload the level), and you have lots of accessible examples to learn from (14 levels' worth!). That being said, scripts constantly reference game resources in sometimes technical ways, so you will have to learn how certain data types work in order to script effectively.
Scripting is the easiest way to mod because you can work with existing game data, and only have to modify BSL files using a text editor. It's quick and easy to see the results of your work (just reload the level), and you have lots of accessible examples to learn from (14 levels' worth!). That being said, scripts constantly reference game resources in sometimes technical ways, so you will have to learn how certain data types work in order to script effectively.


Go [[BSL|HERE]] to start learning about scripting.
*Go to the [[BSL]] namespace to start learning about scripting.


===Binary modding===
===Binary modding===
This is where those 88 data types come into play that we mentioned earlier. Broadly speaking, the kinds of data we're talking about are: '''level geometry''' (architecture, triggers, and furniture), '''characters''' (class data, models), '''text''' (diary, objectives, subtitles, etc.), '''music''', '''voice-overs''', and '''sound effects'''. However, new levels do not require all this data to be made from scratch. You might decide to re-use a level or some of its resources, or make a new level populated with existing characters, etc.
This is where those 88 data types come into play that we mentioned earlier. Broadly speaking, the kinds of data we're talking about are: '''level geometry''' (architecture, triggers, and furniture), '''characters''' (class data, models), '''text''' (diary, objectives, subtitles, etc.), '''music''', '''voice-overs''', and '''sound effects'''. However, new levels do not require all this data to be made from scratch. You might decide to re-use a level or some of its resources, or make a new level populated with existing characters, etc.


The game data is called "binary data" because it's made of raw 0s and 1s until our tools make it into something more modder-friendly. The basic process of modding game data involves breaking the level data (a .dat file supplemented by a .raw file and also a .sep file on the Mac) into its component resources (.oni files), then converting those resources into something editable. What that editable format is depends on the kind of data you're editing. It might be plain-text, XML, PNG, DAE, WAV, etc.
The game data is called "binary data" because it's made of raw 0s and 1s until our tools make it into something more modder-friendly. The basic process of modding game data involves breaking the level data (a .dat file supplemented by a .raw file, and on the Mac a .sep file is also used) into its component resources (.oni files), then converting those resources into something editable. The editable format depends on the kind of data you're editing. It might be plain-text, XML, PNG, Collada, WAV, etc.


Thus, besides our community modding tools, the program(s) you need in order to mod will vary according to your modding task; you might need nothing more than a text editor, you might need a free bitmap editor, or you might need a full 3D modeling package. Thankfully, since Oni is graphically primitive, you won't need to know as much about modeling as with a modern game, and there are free modelers available (but not as good as the commercial ones). In any case, make sure you download the [[Anniversary Edition]], which provides a modding framework and installs modding tools.
Thus, besides our community modding tools, the program(s) you need in order to mod will vary according to your modding task; you might need nothing more than a text editor, you might need a free bitmap editor, or you might need a full 3D modeling package. Thankfully, since Oni is graphically primitive, you won't need to know as much about modeling as with a modern game, and there are free modelers available (but not as good as the commercial ones). In any case, make sure you download the [[Anniversary Edition]], which provides a modding framework and installs modding tools.


Go [[OBD|HERE]] to start learning about the binary data, [[XML|HERE]] to learn about the user-friendly XML modding technique, or continue reading to learn a little more about specific types of binary modding so you know what you're getting yourself into.
*Go to the [[XML]] namespace to get a friendly introduction to the types of game data and learn the (more) user-friendly XML modding technique, or;
*Go to the [[OBD]] namespace to start learning about the binary data on the lowest level, or;
*Continue reading to learn a little more about specific types of binary modding so you know what you're getting yourself into.


====Character models====
====Character models====
Characters in Oni are built with a simple 19-part skeleton. ''Talk about ONCCs and related data here. Mention [[Mod Tool]], [[User:Iritscen/BlenderTutorial|Blender]]''.
Characters in Oni are built with a simple 19-part skeleton. ''Talk about ONCCs and related data here. Mention [[Mod Tool]], [[User:Iritscen/BlenderTutorial|Blender]]''.


* tutorial: [[Importing_character_models|Importing character models TRBS]]
* tutorial: [[Importing_character_models|Importing character models (TRBS)]]
* tutorial: [[Adding_spawnable_characters|Adding spawnable characters to a level CHAR]]
* tutorial: [[Adding_spawnable_characters|Adding spawnable characters to a level (CHAR)]]
* tutorial: [[Adding_character_classes|Adding character classes ONCC]]
* tutorial: [[Adding_character_classes|Adding character classes (ONCC)]]


====Character animations====
====Character animations====
Line 56: Line 62:
''Talk about OBANs and TRAMs here. Mention Mod Tool''.
''Talk about OBANs and TRAMs here. Mention Mod Tool''.


** tutorial: tweak [[OBD_talk:TRAM|animation]]
** tutorial: [[OBD_talk:TRAM|Tweak animation (TRAM)]]


: You need to add some stuff to that file to make it actually work as an animation. In particular the animation type, from/to states and varient needs to be set.  
: You need to add some stuff to that file to make it actually work as an animation. In particular the animation type, from/to states and varient needs to be set.  
Line 64: Line 70:
''Mention [http://www.gimp.org/ Gimp], Paint.NET''.
''Mention [http://www.gimp.org/ Gimp], Paint.NET''.


* tutorial: [[AE:Modifying textures|Modifying textures TXMP]]
* tutorial: [[AE:Modifying textures|Modifying textures (TXMP)]]


====Weapons====
====Weapons====
Line 78: Line 84:


==Need some inspiration?==
==Need some inspiration?==
Play some existing mods to get ideas (which you can install with the [[AE]]), or look at the pages below.
To get ideas, play some existing mods (which you can install with the [[AE]]), or look at the pages below.
* [[Modding_brainstorms|Modding Brainstorms]]
* [[Modding brainstorms]]
* [[Review criticisms]]
* [[Review criticisms]]
* [[Animation ideas]]
* [[Animation ideas]]


[[Category:Modding tutorials]]
[[Category:Modding tutorials]]

Revision as of 13:11, 5 April 2014

Unfinished building-60px.jpg

This page is unfinished. Can you fill in any missing information?
If it is not clear which part of the page is unfinished, ask on the talk page.

This page provides an introduction to modding that does not assume that you have much modding experience or knowledge of the Oni engine.

Introduction to modding

No easy button.png

Modifying, or "modding", a game is generally easier than creating one, because you might only be changing some of the game's existing elements, or creating a limited amount of new data. Nevertheless, modding can be an intimidating field to get into. Our community does not have the polished modding tools of the big engines like Unreal (but we're getting better). You should have a DIY personality and a high tolerance for technical details. If this page seems like a chore to read, for instance, then you are definitely not ready for Oni modding :-) We do not yet have any modding solutions with a big red button that says "easy".

Like learning a new language, modding your first game is always the hardest, but after that you can more easily pick up new ones. If you take things one step at a time, you can learn a lot from Oni about how to make games in general; in fact, many game developers started out as modders. Additionally, there are lots of different ways for someone to mod; whether your interest is in coding, art, sound, 3D modeling, or general game design, there's something for you to do, and collaborating with others to divide the work according to your abilities can lead to a memorable, rewarding creative experience.

High-level introduction to the Oni engine

Oni runs on a custom engine that Bungie could build for both Windows and the Macintosh (later, PlayStation 2 support was added, however console games are not easily modded, so we do not work with the PS2 version of Oni). At the time development started, Bungie did not yet have a true 3D engine, and Oni's lead coders intended their work to be reused in future Bungie titles, so they tried to make it well-engineered and portable. The engine consists of various "modules" or subsystems. Since Oni was inspired by an animé film, some of the subsystems have colorful animé-related names like Akira (environment), Motoko (graphics), and Totoro (animation).

Unfortunately, the game was rushed to completion during a change of ownership (see Oni for the full story), and it was not possible for the developers to release any tools or information to aid the fans in modding. The game data also reflects Oni's rocky development, being assembled somewhat haphazardly, and both including unused resources and also missing a number of resources that the engine looks for during gameplay. One good thing that can be said about the engine is that it is solid enough to run smoothly over the errors it encounters in the data. That being said, it's easy to crash the engine when modding, as is the case with all game engines.

Due the lack of modding tools/information at the time of Oni’s release, fans had to tame the wild jungle of raw game data and create modding tools on their own through reverse-engineering. It took over seven years to unlock most of the game's secrets –- and the work is still ongoing (see History of Oni modding). But to make a long story short, we can now mod almost all types of data effectively, allowing us to create entirely new levels with new characters, new scripts, new voice acting, and new music. Now we're turning our focus to making tools that are user-friendly so artists can work more freely.

Altogether, we have identified 124 types of resources in the game data, however Oni only uses about 88 of these types (often called "file types" on this wiki, and "tags" in many other game modding communities). It may sound intimidating at first, but depending on the kind of modding you want to do, you might be able to start working with only a little knowledge of the engine.

Introduction to the game data

A game can be compared to a theater play: in both cases, you have stages, actors, scripts, and music. A level is built so that when the player performs certain actions or reaches certain locations on the stage, further events are set in motion according to the script. The player is told what to do through various textual instructions, cutscenes, and/or voice acting (more scripts), and he interacts with AI-driven actors. Music will often play dynamically behind all this, changing along with the flow of events.

In Oni's case, the stages, actors, and music (and other sounds) are all packed together, which is not unusual for games, and found in the files inside GameDataFolder\ that end in ".dat", ".raw", and, on Macs, ".sep". The scripts are stored in separate, plain-text files ending in ".bsl", in the IGMD\ folder inside GameDataFolder\. The player's progress is stored in persist.dat, next to the Oni application.

  • See Oni (folder) for information on each file, or;
  • Continue reading to learn about the types of modding you can perform.

Introduction to types of modding

Scripting

The easiest kind of modding is scripting. Scripts are written in the BungieFrameWork Scripting Language and stored as plain-text files with the suffix .bsl. Scripts take a lifeless level and spawn characters in it (the AI-driven NPCs and Konoko), give the level a logical flow of events, make the AIs play certain roles, drive cutscenes, and alter the level's appearance.

Scripting is the easiest way to mod because you can work with existing game data, and only have to modify BSL files using a text editor. It's quick and easy to see the results of your work (just reload the level), and you have lots of accessible examples to learn from (14 levels' worth!). That being said, scripts constantly reference game resources in sometimes technical ways, so you will have to learn how certain data types work in order to script effectively.

  • Go to the BSL namespace to start learning about scripting.

Binary modding

This is where those 88 data types come into play that we mentioned earlier. Broadly speaking, the kinds of data we're talking about are: level geometry (architecture, triggers, and furniture), characters (class data, models), text (diary, objectives, subtitles, etc.), music, voice-overs, and sound effects. However, new levels do not require all this data to be made from scratch. You might decide to re-use a level or some of its resources, or make a new level populated with existing characters, etc.

The game data is called "binary data" because it's made of raw 0s and 1s until our tools make it into something more modder-friendly. The basic process of modding game data involves breaking the level data (a .dat file supplemented by a .raw file, and on the Mac a .sep file is also used) into its component resources (.oni files), then converting those resources into something editable. The editable format depends on the kind of data you're editing. It might be plain-text, XML, PNG, Collada, WAV, etc.

Thus, besides our community modding tools, the program(s) you need in order to mod will vary according to your modding task; you might need nothing more than a text editor, you might need a free bitmap editor, or you might need a full 3D modeling package. Thankfully, since Oni is graphically primitive, you won't need to know as much about modeling as with a modern game, and there are free modelers available (but not as good as the commercial ones). In any case, make sure you download the Anniversary Edition, which provides a modding framework and installs modding tools.

  • Go to the XML namespace to get a friendly introduction to the types of game data and learn the (more) user-friendly XML modding technique, or;
  • Go to the OBD namespace to start learning about the binary data on the lowest level, or;
  • Continue reading to learn a little more about specific types of binary modding so you know what you're getting yourself into.

Character models

Characters in Oni are built with a simple 19-part skeleton. Talk about ONCCs and related data here. Mention Mod Tool, Blender.

Character animations

RAICOMthrow_fw_kick_TN.png

An "appetizer screenshot".

Talk about OBANs and TRAMs here. Mention Mod Tool.

You need to add some stuff to that file to make it actually work as an animation. In particular the animation type, from/to states and varient needs to be set.
For all I know this works with animations exported from Oni and modified in Softimage. If you come up with a completly new animation it should work as long as the skeleton is similar to the one used in Oni.

Textures

Mention Gimp, Paint.NET.

Weapons

Levels

Talk about AKEVs and related data here. Mention Mod Tool, SketchUp.

Sound and Music

  • Instructions on importing sounds and links to conversion tools can be found HERE.

Need some inspiration?

To get ideas, play some existing mods (which you can install with the AE), or look at the pages below.