https://wiki.oni2.net/w/api.php?action=feedcontributions&user=EdT&feedformat=atomOniGalore - User contributions [en]2024-03-29T10:16:27ZUser contributionsMediaWiki 1.39.6https://wiki.oni2.net/w/index.php?title=OniSplit&diff=29952OniSplit2020-06-27T01:07:42Z<p>EdT: /* Download links */</p>
<hr />
<div>{{TOCfloat|side=right}}<br />
:''Before reading this page, it's a good idea to be familiar with basic Oni [[game data terminology]].''<br />
<br />
'''OniSplit''', written by [[User_talk:Neo|Neo]], is an integral part of the [[Anniversary Edition]] and an essential modding tool on its own. It is a command line tool which can import and export almost all kinds of Oni game data, including textures, sound, 3D models, level geometry and combat animations. Its name comes from its original purpose, which was breaking Oni's level data files into individual resources. Later, the ability to convert those resources' data between Oni's format and standard file formats was added. OniSplit incorporates the latest [[OBD|knowledge about Oni's game data]], and it is currently the community's main modding tool.<br />
<br />
==Getting it==<br />
===Download links===<br />
* Latest release of OniSplit: [http://mods.oni2.net/node/38 v0.9.99.2] ([http://websvn.illy.bz/dl.php?repname=Oni2&path=%2FOniSplit%2F&isdir=1 source code])<br />
* The current GUI for OniSplit is [[Vago (tool)|Vago]]. '''You should try the GUI to see if it does what you need before working with OniSplit on the command line.'''<br />
<br />
===Requirements===<br />
OniSplit requires .NET 2.0 in Windows and the Mono framework in macOS.<br />
<br />
* [http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe .NET 2.0 (x86)]; [http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x64.exe .NET 2.0 (x64)]<br />
* [http://www.go-mono.com/mono-downloads/download.html Latest version of mono]<br />
<br />
==Workflow==<br />
OniSplit is used in up to four different stages when modding:<br />
{|<br />
|rowspan="2"|<span style="font-size:150%">'''OUT'''</span><br />
|''Exporting'' - using the <tt>-export</tt> command, a [[Dat|level data file]] is broken into its component resources, .oni files.<br />
|-<br />
|style="border-style: solid; border-width: 0 0 1px 0"|''Extracting'' - using the <tt>-extract</tt> commands, .oni files are converted to standard-format files that can be edited in various third-party programs.<br />
|-<br />
|rowspan="2"|<center><span style="font-size:150%">'''IN'''</span></center><br />
|''Creating'' - using the <tt>-create</tt> commands, standard-format files are converted into .oni files.<br />
|-<br />
|''Importing'' - using the <tt>-import</tt> command, a folder of .oni files is combined into a level data file.<br />
|}<br />
<br />
Note that "extracting" refers to a conversion from one format to another, but "exporting" only refers to the creation of .oni files from a .dat file. When exporting, no conversion or re-formatting is taking place; the data is simply being copied out of a .dat (any connected binary data in .raw/.sep files will be concatenated to the data from the .dat when making the .oni).<br />
<br />
==Beginner's tips==<br />
{{Divhide|show=yes|For users new to the command line or to OniSplit}}<br />
In Windows, you want to find the Command Prompt. The fastest way to get there is to bring up the "Run..." dialog with Windows+R, then type "cmd" and hit Enter.<br />
<br />
On Macs, the command line is found in the Terminal app (/Applications/Utilities) (press Command-Spacebar and type "Terminal" to get there faster).<br />
<br />
===OniSplit syntax===<br />
The basic syntax is:<br />
{|<br />
|-<br />
|'''Windows'''||<tt><span style="background:rgb(235,235,235); border-radius:0.33em;">OniSplit.exe</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-create:trbs</span> <span style="background:rgb(255,156,156); border-radius:0.33em;">C:\Games\Oni\SomeFolder</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-normals</span> <span style="background:rgb(156,255,156); border-radius:0.33em;">C:\Games\Oni\Modding\TRBSMyNewChar.dae</span></tt><br />
|-<br />
|'''Mac'''||<tt><span style="background:rgb(235,235,235); border-radius:0.33em;">mono OniSplit.exe</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-create:trbs</span> <span style="background:rgb(255,156,156); border-radius:0.33em;">/Games/Oni/SomeFolder</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-normals</span> <span style="background:rgb(156,255,156); border-radius:0.33em;">/Games/Oni/Modding/TRBSMyNewChar.dae</span></tt><br />
|}<br />
<br />
Here's how it breaks down:<br />
{|<br />
! style="width:130px"|<br />
|- valign="top"<br />
|<span style="background:rgb(235,235,235); border-radius:0.33em;">'''Invocation'''</span><br />
|Windows can refer to the program directly, but Macs use Mono to run the .NET app; note also that if OniSplit.exe is not in the Command Prompt/Terminal's current directory, you must provide the full path to it or set the path variable.<br />
|-<br />
|<span style="background:rgb(175,175,255); border-radius:0.33em;">'''Option'''</span>||The command.<br />
|- valign="top"<br />
|<span style="background:rgb(255,156,156); border-radius:0.33em;">'''Path to folder'''</span>||Whether destination or source, the path which is a folder comes first. <u>Use the full path to the folder (starting from "C:\", or "/" on Macs).</u><br />
|-<br />
|<span style="background:rgb(175,175,255); border-radius:0.33em;">'''Option flags'''</span>||The flags that can optionally go with this command, separated by spaces.<br />
|- valign="top"<br />
|<span style="background:rgb(156,255,156); border-radius:0.33em;">'''Path to file'''</span>||Whether destination or source, the path of the file comes second. <u>Use the full path to the file (starting from "C:\", or "/" on Macs).</u> One exception to this parameter being a file is when using <tt>-create</tt> to make a level, in which case this is where you supply the source folder.<br />
|}<br />
<br />
===CLI tips===<br />
*Command line interfaces (CLI) usually supply an auto-complete feature to save on typing. If you've typed enough of a file/folder name to identify it, press the Tab key and the rest should fill in. In Windows, you may not get the right path name autocompleted on the first try if there are multiple possible autocompletions based on the names in that directory, so keep pressing Tab to cycle through all possibilities. On Macs, if you have not typed enough of the name to narrow it down to a single autocompletion, you will hear an error sound. Double-tap Tab to see a list of possible autocompletions, then keep typing until you have narrowed it down to one of those and then hit Tab to fill in the rest of its name.<br />
<br />
*Note that you can also drag files/folders into the window and the path will magically appear; in cases where you don't need to use a wildcard, this is the fastest way to build an OniSplit command.<br />
<br />
===Wildcards===<br />
Wildcards can be used to supply patterns to CLI programs. The wildcard is simply the <tt>*</tt> character. For instance:<br />
OniSplit.exe -export:TRAM* <destination> <source .dat><br />
will export all the TRAMs in the source .dat into the destination folder. Using "TRAMKON*" would export all of Konoko's animations.<br />
<br />
===Spaces in paths===<br />
Command line interfaces (CLI) do not recognize spaces as a possible part of a path name because spaces are what separate the terms in your commands. The best course of action is to not use paths with spaces in their names! But if you must, you can use quotes to tell the CLI that a certain string is a single path:<br />
<br />
'''C:\Games\Oni\>'''OniSplit.exe -list "My Mod Folder\level5_Final.dat"<br />
<br />
This works in the Mac Terminal too, but you can also use the escape character, <tt>\</tt>. Also, other characters like <tt>(</tt> need to be escaped as well if you do not use quotes:<br />
<br />
'''MyMac:Oni username$''' mono OniSplit.exe -list My\ Mods\ \(In\ Progress\)/level5_Final.dat<br />
<br />
But as mentioned, the best practice is to not use any characters besides the alphabet and numbers. It makes your life simpler, and if you ask for help on the forum with a command, no one wants to have to read your long path with lots of spaces or escaped characters in it ;-)<br />
<br />
===Reading the commands below===<br />
*The following commands should be complete, but the current list can be obtained by calling OniSplit with the <tt>-help</tt> option. You should also use <tt>-version</tt> to make sure you're using the latest version, the number of which is given in the "Download links" section above.<br />
<br />
*Sample usages are given after certain commands. These are in DOS style, so if you are on a Mac, simply flip the <tt>\</tt>s to <tt>/</tt>s and make "C:\" into a leading "/".<br />
<br />
*Optional flags are listed in square brackets simply to indicate that they're optional; don't enter the brackets when typing a command.<br />
<br />
Note that only the .dat file from a level's data files is mentioned. The .raw and .sep files will be accessed by OniSplit as necessary when working with the .dat file that you gave the name of.<br />
{{Divhide|end}}<br />
<br />
==Commands==<br />
===Conversion between .dat and .oni===<br />
{|<br />
! style="width:430px"|<br />
|-<br />
|<code>-list <file name></code>||Lists the named resources contained in a .dat (see [[OBD:File_types/Named|HERE]] for info on unnamed resources)<br />
|-<br />
|<code>-export <destination directory> <dat file></code>||Breaks .dat file into .oni files<br />
|-<br />
|<code>-export:<pattern> <destination directory> <dat file></code>||Exports named resource (wildcards also allowed) from .dat file<br />
|- valign="top"<br />
|<code>-import <source directory> <new dat file></code>||Compiles level files from source directory using the name you supply for the .dat file; tries to get target file format from source SNDD, but it's better to use the :sep or :nosep variants below<br />
|-<br />
|colspan="2"|<span style="padding-left:20px">To create level5_Final.dat/.raw[/.sep] from the files in MyNewLevel\: <code>OniSplit.exe -import C:\Oni\MyNewLevel\ C:\Oni\GameDataFolder\level5_Final.dat</code><span><br />
|-<br />
|<code>-import:sep <source directory> <new dat file></code>||Imports target file (.dat) from source directory; uses .dat/.raw/.sep format (Mac and PC Demo)<br />
|-<br />
|<code>-import:nosep <source directory> <new dat file></code>||Imports target file (.dat) from source directory; uses .dat/.raw format (PC retail)<br />
|}<br />
:Note that <tt>-import</tt> will search subdirectories too. If you find having hundreds or thousand of files .oni in one directory to be unmanageable you can always group them in subdirectories any way you like. The only exception is that a subdirectory named "noimport" or "_noimport" is always ignored.<br />
<br />
===Management of .oni files===<br />
Sometimes you want to move some .oni files out of a larger folder of .onis. You could do this manually, but OniSpit knows which files depend on others. It will also look for those dependencies in subfolders beneath the level of the file you supply the name of. The filename field supports wildcards. This is mostly used by the [[AE]] Installer rather than modders themselves.<br />
{|<br />
|<code>-deps <oni file></code>||Displays a list of .oni files that the specified .oni file depends on<br />
|-<br />
|<code>-copy <destination directory> <oni file></code>||Copies .oni file and its dependencies; skips file if it already exists at destination<br />
|-<br />
|<code>-move <destination directory> <oni file></code>||Moves an .oni file and its dependencies; skips file if it already exists at destination<br />
|-<br />
|<code>-move:overwrite <destination directory> <oni file></code>||Moves an .oni file and its dependencies; overwrites any existing .oni files<br />
|-<br />
|<code>-move:delete <destination directory> <oni file></code>||Moves an .oni file and its dependencies; doesn't overwrite; deletes source files<br />
|}<br />
<br />
===Conversion between .oni/.dat and 3rd party formats===<br />
====Textures====<br />
Unless mentioned otherwise, source filenames support wildcards. See [[AE:Modifying textures|HERE]] for a detailed tutorial. The <tt>-extract</tt> commands can work with .oni files (a single file or several files if you use the wildcard), or rip all the TXMPs from a .dat file.<br />
{|<br />
|<code>-extract:dds <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into DDS files<br />
|-<br />
|<code>-extract:tga <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into TGA files<br />
|-<br />
|<code>-extract:png <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into PNG files<br />
|-<br />
|<code>-create:txmp <destination directory><br>[-genmipmaps] [-nouwrap] [-novwrap]<br><nowiki>[-format:bgr32|bgra32|bgr555|bgra5551|bgra4444|dxt1]</nowiki><br>[-envmap:texture_name] <image file></code><br />
|valign=top|Creates .oni file from image file (PNG, TGA, or DDS)<br />
|}<br />
<br />
====Models====<br />
[[M3GM]]s, [[ONWC]]s, [[ONCC]]s can be exported to the Wavefront .obj and COLLADA .dae formats. For details see [[Importing character models]] and [[Importing weapon models]]. The generic <tt>-extract</tt> commands can work with .oni files (a single file, or several files if you use the wildcard), or rip all the TXMP from a .dat file. TRBS and ONCC support additional <tt>-noanim</tt> and <tt>-anim</tt> options for <tt>-extract:dae</tt>; see [[Importing character models]] for details. Imported geometry must only contain triangles.<br />
{|<br />
! style="width:540px"|<br />
|- valign="top"<br />
|<code>-extract:obj <destination directory> <dat/oni file></code>||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Wavefront OBJ files<br />
|- valign="top"<br />
|<code>-extract:dae <destination directory> [-noanim] <dat/oni file></code>||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Collada DAE files<br />
|-<br />
|<code>-create:m3gm <destination directory> [-tex:texture_name] <OBJ file></code>||Creates a M3GM .oni from an .obj file<br />
|-<br />
|<code>-create:trbs <destination directory> [-cel] [-normals] <DAE file></code>||Creates a TRBS .oni from a .dae file<br />
|}<br />
<br />
Note on -noanim parameter: Normally OniSplit exports the character with an idle animation. If you use -noanim the character is exported in "I" pose, also the pelvis has the coordinates x=0, y=0, z=0.<br />
<br />
====Levels====<br />
OniSplit can convert AKEV files (level geometry) and the associated file types to and from DAE format:<br />
{|<br />
|<code>-extract:dae <destination directory> <AKEV.oni file></code>||Extracts 3D data in AKEV and related resources from dependencies into Collada file<br />
|}<br />
<br />
<br />
The next two steps are used on a folder in which you have placed the DAE and XML-formatted instances of the required files, as well as textures in TGA format. See [http://oni.bungie.org/forum/viewtopic.php?id=1515 HERE] for details.<br />
{|<br />
|- valign="top"<br />
|<code>-create <destination directory><br>[-genmipmaps] [-format:dxt1]<br><source directory></code>||Converts all AKEV and related instances to .oni files<br />
|- valign="top"<br />
|<code>-import:nosep <source directory><br><target file name>.dat</code>||The standard command for creating .dat/.raw files from .oni files (remember to use the import:sep option on Mac!)<br />
|}<br />
<br />
====Sounds====<br />
The sounds in Windows Oni are stored in WAV format, and on Macs are stored in AIFF format. This also means creating each of your SNDD files in both formats in order to work on both platforms.<br />
{|<br />
|<code>-extract:wav <destination directory> <dat/oni file></code>||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .wav files<br />
|-<br />
|<code>-extract:aif <destination directory> <dat/oni file></code>||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .aif files<br />
|}<br />
<br />
====Text====<br />
{|<br />
|<code>-extract:txt <destination directory> <dat/oni file></code>||Rips text data from a SUBT .oni file (or all SUBTs from a .dat) as .txt files<br />
|-<br />
|<code>-create:subt <destination directory> <TXT file></code>||Creates a SUBT .oni file from a .txt file<br />
|}<br />
<br />
====XML====<br />
One of the latest features is conversion of .oni files to and from an XML file, or an XML metafile and related 3rd-party format files. XML files are easier to read and edit.<br />
::Currently XML export/import is limited to files that do not have raw/sep parts. 2-way conversion is known to work for [[BINA]], [[CONS]], [[DOOR]], [[DPge]], [[FILM]], [[HPge]], [[IGHH]], [[IPge]], [[M3GM]], [[OBAN]], [[ONCC]], [[ONCV]], [[ONLD]], [[ONLV]], [[ONGS]], [[ONSK]], [[ONVL]], [[ONWC]], [[OPge]], [[OSBD]], [[PSpc]], [[PSpL]], [[PSUI]], [[TRAC]], [[TRAM]], [[TRIG]], [[TRGE]], [[TRMA]], [[TRSC]], [[TXMB]], [[TXMP]], [[WMCL]], [[WMDD]], [[WMM_]], [[WPge]].<br />
:::For detailed examples and tutorials, see [[XML|HERE]]<br />
{|<br />
|<code>-extract:xml <destination directory> <oni file></code>||Extracts .oni file and all related resources to XML files and 3rd-party formats<br />
|-<br />
|<code>-create <destination directory> <XML file></code>||Creates an .oni file from an XML file<br />
|}<br />
<br />
[[Category:Completed modding tools]][[Category:Bi-platform modding tools]][[Category:Modding tutorials]]</div>EdThttps://wiki.oni2.net/w/index.php?title=XML_talk:TRAC&diff=29399XML talk:TRAC2020-05-23T03:51:18Z<p>EdT: Issue solved.</p>
<hr />
<div>Discovered an interesting situation with custom TRACs (I had made a simple TRAC that only had idle, run and walk TRAMs), an enemy AI will not shoot at a character that has a simple custom TRAC, but will run up to the character and use melee attacks. But if I add TRACkonokocore_animations as a ParentCollection, then the enemy AI will shoot at the character.<br />
<br />
Simple TRAC:<br />
https://youtu.be/QzZcmebn5L4<br />
<br />
Modified TRAC:<br />
https://youtu.be/9elZeliNOYc<br />
<br />
I will continue to investigate why this happens.<br />
<br />
[[User:EdT|EdT]] 18:27, 21 May 2020 (PDST)<br />
<br />
:Bug or feature? ^_^ Can you try adding/removing overlay anims for bullet damage? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:01, 22 May 2020 (CEST)<br />
<br />
::I second Paradox's question; my mind went to the same place when I read about your TRAC discovery. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 01:21, 23 May 2020 (CEST)<br />
<br />
::I have never dealt with overlay anims for bullet damage, I will have to look into that.<br />
<br />
Mystery solved, it was not a TRAC issue, but rather a TRAM issue. All the TRAMs for the motorcycle had a height of 0. Once I changed the height to 1, the enemy will shoot at the motorcycle.<br />
As to why a TRAM height of 0 would disable an enemy AI from shooting, I can only speculate that the enemy AI uses the height of the TRAM to calculate the firing angle.<br />
<br />
[[User:EdT|EdT]] 20:46, 22 May 2020 (PDST)</div>EdThttps://wiki.oni2.net/w/index.php?title=XML_talk:TRAC&diff=29396XML talk:TRAC2020-05-22T23:15:20Z<p>EdT: </p>
<hr />
<div>Discovered an interesting situation with custom TRACs (I had made a simple TRAC that only had idle, run and walk TRAMs), an enemy AI will not shoot at a character that has a simple custom TRAC, but will run up to the character and use melee attacks. But if I add TRACkonokocore_animations as a ParentCollection, then the enemy AI will shoot at the character.<br />
<br />
Simple TRAC:<br />
https://youtu.be/QzZcmebn5L4<br />
<br />
Modified TRAC:<br />
https://youtu.be/9elZeliNOYc<br />
<br />
I will continue to investigate why this happens.<br />
<br />
[[User:EdT|EdT]] 18:27, 21 May 2020 (PDST)<br />
<br />
Bug or feature? ^_^ Can you try adding/removing overlay anims for bullet damage? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:01, 22 May 2020 (CEST)<br />
<br />
I have never dealt with overlay anims for bullet damage, I will have to look into that.<br />
<br />
[[User:EdT|EdT]] 16:14, 22 May 2020 (PDST)</div>EdThttps://wiki.oni2.net/w/index.php?title=XML_talk:TRAC&diff=29354XML talk:TRAC2020-05-22T02:57:25Z<p>EdT: </p>
<hr />
<div>Discovered an interesting situation with custom TRACs (I had made a simple TRAC that only had idle, run and walk TRAMs), an enemy AI will not shoot at a character that has a simple custom TRAC, but will run up to the character and use melee attacks. But if I add TRACkonokocore_animations as a ParentCollection, then the enemy AI will shoot at the character.<br />
<br />
Simple TRAC:<br />
https://youtu.be/QzZcmebn5L4<br />
<br />
Modified TRAC:<br />
https://youtu.be/9elZeliNOYc<br />
<br />
I will continue to investigate why this happens.<br />
<br />
[[User:EdT|EdT]] 18:27, 21 May 2020 (PDST)</div>EdThttps://wiki.oni2.net/w/index.php?title=XML_talk:TRAC&diff=29353XML talk:TRAC2020-05-22T01:33:58Z<p>EdT: Enemy AI attack behavior is affected by a character's custom TRAC</p>
<hr />
<div>Discovered an interesting situation with custom TRACs (I had made a simple TRAC that only had idle, run and walk TRAMs), an enemy AI will not shoot at a character that has a simple custom TRAC, but will run up to the character and use melee attacks. But if I add TRACkonokocore_animations as a ParentCollection, then the enemy AI will shoot at the character.<br />
<br />
I will continue to investigate why this happens.<br />
<br />
[[User:EdT|EdT]] 18:27, 21 May 2020 (PDST)</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:OniSplit&diff=29279Talk:OniSplit2020-05-15T19:36:38Z<p>EdT: /* TGA Transparency bug */</p>
<hr />
<div>Talk page archives: [[/Archive1|#1]]<br />
<br />
==TGA Transparency bug==<br />
<br />
I extracted HQ_DOUBLED_GLASS as TGA format from vanilla Level8_Final with the OniSplit command -extract:tga. The file was opened in Photoshop and the alpha channel was visible.<br />
I then added that texture to Sketchup and applied it in a test level, it appeared transparent in Sketchup. I used the command -create:level to create a level in Oni. In the game Oni, the texture appeared opaque not transparent. When, the file TXMPHQ_DOUBLED_GLASS.oni was extracted from the test level as TGA, the alpha channel was gone or opaque. <br />
<br />
Even if the following code was added to the textures.xml file, the texture still appeared opaque in game.<br />
<br />
<Texture Name="HQ_DOUBLED_GLASS"><br />
<GunkFlags>Transparent TwoSided</GunkFlags><br />
<Format>RGBA</Format><br />
<Image>images/HQ_DOUBLED_GLASS.tga</Image><br />
</Texture><br />
<br />
However, if HQ_DOUBLED_GLASS.tga is converted to PNG format with alpha channel, and then the PNG file is used in Sketchup, then the texture will be transparent in game.<br />
<br />
This occurs using OniSplit version 0.9.96.0 and previous versions, tested to version 0.9.90.0. (EDIT: Transparency loss is observed for all glass textures, not just HQ_DOUBLED_GLASS.)<br />
<br />
[[User:EdT|EdT]] 15:03, 14 May 2020 (PDST)<br />
<br />
When you described the issue to me in PM, I didn't notice/understand the key part about applying the texture in SketchUp and then using -create:level on SketchUp's output. I thought we were talking about a simple TXMP roundtrip through TGA. Can you confirm that the texture's alpha goes opaque (or disappears) if you use -extract:tga on TXMPHQ_DOUBLED_GLASS.oni, and then immediately reimport it either with '''-create''' (either from XML with extra flags or from TGA)? --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 11:44, 15 May 2020 (CEST)<br />
<br />
Regarding the TXMP roundtrip, after extracting TXMPHQ_DOUBLED_GLASS.oni as TGA, I used the command -create:txmp -format:bgra32 -large -genmipmaps, the resulting file had the alpha channel. To confirm, I replaced the file TXMPHQ_DOUBLED_GLASS.oni from the -create:level with the one from -create:txmp in the test level and it was transparent.<br />
[[User:EdT|EdT]] 12:35, 15 May 2020 (PDST)<br />
<br />
==Sound export bug==<br />
As discussed on Discord there's a sound export bug for SNDDzap*.oni<br />
<br />
One might record the sounds in OBS and compare it with the exported ones to generate further hints on what went wrong. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 13:29, 21 July 2019 (CEST)<br />
<br />
#The zap sounds are randomized in an OSBD group, so recording them from the game in some identifiable way would require some extra work (custom OSBD). It's much easier to ask Mac folks for AIFF versions of those sounds. ''And actually, there are [[seven]] zap sounds in the PC demo as well.'' <br />
#OniSplit slaps a 22.05 kHz header on those files, although they're 44.1kHz and have a perfectly good 44.1kHz header in Oni. Not sure why they're getting a 22.05kHz header. Perhaps Neo got confused by the sloppy documentation of the [[OBD:SNDD/wav|WAV header]], which until my edit gave the same hex listing for the three WAV header types. Either that, or he just assumes the sample rate to be 22.05kHz by default and doesn't update it from the actual file. Will check in the code. ''Actually yeah, he just does as if all the sounds were 22.05kHz.''<br />
#Besides SNDDzap*.oni, there is one other 44.1kHz sound in PC Oni, SNDDap_hit_shld.aif; which suffers from the same export problem, although it's less noticeable.<br />
#Apparently 22.05 kHz stereo sounds are correctly exported as stereo, it's just 44.1 kHz mono files that get a wrong WAV header.<br />
#Will be fixing this in the latest "nightly" OniSplit (haven't yet decided on a version numbering and source control scheme).<br />
#:[[User:Geyser|geyser]] ([[User talk:Geyser|talk]])<br />
<br />
==Page improvement==<br />
Try to click on http://wiki.oni2.net/OniSplit#CLI_tips<br />
<br />
The section should be made to pop up, currently it doesn't. --[[User:Paradox-01|Paradox-01]]<br />
<br />
:Yes, when a Divhide section is set to start hidden, it throws off the browser's ability to jump to the right spot. I've never been sure whether to have that section auto-show or auto-hide. Now that it's auto-showing, you'll see that the anchor works. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 12:50, 12 March 2014 (CET)<br />
<br />
<br />
==Change Log ==<br />
OniSplit version: OniSplit v0.9.90<br />
<br />
What's new:<br />
:* Fixes bugs with Import/Export of M3GMs (obj files).<br />
:* Fixes euler angle issues with exported TRAMs.<br />
:* Fixes -noanim command to produce a standing pose.<br />
:* In the ONWC file, you should be able to reference the dae/obj file directly then you don't need the separate M3GM.<br />
:* When exporting AKEV, quads that have script ids assigned to them are exported to separate files. This is related to BSL commands such as env_show 540 0<br />
:* Adds option -anim-merge to export multiple animations to a single dae. Useful in dealing with walk/run or combo animations.<br />
<br />
onisplit -extract:xml <destination directory> -anim-merge -anim-body:src\Path_To_\TRBSkonoko_body_high.oni Path_To\TRAMKONCOMcomb_k.oni Path_To\TRAMKONCOMcomb_k_k.oni Path_To\TRAMKONCOMcomb_k_k_k.oni<br />
<br />
:* Adds a scene exporter<br />
<br />
OniSplit -extract:dae <destination directory> scene.xml<br />
<br />
For example if the scene.xml file looks like this <br />
<br />
<Scene><br />
<Node Name="camera"><br />
<Camera /><br />
<Animation>OBANCamout01.oni</Animation><br />
<Animation>OBANCamout02.oni</Animation><br />
<Animation>OBANCamout03.oni</Animation><br />
<Animation>OBANCamout04.oni</Animation><br />
<Animation>OBANCamout05.oni</Animation><br />
<Animation>OBANCamout06.oni</Animation><br />
</Node><br />
<Node Name="motorcycle02"><br />
<Geometry>M3GMmotorcycle02.oni</Geometry><br />
<Animation>OBANmotorcycle02.oni</Animation><br />
<Animation>OBANmotorcycle02_stop.oni</Animation><br />
<Node Name="hubs"><br />
<Geometry>M3GMhubs.oni</Geometry><br />
<Animation>OBANhubs.oni</Animation><br />
<Animation>OBANhubs_stop.oni</Animation><br />
</Node><br />
<Node Name="hubs_rear"><br />
<Geometry>M3GMhubs_rear.oni</Geometry><br />
<Animation>OBANhubs_rear.oni</Animation><br />
<Animation>OBANhubs_rear_stop.oni</Animation><br />
</Node><br />
</Node><br />
</Scene><br />
<br />
When you load the dae in XSI you'll find the motorcycle and the lab level intro camera<br />
If you select the camera and press play you'll get to see the motorcycle into animation like you see it in game <br />
<br />
<br />
OniSplit version: OniSplit v0.9.52<br />
<br />
What's new:<br />
:* When a TRBS file is exported to xml the geometry is exported to separate .dae files, one .dae file for each LOD<br />
:* New -anim-body option. This allows a particular body (ONCC or TRBS) to be specified when exporting animations:<br />
<br />
onisplit -extract:xml out -anim-body:ONCCbarabus.oni TRAMsomething.oni<br />
<br />
:* New -recurse option for the xml exporter. Have fun :)<br />
:: This extracts all linked files e.g. it starts with ONCC, goes to TRAC and then extracts all TRAMs too. (This works by replacing classes file links.)<br />
:: Recursive extracted files can be re-converted recursively again.<br />
<br />
onisplit -extract:xml out -recurse ONCCbarabus.oni<br />
<br />
:* Changed light color in the environment importer to white (it used to be blueish)<br />
:* New -env-notxmp option. This prevents the automatic creation of TXMP files while importing the environment.<br />
:* Made -normals work when importing TRBS from xml + dae files.<br />
:* Fixed the Collada importer to work with 3DSMax exported files<br />
<br />
OniSplit version: OniSplit v0.9.40<br />
<br />
What's new:<br />
<br />
:* support for exporting/importing [[OBD:BINA/SABD|sound animations]] to/from xml files<br />
:* better Collada export for environment<br />
:* support for full color transparent textures (-format:bgra32 on the command line, ARGB8888 format in an xml file)<br />
:* different (hopefully better) xml export format for animations (this one is actually from 0.9.38 but since that wasn't mentioned here...)<br />
:* a more or less complete animation importer. This one deservers some notes:<br />
::-unlike other importers that produce .oni files this one produces and .xml file (similar to the one you get when exporting a TRAM)<br />
::when you do<br />
onisplit -create:tram target_dir animation.dae<br />
::in the target dir you'll get a TRAManimation.xml file.<br />
::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.<br />
::-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.<br />
::-Note that the geometry that is present inside the Collada file is used to compute the "vertical extents" so it better be the same or close to the one the animation is intended for.<br />
::-The biggest problem are the attacks. While it's not difficult to add attacks to the xml file, computing the necessary "extents" is not going to be easy. I guess in the end I'll have to add some command to OniSplit to do it.<br />
::-Everything else that I forgot :)<br />
<br />
[[User:Neo|Neo]]<br />
<br />
New OniSplit version: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit|_v0.9.37.zip OniSplit v0.9.37]<br />
<br />
What's new:<br />
<br />
:* support for transparency in the environment importer<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.35<br />
<br />
What's new:<br />
<br />
:* conversion of recorded films (.dat binary files) to xml files that can be used to create FILM .oni files<br />
<br />
OniSplit film2xml out_dir film.dat<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.34<br />
<br />
What's new:<br />
<br />
:* SNDD importer<br />
::-WAV files (.wav, mono/stereo, 22.05KHz/44.1KHz, uncompressed(PCM)/compressed(MS-ADPCM)) produce SNDD files that are compatible with Oni PC retail.<br />
::-AIFC files (.aif/.aifc/.afc, mono/stereo 22.05KHz, compressed(ima4)) produce SNDD files that are compatible with Oni Mac.<br />
::Example<br />
<br />
<br />
<br />
OniSplit -create out_dir test.aif<br />
OniSplit -create out_dir test.wav<br />
<br />
<br />
:*LOD support for creating TRBS files. This can be done by creating an xml file containing the following:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni Version="0.9.29.0"><br />
<Instance id="0" type="TRBS"><br />
<Elements><br />
<Link>barabus_body_1.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_3.dae</Link><br />
<Link>barabus_body_4.dae</Link><br />
<Link>barabus_body_5.dae</Link><br />
</Elements><br />
</Instance><br />
</Oni><br />
<br />
::and running the command (assuming the created xml file's name is barabus_body.xml):<br />
<br />
OniSplit -create out_dir barabus_body.xml<br />
<br />
::It's not strictly necessary to create 5 different geometries for each LOD. The following works just as well:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni Version="0.9.29.0"><br />
<Instance id="0" type="TRBS"><br />
<Elements><br />
<Link>barabus_body_1.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_3.dae</Link><br />
</Elements><br />
</Instance><br />
</Oni><br />
<br />
<br />
:*An xml file can contain "links" to other xml/obj/dae files. For example you can have the following line in an ONWC xml file:<br />
<br />
<Geometry>pistol.obj</Geometry><br />
<br />
::Assuming the file pistol.obj exists in the same directory an M3GM .oni file will be automatically created from it.<br />
<br />
::Relative paths work just as well:<br />
<br />
<Geometry>geometry/pistol.obj</Geometry><br />
<br />
<br />
:*The -create:subt, -create:txmp and -create:m3gm are sort of obsolete. They still work but now you can simply use '-create' (or just 'create'):<br />
<br />
OniSplit -create out_dir crate.dae<br />
OniSplit create out_dir -format:bgr555 -genmipmaps pic.tga<br />
OniSplit create out_dir subtitles.txt<br />
<br />
<br />
:*Work in progress: the AKEV importer now reads Collada materials so the resulting AKEV is textured.<br />
<br />
:Sample levels:<br />
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/noglass.zip TestLevel1] -- This level should look like this in-game: <u>[[:Image:NoGlass Import Test 1.jpg|Image 1]]</u> <u>[[:Image:NoGlass Import Test 2.jpg|Image 2]]</u> <u>[[:Image:NoGlass Import Test 3.jpg|Image 3]]</u><br />
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/hexagon.zip TestLevel2] -- This level should look like this in-game: <u>[http://edt.oni2.net/images/hexagon1.jpg Image 1]</u><br />
:A zip file contains the minimum needed to get a new level running in Oni. To "compile" a level extract it to a folder and run the following commands:<br />
<br />
OniSplit -create out -genmipmaps -format:dxt1 *.xml<br />
OniSplit -import:nosep . Oni\GameDataFolder\level1_Final.dat<br />
<br />
:(Of course, you need to change the output .dat file path to match your Oni installation path)<br />
<br />
:Note1: The hexagon level needs to be scaled up to work properly. Use the envscale option for this:<br />
OniSplit -create out -genmipmaps -format:dxt1 -envscale:40 *.xml<br />
<br />
:Note2: I've updated the level files to contain 20 empty corpses to prevent crashes.</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:OniSplit&diff=29270Talk:OniSplit2020-05-14T22:05:23Z<p>EdT: </p>
<hr />
<div>Talk page archives: [[/Archive1|#1]]<br />
<br />
==TGA Transparency bug==<br />
<br />
I extracted HQ_DOUBLED_GLASS as TGA format from vanilla Level8_Final with the OniSplit command -extract:tga. The file was opened in Photoshop and the alpha channel was visible.<br />
I then added that texture to Sketchup and applied it in a test level, it appeared transparent in Sketchup. I used the command -create:level to create a level in Oni. In the game Oni, the texture appeared opaque not transparent. When, the file TXMPHQ_DOUBLED_GLASS.oni was extracted from the test level as TGA, the alpha channel was gone or opaque. <br />
<br />
Even if the following code was added to the textures.xml file, the texture still appeared opaque in game.<br />
<br />
<Texture Name="HQ_DOUBLED_GLASS"><br />
<GunkFlags>Transparent TwoSided</GunkFlags><br />
<Format>RGBA</Format><br />
<Image>images/HQ_DOUBLED_GLASS.tga</Image><br />
</Texture><br />
<br />
However, if HQ_DOUBLED_GLASS.tga is converted to PNG format with alpha channel, and then the PNG file is used in Sketchup, then the texture will be transparent in game.<br />
<br />
This occurs using OniSplit version 0.9.96.0 and previous versions, tested to version 0.9.90.0<br />
<br />
[[User:EdT|EdT]] 15:03, 14 May 2020 (PDST)<br />
<br />
<br />
==Sound export bug==<br />
As discussed on Discord there's a sound export bug for SNDDzap*.oni<br />
<br />
One might record the sounds in OBS and compare it with the exported ones to generate further hints on what went wrong. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 13:29, 21 July 2019 (CEST)<br />
<br />
#The zap sounds are randomized in an OSBD group, so recording them from the game in some identifiable way would require some extra work (custom OSBD). It's much easier to ask Mac folks for AIFF versions of those sounds. ''And actually, there are [[seven]] zap sounds in the PC demo as well.'' <br />
#OniSplit slaps a 22.05 kHz header on those files, although they're 44.1kHz and have a perfectly good 44.1kHz header in Oni. Not sure why they're getting a 22.05kHz header. Perhaps Neo got confused by the sloppy documentation of the [[OBD:SNDD/wav|WAV header]], which until my edit gave the same hex listing for the three WAV header types. Either that, or he just assumes the sample rate to be 22.05kHz by default and doesn't update it from the actual file. Will check in the code. ''Actually yeah, he just does as if all the sounds were 22.05kHz.''<br />
#Besides SNDDzap*.oni, there is one other 44.1kHz sound in PC Oni, SNDDap_hit_shld.aif; which suffers from the same export problem, although it's less noticeable.<br />
#Apparently 22.05 kHz stereo sounds are correctly exported as stereo, it's just 44.1 kHz mono files that get a wrong WAV header.<br />
#Will be fixing this in the latest "nightly" OniSplit (haven't yet decided on a version numbering and source control scheme).<br />
#:[[User:Geyser|geyser]] ([[User talk:Geyser|talk]])<br />
<br />
==Page improvement==<br />
Try to click on http://wiki.oni2.net/OniSplit#CLI_tips<br />
<br />
The section should be made to pop up, currently it doesn't. --[[User:Paradox-01|Paradox-01]]<br />
<br />
:Yes, when a Divhide section is set to start hidden, it throws off the browser's ability to jump to the right spot. I've never been sure whether to have that section auto-show or auto-hide. Now that it's auto-showing, you'll see that the anchor works. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 12:50, 12 March 2014 (CET)<br />
<br />
<br />
==Change Log ==<br />
OniSplit version: OniSplit v0.9.90<br />
<br />
What's new:<br />
:* Fixes bugs with Import/Export of M3GMs (obj files).<br />
:* Fixes euler angle issues with exported TRAMs.<br />
:* Fixes -noanim command to produce a standing pose.<br />
:* In the ONWC file, you should be able to reference the dae/obj file directly then you don't need the separate M3GM.<br />
:* When exporting AKEV, quads that have script ids assigned to them are exported to separate files. This is related to BSL commands such as env_show 540 0<br />
:* Adds option -anim-merge to export multiple animations to a single dae. Useful in dealing with walk/run or combo animations.<br />
<br />
onisplit -extract:xml <destination directory> -anim-merge -anim-body:src\Path_To_\TRBSkonoko_body_high.oni Path_To\TRAMKONCOMcomb_k.oni Path_To\TRAMKONCOMcomb_k_k.oni Path_To\TRAMKONCOMcomb_k_k_k.oni<br />
<br />
:* Adds a scene exporter<br />
<br />
OniSplit -extract:dae <destination directory> scene.xml<br />
<br />
For example if the scene.xml file looks like this <br />
<br />
<Scene><br />
<Node Name="camera"><br />
<Camera /><br />
<Animation>OBANCamout01.oni</Animation><br />
<Animation>OBANCamout02.oni</Animation><br />
<Animation>OBANCamout03.oni</Animation><br />
<Animation>OBANCamout04.oni</Animation><br />
<Animation>OBANCamout05.oni</Animation><br />
<Animation>OBANCamout06.oni</Animation><br />
</Node><br />
<Node Name="motorcycle02"><br />
<Geometry>M3GMmotorcycle02.oni</Geometry><br />
<Animation>OBANmotorcycle02.oni</Animation><br />
<Animation>OBANmotorcycle02_stop.oni</Animation><br />
<Node Name="hubs"><br />
<Geometry>M3GMhubs.oni</Geometry><br />
<Animation>OBANhubs.oni</Animation><br />
<Animation>OBANhubs_stop.oni</Animation><br />
</Node><br />
<Node Name="hubs_rear"><br />
<Geometry>M3GMhubs_rear.oni</Geometry><br />
<Animation>OBANhubs_rear.oni</Animation><br />
<Animation>OBANhubs_rear_stop.oni</Animation><br />
</Node><br />
</Node><br />
</Scene><br />
<br />
When you load the dae in XSI you'll find the motorcycle and the lab level intro camera<br />
If you select the camera and press play you'll get to see the motorcycle into animation like you see it in game <br />
<br />
<br />
OniSplit version: OniSplit v0.9.52<br />
<br />
What's new:<br />
:* When a TRBS file is exported to xml the geometry is exported to separate .dae files, one .dae file for each LOD<br />
:* New -anim-body option. This allows a particular body (ONCC or TRBS) to be specified when exporting animations:<br />
<br />
onisplit -extract:xml out -anim-body:ONCCbarabus.oni TRAMsomething.oni<br />
<br />
:* New -recurse option for the xml exporter. Have fun :)<br />
:: This extracts all linked files e.g. it starts with ONCC, goes to TRAC and then extracts all TRAMs too. (This works by replacing classes file links.)<br />
:: Recursive extracted files can be re-converted recursively again.<br />
<br />
onisplit -extract:xml out -recurse ONCCbarabus.oni<br />
<br />
:* Changed light color in the environment importer to white (it used to be blueish)<br />
:* New -env-notxmp option. This prevents the automatic creation of TXMP files while importing the environment.<br />
:* Made -normals work when importing TRBS from xml + dae files.<br />
:* Fixed the Collada importer to work with 3DSMax exported files<br />
<br />
OniSplit version: OniSplit v0.9.40<br />
<br />
What's new:<br />
<br />
:* support for exporting/importing [[OBD:BINA/SABD|sound animations]] to/from xml files<br />
:* better Collada export for environment<br />
:* support for full color transparent textures (-format:bgra32 on the command line, ARGB8888 format in an xml file)<br />
:* different (hopefully better) xml export format for animations (this one is actually from 0.9.38 but since that wasn't mentioned here...)<br />
:* a more or less complete animation importer. This one deservers some notes:<br />
::-unlike other importers that produce .oni files this one produces and .xml file (similar to the one you get when exporting a TRAM)<br />
::when you do<br />
onisplit -create:tram target_dir animation.dae<br />
::in the target dir you'll get a TRAManimation.xml file.<br />
::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.<br />
::-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.<br />
::-Note that the geometry that is present inside the Collada file is used to compute the "vertical extents" so it better be the same or close to the one the animation is intended for.<br />
::-The biggest problem are the attacks. While it's not difficult to add attacks to the xml file, computing the necessary "extents" is not going to be easy. I guess in the end I'll have to add some command to OniSplit to do it.<br />
::-Everything else that I forgot :)<br />
<br />
[[User:Neo|Neo]]<br />
<br />
New OniSplit version: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit|_v0.9.37.zip OniSplit v0.9.37]<br />
<br />
What's new:<br />
<br />
:* support for transparency in the environment importer<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.35<br />
<br />
What's new:<br />
<br />
:* conversion of recorded films (.dat binary files) to xml files that can be used to create FILM .oni files<br />
<br />
OniSplit film2xml out_dir film.dat<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.34<br />
<br />
What's new:<br />
<br />
:* SNDD importer<br />
::-WAV files (.wav, mono/stereo, 22.05KHz/44.1KHz, uncompressed(PCM)/compressed(MS-ADPCM)) produce SNDD files that are compatible with Oni PC retail.<br />
::-AIFC files (.aif/.aifc/.afc, mono/stereo 22.05KHz, compressed(ima4)) produce SNDD files that are compatible with Oni Mac.<br />
::Example<br />
<br />
<br />
<br />
OniSplit -create out_dir test.aif<br />
OniSplit -create out_dir test.wav<br />
<br />
<br />
:*LOD support for creating TRBS files. This can be done by creating an xml file containing the following:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni Version="0.9.29.0"><br />
<Instance id="0" type="TRBS"><br />
<Elements><br />
<Link>barabus_body_1.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_3.dae</Link><br />
<Link>barabus_body_4.dae</Link><br />
<Link>barabus_body_5.dae</Link><br />
</Elements><br />
</Instance><br />
</Oni><br />
<br />
::and running the command (assuming the created xml file's name is barabus_body.xml):<br />
<br />
OniSplit -create out_dir barabus_body.xml<br />
<br />
::It's not strictly necessary to create 5 different geometries for each LOD. The following works just as well:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni Version="0.9.29.0"><br />
<Instance id="0" type="TRBS"><br />
<Elements><br />
<Link>barabus_body_1.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_3.dae</Link><br />
</Elements><br />
</Instance><br />
</Oni><br />
<br />
<br />
:*An xml file can contain "links" to other xml/obj/dae files. For example you can have the following line in an ONWC xml file:<br />
<br />
<Geometry>pistol.obj</Geometry><br />
<br />
::Assuming the file pistol.obj exists in the same directory an M3GM .oni file will be automatically created from it.<br />
<br />
::Relative paths work just as well:<br />
<br />
<Geometry>geometry/pistol.obj</Geometry><br />
<br />
<br />
:*The -create:subt, -create:txmp and -create:m3gm are sort of obsolete. They still work but now you can simply use '-create' (or just 'create'):<br />
<br />
OniSplit -create out_dir crate.dae<br />
OniSplit create out_dir -format:bgr555 -genmipmaps pic.tga<br />
OniSplit create out_dir subtitles.txt<br />
<br />
<br />
:*Work in progress: the AKEV importer now reads Collada materials so the resulting AKEV is textured.<br />
<br />
:Sample levels:<br />
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/noglass.zip TestLevel1] -- This level should look like this in-game: <u>[[:Image:NoGlass Import Test 1.jpg|Image 1]]</u> <u>[[:Image:NoGlass Import Test 2.jpg|Image 2]]</u> <u>[[:Image:NoGlass Import Test 3.jpg|Image 3]]</u><br />
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/hexagon.zip TestLevel2] -- This level should look like this in-game: <u>[http://edt.oni2.net/images/hexagon1.jpg Image 1]</u><br />
:A zip file contains the minimum needed to get a new level running in Oni. To "compile" a level extract it to a folder and run the following commands:<br />
<br />
OniSplit -create out -genmipmaps -format:dxt1 *.xml<br />
OniSplit -import:nosep . Oni\GameDataFolder\level1_Final.dat<br />
<br />
:(Of course, you need to change the output .dat file path to match your Oni installation path)<br />
<br />
:Note1: The hexagon level needs to be scaled up to work properly. Use the envscale option for this:<br />
OniSplit -create out -genmipmaps -format:dxt1 -envscale:40 *.xml<br />
<br />
:Note2: I've updated the level files to contain 20 empty corpses to prevent crashes.</div>EdThttps://wiki.oni2.net/w/index.php?title=XML:ONLV&diff=28776XML:ONLV2020-01-02T21:49:02Z<p>EdT: /* Level releases, forum threads and wiki pages */</p>
<hr />
<div>{{XML_File_Header | type=ONLV | prev=ONLD | next=ONSK | name=Oni Game Level}}<br />
{{finish}}<br />
;Todo list<br />
<br />
* tips with cutscene charas: sync pelvis OBAN and partner TRAM<br />
* notes on camera and film import ?<br />
* make new demo level after implementation of final scene import/export, dae-based CRSA import/export, shared folder bugfix, ENVP recycler<br />
** try to clean page a bit<br />
** also, import section of v0.9.99.0+ no longer supports node tags<br />
<br />
<Import Path="env/lab_motorcycle.dae"><br />
<Node Id="motorcycle"><br />
<ScriptId>9</ScriptId><br />
<GunkFlags>NoCollision</GunkFlags><br />
</Node><br />
</Import><br />
<br />
use instead:<br />
<br />
<Import Path="env/lab_motorcycle.dae"><br />
<ScriptId>9</ScriptId><br />
<GunkFlags>NoCollision</GunkFlags><br />
</Import><br />
<br />
<br />
__TOC__<br />
<br />
<br />
==Level releases, forum threads and wiki pages==<br />
;Custom levels that have been created so far<br />
* Oni 2 Angel Studios Tour (TBA uses level 32)<br />
* [http://oni.bungie.org/forum/viewtopic.php?id=2965 Omega Tournament] (16/9/19 uses level 31<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2698 Wilderness Preserve] (19/1/14) uses level 17 <br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2656 Island Level] (7/9/13) uses level 29<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2640 City Level Part 1] (12/7/13) uses level 28<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2619 Fight Club] (1/6/13) uses level 25<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2357 Old China] (12/5/12) uses level 24<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2302 Boss Battle] (18/3/12) uses level 23<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2271 De Dust Deluxe] (12/2/12) uses level 22<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2242 Parkour Challenge 2] (23/1/12) uses level 21<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2235 Parkour Challenge] (16/1/12) uses level 21<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2001 Mini-Partenon] (25/7/11)uses level 5<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2024 Muro's Lair - Preview] (3/10/11) uses level 20<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=1957 Hexagon] (3/7/11) uses level 16<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=1938 Junkyard] (23/6/11) uses level 15<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=1736 Arena] (8/11/10) uses level 7<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=1506 Maze] (15/2/10) uses level 5<br />
* [http://mods.oni2.net/node/4 Arena of Pain] (09/16/08) uses level 30<br />
<br />
;Fun facts:<br />
* the [http://mods.oni2.net/node/327 Martian colony] level a.k.a. "Silly World" was one of the earliest levels imported (using OniSplit v0.9.29.0) but hasn't reached yet it's final release state<br />
** [http://oni.bungie.org/forum/viewtopic.php?pid=50565#p50565 OCF post]<br />
<br />
<br />
;OCF threads about level creation<br />
* '''[http://oni.bungie.org/community/forum/viewtopic.php?id=2087 "Creating the Lair - A level tutorial"]'''<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=1515 "Creating new levels"]<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?pid=33838 "Create levels with pathfinding grids"]<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2000 "More questions about levels"]<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?id=2003 "Sketchup tutorials for making levels"]<br />
* [http://oni.bungie.org/community/forum/viewtopic.php?pid=37252#p37252 "Modding Existing levels - Beta" ("Moveable furniture" post)]<br />
<br />
;Wiki pages about levels<br />
* [[New_levels]]<br />
* [[Lightmapping_levels]]<br />
* [[SketchUp_tutorials_and_tips|SketchUp tutorials and tips]]<br />
<br />
;Free texture resources<br />
* [http://vk.com/gameready various game meshes]<br />
* [http://www.tutorialsforblender3d.com/Textures/Textures_index.html various game textures]<br />
* [http://www.cgtextures.com/ various game textures]<br />
* [http://www.redsorceress.com/skybox.html redsorceress free skyboxes]<br />
* [http://forums.epicgames.com/threads/603122-Remus-high-resolution-skydome-texture-pack skies and objects of the solar system]<br />
* [http://blenderartists.org/forum/showthread.php?224065-New-High-resolution-sky-pack-for-Blender skies] <!-- (http://www.wuala.com/Olson/Photos/Optikz_360_Skies/) --><br />
* [http://blenderartists.org/forum/showthread.php?24038-Free-high-res-skymaps-%28Massive-07-update!%29 skies]<br />
<br />
==Concept phase==<br />
Be aware of limitation of level and engine.<br />
<br />
* triangle limit of a game level: ca. 520.000 (500.000 to be on save side)<br />
* {{ModTool}} can save dae files with max. 64.000 triangles per object<br />
* when polygons are too tightly packed the cam will look at too many of them and glitches appear: the visible GQs (GunkQuads) limit is 8192 (2^13), higher numbers will cause render bugs and call BSL message "Exceeded max visible GQs ''number''"; limited solutions to this:<br />
** decrease the gs_farclipplane_set value<br />
** hide objects by [[#.3CModel.3E|env_show]]<br />
** hide objects by ''level design''<br />
*** for example departments in a building could be quite detailed because the view at the other departments/rooms is blocked by non-transparent walls<br />
* The camera can look at 2049 transparent textures at once, one more and Oni crashes.<br />
* characters are visible ''only'' within 4099|4099|4099 and -4099|-4099|-4099 world units<br />
* geometry stops at ca. X=4228|Z=4228 and -4228|-4228 (height not tested)<br />
* chr_debug_spheres = 1 visualizes collision spheres of characters, then you can check if they fit through a new entrance<br />
<br />
<br />
==Notes on Mod Tool and Google Sketchup==<br />
Re-saving a dae file - that was originally made in Sketchup - in Mod Tool can result in a surprising change in size within Oni.<br />
<br />
That due to a difference in the length specification.<br />
<br />
: For example Sketchup dae file has: <unit meter="0.0254000" name="inch" /><br />
: Re-saved Mod Tool dae file has: <unit meter="0.1" name="decimetre"></unit><br />
<br />
In that case you would need to open the new dae inside a text editor and change the length specification again.<br />
<br />
<br />
==Level import with OniSplit [http://mods.oni2.net/node/38 v0.9.82.0+]==<br />
'''Demo files'''<br />
<br />
Demo files can be downloaded [http://mods.oni2.net/node/299 here].<br />
<br />
First put the new "OniSplit.exe" into the second "lab" folder alongside the xml files.<br />
<br />
There's a "build.cmd" file. Those two are the important lines:<br />
<br />
OniSplit.exe -create:level out lab.xml<br />
OniSplit.exe -import:pc out level3_Final.dat<br />
<br />
The first line create the *.oni files from a master.xml file, in this case "lab.xml". If final, the oni files can be put into a new AE package.<br />
<br />
The second line creates level archives which can be used '''for fast tests'''. They don't require you to install a package.<br />
<br />
Instead of "nosep" you can now also use "pc" for the import. Mac does still use "sep".<br />
<br />
If the game crashes while loading (at ca. 90% progress), be sure that the texture's x and y (pixel) dimension are power of two: 512, 256, 128, 64, etc.<br />
<br />
If the game crashes while loading (at ca. 50-60% progress), be sure that the BINACJBOCharacters/AISA file has a player character.<br />
<br />
If the game crashes while loading (at ca. 5-10% progress), check if all textures were inside the "out" folder.<br />
<br />
: You can extract the AKEV file to xml, then search for the [[XML:AKEV#TXMA|TXMP array]].<br />
<br />
: [https://www.dropbox.com/s/0o3vloz6nd6kj98/AKEV_texture_checker.vbs?dl=0 THIS] script checks which textures are missing by comparing the AKEV*.xml with its *.oni files folder. Adapt the two paths so that it works for you. Alt + 4, insert code, then F5.<br />
<br />
"TXMP_marker_door" and "TXMP_marker_ghost" will be missing in the demo's "out" folder.<br />
<br />
You can add this between the other two lines in the build.cmd to prevent a crash.<br />
OniSplit.exe -create:txmp out env/markers/*.tga<br />
<br />
<br />
===The master xml file===<br />
File paths can be either absolute or relative.<br />
<br />
The '''master xml file name''' determine the '''bsl folder name''' and the '''AKEV and ONLV file name''' in the output folder.<br />
<br />
<br />
'''Mandatory files''' for level import:<br />
* ''level_environment''.dae<br />
* ''level_bnv''.dae<br />
* ''level_textures.tga/jpg/png''<br />
* Character.xml or AISA with player<br />
* ONSK name in <Sky> (on PC can be just a fake name; Mac need files ?)<br />
* ONLD file (for new levels; read on [[Making_a_mod_package#Mod_Info.cfg|HERE]] about savegame unlocking)<br />
<br />
<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <?xml version="1.0" encoding="utf-8"?><br />
|valign="top"| float, flag<br />
|valign="top"| Ignore this.<br />
|-<br />
| <Oni><br />
| -<br />
|<br />
|-<br />
|valign="top"| <Level SharedPath="..."><br />
|valign="top"| link<br />
| The master xml file can link to other xml files, most of them are [[OBD:BINA/OBJC#OBJC_types|BINACJBO]] files. The file type gets declared inside the file, so the file name itself doesn't have to contain the type. Ergo, "BINACJBOCharacter.xml" can be given a simpler name like "Character.xml".<br />
<br />
Some resources used by those xml files can be found in a "shared" folder. OniSplit copies textures and "physics" objects into the output folder; furniture objects will be integrate into the AKEV. Unused resources in the shared folder will be ignored. That way the final level archive / AE package contains only necessary files which saves the end-user space.<br />
<br />
In the demo are various subfolders in shared folder: consoles, doors, furniture, triggers and turrets.<br />
Following file types comes there without their file prefixes: CONS, DOOR, TRIG, OFGA. OniSplit recognize them nonetheless.<br />
|-<br />
| <Environment><br />
| -<br />
|<br />
|-<br />
| <Model><br />
| -<br />
| Used to import level geometry and static objects. See [[#<Model>|HERE]] for detailed information.<br />
|-<br />
| <Import Path="..."/><br />
| link<br />
|<br />
|-<br />
| <Node Id="..."><br />
| string<br />
| informative (space for notes so to say)<br />
|-<br />
|valign="top"| <ScriptId><br />
|valign="top"| integer<br />
| Tested with BSL command ...<br />
: [[#<Model>|env_show Id 1]] (use 0 to hide)<br />
: [[#Breakable glass with BSL recognition|env_broken Id [Id]]] (if also second Id is used then objects in that range get counted e.g. 3001, 3018 = 18)<br />
: [[#Texture exchange|env_texswap Id texture]] (no file prefix/suffix allowed)<br />
: [[#env_shade|env_shade Id Id R G B]]<br />
Static objects store their Id in [[XML:AKEV#IDXA_.28quad_group_id.29|one of AKEV's IDXA instances]].<br />
|-<br />
|valign="top"| <GunkFlags><br />
|valign="top"| flag<br />
|<br />
;AGQG (Gunk) flags (trimmed list)<br />
see ''OniSplit -help enums'' for more flags<br />
:None<br />
:NoCollision<br />
:NoObjectCollision<br />
:NoCharacterCollision<br />
:NoDecal<br />
:TwoSided<br />
:Invisible<br />
|-<br />
|valign="top"| <Rooms><br />
|valign="top"| -<br />
| For detailed information see [[#<Rooms>|HERE]].<br />
<br />
For Google Sketchup BNV tutorial see [http://oni.bungie.org/community/forum/viewtopic.php?pid=36760#p36760 HERE].<br />
|-<br />
| <Import Path="..."/><br />
| link<br />
| File path to *.dae file. BNV data, used to create pathfinding.<br />
|-<br />
| <Textures> {{Anchor|textures_tag}}<br />
| -<br />
| With OniSplit v0.9.94.0+ you can use attributes to set the default import formats and max dimensions. For example:<br />
<br />
: <Textures Format="BGR" AlphaFormat="RGBA" MaxSize="512"><br />
<br />
Textures that aren't power of two (2^x) or bigger than 512 will be scaled to be that way. For example: 2003x2000 becomes 512x512.<br />
|-<br />
| <Texture Name="..."><br />
| string<br />
| TXMP file name to generate.<br />
|-<br />
| <Flags><br />
| flag<br />
| Optional tag. For list of flags see [[XML:TXMP|HERE]].<br />
|-<br />
|valign="top"| <Format><br />
|valign="top"| flag<br />
|<br />
:DXT1<br />
:BGR<br />
:RGBA<br />
:BGR555<br />
:BGRA5551<br />
:BGRA4444<br />
|-<br />
|valign="top"| <GunkFlags><br />
|valign="top"| flag<br />
|<br />
;AGQG (Gunk) flags (trimmed list)<br />
see ''OniSplit -help enums'' for more flags<br />
:None<br />
:NoCollision<br />
:NoObjectCollision<br />
:NoCharacterCollision<br />
:NoDecal<br />
:TwoSided<br />
:Invisible<br />
|-<br />
| <Image><br />
| link<br />
| File path to *.tga/jpg file.<br />
|-<br />
|valign="top"| <Sky><br />
|valign="top"| string<br />
| ONSKfile.oni (without file pre- and suffix)<br />
<br />
The import doesn't work with an empty tag. <Sky>clear</Sky> helps here; any other fictional name will also do.<br />
<br />
For detailed information see [[XML:ONSK|HERE]].<br />
|-<br />
| <Objects><br />
| -<br />
|<br />
|-<br />
|valign="top"| <Import><br />
|valign="top"| link<br />
| File path. Supported files:<br />
: [[XML:BINA/OBJC/CHAR|Character.xml]] (has to contain player character if there's no AISA file with it)<br />
: [[XML:BINA/OBJC/CONS|Console.xml]]<br />
: [[XML:BINA/OBJC/DOOR|Door.xml]]<br />
: [[XML:BINA/OBJC/FLAG|Flag.xml]]<br />
: [[#Furniture.xml|Furniture.xml]]<br />
: [[XML:BINA/OBJC/NEUT|Neutral.xml]]<br />
: [[XML:BINA/OBJC/PART|Particle.xml]]<br />
: [[XML:BINA/OBJC/PATR|PatrolPath.xml]]<br />
: [[#Physics.xml|Physics.xml]]<br />
: [[XML:BINA/OBJC/PWRU|PowerUp.xml]]<br />
: [[XML:SNDD#BINACJBOSound.xml|Sound.xml]]<br />
: [[XML:BINA/OBJC/TRIG|Trigger.xml]]<br />
: [[XML:BINA/OBJC/TRGV|TriggerVolume.xml]]<br />
: [[XML:BINA/OBJC/WEAP|Weapon.xml]]<br />
<br />
'''NOT''' currently supported (you need to import as regular .oni file):<br />
: [[XML:BINA/OBJC/MELE|Mele.xml]]<br />
|-<br />
| <Films><br />
| -<br />
|<br />
|-<br />
| <Import><br />
| link<br />
| File path to *.xml file. OniSplit creates a [[XML:FILM|FILM]] file from it. Used for characters in cutscenes.<br />
|-<br />
| <Cameras><br />
| -<br />
|<br />
|-<br />
| <Camera Path="..."><br />
| link<br />
| File path to *.dae file. OniSplit creates an OBAN file from it. Used for cutscenes.<br />
|-<br />
| <Animation Name="..."/><br />
| string<br />
| Name for the OBAN file.<br />
|}<br />
<br />
<br />
This is a '''trimmed''' version of the master file "lab.xml" from the demo. It's meant to give you a first impression. -- We might upload a smaller demo someday with all features nonetheless.<br />
<br />
<?xml version="1.0" encoding="utf-8" ?><br />
<Oni><br />
<Level SharedPath="../shared"><br />
<Environment><br />
<Model><br />
<Import Path="env/lab_env.dae"/><br />
<Import Path="env/lab_bomber_window.dae"/><br />
<Import Path="env/lab_motorcycle.dae"><br />
<Node Id="motorcycle"><br />
<ScriptId>9</ScriptId><br />
<GunkFlags>NoCollision</GunkFlags><br />
</Node><br />
</Import><br />
</Model><br />
<Rooms><br />
<Import Path="env/lab_bnv.dae"/><br />
</Rooms><br />
<Textures><br />
<Texture Name="GOO"><br />
<Format>bgra4444</Format><br />
<GunkFlags>NoCollision</GunkFlags><br />
<Image>env/images/GOO.tga</Image><br />
</Texture><br />
</Textures><br />
</Environment><br />
<Sky>sunset</Sky><br />
<Objects><br />
<Import>Character.xml</Import><br />
<Import>Furniture.xml</Import><br />
<Import>TriggerVolume.xml</Import><br />
<Import>Physics.xml</Import><br />
</Objects><br />
<Films><br />
<Import>films/BomberKonRun01.xml</Import><br />
<Import>films/BomberKonRun02.xml</Import><br />
</Films><br />
<Cameras><br />
<Camera Path="cameras/BomberCam01.dae"><br />
<Animation Name="BomberCam01"/><br />
</Camera><br />
<Camera Path="cameras/BomberCam02.dae"><br />
<Animation Name="BomberCam02"/><br />
</Camera><br />
</Cameras><br />
</Level><br />
</Oni><br />
<br />
<br />
====<Model>====<br />
This tag is mandatory (it must be present to avoid errors); the model section contains one import path to the AKEV (level) geometry (*.dae) and can contain additional import paths for exceptions (*.dae).<br />
<br />
Data from the demo:<br />
<br />
<Import Path="env/lab_env.dae"/><br />
<Import Path="env/lab_motorcycle.dae"><br />
<Node Id="motorcycle"><br />
<ScriptId>9</ScriptId><br />
<GunkFlags>NoCollision</GunkFlags><br />
</Node><br />
</Import><br />
<br />
<br />
'''env_show'''<br />
<br />
The motorcycle has here script id 9. You can show and hide the object with bsl command env_show whereby the second parameter means true or false. '''Never use 0 as id''' because it won't work.<br />
<br />
env_show 9 1<br />
env_show 9 0<br />
<br />
EdT demonstrates [http://youtu.be/Em6wa5JTQNM here] env_show. The objects have collision.<br />
<br />
<br />
The last original level (syndicate mountain compound) has a big satellite dish platform that can be made hidden. Obviously, such objects/areas can be made to have pathfinding too.<br />
<br />
<br />
;More possible applications of env_show:<br />
* ground/ceiling/objects for cutscenes that become partially destroyed<br />
* destrucable walls [http://www.youtube.com/watch?v=qgJUbPWX5yE like in Deus Ex 3] (trigger volume, replacing punch anim with punch-through-wall anim)<br />
* grids in front of ventilation shafts (a little door object could be an alternative)<br />
** at the moment this can't be done because characters can't sneak under the top edge of the opening (the characters collision spheres are too big)<br />
* managing object groups with trigger volumes (save multiple objects in one dae file)<br />
<br />
<!-- atm, the effort is not worth the work<br />
https://dl.dropboxusercontent.com/u/139715/OniGalore/TV_triggered_env_show.png<br />
: edit: replace 0 by 25<br />
<br />
If the objects appear to ''flash'' we could replace the hide_all_object_groups function with individual TV exit functions.<br />
<br />
func hide_all_object_groups<br />
{<br />
# env_show id [1|0]<br />
env_show 1 0<br />
env_show 2 0<br />
# ...<br />
env_show 25 0<br />
}<br />
<br />
func show_object_group (int grpA, int grpB, int grpC, int grpD, int grpE, int grpF, int grpG, int grpH)<br />
{<br />
env_show (grpA, 1)<br />
env_show (grpB, 1)<br />
env_show (grpC, 1)<br />
env_show (grpD, 1)<br />
env_show (grpE, 1)<br />
env_show (grpF, 1)<br />
env_show (grpG, 1)<br />
env_show (grpH, 1)<br />
<br />
# missing arguments are taken to be 0<br />
}<br />
<br />
func TV_25_enter<br />
{<br />
hide_all_object_groups<br />
<br />
# show object group of entered TV and of neighboring TVs<br />
# (center, north, north east, east, east south, south, south west, west, west north)<br />
# there's a limit of 8 arguments per function<br />
show_object_group 25 1 2 3 4 5 6 7<br />
show_object_group 8<br />
}<br />
<br />
# other examples<br />
func TV_6_enter<br />
{<br />
hide_all_object_groups<br />
show_object_group 0 0 00 0 00 00 00 00<br />
show_object_group 22<br />
}<br />
<br />
func TV_20_enter<br />
{<br />
hide_all_object_groups<br />
show_object_group 20 21 6 19<br />
}<br />
--><br />
<br />
<br />
=====Import of object groups=====<br />
'''Mod Tool versus Sketchup'''<br />
<br />
The meaning and behavior of "groups" greatly differs in these two programs.<br />
<br />
:'''In Sketchup you can group objects which enables you to easily duplicate all objects inside a group''' and to scale/rotate/translate all together.'''<br />
<br />
:'''In Mod Tool''' grouped objects are still lose and duplicating a group won't duplicate the objects. To achieve the same effect as in Sketchup, '''you have to create a hierarchy whereby any object can be the "parent" and all others the "children".'''<br />
<br />
<br />
'''Google Sketchup'''<br />
<br />
To create a group select two or more objects, right-click on the selection, "make group".<br />
<br />
<br />
[[Image:ModTool_can_import_objs_in_hierarchies.jpg|right|thumb|Mod Tool can import objects in hierarchies to Oni.]]<br />
'''Mod Tool'''<br />
<br />
Either use the Explorer (A) or the Schematics(B) to create a hierarchy.<br />
<br />
:(A) In Explorer window, drag and drop one or more objects onto another one.<br />
<br />
:(B) Open the constrain tab at the right side. Select parent object, click "Parent", click the child object(s). Check the result in the Schematics window.<br />
<br />
:'''Mod Tool: caution when saving to dae!'''<br />
<br />
:A normal selection won't do. You have to select the object tree to successfully save a hierarchy. This is same way you do with Oni characters.<br />
<!--<br />
<br />
<br />
=====Import of smart object groups=====<br />
Let's say there are two groups. If an edit is made to one mesh the clone in the other group is instantly edited the same way.<br />
<br />
So that's a smart group.<br />
:In Sketchup it is named "component".<br />
:In Mod Tool it's named ???.<br />
::(Can be imported from Sketchup dae file but cause a crash when re-saving. I guess a script is needed to do the job.)<br />
--><br />
<br />
<br />
=====Breakable glass with BSL recognition=====<br />
Broken env objects can be recognized by bsl command ''env_broken (ID_1, ID_N)''. However, this whole thing requires additional code to work.<br />
<br />
An example is the training level. Let's determine how we can set up such a thing.<br />
<br />
First we need a [[XML:BINA/OBJC/TRGV|trigger volume]] like in level 1.<br />
<br />
<TRGV Id="11495"><br />
<Header><br />
<Flags>Locked</Flags><br />
<Position>-714.6615 -298 -555.2073</Position><br />
<Rotation>0 0 0</Rotation><br />
</Header><br />
<OSD><br />
<Name>tv75</Name><br />
<Scripts><br />
<Entry></Entry><br />
<Inside>targets_gone</Inside><br />
<Exit></Exit><br />
</Scripts><br />
<Teams>255</Teams><br />
<Size>400 31 270</Size><br />
<TriggerVolumeId>75</TriggerVolumeId><br />
<ParentId>0</ParentId><br />
<Notes></Notes><br />
<Flags>PlayerOnly</Flags><br />
</OSD><br />
</TRGV><br />
<br />
Now we need some BSL code.<br />
<br />
var int inside_target_function;<br />
<br />
func void enter_target_function(void)<br />
{<br />
dprint enter_target_function<br />
inside_target_function = 1;<br />
}<br />
<br />
func void exit_target_function(void)<br />
{<br />
dprint exit_target_function<br />
inside_target_function = 0;<br />
}<br />
<br />
func void targets_are_not_gone(void)<br />
{<br />
# CB: turn off the trigger volume and sleep for a second<br />
# so as not to cause hideous performance loss<br />
trigvolume_enable tv75 0<br />
sleep 60<br />
trigvolume_enable tv75 1<br />
}<br />
<br />
func void targets_gone(string ai_name)<br />
{<br />
if(inside_target_function eq 0)<br />
{ <br />
enter_target_function() # catch other "targets_gone" functions to let them do nothing<br />
<br />
var int num_broken = env_broken(3001, 3018);<br />
# if you only one target use scheme: env_broke(3001, 3001)<br />
<br />
if (num_broken eq 18)<br />
{<br />
targets_are_gone();<br />
}<br />
<br />
if (num_broken < 18)<br />
{<br />
targets_are_not_gone(); # to set check interval to one second<br />
}<br />
<br />
exit_target_function<br />
}<br />
}<br />
<br />
func targets_are_gone<br />
{<br />
trigvolume_enable tv75 0<br />
# [...]<br />
}<br />
<br />
;Explanation:<br />
<br />
Player enters the TV, "targets_gone" gets triggered. The variable "inside_target_function" should be 0 be default, so we are entering now the first if statement. Next, we can assume that the player didn't destroy all glass objects, so "num_broken" will be less than 18: "targets_are_not_gone" gets called.<br />
<br />
The TV function "targets_gone" would be triggered every frame but "targets_are_not_gone" increases the pause between checks: The TV gets deactivated for 60 frames. Then the TV becomes enabled again and will start anew until all glass objects got destroyed or player left the TV.<br />
<br />
Unnecessary "targets_gone" functions will do nothing because "inside_target_function" was set to 1 by the first one.<br />
<br />
"targets_are_gone" eventually disables the TV to prevent memory overflow, the function contains also all things "[...]" that you want to happen after the glass target broke.<br />
<br />
<br />
=====Texture exchange=====<br />
BSL command supported by PC and Mac:<br />
: env_texswap ID texture<br />
<br />
Might be useful to switch on/off static and animated textures. (News screen: running or off or smashed. Lava stream: flowing or stagnating or cooled down. Etc.)<br />
<br />
A similar effect can be achieved by showing/hiding geometries with different textures as EdT has demonstrated in a private test. That way it should also be possible to have different vertex coloring for an area.<br />
<br />
<br />
=====[http://softimage.wiki.softimage.com/xsidocs/tex_vcolor_CreatingColoratVerticesCAVMaps.htm Vertex coloring]=====<br />
Observation: The sniper tower from level 19 Syndicate Mountain Compound can be isolated and re-imported as it is. It will appear quite dark.<br />
<br />
If we remove "_color" from the object the shadows will be gone next time we import the tower.<br />
<br />
Mod Tool: Explorer [8]<br />
<br />
Object<br />
|<br />
+-- Polygon Mesh<br />
|<br />
+-- Cluster<br />
|<br />
+-- Polygon<br />
| |<br />
| +-- [...]<br />
|<br />
+-- NodeProperties<br />
|<br />
+-- '''_color'''<br />
+-- texcoord (Explicit UVWs)<br />
|<br />
+-- Vertex_Color_Def<br />
<br />
So, how do we modify that data?<br />
<br />
<br />
'''Single object shading'''<br />
<br />
If there's already a vertex color property you can use Shift + W to activate "Paint Vertex Color Tool". With Control + W you can change the brush color. R + Hold Click + Move Mouse let you change the Brush size. The more vertices (points) you have the more detailed you can make the shadows/colors. But keep in mind that too many polygons can destroy collision which make characters fall through the ground.<br />
<br />
If there's no vertex color property the first use of Shift + W will create that property. But you can also manually create it via Property > Color at Vertices Map.<br />
<br />
Here you can see one of my [http://youtu.be/zWT0-LsjjBU early attempts of vertex coloring]. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:18, 16 March 2013 (CET)<br />
<br />
<br />
'''Level-wide shading'''<br />
<br />
[[Image:light_test_modtool.png|right|thumb]]<br />
<br />
[[Image:light_test_ingame.png|right|thumb]]<br />
<br />
To get a general shading/lightning you can set up light sources. "Infinite" lights are useful as global lighting while "Light Box", "Point", "Neon" and "Spot" are more suitable as local light sources. They can be accessed via Primitives > Light.<br />
<br />
By default a Mod Tool scene has one Infinite light but it doesn't shine in every direction so you might want to add more Infinite lights. Let's say one Infinite light for each direction (+X, -X, +Y, -Y, +Z, -Z) with an intensity of circa 0.25 (night) or 0.75 (day).<br />
<br />
The illumination of those lights can be integrated into the vertex color property. There's some information [http://oni.bungie.org/community/forum/viewtopic.php?pid=29089#p29089 at OCF], the quoted information is somewhat triple so don't get confused by it: at first detailed, then summarized, then a checklist.<br />
<br />
Basically you can go with the checklist:<br />
<br />
* Property > Color At Vertices Map<br />
* Property > Render Map<br />
* In render map property page, under Sampling select Vertices Only<br />
* Under Surface Color choose Enable, then in the box below select Vertex _Color, if that option does not appear click on the New button next to it.<br />
* Under Map select Illumination only<br />
* Finally, click on the button Regenerate Maps...<br />
<br />
This must be done for all objects separately.<br />
<br />
: [http://mods.oni2.net/system/files/vertex_color_script.txt There's a script]<!--http://mods.oni2.net/node/352--> which can apply vertex color and render maps to all '''selected''' objects. Load it into the script editor [alt] + [4] and hit [F5] to run it. (Be sure the script language was set to vb script.)<br />
: The variable "overwrite_VC" can be changed.<br />
:: With "1" all existing CAV maps of selected objects will be overwritten. This can take some time.<br />
:: With "0" only selected objects without CAV maps will be the script's target.<br />
<br />
<br />
'''Notes on ModTool view modes'''<br />
* "Constant" let you see the colors of the vertex coloring only.<br />
* "Textured Decal" let you see object textures only.<br />
* "Shaded" let you see the illumination only.<br />
* "Textured" let you see the textured object with illumination and vertex coloring.<br />
<br />
<br />
'''env_shade'''<br />
<br />
If you use env_shade use it with caution. It completely overwrites the vertex coloring.<br />
<br />
# BSL command<br />
# env_shade obj_id obj_id R G B<br />
<br />
# examples<br />
env_shade 7 7 # object 7 will be black<br />
env_shade 7 7 0 0 0 # object 7 will be black<br />
env_shade 7 7 .31 .999 .5 # object 7 will be quite green<br />
env_shade 7 10 1 1 1 # object 7, 8, 9, 10 lose all their shading<br />
<br />
=====Baked lightmaps=====<br />
A.k.a shadow maps.<br />
<br />
A drawback of this method is the high amount of [[XML:BINA/TMBD|TMBD]] changes and new textures hence a lot of memory is needed.<br />
<br />
How to create shadow maps:<br />
<br />
* http://www.game-artist.net/forums/support-tech-discussion/5622-burning-shadows-onto-texture-xsi.html<br />
<!-- http://caffeineabuse.blogspot.de/2008/12/cast-shadow-only-lights-in-xsi.html might be also interesting --><br />
<br />
Notes on map options:<br />
* "Surface color and illumination": outputs used texture with added shadows<br />
** can be used to replace original texture<br />
* "illumination only": output a texture that only contains the shadows<br />
** can be used on a new overlying, transparent surface<br />
<br />
<br />
=====Standalone lightmaps=====<br />
There are two meshes whereby the shadow effects get drawn in front of the regular level texture.<br />
<br />
Compared to the "baked lightmaps" method, this needs more polygons of course. These polygons are transparent which is a problem with Oni's limited render ability for such textures. However, standalone lighmaps needs only a few new textures if used wisely.<br />
<br />
Read on [[Lightmapping_levels|HERE]] for lightmap creation for this method.<br />
<br />
[[Image:Oni_Lightmaps_double_polygon_method.jpg|center]]<br />
<br />
====<Rooms>====<br />
The Rooms tag is mandatory. It contains an import path to BNV and ghosts (*.dae) which are used to create pathfinding grids. For information on binary data see [[OBD:AKVA|HERE]].<br />
<br />
Exemplary code piece of the master xml file:<br />
<Import Path="env/lab_bnv.dae"/><br />
<br />
<br />
'''Fundamentals'''<br />
* '''BNV''' are '''volumes''' (sometimes also named '''rooms''') that have a pathfinding grid assigned to them.<br />
* For practical reasons you only need '''floors and ramps''' to build BNV. (Like seen in [http://edt.oni2.net/images/Hideout_BNV.jpg HERE.])<br />
** A BNV polygon can consist of 3 or more points but it's recommended to use '''shapes with 4 points''' because the other shapes usually waste more grid space. At the moment you can import only '''[[wikipedia:Convex|convex]]''' shapes.<br />
* Secondly there are so called '''ghosts''' (vertical quads) that connect '''neighbouring BNV'''. AI can transit BNV only through ghosts.<br />
: OniSplit gives error messages for ghosts that don't have 2 neighbouring BNV, for example:<br />
BNV Builder: Ghost 'grid2' has no '''adjacencies''' at <-72,41 1,999 -166,6> and <-71 1,999 -168,21>, ignoring<br />
<br />
<br />
'''Tolerance values'''<br />
* horizontal distance from ''room'' to ''ghost'': 1<br />
* vertical distance from ''room'' to ''ghost'': 18<br />
* ''ghost'' horizontal dimension must be bigger than 0<br />
* under optimal circumstances pathfinding works on a plane that is +4 world units above or -0,5 beneath the pathfinding grid<br />
* normally characters can't pass low verticals like at staircases/curbs if those don't have a ramp, near ground level Y=0 is an exception where characters are allowed to step on a plane that is 4 world units above pathfinding grid; higher planes need a ramp<br />
* max degree of ramp you can go on is 70°; bigger degrees make characters fall through to death (in those cases you might want to add invisible walls/boxes)<br />
<br />
<br />
'''More notes on PF processing'''<br />
* Actually, BNV and ghosts can have any name and don't need any texture.<br />
* During pathfinding calculation OniSplit creates a new folder called "temp" and a subfolder "grids". There again is a file "''levelname''_grids.dae". That file contains ''rooms'' with textures "bnv_grid_''N''.tga" marking obstacles in the pathfinding. ''Ghosts'' will have a transparent texture "'''_marker_ghost'''.tga". You get those things also when you export a level. Transparent ''ghosts'' make it easier to see the rest of your level if you have many of those planes.<br />
* In Mod Tool ''ghosts'' and ''rooms'' can be grouped under a null object. Right-click the null object to select all its children, then use "Selection Only [x]" as saving option. That way all the planes can be quickly saved to a *.dae file.<br />
* You can influence the pathfinding creation of dangerous zones with danger quads. Read on [[#marker textures|HERE]].<br />
* Another kind of influence is the [[#<Model>|gunk flag]] IgnoreGrid. It can be used to let OniSplit ignore the object during pathfinding creation. The grids in that place will be white.<br />
<br />
<br />
[[Image:Pathfinding_grid.JPG|thumb|200px|right|''ai2_showgrids = 1'' in action]]<br />
'''BSL commands'''<br />
* chr_show_bnv = 1<br />
:: shows number of bnv the player is standing on<br />
* ai2_showgrids = 1<br />
:: shows pathfinding grids<br />
* ai2_chump<br />
:: spawns a friendly striker that follows the player if possible, makes also pathfinding grids visible<br />
* ai2_chump_stop = 1<br />
:: striker stops to follow you<br />
* ai2_chump_stop = 0<br />
:: striker follows you again<br />
<br />
<br />
=====Pathfinding on uneven ground=====<br />
Pathfinding works on slight uneven ground as long as the polygons are 0,5 world units beneath or 4 world units above the BNV.<br />
<br />
For bigger surface irregularities we can use a trick:<br />
* The problematic polygons must be saved to an dae file and then referenced in the model section as an individual object.<br />
* Then the <GunkFlags> tag needs to be '''''GridIgnore'''''.<br />
* Additionally we create a plain (invisible if necessary) under the object so that Oni doesn't think there's a hole.<br />
* The ghosts must be taller than the highest polygon to walk on. (This has been tested up to a height of 2000 world units.)<br />
<br />
<br />
'''Symptoms of too small ghosts'''<br />
<br />
A) AI can't run at all.<br />
<br />
B) AI loses PF if tracked enemy performs animations that are out of the pathfinding volume. [http://youtu.be/vfKPzP5hiCo Here's] a video about of the "B" symptoms.<br />
<br />
<br />
'''Missing boundaries'''<br />
<br />
Let's say you have a BNV, tall ghosts, and a GridIgnore-flagged hill with trees and brushes and stuff.<br />
<br />
Why do AI run against the trees?<br />
: '''Cause:''' There are no red/orange grids that limits the AI movement. Normally, objects will produce red pathfinding grids. But objects that are 20 world units above the BNV are ignored just like objects with the IgnoreGrid flag.<br />
: '''Solution:''' Add simple geometries like ''_marker_impassable fences'' or danger quads near the BNV.<br />
<br />
<br />
'''Disappearing AIs'''<br />
<br />
The ground is sometimes not solid. Then player and AIs will fall through it.<br />
<br />
There's another case of disappearing AIs and it happens even if the ground is solid: on GridIgnore-flagged uneven ground AIs can fall through when they get out of view. Use one of these two BSL commands to avoid this problem:<br />
: chr_lock_active ''AI_name''<br />
: chr_all_active = 1<br />
<br />
<br />
=====Debugging (OniSplit v0.9.93.0+)=====<br />
[[Image:OniBrowser.jpg|thumb|200px|right|OniBrowser. Displaying level geometry plus PF and ghosts.]]<br />
<br />
* '''env_show_ghostgqs = 1''' makes the ghost quads visible<br />
** the original ghost quads can't be seen, Neo: "they are not included in the octtree and bsp tree"<br />
** to see them you must use the -debug option in the level creation command (available with OniSplit '''v0.9.93.0+''')<br />
OniSplit.exe -create:level ''output_folder'' '''-debug''' ''input_folder''/''master_xml_file''.xml<br />
<br />
Not all debugging/testing needs to be done in Oni. There also a [http://mods.oni2.net/node/256 file browser] which can display the whole level.<br />
<br />
For example you can load an AKEV*.oni, select the level name and use hotkeys [B] and [P] to display BNV and ghosts.<br />
<br />
'''Bug prevention:'''<br />
<br />
After all tests you should recompile the level a last time but without the -debug option.<br />
<br />
AIs appear to have trouble to shot through ghost quads that got registered in the octtree/bsp tree [https://www.youtube.com/watch?v=-ZugVBgBVKc as seen here].<br />
<br />
<br />
=====When OniSplit fails to connect PF quads=====<br />
[[Image:pathfing_creation__merge_polygons_to_fix_connections.jpg|thumb|200px|right|Fixed PF in compound level after underground constructions...]]<br />
It can help to merge polygones to one object and merge their edges. These become white. (Outer edges are blue.)<br />
<br />
====[[#textures_tag|<Textures>]]====<br />
=====... used for exceptions=====<br />
This tag is mandatory.<br />
<br />
AKEV textures will be imported by the master xml file automatically, you don't need to write them into that file.<br />
<br />
: With OniSplit v0.9.82-93.0, the textures' formats will be DXT1 and BGRA4444 (for transparent ones).<br />
: With OniSplit v0.9.94.0+ the textures' formats will be BGR and RGBA (for transparent ones).<br />
<br />
To change the default texture import format, use the Texture'''s''' tag. (Possible with OniSplit v0.9.94.0+)<br />
<br />
To change the format/flag/gunkflag of a specific texture, use the Texture tag.<br />
<br />
An example:<br />
<br />
<Textures Format="BGR" AlphaFormat="RGBA" MaxSize="512"><br />
<Texture Name="GOO"><br />
<Flags>TwoSided</Flags><br />
<Format>BGRA4444</Format><br />
<GunkFlags>NoCollision</GunkFlags><br />
<Image>env/images/GOO.tga</Image><br />
</Texture><br />
</Textures><br />
<br />
* Use gunkflag "TwoSided" to make surfaces visible from both sides.<br />
* If the texture comes with gunkflag "NoCollision" then all objects with that texture will have no collision. Characters would fall through it.<br />
<br />
Transparency and no collision makes both sense, let's say, for a water-like substance. The biolab use this for an area with green acid.<br />
<br />
[[Image:making_a_surface_transparent_and_twosided.png|thumb|200px|right|'''Figure 1''']]<br />
<br />
[[Image:AKEV_single_object_multiple_textures.png|thumb|200px|right|'''Figure 2'''<br>one object with multiple textures, one per polygon cluster]]<br />
[[Image:AKEV_single_object_multiple_textures_ingame.png|thumb|200px|right|'''Figure 3'''<br>blue: twosided<br>glass: twosided and transparent<br>random metal: no flag (onesided)]]<br />
<br />
<br />
'''TwoSided and transparent objects'''<br />
<br />
It's also possible to set this in Mod Tool. For TwoSided-ness use one image source for diffuse and transparency. (It won't work with two image sources even if both sources use the same image.)<br />
<br />
For transparency additionally use the three checkboxes:<br />
* Transparency: Enable<br />
* Transparency: Use Alpha<br />
* Transparency: Invert<br />
<br />
See '''Figure 1'''.<br />
<br />
=====Regular textures=====<br />
OniSplit automatically imports textures of objects in the [[#<Model>|<Model> section]]. Those objects could be considered as AKEV core geometry.<br />
<br />
<br />
'''one texture per object'''<br />
<br />
Furniture and Physics objects are allowed to have only one texture per object.<br />
<br />
AKEV core geometry can have one texture or multiple textures - that's up to you to decide.<br />
<br />
<br />
'''Multiple textures per object'''<br />
<br />
'''Question:''' How do we apply multiple textures to an AKEV core object?<br />
<br />
'''Answer:''' Assuming you are using Mod Tool the procedure will be like this. Repeat this for each cluster you create (except for projection). See also '''Figure 2 and 3'''.<br />
<br />
* select some polygons<br />
* goto Material > Phong<br />
* hit [7] to open Render Tree<br />
* add a texture and connect "Image" with "Phong", choose "diffuse" as illumination mode<br />
* double-click "Image" to open Material page<br />
* in Texture Projection section, click on "New" and choose a suitable projection<br />
** do this only if there isn't a projection in the "Texture_Coordinates_AUTO" cluster yet<br />
** OniSplit processes only one texture projection, see '''Figure 4'''<br />
* choose texture and UV, fine-tune UV via [alt]+[7]<br />
<br />
<br />
[[Image:AKEV_multiple_textures_one_projection.png|thumb|200px|right|'''Figure 4'''<br>use only one texture projection per object]]<br />
<br />
<br />
Caution: textures will be fixed to one set of flags. You can't use the same texture A for an onesided cluster/object B and twosided cluster/object C. You would need to create a different named clone of that texture and apply that to cluster/object C.<br />
<br />
<br />
=====Marker textures=====<br />
Marker textures are used to import certain objects with special flags. Import those object alongside [[#<Model>|AKEV core]] geometry.<br />
<br />
Marker textures aren't imported automatically. Add those textures to the final package / plugin, e.g. by some sort of batch code.<br />
<br />
OniSplit.exe -create:txmp out env/markers/*.tga<br />
<br />
<br />
The flags Transparent TwoSided NoOcclusion are only set if the same texture source is used for diffuse and transparency and if transparency setting are enabled. See subsection of "[[#... used for exceptions|... used for exceptions]]": "TwoSided and transparent objects".<br />
<br />
<br />
'''danger quads'''<br />
<br />
The pathfinding grids can have different colors with different meanings.<br />
* white/gray - clear space<br />
* green light - nearwall<br />
* green - semipassable<br />
* green dark - stairs<br />
* blue very light - border 1<br />
* blue light - border 2<br />
* blue - border 3<br />
* blue dark - border 4<br />
* '''orange - danger'''<br />
* red - impassable<br />
<br />
For detailed information on colors see [[OBD_talk:AKVA/0x24#EFFECTS_of_various_pathfinding_grid_tile_types|HERE]].<br />
<br />
Normally, OniSplit decide how to color the grids. But it's possible to add own danger quads to fine tune zones of great danger. Those orange areas will be generated with the 4 different blue borders around it.<br />
<br />
Danger quads must have "'''_marker_danger'''" as texture name.<br />
<br />
Results in flags: Transparent TwoSided NoCollision Invisible NoOcclusion Danger<br />
<br />
<br />
'''_marker_barrier'''<br />
<!-- Originally this is only used for "end-of-level" walls? --><br />
<br />
Results in flags: Transparent TwoSided(double-check) Invisible NoObjectCollision NoOcclusion<br />
<br />
<br />
'''COLLISION (boxes)'''<br />
<br />
AIs can get stuck in detailed geometry. This can be prevented with collision boxes. Ingame the box will be invisible and has collision so characters can't get through. The pathfinding grid will be red where it comes in contact with the box, red is followed by a light green and then green.<br />
<br />
[[XML:OFGA|OFGA]] use COLLISION texture. Onisplit doesn't automatically applies gunk flags to it. You need the xml tags for that.<br />
<br />
Typically it gets <GunkFlags>Invisible NoObjectCollision</GunkFlags><br />
<br />
<br />
'''stairs'''<br />
<br />
texture: '''_marker_stairs'''<br />
<br />
Normally, characters can't move on stairs if they contain verticals. In this case you can use a sloping quad that is above or inside the staircases. It's possible to set the desired flags at the <Model> section but doing so and exporting self-made stair ramps is wasted time. So apply simply _marker_stairs to that quad, characters will move on that surface.<br />
<br />
Results in flags: Stairs Transparent TwoSided Invisible NoObjectCollision NoOcclusion<br />
<br />
No effect to pathfinding creation. Regularly textured stair geometry (that intersect the marker quad) will be flagged as NoCharacterCollision.<br />
<br />
<br />
'''impassable'''<br />
<br />
texture: '''_marker_impassable'''<br />
<br />
Results in flags: Transparent TwoSided(double-check) Invisible NoOcclusion<br />
<br />
Impassable walls are very similar to collision boxes except that particle can also collide with it. The pathfinding grids will be also red, light green, and green.<br />
<br />
<br />
'''blackness a.k.a. jello fix'''<br />
<br />
texture: '''_marker_blackness'''<br />
<br />
Results in flags: TwoSided NoCollision<br />
<br />
Simply black walls. No effect to pathfinding creation. The purpose of these walls in Oni is to block out areas outside of a level's outermost wall. See [[Jello-cam]] for details.<br />
<br />
<br />
'''doors'''<br />
<br />
texture: '''_marker_door'''<br />
<br />
Results in flags: DoorFrame Transparent TwoSided NoCollision NoOcclusion<br />
<br />
Don't use this.<br />
<br />
<br />
====<Objects>====<br />
Information on regular object lists can be looked up here:<br />
: [[XML:BINA/OBJC/CHAR|Character.xml]] (has to contain player character if there's no AISA file with it)<br />
: [[XML:BINA/OBJC/CONS|Console.xml]]<br />
: [[XML:BINA/OBJC/DOOR|Door.xml]]<br />
: [[XML:BINA/OBJC/FLAG|Flag.xml]]<br />
: [[XML:BINA/OBJC/NEUT|Neutral.xml]]<br />
: [[XML:BINA/OBJC/PART|Particle.xml]]<br />
: [[XML:BINA/OBJC/PATR|PatrolPath.xml]]<br />
: [[XML:BINA/OBJC/PWRU|PowerUp.xml]]<br />
: [[XML:SNDD#BINACJBOSound.xml|Sound.xml]]<br />
: [[XML:BINA/OBJC/TRIG|Trigger.xml]]<br />
: [[XML:BINA/OBJC/TRGV|TriggerVolume.xml]]<br />
: [[XML:BINA/OBJC/WEAP|Weapon.xml]]<br />
<br />
<br />
=====Furniture.xml=====<br />
The AKEV core geometry is more or less unique while this furniture file adds standard objects (e.g. crates and desks) to it.<br />
<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <?xml version="1.0" encoding="utf-8"?><br />
|valign="top"| float, flag<br />
|valign="top"| Ignore this.<br />
|-<br />
| <Oni><br />
| -<br />
|<br />
|-<br />
| <Objects><br />
| - <br />
| This tag marks the file as BINACJBO.<br />
|-<br />
| <Furniture><br />
| -<br />
| This tag marks the file as FURN.<br />
|-<br />
| <Header><br />
|<br />
|<br />
|-<br />
|valign="top"| <Flags><br />
|valign="top"| flag<br />
| Optional tag. Ignore it. Those flags were used in the past.<br />
:None<br />
:Locked<br />
:PlacedInGame<br />
:Temporary<br />
:Gunk<br />
|-<br />
| <Position><br />
| float x3<br />
| Optional tag. X Y Z position.<br />
|-<br />
| <Rotation><br />
| float x3<br />
| Optional tag. X Y Z rotation.<br />
|-<br />
| <OSD><br />
| -<br />
|<br />
|-<br />
|valign="top"| <Class><br />
|valign="top"| link<br />
| File path to an [[XML:OFGA|OFGA]] (*.oni) file. Make sure that the OFGA comes also with the files it needs: M3GM and TXMP.<br />
<br />
OFGA can hold multiple M3GM. That 3d content will be integrate into the AKEV.<br />
|-<br />
|valign="top"| <Particle><br />
|valign="top"| string<br />
| This name gets written into <Tag> inside ONLV (ENVP section) and can be used with BSL commands.<br />
<br />
E.g. you can take control over a particle via "particle BSL_name start". For more commands see [[XML:BINA/OBJC/PART#BSL_support|HERE]].<br />
<br />
Caution with new OFGA files. The particle name will be composed of 2 parts and always includes an "_" underscore. '''Examples:'''<br />
<br />
: FURN <Particle>test</Particle> + OFGA <Tag>streetlight</Tag> = '''test_streetlight'''<br />
: FURN <Particle></Particle> + OFGA <Tag>streetlight</Tag> = '''_streetlight'''<br />
: FURN <Particle>test</Particle> + OFGA <Tag></Tag> = '''test_'''<br />
|}<br />
<br />
<br />
;Example<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni><br />
<Objects><br />
<br />
<Furniture><br />
<Header><br />
<Flags>Gunk</Flags><br />
<Position>-62.692 -29 108.35</Position><br />
<Rotation>181.522 356.021 178.114</Rotation><br />
</Header><br />
<OSD><br />
<Class>furniture/V_tctf_bigvan.oni</Class><br />
<Particle></Particle><br />
</OSD><br />
</Furniture><br />
<br />
</Objects><br />
</Oni><br />
<br />
<br />
=====Physics.xml=====<br />
This file is for objects with "physics". Unlike AKEV core geometry or furniture, those objects can be animated.<br />
<br />
: Little video tutorial: how to create [http://www.youtube.com/watch?v=ufDqgTXD7lQ a simple animated object]<br />
<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <?xml version="1.0" encoding="utf-8"?><br />
|valign="top"| float, flag<br />
|valign="top"| Ignore this.<br />
|-<br />
| <Oni><br />
| -<br />
|<br />
|-<br />
| <Physics><br />
| -<br />
|<br />
|-<br />
| <Object Name="..."><br />
| string<br />
| Use an unique name for each object.<br />
|-<br />
|valign="top"| <ScriptId><br />
|valign="top"| integer<br />
| Tested with BSL command ...<br />
:obj_create Id [Id]<br />
:obj_kill Id [Id]<br />
:env_anim Id [Id]<br />
:env_setanim Id [Id]<br />
The script Id will be stored in ONLV's OBOA instance.<br />
|-<br />
|valign="top"| <Flags><br />
|valign="top"| flag<br />
|<br />
;Object setup flags<br />
:None<br />
:InUse<br />
:NoCollision<br />
:NoGravity<br />
:FaceCollision<br />
|-<br />
|valign="top"| <Physics><br />
|valign="top"| flag<br />
| Optional tag of Object.<br />
:None<br />
:Static<br />
:Linear<br />
:Animated<br />
:Newton (used with <Flags> FaceCollision to [http://www.youtube.com/watch?v=YICB7qugrtc make object pushable])<br />
:: For a pushable object don't use import sub-tags such as animation name, flags, etc. Just use <Import Path="..." '''/'''> or <Import Url="..." '''/'''><br />
|-<br />
| <Position><br />
| float x3<br />
| Optional tag of Object. Only used for non-animated objects. X Y Z position.<br />
|-<br />
| <Rotation><br />
| float x3<br />
| Optional tag of Object. Only used for non-animated objects. X Y Z rotation.<br />
|-<br />
| <Scale><br />
| float<br />
| Optional tag of Object. Only used for non-animated objects.<br />
|-<br />
|<br />
<Import Path="..."><br />
<br />
<Import Url="..."><br />
|valign="top"| link<br />
|valign="top"| This tag comes in two variants. It doesn't matter what variant you use.<br />
|-<br />
| <Animation Name="..."><br />
| link<br />
| File path to *.dae file.<br />
|-<br />
|valign="top"| <Flags><br />
|valign="top"| flag<br />
| Optional tag of Animation. For more information on those flags look [[XML:OBAN|OBAN]] page.<br />
<br />
;Object animation flags<br />
:None<br />
:Loop<br />
:PingPong<br />
:RandomStart<br />
:AutoStart<br />
:Local<br />
|-<br />
| <End><br />
| integer<br />
| Optional tag of Animation. Frame number. Used to define the end of an OBAN from an *.dae file.<br />
|-<br />
| <Start><br />
| integer<br />
| Optional tag of Animation. Frame number. Used to define the start of an OBAN from an *.dae file.<br />
|}<br />
<br />
<br />
;Example<br />
<br />
For documentation purpose the file here has been trimmed down.<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni><br />
<Physics><br />
<br />
<Object Name="motorcycle"><br />
<ScriptId>8</ScriptId><br />
<Flags>FaceCollision</Flags><br />
<Import Url="motorcycle/export.dae"><br />
<Animation Name="motorcycle02"><br />
<Flags>AutoStart</Flags><br />
<End>880</End><br />
</Animation><br />
<Animation Name="motorcycle02_stop"><br />
<Start>881</Start><br />
</Animation><br />
</Import><br />
</Object><br />
<br />
</Physics><br />
</Oni><br />
<br />
In this example OniSplit takes the "export.dae" file, looks what parts it contains and creates geometry files from it.<br />
* M3GMhubs_rear.oni<br />
* M3GMhubs.oni<br />
* M3GMmotocycle.oni<br />
It's a nice feature that hierarchies are supported here.<br />
<br />
The motorcycle is made of 3 parts so 3 object animations ([[XML:OBAN|OBAN]]) will be created up to frame 880. Then OniSplit creates 3 more OBANs starting from frame 881.<br />
<br />
The reason for the interruption at frame 880 is probably to give barabas a few more frames of glory in the cutscene.<br />
* OBANmotorcycle0200.oni<br />
* OBANmotorcycle0201.oni<br />
* OBANmotorcycle0202.oni<br />
* OBANmotorcycle02_stop00.oni<br />
* OBANmotorcycle02_stop01.oni<br />
* OBANmotorcycle02_stop02.oni<br />
<br />
<br />
;Notes about BSL usage:<br />
<br />
The bio lab script file use the motorcycle objects and animations like this:<br />
env_show 9 0 # hide static motorcycle parts (because they get visible at level start)<br />
# in the original game the motorcycle is separated in object 8, 9 and 10<br />
# also the OBAN files have a bit different names<br />
<br />
# static and animated objects are totally independent from each other<br />
# they are stored in different arrays so their script ids can be the same or different<br />
<br />
obj_create 8 10 # create animation-ready motorcycle parts<br />
env_anim 8 10 # animate those parts (not necessary if OBAN flag is "AutoStart")<br />
<br />
# the first animations would loop because of "AutoStart"<br />
# so get the right timing to apply the other animations<br />
# "motorcycle02_stop00" and the others will not loop because they don't have "AutoStart"<br />
env_setanim 8 motorcycle02_stop00 # motorcycle<br />
env_setanim 9 motorcycle02_stop01 # hubs<br />
env_setanim 10 motorcycle02_stop02 # hubs_rear<br />
<br />
obj_kill 8 10 # delete animated parts<br />
env_show 9 1 # show static motorcycle parts<br />
<br />
<br />
=====Corpses.xml (OniSplit v0.9.96.0+)=====<br />
'''(Import)'''<br />
<br />
CRSA can now be imported from an xml file if registered in the master file. See [[#CRSA|HERE]]. (Two formats available.)<br />
<br />
Direct import is not yet supported by OniTools.<br />
<br />
----<br />
<br />
For indirect import, see [http://oni.bungie.org/community/forum/viewtopic.php?id=2657 HERE] (OniTools v7.1.5+) how to get corpse data.<br />
<br />
When you process your xml master file use onisplit version 0.9.94.0+<br />
<br />
Older onisplit versions (like 0.9.86.0) may generate ONLV files that are not re-packable with newer versions.<br />
<br />
<br />
'''(Export)'''<br />
<br />
With Neo's matrix to euler code the rotations can be recovered from CRSA. But due to the character's hierarchy things get [https://dl.dropboxusercontent.com/u/139715/OniGalore/CRSA_to_Mod_Tool_wip.png messy again.] ([https://dl.dropboxusercontent.com/u/139715/temp/CRSA_to_Mod_Tool.txt Wip code])<br />
<br />
A workaround might be to save characters without animations, destroy their hierarchy, apply the local rotations / global translation and glue everything together again.<br />
<br />
==Level reimport==<br />
===Export of static geometry===<br />
After the oni files have been exported, the extraction of objects can fail if their textures can't be found. Those objects probably use textures stored in level 0.<br />
<br />
In that case use the "-search" argument to make correct extractions. In total the commands will look like this:<br />
<br />
OniSplit.exe -export level0_files level0.dat<br />
OniSplit.exe -export levelX_files levelX.dat<br />
OniSplit.exe -extract:dae levelX_geometry levelX_files/AKEV*.oni -search level0_files<br />
<br />
Possible output files:<br />
* ''level''_bnv.dae<br />
* ''level''_cons.dae<br />
* ''level''_door.dae<br />
* ''level''_env.dae<br />
* ''level''_env_markers.dae<br />
* ''level''_furn.dae<br />
* ''level''_script_''N''.dae (by OniSplit v0.9.90.0+)<br />
* ''level''_trig.dae<br />
* ''level''_turr.dae<br />
<br />
Reimporting dae files (except for env_markers) will merge them with env (AKEV core geometry).<br />
<br />
<br />
===Export of animated geometry and cameras (OniSplit v0.9.90.0+)===<br />
This is also known as scene export. All content exported by the scene file will be combined and saved in one single dae.<br />
<br />
OniSplit.exe -extract:dae path_to/output_directory path_to/scene.xml<br />
<br />
For the following example the scene.xml must be present in a folder containing all files used by the scene. In this case it's level3_Final (biolab).<br />
<br />
<Scene><br />
<Node Name="camera"><br />
<Camera /><br />
<Animation>OBANCamout01.oni</Animation><br />
<Animation>OBANCamout02.oni</Animation><br />
<Animation>OBANCamout03.oni</Animation><br />
<Animation>OBANCamout04.oni</Animation><br />
<Animation>OBANCamout05.oni</Animation><br />
<Animation>OBANCamout06.oni</Animation><br />
</Node><br />
<Node Name="motorcycle02"><br />
<Geometry>M3GMmotorcycle02.oni</Geometry><br />
<Animation>OBANmotorcycle02.oni</Animation><br />
<Animation>OBANmotorcycle02_stop.oni</Animation><br />
<Node Name="hubs"><br />
<Geometry>M3GMhubs.oni</Geometry><br />
<Animation>OBANhubs.oni</Animation><br />
<Animation>OBANhubs_stop.oni</Animation><br />
</Node><br />
<Node Name="hubs_rear"><br />
<Geometry>M3GMhubs_rear.oni</Geometry><br />
<Animation>OBANhubs_rear.oni</Animation><br />
<Animation>OBANhubs_rear_stop.oni</Animation><br />
</Node><br />
</Node><br />
</Scene><br />
<br />
When you load the dae in [[Mod_Tool|XSI]] you'll find the motorcycle and the lab level intro camera. If you select the camera (for better visibility) and press play you'll get to see the motorcycle into animation like you see it in game.<br />
<br />
For real-time playback click on "Playback" option button and then "Real-Time Playback".<br />
<br />
<br />
;File structure<br />
* The scene contains one or more '''nodes'''.<br />
* Each node represents '''either one 3D object or one camera''' whereby the node name determines the object name inside the dae.<br />
** 3D objects do have a '''<Geometry>''' tag.<br />
** Cameras do have a '''<Camera />''' tag.<br />
** Each 3D object or camera can have '''one or multiple <Animation>''' tags. Multiple animations will be combined.<br />
** 3D objects can be organized in a '''hierarchy''' that gets created by the help of '''sub-nodes'''. Each sub-node can also have animations.<br />
<br />
<br />
;Scene import<br />
<s>According to Neo that feature is still under development.</s> RIP.<br />
<br />
<br />
===Recycle object lists===<br />
Following files can be reused at <Objects> without any drawback:<br />
* BINACJBOCharacter.xml<br />
* BINACJBOFlag.xml<br />
* BINACJBONeutral.xml<br />
* BINACJBOParticle.xml<br />
* BINACJBOPatrol Path.xml<br />
* BINACJBOPowerUp.xml<br />
* BINACJBOSound.xml<br />
* BINACJBOTrigger Volume.xml<br />
* BINACJBOWeapon.xml<br />
<br />
<br />
===Locklights===<br />
Door locklights must be transfered by hand from old ONLV (ENVP instance) to a) new ONLV or b) CJBO particle file.<br />
<br />
For method b) you could use [https://dl.dropboxusercontent.com/u/139715/OniGalore/extract_ENVP.vbs THIS] script. [http://youtu.be/8HbPeNYqdY0 Demo vid].<br />
<br />
The advantage is that you don't need to edit the new ONLV afterwards.<br />
<br />
<br />
===CJBO and vertex coloring===<br />
* Object (xml) import via <Object> tag (master xml file) will get you objects without vertex coloring. (onisplit will pick *.oni class files from the shared folder.)<br />
* Object (dae) import via <Model> tag (master xml file) should get you objects with vertex coloring but no functions. In that case add corresponding CJBO files by hand.<br />
<br />
You can chose between those two methods for consoles, triggers, turrets and furniture without particle.<br />
<br />
Doors and furniture with particle need always the xml method.<br />
<br />
<br />
===Manual reimport of physics===<br />
Don't want to make a scene.xml and physics.xml file? All animated physics can be restored if you aren't afraid of post-editing ONLV.<br />
<br />
# Look into the original level folder and copy OBAN and M3GM files to your project's output folder.<br />
# Create your level. Then convert the new ONLV to xml. Now you are able to compare the new and old ONLV file.<br />
# Get all original OBOA instances that aren't doors or empty.<br />
# Each OBOA has a <Geometry> tag which links to an M3GA instance by Id. So, collect also all M3GAs that are used by your OBOAs.<br />
# Add these collected OBOAs and M3GAs to you new ONLV. Make sure that your M3GA Ids aren't already taken, change them if necessary.<br />
# Save ONLV and convert to oni. Make package or plugin, and test your reimported level.<br />
<br />
<br />
===Demo files===<br />
[https://dl.dropboxusercontent.com/u/139715/OniGalore/Level_19_reimport.zip level 19 reimport]<br />
<br />
At the beginning of this page are already demo files (level 3 - biolab), also a reimport, but it uses a bit different setup.<br />
<br />
For example, it imports animated objects from *.dae files which result in a few bugs: Konoko's motocycle is too low, at another point it is completely missing, and the van at the end of the level has some strange unnecessary gunks.<br />
<br />
In this second demo, the ENVP and OBOA/M3GA instances were manually reimported. So, if you have fun to RE stuff, try to make sense of the second demo, too.<br />
<br />
Known issues are:<br />
* Doors and trigger don't have vertex shading. (Also not possible with normal level creation.)<br />
* Consoles tend to have an collision issue with the player, keeping him trapped. (Jump backwards to escape.)<br />
** This issue might get solved by using a sole BINACJBOConsole.xml file. Or we try to edit the collision boxes of compound_cons.dae.<br />
<br />
So now, how about accessible towers and underground passages / ventilation shafts? ;D<br />
<br />
The prone mode is so useless right now, let's change this!<br />
<br />
<br />
==Level export==<br />
This section is only about xml files. For dae export see [[#Level_reimport|HERE]].<br />
<br />
The most parts of an Oni level are made of ONLV and AKEV. For AKEV's xml tags see [[XML:AKEV|HERE]].<br />
<br />
You would only want to export those two files as xml if you want to check if a texture or an object really made it into the level or not.<br />
<br />
<br />
===ONLV===<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
|valign="top"| <ONLV id="..."><br />
|valign="top"| integer<br />
| ONLV's instance number. Should be 0.<br />
|-<br />
|valign="top"| <Name><br />
|valign="top"| char[64]<br />
| Name of BSL '''folder'''.<br />
: Save game slot and level number are defined inside [[XML:ONLD|ONLD]].<br />
|-<br />
|valign="top"| <Environment><br />
|valign="top"| link<br />
| Link to [[XML:AKEV|AKEV]] via '''file''' name (AKEV''name''), don't use file suffix .oni<br />
: Level geometry.<br />
|-<br />
|valign="top"| <Objects><br />
|valign="top"| link<br />
| Link to [[#OBOA|OBOA]] via '''instance''' number (#''N'').<br />
: The OBOA instance holds doors, animated objects (usually for cut scenes) and pushable object (they are not used the original game).<br />
|-<br />
|valign="top"| <SkyBox><br />
|valign="top"| link<br />
| Link to [[XML:ONSK|ONSK]] via '''file''' name (ONSK''name''), don't use file suffix .oni<br />
: This is the sky box.<br />
|-<br />
|valign="top"| <Characters><br />
|valign="top"| link<br />
| Link to [[XML:AISA|AISA]] via '''file''' name (AISA''name''), don't use file suffix .oni<br />
: This "AI Setup Array" is an alternative character list. [[XML:BINA/OBJC/CHAR|CHAR]] is more powerful.<br />
|-<br />
|valign="top"| <ObjectQuadMap><br />
|valign="top"| link<br />
| Link to [[#ONOA|ONOA]] via '''instance''' number (#''N'').<br />
: This "Object Array" holds functional objects - doors, furniture, turrets, triggers and consoles - in addition it appears that the engine only searches for door type.<br />
|-<br />
|valign="top"| <Particles><br />
|valign="top"| link<br />
| Link to [[#ENVP|ENVP]] via '''instance''' number (#''N'').<br />
: Those "Environment Particle" contains traditionally only door lock lights and particles used by [[XML:OFGA|OFGA]].<br />
|-<br />
|valign="top"| <Corpses><br />
|valign="top"| link<br />
| Link to [[#CRSA|CRSA]] via '''instance''' number (#''N''). <br />
: This is a "Corpse Array". It's used to 'spawn dead characters' like Chung in level 1.<br />
|}<br />
<br />
<br />
===OBOA===<br />
Used for movable/moving objects.<br />
<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <OBOA id="..."><br />
| integer<br />
| Instance Id. Should be 1.<br />
|-<br />
| <Objects><br />
| -<br />
| Array of <OBOAObject> tags.<br />
|-<br />
| <OBOAObject><br />
| -<br />
| There are always 32 empty objects plus those that are actually used.<br />
|-<br />
| <Geometry><br />
| "#" + integer<br />
| Link to M3GA instance. -- Doors are made of two parts: an animated and a static part. If this <Geometry> links to a door it will be the animated part.<br />
|-<br />
| <Animation><br />
| link<br />
| OBAN''name''<br />
|-<br />
| <Particle><br />
| # + integer<br />
| Link to ENVP instance. -- There can be multiple ENVP instances. One for locklights and other for those kind of particle.<br />
|-<br />
|valign="top"| <Flags><br />
|valign="top"| flags<br />
|<br />
: None<br />
: InUse<br />
: NoCollision<br />
: NoGravity<br />
: FaceCollision<br />
|-<br />
| <DoorGunkId><br />
| int32<br />
| the index of the door frame GQ for door objects?<br />
|-<br />
| <DoorId><br />
| int32<br />
| only used for doors; in the case of double doors both doors have the same id and they are flagged as "InUse FaceCollision"<br />
|-<br />
|valign="top"| <PhysicsType><br />
|valign="top"| flags<br />
|<br />
: None<br />
: Static<br />
: Linear (?)<br />
: Animated (animated via OBAN)<br />
: Newton (pushable object)<br />
|-<br />
| <ScriptId><br />
| int32<br />
| script Id; used by BSL function obj_create; 65535 = not used<br />
|-<br />
| <Position><br />
| vector<br />
| Float x3. Not used for animated objects.<br />
|-<br />
| <Rotation><br />
| quaternion<br />
| Float x4. Not used for animated objects.<br />
|-<br />
| <Scale><br />
| float<br />
| Not used for animated objects.<br />
|-<br />
| <Transform><br />
| matrix<br />
| Float 3*3 + 3 more float for X Y Z position of the object. For more information on the matrix see [[OBD:CRSA]]. Used for animated objects.<br />
|-<br />
| <Name><br />
| char[64]<br />
| name of the object; informational only<br />
|}<br />
<br />
<br />
===ONOA===<br />
Used by static objects (imported by object list).<br />
<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <ONOA id="..."><br />
| integer<br />
| Instance Id.<br />
|-<br />
| <Elements><br />
| -<br />
| This is an int32 array for the <ONOAElement> tags.<br />
|-<br />
| <ONOAElement><br />
| -<br />
|<br />
|-<br />
|valign="top"| <ObjectId><br />
|valign="top"| integer<br />
| Object Id and type to which this quad belongs (see AKEV's [[XML:AKEV#AGQG|AGQG]] for details).<br />
: Actual object Ids can also be found in BINA/OBJC/####.<br />
|-<br />
| <QuadList><br />
| "#" + integer<br />
| Link to IDXA instance. Each object has its own IDXA instance.<br />
|}<br />
<br />
Where do the links go to again?<br />
<br />
ONOA <ObjectId> -> AKEV AGQG -> BINA/OBJC/#### by type and Id<br />
ONOA <QuadList> -> ONOA IDXA -> AKEV AGQG by order<br />
<br />
<br />
===ENVP===<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <ENVP id="..."><br />
| integer<br />
| Instance Id.<br />
|-<br />
| <Particles><br />
| -<br />
| This is an int16 array for the <ENVPParticle> tags. If there's no content <Particles /> is used.<br />
|-<br />
| <ENVPParticle><br />
| -<br />
|<br />
|-<br />
| <Class><br />
| char[64]<br />
| <font color="#777777">BINA3RAP</font>file<font color="#777777">.oni</font> <font color="#777777">(don't use file prefix/suffix)</font><br />
|-<br />
| <Tag><br />
| char[48]<br />
| particle's name for BSL commands, see [[OFGA#tags|OFGA]] for more information on name composition<br />
|-<br />
| <Transform><br />
| matrix<br />
| Float 3*3 + 3 more float for X Y Z position of the particle. For more information on the matrix see [[OBD:CRSA]].<br />
|-<br />
| <DecalScale><br />
| int32, int32<br />
| X Y<br />
|-<br />
|valign="top"| <Flags><br />
|valign="top"| flag<br />
| <br />
: None<br />
: NotInitiallyCreated <br />
|}<br />
<br />
<br />
===CRSA===<br />
Wanted: "how to add corpses" tutorial<br />
<br />
: Some related information can be found at [[AE:Authoring_custom_camera_animations|AE:Authoring custom camera animations]]<br />
<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <CRSA id="..."><br />
| integer<br />
| Instance Id.<br />
|-<br />
|valign="top"| <FixedCount><br />
|valign="top"| integer<br />
| The array capacity <Corpses> is larger than the number of "fixed"/"used" corpses to allow the engine to store new corpses at runtime. "Fixed" means that those corpses are never overwritten/deleted at runtime, all new corpses are stored after the "fixed" ones. This means that "fixed" <= "used" <= "capacity". <br />
|-<br />
| <UsedCount><br />
| integer<br />
| <br />
|-<br />
|valign="top"| <Corpses><br />
|valign="top"| -<br />
| This is an int32 array for the <CRSACorpse> tags. By default Oni wants 20 slots for corpses. Unused corpses have their matrix and bounding box filled with zeros.<br />
|-<br />
|valign="top"| <CRSACorpse><br />
|valign="top"| -<br />
| [[AE:Authoring_custom_camera_animations|New corpses]] can be made with BSL command "make_corpse filename" and some hex-editing.<br />
: The pose of the corpse is taken from the player character. <br />
: The contents of the files thus created can then be inserted as elements in a level's CRSA. <br />
|-<br />
| <CharacterClass><br />
| link<br />
| [[XML:ONCC|ONCC]]''name''<br />
|-<br />
| <Transforms><br />
| -<br />
| There are 19 <Matrix4x3> for each <Transforms> (which represents a body part).<br />
|-<br />
| <Matrix4x3><br />
| matrix<br />
| Float 3x3 + float x3 for the last 3 values (X Y Z position). For more information about the matrix see [[OBD:CRSA]].<br />
|-<br />
| <BoundingBox><br />
| -<br />
| Bounding box of the whole corpse.<br />
|-<br />
| <Min><br />
| float x3<br />
|<br />
|-<br />
| <Max><br />
| float x3<br />
|<br />
|}<br />
<br />
The level importer supports importing corpses from an XML file with the same format as described above or the following simplified format:<br />
<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <Corpses><br />
| <br />
| <br />
|-<br />
|valign="top"| <Corpse><br />
|valign="top"| -<br />
| <br />
|-<br />
| <Class><br />
| link<br />
| [[XML:ONCC|ONCC]]''name''<br />
|-<br />
| <Transforms><br />
| -<br />
| There are 19 <Matrix> for each <Transforms> (which represents a body part).<br />
|-<br />
| <Matrix><br />
| matrix<br />
| Float 3x3 + float x3 for the last 3 values (X Y Z position). For more information about the matrix see [[OBD:CRSA]].<br />
|-<br />
| <BoundingBox><br />
| -<br />
| Bounding box of the whole corpse. Optional, if not provided OniSplit will generate an approximate one. Currently it doesn't try to locate the ONCC to compute an exact bounding box.<br />
|-<br />
| <Min><br />
| float x3<br />
|<br />
|-<br />
| <Max><br />
| float x3<br />
|<br />
|}<br />
<br />
An empty Corpse element ( <Corpse/> ) is treated as unused and placed at the end of the array. If no such empty elements are provided OniSplit automatically adds 5. OniSplit also ensures that there are at least 20 corpses in the array.<br />
<br />
If you created CRSA data using the Mod Tool addon, add an <Oni> at the beginning and an </Oni> tag at the end of the file.<br />
<br />
<br />
===M3GA===<br />
One M3GA instance per animated object.<br />
<br />
Animated meshes of doors are embedded in ONLV. All other animated meshes are stored outside as M3GM files.<br />
<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <M3GA id="..."><br />
| integer<br />
| Instance Id.<br />
|-<br />
| <Geometries><br />
| -<br />
| This is an int32 array for the <Link> tags.<br />
|-<br />
|valign="top"| <Link><br />
|valign="top"| link<br />
|<br />
: #''N'' (instance number) (for non-door)<br />
: M3GM''name'' (for door)<br />
It can happen that you see here references to dae files. This happens when the ONLV was created with some older OniSplit version (like 0.9.86.0) and if the ONLV was converted to xml in absence of the resources used by M3GA.<br />
|}<br />
<br />
<br />
===M3GM===<br />
Read on [[XML:M3GM|HERE]].<br />
<br />
Note that M3GMs have their own instances: PNTA, VCRA (x2), TXCA, IDXA (x2).<br />
<br />
Doors store their animated geometry in ONLV while the static part comes from BINACJBODOOR.oni which again link to M3GM files.<br />
<br />
<br />
===IDXA===<br />
{| class="wikitable" width="100%"<br />
!width=150px| XML tag<br />
!width=120px| content type<br />
! description<br />
|-<br />
| <IDXA id="..."><br />
| integer<br />
| Instance Id.<br />
|-<br />
| <Indices><br />
| -<br />
| This is an Int32 array for the <Int32> tags.<br />
|-<br />
|valign="top"| <Int32><br />
|valign="top"| int32<br />
|<br />
; From ONOA to AGQG elements<br />
: Link to <AGQGQuad> in [[XML:AKEV#AGQG|AGQG]] by order. (The array in AGQG starts with 0, so for example <Int32>6</Int32> would link to 7th <AGQGQuad>.)<br />
; From M3GM to PNTA elements<br />
: Read on [[XML:M3GM#PNTA|HERE]].<br />
; From M3GM to VCRA elements<br />
: Read on [[XML:M3GM#VCRA|HERE]].<br />
|}<br />
<br />
<br />
==Level files hierarchy==<br />
{| width="100%" style="text-align:center; empty-cells: hide"<br />
|width="20%" style="background-color:#CCFFCC;"| (un)colored cell = file<br />
|width="20%" style="background-color:#CCFFCC; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| stripped cell = embedded instance<br />
|width="20%"|<br />
|width="20%"|<br />
|width="20%"|<br />
|}<br />
<br />
<br />
<br />
{|class="wikitable" width="100%" style="text-align:center"<br />
|style="background-color:#DDDDDD;"| ONLV<br />
|width="20%"|<br />
|width="20%"|<br />
|width="20%"|<br />
|width="20%"|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF;"| AKEV<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| PNTA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| PLEA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TXCA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AGQG<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AGQR<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AGQC<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AGQC<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AGDB<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TXMA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| TXMP<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AKVA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AKEB<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IDXA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AKBP<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| ABNA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AKOT<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| OTIT<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"|OTLF<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| QTNA<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IDXA<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AKAA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| AKDA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| OBOA<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| M3GA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#FFCCCC;"| M3GM<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#FFCCCC; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| PNTA<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#FFCCCC; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| VCRA<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#FFCCCC; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TXCA<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#FFCCCC; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IDXA<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| TXMP<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| OBAN<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| ENVP<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| ONMA<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| ONFA<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| ONTA<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| ONSK<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| TXMP<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| AISA<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| ONCC<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| ONWC<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| AITR<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| ONSA<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| OBDC<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#FFFFAA;"| M3GM<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#FFFFAA; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| PNTA<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#FFFFAA; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| VCRA<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#FFFFAA; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TXCA<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#FFFFAA; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IDXA<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| TXMP<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| ONOA<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IDXA<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| ENVP<br />
|<br />
|<br />
|<br />
|-<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| CRSA<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| ONCC<br />
|<br />
|<br />
|}</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26998Talk:Restless Souls/Wishlist2018-01-12T23:41:09Z<p>EdT: /* Tutorials for UE4 */ Added a couple more</p>
<hr />
<div>===Discussions for WIPs?===<br />
There's no page yet for work-in-progress stuff.<br />
<br />
====Health bar====<br />
Oni's health bar is imho almost iconic to the game. So I would like to keep that radial shape.<br />
<br />
[[Restless_Souls/Wishlist#HUD|Over here]] is a whole list of other '''characteristics''' we might want to re-create.<br />
<br />
We can get the basic idea of a radial health bar from this one video: https://www.youtube.com/watch?v=N1XDatYlxhc<br />
<br />
For the other '''characteristics''' we can learn [https://www.youtube.com/watch?v=N1XDatYlxhc from this one].<br />
<br />
As known through [[XML:ONGS]] Oni's health bar uses multiple color zones. The videos show that UE4's '''lerp''' node is only used with two colors.<br />
<br />
That means we will have to set up multiple conditions for those linear interpolations - or "lerp".<br />
<br />
<br />
<br />
===To be moved to the actual page(s?)===<br />
====Naming====<br />
I guess technical material and link collection shouldn't be longer on my Wishlist. That project would be better to have its own page. Right?<br />
<br />
What would be a good name for that project and its main page?<br />
<br />
"Unreal Oni" maybe?<br />
<br />
If the project fails we can half ironically say it was unreal indeed.<br />
<br />
If it is a tech demo it would emphasize that it is made by UE. [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:55, 5 November 2017 (CET)<br />
<br />
As for the actual game it would be still good enough as working title. So, it's quite fitting due to the ambiguity.<br />
<br />
<br />
====Tutorials for UE4====<br />
<br />
::Unreal Engine 4 Community Tutorials: https://wiki.unrealengine.com/Category:Tutorials<br />
<br />
::Various Tutorials by Tommy Tran: https://www.raywenderlich.com/u/TommyTran<br />
<br />
:'''Skeleton assets'''<br />
<br />
::Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
::Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
::Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
:'''Unreal Engine 4 Full Character Creation'''<br />
<br />
::The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4. https://www.youtube.com/watch?v=oiwJIlQjCrU<br />
<br />
: '''Make Human model to UE4'''<br />
<br />
::Create model: https://www.youtube.com/watch?v=KH5dmggnlXo<br />
<br />
::Export Make Human character into Mixamo for animations: http://www.codegeek.io/20170409-animate-makehuman-character-in-mixamo/<br />
<br />
::import Mixamo character into UE4 https://www.youtube.com/watch?v=vgo4jnM0NyY<br />
<br />
:'''Material Creation'''<br />
:: Beginners Tutorial: https://www.youtube.com/watch?v=-B9k7WwHexQ<br />
<br />
:'''Sketchup to Unreal Engine playlist'''<br />
:: Exporting principals, methods, UV mapping: https://www.youtube.com/channel/UC3OtQyANP2KwPZ0ZERzPRAQ<br />
<br />
<br />
<br />
'''Character Creation'''<br />
<br />
Programs to create custom characters<br />
<br />
Make Human - Stand alone program (free) - http://www.makehuman.org/<br />
<br />
ManuelBastioniLAB - Addon for Blender (free) - http://www.manuelbastioni.com/index.php<br />
<br />
Adobe Fuse 1.3 - Available in Steam (free) - http://store.steampowered.com/app/257400/Fuse/<br />
<br />
Adobe Fuse CC Beta - Adobe Creative Cloud (subscription) - http://www.adobe.com/products/fuse.html<br />
<br />
<br />
'''Auto Rigging of models'''<br />
<br />
Mixamo - Upload your character model for rigging and adding animations. Also has limited amount of character models (free) - https://www.mixamo.com<br />
<br />
<br />
'''Miscellaneous'''<br />
<br />
Comparison of bone names between UE4 and Oni<br />
<br />
:Root:<br />
<br />
:Pelvis: pelvis<br />
<br />
:spine_01: mid<br />
<br />
:spine_02: chest<br />
<br />
:spine_03:<br />
<br />
:clavicle_l: left_shoulder<br />
<br />
:UpperArm_L: left_biceps<br />
<br />
:lowerarm_l: left_wrist<br />
<br />
:Hand_L: left_handfist<br />
<br />
:clavicle_r : right_shoulder<br />
<br />
:UpperArm_R: right_biceps<br />
<br />
:lowerarm_r: right_wrist<br />
<br />
:Hand_R: right_handfist<br />
<br />
:neck_01: neck<br />
<br />
:head: head<br />
<br />
:Thigh_L: left_thigh<br />
<br />
:calf_l: left_calf<br />
<br />
:Foot_L: left_foot<br />
<br />
:Thigh_R: right_thigh<br />
<br />
:calf_r: right_calf<br />
<br />
:Foot_R: right_foot<br />
<br />
<br />
'''Convert ONCC to UE4 Model Workflow (WIP)'''<br />
<br />
1) Extract ONCC with Vago, option standing pose. (note s10k has to update Vago for this option)<br />
<br />
2) To prepare the model, the following changes should be done. First of all open the dae in text editor. Search for <unit meter="0.1" name="decimeter" /> and change it <unit meter="10" name="decameter" />, this will set the model to the proper scale for UE4. To change the model into a T-pose, search for <node id="right_biceps">, then in the tag <rotate sid="rotY">, change the value from -90.000000 to 0.000000. Next search for <node id="left_biceps">, then in the tag <rotate sid="rotY"> change the value from 90.000000 to 0.000000. Finally, the pelvis height can be changed. Search for <node id="pelvis"> <translate sid="pos">0.000000 0.000000 0.000000</translate>. The second value should be changed to around 9 for female models and 10 to 11 for male models. For example, Konoko would be <translate sid="pos">0.000000 9.200000 0.000000</translate>. You can determine the exact height, by opening the dae in a 3D program and adjust the height of the pelvis o that the feet are level with the ground. (Note: Will need further study on adjusting the pelvis height to see if there are any negative consequences) <br />
<br />
3) Use the program Autodesk FBX Converter 2013 to convert the dae into FBX. Use the option "Embed media", Save mode "Binary".<br />
<br />
4) Go to website www.mixamo.com and login with your Adobe ID. Upload your character. In the Auto_Rigger page, follow the instructions and in the dropdown menu for Skeleton LOD select No Fingers (25). Once you are satisfied with the rigging, select the Animations Tab and search for T Pose and apply it to your model. Finally, download the model with the settings Format: Collada(.dae), Skin: With Skin, Frames per Second: 30, Keyframe Reduction: none. Note: If you want to download other animations, such as run, jump, flip, etc, choose "Without Skin" for the Skin option, then you will only get the animation.<br />
<br />
5) To add a root bone to the Mixamo rig, download the Blender Plugin from https://github.com/enziop/mixamo_converter and follow the instructions. The scale can be set to 1. (Note: Make sure to select a input folder since this is a batch conversion. A file will result in errors.) <br />
<br />
6) After the file has been converted to an fbx file, once again use Autodesk FBX Converter 2013 to convert the fbx to dae. Open the dae file and search for "file:///path_to/textures" and delete "file:///path_to/" leaving "textures/texture_name" Do this for all occurances. Next convert the dae back to fbx format. This step will allow UE4 to find the textures when importing the file.<br />
<br />
7) Useful video tutorial for Adding root bone and importing the file into UE4: https://www.youtube.com/watch?v=z97w4vrm8Eo (Note: Make sure the textures directory and fbx file are in the same directory before importing into UE. Slight change to the video's instruction. Uncheck the import animations and check the checkboxes for Material and Texture). If step 6 was done correctly, all the textures should be imported and converted to a material and applied to the model.<br />
<br />
In case the textures are not installed: Once the model has been imported into UE4, you will need to assign the textures to the Materials. First of all import the ONCC textures into UE4 project. Double click on Material, right click and Add Texture Sample. Then in the Material Expression section, select texture that matches the name of material. Save Material.<br />
<br />
7) Video on how to retarget the UE4 animations to ONCC model https://www.youtube.com/watch?v=xy9aLbZLdeA Set base pose of UE4 skeleton to T-Pose: https://www.youtube.com/watch?v=D8nH2Yo9PT8 -- EdT<br />
<br />
<br />
<br />
[[File:Oni_UE4_materials.png|200px|thumb|right]]<br />
<br />
[[File:ONCC_imported_UE4.png|400px|thumb|right]]<br />
<br />
<br />
<br />
Got stuck on point 7. Still have to get the T-pose working and check if I got the retargeting right. -- [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 15:40, 28 December 2017 (CET)<br />
<br />
Just for the protocol: trying to fix the broken texture links and material nodes within the blender fbx resulted (after an additional fbx -> dae -> fbx conversion) in the destruction of the pose. So repairing the character in plain text in not an option. So we can only repair the scaling in the original dae as you pointed out Ed.</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26978Talk:Restless Souls/Wishlist2017-12-29T01:58:56Z<p>EdT: Updated instructions</p>
<hr />
<div>===Discussions for WIPs?===<br />
There's no page yet for work-in-progress stuff.<br />
<br />
====Health bar====<br />
Oni's health bar is imho almost iconic to the game. So I would like to keep that radial shape.<br />
<br />
[[Restless_Souls/Wishlist#HUD|Over here]] is a whole list of other '''characteristics''' we might want to re-create.<br />
<br />
We can get the basic idea of a radial health bar from this one video: https://www.youtube.com/watch?v=N1XDatYlxhc<br />
<br />
For the other '''characteristics''' we can learn [https://www.youtube.com/watch?v=N1XDatYlxhc from this one].<br />
<br />
As known through [[XML:ONGS]] Oni's health bar uses multiple color zones. The videos show that UE4's '''lerp''' node is only used with two colors.<br />
<br />
That means we will have to set up multiple conditions for those linear interpolations - or "lerp".<br />
<br />
<br />
<br />
===To be moved to the actual page(s?)===<br />
====Naming====<br />
I guess technical material and link collection shouldn't be longer on my Wishlist. That project would be better to have its own page. Right?<br />
<br />
What would be a good name for that project and its main page?<br />
<br />
"Unreal Oni" maybe?<br />
<br />
If the project fails we can half ironically say it was unreal indeed.<br />
<br />
If it is a tech demo it would emphasize that it is made by UE. [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:55, 5 November 2017 (CET)<br />
<br />
As for the actual game it would be still good enough as working title. So, it's quite fitting due to the ambiguity.<br />
<br />
<br />
====Tutorials for UE4====<br />
<br />
:'''Skeleton assets'''<br />
<br />
::Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
::Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
::Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
:'''Unreal Engine 4 Full Character Creation'''<br />
<br />
::The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4. https://www.youtube.com/watch?v=oiwJIlQjCrU<br />
<br />
: '''Make Human model to UE4'''<br />
<br />
::Create model: https://www.youtube.com/watch?v=KH5dmggnlXo<br />
<br />
::Export Make Human character into Mixamo for animations: http://www.codegeek.io/20170409-animate-makehuman-character-in-mixamo/<br />
<br />
::import Mixamo character into UE4 https://www.youtube.com/watch?v=vgo4jnM0NyY<br />
<br />
:'''Material Creation'''<br />
:: Beginners Tutorial: https://www.youtube.com/watch?v=-B9k7WwHexQ<br />
<br />
:'''Sketchup to Unreal Engine playlist'''<br />
:: Exporting principals, methods, UV mapping: https://www.youtube.com/channel/UC3OtQyANP2KwPZ0ZERzPRAQ<br />
<br />
<br />
<br />
'''Character Creation'''<br />
<br />
Programs to create custom characters<br />
<br />
Make Human - Stand alone program (free) - http://www.makehuman.org/<br />
<br />
ManuelBastioniLAB - Addon for Blender (free) - http://www.manuelbastioni.com/index.php<br />
<br />
Adobe Fuse 1.3 - Available in Steam (free) - http://store.steampowered.com/app/257400/Fuse/<br />
<br />
Adobe Fuse CC Beta - Adobe Creative Cloud (subscription) - http://www.adobe.com/products/fuse.html<br />
<br />
<br />
'''Auto Rigging of models'''<br />
<br />
Mixamo - Upload your character model for rigging and adding animations. Also has limited amount of character models (free) - https://www.mixamo.com<br />
<br />
<br />
'''Miscellaneous'''<br />
<br />
Comparison of bone names between UE4 and Oni<br />
<br />
:Root:<br />
<br />
:Pelvis: pelvis<br />
<br />
:spine_01: mid<br />
<br />
:spine_02: chest<br />
<br />
:spine_03:<br />
<br />
:clavicle_l: left_shoulder<br />
<br />
:UpperArm_L: left_biceps<br />
<br />
:lowerarm_l: left_wrist<br />
<br />
:Hand_L: left_handfist<br />
<br />
:clavicle_r : right_shoulder<br />
<br />
:UpperArm_R: right_biceps<br />
<br />
:lowerarm_r: right_wrist<br />
<br />
:Hand_R: right_handfist<br />
<br />
:neck_01: neck<br />
<br />
:head: head<br />
<br />
:Thigh_L: left_thigh<br />
<br />
:calf_l: left_calf<br />
<br />
:Foot_L: left_foot<br />
<br />
:Thigh_R: right_thigh<br />
<br />
:calf_r: right_calf<br />
<br />
:Foot_R: right_foot<br />
<br />
<br />
'''Convert ONCC to UE4 Model Workflow (WIP)'''<br />
<br />
1) Extract ONCC with Vago, option standing pose. (note s10k has to update Vago for this option)<br />
<br />
2) To prepare the model, the following changes should be done. First of all open the dae in text editor. Search for <unit meter="0.1" name="decimeter" /> and change it <unit meter="10" name="decameter" />, this will set the model to the proper scale for UE4. To change the model into a T-pose, search for <node id="right_biceps">, then in the tag <rotate sid="rotY">, change the value from -90.000000 to 0.000000. Next search for <node id="left_biceps">, then in the tag <rotate sid="rotY"> change the value from 90.000000 to 0.000000. Finally, the pelvis height can be changed. Search for <node id="pelvis"> <translate sid="pos">0.000000 0.000000 0.000000</translate>. The second value should be changed to around 9 for female models and 10 to 11 for male models. For example, Konoko would be <translate sid="pos">0.000000 9.200000 0.000000</translate>. You can determine the exact height, by opening the dae in a 3D program and adjust the height of the pelvis o that the feet are level with the ground. (Note: Will need further study on adjusting the pelvis height to see if there are any negative consequences) <br />
<br />
3) Use the program Autodesk FBX Converter 2013 to convert the dae into FBX. Use the option "Embed media", Save mode "Binary".<br />
<br />
4) Go to website www.mixamo.com and login with your Adobe ID. Upload your character. In the Auto_Rigger page, follow the instructions and in the dropdown menu for Skeleton LOD select No Fingers (25). Once you are satisfied with the rigging, select the Animations Tab and search for T Pose and apply it to your model. Finally, download the model with the settings Format: Collada(.dae), Skin: With Skin, Frames per Second: 30, Keyframe Reduction: none. Note: If you want to download other animations, such as run, jump, flip, etc, choose "Without Skin" for the Skin option, then you will only get the animation.<br />
<br />
5) To add a root bone to the Mixamo rig, download the Blender Plugin from https://github.com/enziop/mixamo_converter and follow the instructions. The scale can be set to 1. (Note: Make sure to select a input folder since this is a batch conversion. A file will result in errors.) <br />
<br />
6) After the file has been converted to an fbx file, once again use Autodesk FBX Converter 2013 to convert the fbx to dae. Open the dae file and search for "file:///path_to/textures" and delete "file:///path_to/" leaving "textures/texture_name" Do this for all occurances. Next convert the dae back to fbx format. This step will allow UE4 to find the textures when importing the file.<br />
<br />
7) Useful video tutorial for Adding root bone and importing the file into UE4: https://www.youtube.com/watch?v=z97w4vrm8Eo (Note: Make sure the textures directory and fbx file are in the same directory before importing into UE. Slight change to the video's instruction. Uncheck the import animations and check the checkboxes for Material and Texture). If step 6 was done correctly, all the textures should be imported and converted to a material and applied to the model.<br />
<br />
In case the textures are not installed: Once the model has been imported into UE4, you will need to assign the textures to the Materials. First of all import the ONCC textures into UE4 project. Double click on Material, right click and Add Texture Sample. Then in the Material Expression section, select texture that matches the name of material. Save Material.<br />
<br />
7) Video on how to retarget the UE4 animations to ONCC model https://www.youtube.com/watch?v=xy9aLbZLdeA Set base pose of UE4 skeleton to T-Pose: https://www.youtube.com/watch?v=D8nH2Yo9PT8 -- EdT<br />
<br />
<br />
<br />
[[File:Oni_UE4_materials.png|200px|thumb|right]]<br />
<br />
[[File:ONCC_imported_UE4.png|400px|thumb|right]]<br />
<br />
<br />
<br />
Got stuck on point 7. Still have to get the T-pose working and check if I got the retargeting right. -- [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 15:40, 28 December 2017 (CET)<br />
<br />
Just for the protocol: trying to fix the broken texture links and material nodes within the blender fbx resulted (after an additional fbx -> dae -> fbx conversion) in the destruction of the pose. So repairing the character in plain text in not an option. So we can only repair the scaling in the original dae as you pointed out Ed.</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26933Talk:Restless Souls/Wishlist2017-12-28T01:54:43Z<p>EdT: </p>
<hr />
<div>===Discussions for WIPs?===<br />
There's no page yet for work-in-progress stuff.<br />
<br />
====Health bar====<br />
Oni's health bar is imho almost iconic to the game. So I would like to keep that radial shape.<br />
<br />
[[Restless_Souls/Wishlist#HUD|Over here]] is a whole list of other '''characteristics''' we might want to re-create.<br />
<br />
We can get the basic idea of a radial health bar from this one video: https://www.youtube.com/watch?v=N1XDatYlxhc<br />
<br />
For the other '''characteristics''' we can learn [https://www.youtube.com/watch?v=N1XDatYlxhc from this one].<br />
<br />
As known through [[XML:ONGS]] Oni's health bar uses multiple color zones. The videos show that UE4's '''lerp''' node is only used with two colors.<br />
<br />
That means we will have to set up multiple conditions for those linear interpolations - or "lerp".<br />
<br />
<br />
<br />
===To be moved to the actual page(s?)===<br />
====Naming====<br />
I guess technical material and link collection shouldn't be longer on my Wishlist. That project would be better to have its own page. Right?<br />
<br />
What would be a good name for that project and its main page?<br />
<br />
"Unreal Oni" maybe?<br />
<br />
If the project fails we can half ironically say it was unreal indeed.<br />
<br />
If it is a tech demo it would emphasize that it is made by UE. [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:55, 5 November 2017 (CET)<br />
<br />
As for the actual game it would be still good enough as working title. So, it's quite fitting due to the ambiguity.<br />
<br />
<br />
====Tutorials for UE4====<br />
<br />
:'''Skeleton assets'''<br />
<br />
::Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
::Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
::Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
:'''Unreal Engine 4 Full Character Creation'''<br />
<br />
::The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4. https://www.youtube.com/watch?v=oiwJIlQjCrU<br />
<br />
: '''Make Human model to UE4'''<br />
<br />
::Create model: https://www.youtube.com/watch?v=KH5dmggnlXo<br />
<br />
::Export Make Human character into Mixamo for animations: http://www.codegeek.io/20170409-animate-makehuman-character-in-mixamo/<br />
<br />
::import Mixamo character into UE4 https://www.youtube.com/watch?v=vgo4jnM0NyY<br />
<br />
:'''Material Creation'''<br />
:: Beginners Tutorial: https://www.youtube.com/watch?v=-B9k7WwHexQ<br />
<br />
:'''Sketchup to Unreal Engine playlist'''<br />
:: Exporting principals, methods, UV mapping: https://www.youtube.com/channel/UC3OtQyANP2KwPZ0ZERzPRAQ<br />
<br />
<br />
<br />
'''Character Creation'''<br />
<br />
Programs to create custom characters<br />
<br />
Make Human - Stand alone program (free) - http://www.makehuman.org/<br />
<br />
ManuelBastioniLAB - Addon for Blender (free) - http://www.manuelbastioni.com/index.php<br />
<br />
Adobe Fuse 1.3 - Available in Steam (free) - http://store.steampowered.com/app/257400/Fuse/<br />
<br />
Adobe Fuse CC Beta - Adobe Creative Cloud (subscription) - http://www.adobe.com/products/fuse.html<br />
<br />
<br />
'''Auto Rigging of models'''<br />
<br />
Mixamo - Upload your character model for rigging and adding animations. Also has limited amount of character models (free) - https://www.mixamo.com<br />
<br />
<br />
'''Miscellaneous'''<br />
<br />
Comparison of bone names between UE4 and Oni<br />
<br />
:Root:<br />
<br />
:Pelvis: pelvis<br />
<br />
:spine_01: mid<br />
<br />
:spine_02: chest<br />
<br />
:spine_03:<br />
<br />
:clavicle_l: left_shoulder<br />
<br />
:UpperArm_L: left_biceps<br />
<br />
:lowerarm_l: left_wrist<br />
<br />
:Hand_L: left_handfist<br />
<br />
:clavicle_r : right_shoulder<br />
<br />
:UpperArm_R: right_biceps<br />
<br />
:lowerarm_r: right_wrist<br />
<br />
:Hand_R: right_handfist<br />
<br />
:neck_01: neck<br />
<br />
:head: head<br />
<br />
:Thigh_L: left_thigh<br />
<br />
:calf_l: left_calf<br />
<br />
:Foot_L: left_foot<br />
<br />
:Thigh_R: right_thigh<br />
<br />
:calf_r: right_calf<br />
<br />
:Foot_R: right_foot<br />
<br />
<br />
'''Convert ONCC to UE4 Model Workflow (WIP)'''<br />
<br />
1) Extract ONCC with Vago, option standing pose. (note s10k has to update Vago for this option)<br />
<br />
2) To change the model into a T-pose, open the dae in text editor, search for <node id="right_biceps">, then in the tag <rotate sid="rotY"> change the value from -90.000000 to 0.000000. Next search for <node id="left_biceps"> then in the tag <rotate sid="rotY"> change the value from 90.000000 to 0.000000. Save dae<br />
<br />
3) Use the program Autodesk FBX Converter 2013 to convert the dae into FBX. Use the option "Embed media", Save mode "Binary".<br />
<br />
4)Go to website www.mixamo.com and login with your Adobe ID. Upload your character. In the Auto_Rigger page, follow the instructions and in the dropdown menu for Skeleton LOD select No Fingers (25). Once you are satisfied with the rigging, select the Animations Tab and search for T Pose and apply it to your model. Finally, download the model with the settings Format: FBX(.fbx), Skin: With Skin, Frames per Second: 30, Keyframe Reduction: none. Note: If you want to download other animations, such as run, jump, flip, etc, choose "Without Skin" for the Skin option.<br />
<br />
5) To add a root bone to the Mixamo rig, download the Blender Plugin from https://github.com/enziop/mixamo_converter and follow the instructions. (Note: Need to experiment with correct scale settings) Useful videos Adding root bone: https://www.youtube.com/watch?v=z97w4vrm8Eo (Note: click the checkboxes for Material and Texture) <br />
<br />
6) Once the model has been imported into UE4, you will need to assign the textures to the Materials. First of all import the ONCC textures into UE4 project. Double click on Material, right click and Add Texture Sample. Then in the Material Expression section, select texture that matches the name of material. Save Material.<br />
<br />
7) Video on how to retarget the UE4 animations to ONCC model https://www.youtube.com/watch?v=xy9aLbZLdeA Set base pose of UE4 skeleton to T-Pose: https://www.youtube.com/watch?v=D8nH2Yo9PT8<br />
<br />
[[File:Oni_UE4_materials.png|200px|thumb|left]]<br />
<br />
[[File:ONCC_imported_UE4.png|400px|thumb|left]]</div>EdThttps://wiki.oni2.net/w/index.php?title=File:Oni_UE4_materials.png&diff=26932File:Oni UE4 materials.png2017-12-28T01:52:19Z<p>EdT: Category:Modding screenshots</p>
<hr />
<div>[[Category:Modding screenshots]]</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26931Talk:Restless Souls/Wishlist2017-12-28T00:07:41Z<p>EdT: </p>
<hr />
<div>===Discussions for WIPs?===<br />
There's no page yet for work-in-progress stuff.<br />
<br />
====Health bar====<br />
Oni's health bar is imho almost iconic to the game. So I would like to keep that radial shape.<br />
<br />
[[Restless_Souls/Wishlist#HUD|Over here]] is a whole list of other '''characteristics''' we might want to re-create.<br />
<br />
We can get the basic idea of a radial health bar from this one video: https://www.youtube.com/watch?v=N1XDatYlxhc<br />
<br />
For the other '''characteristics''' we can learn [https://www.youtube.com/watch?v=N1XDatYlxhc from this one].<br />
<br />
As known through [[XML:ONGS]] Oni's health bar uses multiple color zones. The videos show that UE4's '''lerp''' node is only used with two colors.<br />
<br />
That means we will have to set up multiple conditions for those linear interpolations - or "lerp".<br />
<br />
<br />
<br />
===To be moved to the actual page(s?)===<br />
====Naming====<br />
I guess technical material and link collection shouldn't be longer on my Wishlist. That project would be better to have its own page. Right?<br />
<br />
What would be a good name for that project and its main page?<br />
<br />
"Unreal Oni" maybe?<br />
<br />
If the project fails we can half ironically say it was unreal indeed.<br />
<br />
If it is a tech demo it would emphasize that it is made by UE. [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:55, 5 November 2017 (CET)<br />
<br />
As for the actual game it would be still good enough as working title. So, it's quite fitting due to the ambiguity.<br />
<br />
<br />
====Tutorials for UE4====<br />
<br />
:'''Skeleton assets'''<br />
<br />
::Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
::Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
::Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
:'''Unreal Engine 4 Full Character Creation'''<br />
<br />
::The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4. https://www.youtube.com/watch?v=oiwJIlQjCrU<br />
<br />
: '''Make Human model to UE4'''<br />
<br />
::Create model: https://www.youtube.com/watch?v=KH5dmggnlXo<br />
<br />
::Export Make Human character into Mixamo for animations: http://www.codegeek.io/20170409-animate-makehuman-character-in-mixamo/<br />
<br />
::import Mixamo character into UE4 https://www.youtube.com/watch?v=vgo4jnM0NyY<br />
<br />
:'''Material Creation'''<br />
:: Beginners Tutorial: https://www.youtube.com/watch?v=-B9k7WwHexQ<br />
<br />
:'''Sketchup to Unreal Engine playlist'''<br />
:: Exporting principals, methods, UV mapping: https://www.youtube.com/channel/UC3OtQyANP2KwPZ0ZERzPRAQ<br />
<br />
<br />
<br />
'''Character Creation'''<br />
<br />
Programs to create custom characters<br />
<br />
Make Human - Stand alone program (free) - http://www.makehuman.org/<br />
<br />
ManuelBastioniLAB - Addon for Blender (free) - http://www.manuelbastioni.com/index.php<br />
<br />
Adobe Fuse 1.3 - Available in Steam (free) - http://store.steampowered.com/app/257400/Fuse/<br />
<br />
Adobe Fuse CC Beta - Adobe Creative Cloud (subscription) - http://www.adobe.com/products/fuse.html<br />
<br />
<br />
'''Auto Rigging of models'''<br />
<br />
Mixamo - Upload your character model for rigging and adding animations. Also has limited amount of character models (free) - https://www.mixamo.com<br />
<br />
<br />
'''Miscellaneous'''<br />
<br />
Comparison of bone names between UE4 and Oni<br />
<br />
:Root:<br />
<br />
:Pelvis: pelvis<br />
<br />
:spine_01: mid<br />
<br />
:spine_02: chest<br />
<br />
:spine_03:<br />
<br />
:clavicle_l: left_shoulder<br />
<br />
:UpperArm_L: left_biceps<br />
<br />
:lowerarm_l: left_wrist<br />
<br />
:Hand_L: left_handfist<br />
<br />
:clavicle_r : right_shoulder<br />
<br />
:UpperArm_R: right_biceps<br />
<br />
:lowerarm_r: right_wrist<br />
<br />
:Hand_R: right_handfist<br />
<br />
:neck_01: neck<br />
<br />
:head: head<br />
<br />
:Thigh_L: left_thigh<br />
<br />
:calf_l: left_calf<br />
<br />
:Foot_L: left_foot<br />
<br />
:Thigh_R: right_thigh<br />
<br />
:calf_r: right_calf<br />
<br />
:Foot_R: right_foot<br />
<br />
<br />
'''Convert ONCC to UE4 Model Workflow (WIP)'''<br />
<br />
1) Extract ONCC with Vago, option standing pose. (note s10k has to update Vago for this option)<br />
<br />
2) To change the model into a T-pose, open the dae in text editor, search for <node id="right_biceps">, then in the tag <rotate sid="rotY"> change the value from -90.000000 to 0.000000. Next search for <node id="left_biceps"> then in the tag <rotate sid="rotY"> change the value from 90.000000 to 0.000000. Save dae<br />
<br />
3) Use the program Autodesk FBX Converter 2013 to convert the dae into FBX. Use the option "Embed media", Save mode "Binary".<br />
<br />
4)Go to website www.mixamo.com and login with your Adobe ID. Upload your character. In the Auto_Rigger page, follow the instructions and in the dropdown menu for Skeleton LOD select No Fingers (25). Once you are satisfied with the rigging, select the Animations Tab and search for T Pose and apply it to your model. Finally, download the model with the settings Format: FBX(.fbx), Skin: With Skin, Frames per Second: 30, Keyframe Reduction: none. Note: If you want to download other animations, such as run, jump, flip, etc, choose "Without Skin" for the Skin option.<br />
<br />
5) To add a root bone to the Mixamo rig, download the Blender Plugin from https://github.com/enziop/mixamo_converter and follow the instructions. (Note: Need to experiment with correct scale settings) Useful videos Adding root bone: https://www.youtube.com/watch?v=z97w4vrm8Eo (Note: click the checkboxes for Material and Texture) <br />
<br />
6) Once the model has been imported into UE4, you will need to assign the textures to the Materials. First of all import the ONCC textures into UE4 project. Double click on Material, right click and Add Texture Sample. Then in the Material Expression section, select texture that matches the name of material. Save Material.<br />
<br />
7) Video on how to retarget the UE4 animations to ONCC model https://www.youtube.com/watch?v=xy9aLbZLdeA Set base pose of UE4 skeleton to T-Pose: https://www.youtube.com/watch?v=D8nH2Yo9PT8<br />
<br />
[[File:ONCC_imported_UE4.png|400px|thumb|left]]</div>EdThttps://wiki.oni2.net/w/index.php?title=File:ONCC_imported_UE4.png&diff=26930File:ONCC imported UE4.png2017-12-28T00:04:21Z<p>EdT: Category:Modding screenshots</p>
<hr />
<div>[[Category:Modding screenshots]]</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26929Talk:Restless Souls/Wishlist2017-12-28T00:01:33Z<p>EdT: Convert ONCC to UE4 Model Workflow (WIP)</p>
<hr />
<div>===Discussions for WIPs?===<br />
There's no page yet for work-in-progress stuff.<br />
<br />
====Health bar====<br />
Oni's health bar is imho almost iconic to the game. So I would like to keep that radial shape.<br />
<br />
[[Restless_Souls/Wishlist#HUD|Over here]] is a whole list of other '''characteristics''' we might want to re-create.<br />
<br />
We can get the basic idea of a radial health bar from this one video: https://www.youtube.com/watch?v=N1XDatYlxhc<br />
<br />
For the other '''characteristics''' we can learn [https://www.youtube.com/watch?v=N1XDatYlxhc from this one].<br />
<br />
As known through [[XML:ONGS]] Oni's health bar uses multiple color zones. The videos show that UE4's '''lerp''' node is only used with two colors.<br />
<br />
That means we will have to set up multiple conditions for those linear interpolations - or "lerp".<br />
<br />
<br />
<br />
===To be moved to the actual page(s?)===<br />
====Naming====<br />
I guess technical material and link collection shouldn't be longer on my Wishlist. That project would be better to have its own page. Right?<br />
<br />
What would be a good name for that project and its main page?<br />
<br />
"Unreal Oni" maybe?<br />
<br />
If the project fails we can half ironically say it was unreal indeed.<br />
<br />
If it is a tech demo it would emphasize that it is made by UE. [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:55, 5 November 2017 (CET)<br />
<br />
As for the actual game it would be still good enough as working title. So, it's quite fitting due to the ambiguity.<br />
<br />
<br />
====Tutorials for UE4====<br />
<br />
:'''Skeleton assets'''<br />
<br />
::Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
::Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
::Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
:'''Unreal Engine 4 Full Character Creation'''<br />
<br />
::The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4. https://www.youtube.com/watch?v=oiwJIlQjCrU<br />
<br />
: '''Make Human model to UE4'''<br />
<br />
::Create model: https://www.youtube.com/watch?v=KH5dmggnlXo<br />
<br />
::Export Make Human character into Mixamo for animations: http://www.codegeek.io/20170409-animate-makehuman-character-in-mixamo/<br />
<br />
::import Mixamo character into UE4 https://www.youtube.com/watch?v=vgo4jnM0NyY<br />
<br />
:'''Material Creation'''<br />
:: Beginners Tutorial: https://www.youtube.com/watch?v=-B9k7WwHexQ<br />
<br />
:'''Sketchup to Unreal Engine playlist'''<br />
:: Exporting principals, methods, UV mapping: https://www.youtube.com/channel/UC3OtQyANP2KwPZ0ZERzPRAQ<br />
<br />
<br />
<br />
'''Character Creation'''<br />
<br />
Programs to create custom characters<br />
<br />
Make Human - Stand alone program (free) - http://www.makehuman.org/<br />
<br />
ManuelBastioniLAB - Addon for Blender (free) - http://www.manuelbastioni.com/index.php<br />
<br />
Adobe Fuse 1.3 - Available in Steam (free) - http://store.steampowered.com/app/257400/Fuse/<br />
<br />
Adobe Fuse CC Beta - Adobe Creative Cloud (subscription) - http://www.adobe.com/products/fuse.html<br />
<br />
<br />
'''Auto Rigging of models'''<br />
<br />
Mixamo - Upload your character model for rigging and adding animations. Also has limited amount of character models (free) - https://www.mixamo.com<br />
<br />
<br />
'''Miscellaneous'''<br />
<br />
Comparison of bone names between UE4 and Oni<br />
<br />
:Root:<br />
<br />
:Pelvis: pelvis<br />
<br />
:spine_01: mid<br />
<br />
:spine_02: chest<br />
<br />
:spine_03:<br />
<br />
:clavicle_l: left_shoulder<br />
<br />
:UpperArm_L: left_biceps<br />
<br />
:lowerarm_l: left_wrist<br />
<br />
:Hand_L: left_handfist<br />
<br />
:clavicle_r : right_shoulder<br />
<br />
:UpperArm_R: right_biceps<br />
<br />
:lowerarm_r: right_wrist<br />
<br />
:Hand_R: right_handfist<br />
<br />
:neck_01: neck<br />
<br />
:head: head<br />
<br />
:Thigh_L: left_thigh<br />
<br />
:calf_l: left_calf<br />
<br />
:Foot_L: left_foot<br />
<br />
:Thigh_R: right_thigh<br />
<br />
:calf_r: right_calf<br />
<br />
:Foot_R: right_foot<br />
<br />
<br />
'''Convert ONCC to UE4 Model Workflow (WIP)'''<br />
<br />
1) Extract ONCC with Vago, option standing pose. (note s10k has to update Vago for this option)<br />
<br />
2) To change the model into a T-pose, open the dae in text editor, search for <node id="right_biceps">, then in the tag <rotate sid="rotY"> change the value from -90.000000 to 0.000000. Next search for <node id="left_biceps"> then in the tag <rotate sid="rotY"> change the value from 90.000000 to 0.000000. Save dae<br />
<br />
3) Use the program Autodesk FBX Converter 2013 to convert the dae into FBX. Use the option "Embed media", Save mode "Binary".<br />
<br />
4)Go to website www.mixamo.com and login with your Adobe ID. Upload your character. In the Auto_Rigger page, follow the instructions and in the dropdown menu for Skeleton LOD select No Fingers (25). Once you are satisfied with the rigging, select the Animations Tab and search for T Pose and apply it to your model. Finally, download the model with the settings Format: FBX(.fbx), Skin: With Skin, Frames per Second: 30, Keyframe Reduction: none. Note: If you want to download other animations, such as run, jump, flip, etc, choose "Without Skin" for the Skin option.<br />
<br />
5) To add a root bone to the Mixamo rig, download the Blender Plugin from https://github.com/enziop/mixamo_converter and follow the instructions. (Note: Need to experiment with correct scale settings) Useful videos Adding root bone: https://www.youtube.com/watch?v=z97w4vrm8Eo (Note: click the checkboxes for Material and Texture) <br />
<br />
6) Once the model has been imported into UE4, you will need to assign the textures to the Materials. First of all import the ONCC textures into UE4 project. Double click on Material, right click and Add Texture Sample. Then in the Material Expression section, select texture that matches the name of material. Save Material.<br />
<br />
7) Video on how to retarget the UE4 animations to ONCC model https://www.youtube.com/watch?v=xy9aLbZLdeA Set base pose of UE4 skeleton to T-Pose: https://www.youtube.com/watch?v=D8nH2Yo9PT8</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26800Talk:Restless Souls/Wishlist2017-10-08T21:14:14Z<p>EdT: Few more tutorials</p>
<hr />
<div>'''Tutorials for UE4'''<br />
<br />
:'''Skeleton assets'''<br />
<br />
::Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
::Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
::Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
:'''Unreal Engine 4 Full Character Creation'''<br />
<br />
::The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4. https://www.youtube.com/watch?v=oiwJIlQjCrU<br />
<br />
: '''Make Human model to UE4'''<br />
<br />
::Create model: https://www.youtube.com/watch?v=KH5dmggnlXo<br />
<br />
::Export Make Human character into Mixamo for animations: http://www.codegeek.io/20170409-animate-makehuman-character-in-mixamo/<br />
<br />
::import Mixamo character into UE4 https://www.youtube.com/watch?v=vgo4jnM0NyY<br />
<br />
:'''Material Creation'''<br />
:: Beginners Tutorial: https://www.youtube.com/watch?v=-B9k7WwHexQ<br />
<br />
:'''Sketchup to Unreal Engine playlist'''<br />
:: Exporting principals, methods, UV mapping: https://www.youtube.com/channel/UC3OtQyANP2KwPZ0ZERzPRAQ<br />
<br />
<br />
<br />
'''Character Creation'''<br />
<br />
Programs to create custom characters<br />
<br />
Make Human - Stand alone program (free) - http://www.makehuman.org/<br />
<br />
ManuelBastioniLAB - Addon for Blender (free) - http://www.manuelbastioni.com/index.php<br />
<br />
Adobe Fuse 1.3 - Available in Steam (free) - http://store.steampowered.com/app/257400/Fuse/<br />
<br />
Adobe Fuse CC Beta - Adobe Creative Cloud (subscription) - http://www.adobe.com/products/fuse.html<br />
<br />
<br />
'''Auto Rigging of models'''<br />
<br />
Mixamo - Upload your character model for rigging and adding animations. Also has limited amount of character models (free) - https://www.mixamo.com<br />
<br />
<br />
'''Miscellaneous'''<br />
<br />
Comparison of bone names between UE4 and Oni<br />
<br />
:Root:<br />
<br />
:Pelvis: pelvis<br />
<br />
:spine_01: mid<br />
<br />
:spine_02: chest<br />
<br />
:spine_03:<br />
<br />
:clavicle_l: left_shoulder<br />
<br />
:UpperArm_L: left_biceps<br />
<br />
:lowerarm_l: left_wrist<br />
<br />
:Hand_L: left_handfist<br />
<br />
:clavicle_r : right_shoulder<br />
<br />
:UpperArm_R: right_biceps<br />
<br />
:lowerarm_r: right_wrist<br />
<br />
:Hand_R: right_handfist<br />
<br />
:neck_01: neck<br />
<br />
:head: head<br />
<br />
:Thigh_L: left_thigh<br />
<br />
:calf_l: left_calf<br />
<br />
:Foot_L: left_foot<br />
<br />
:Thigh_R: right_thigh<br />
<br />
:calf_r: right_calf<br />
<br />
:Foot_R: right_foot</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26760Talk:Restless Souls/Wishlist2017-09-23T20:20:27Z<p>EdT: Programs to create character models</p>
<hr />
<div>'''Tutorials for UE4'''<br />
<br />
:'''Skeleton assets'''<br />
<br />
::Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
::Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
::Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
:'''Unreal Engine 4 Full Character Creation'''<br />
<br />
::The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4. https://www.youtube.com/watch?v=oiwJIlQjCrU<br />
<br />
: '''Make Human model to UE4'''<br />
<br />
::Create model: https://www.youtube.com/watch?v=KH5dmggnlXo<br />
<br />
::Export Make Human character into Mixamo for animations: http://www.codegeek.io/20170409-animate-makehuman-character-in-mixamo/<br />
<br />
::import Mixamo character into UE4 https://www.youtube.com/watch?v=vgo4jnM0NyY<br />
<br />
<br />
<br />
'''Character Creation'''<br />
<br />
Programs to create custom characters<br />
<br />
Make Human - Stand alone program (free) - http://www.makehuman.org/<br />
<br />
ManuelBastioniLAB - Addon for Blender (free) - http://www.manuelbastioni.com/index.php<br />
<br />
Adobe Fuse 1.3 - Available in Steam (free) - http://store.steampowered.com/app/257400/Fuse/<br />
<br />
Adobe Fuse CC Beta - Adobe Creative Cloud (subscription) - http://www.adobe.com/products/fuse.html<br />
<br />
<br />
'''Auto Rigging of models'''<br />
<br />
Mixamo - Upload your character model for rigging and adding animations. Also has limited amount of character models (free) - https://www.mixamo.com<br />
<br />
<br />
'''Miscellaneous'''<br />
<br />
Comparison of bone names between UE4 and Oni<br />
<br />
:Root:<br />
<br />
:Pelvis: pelvis<br />
<br />
:spine_01: mid<br />
<br />
:spine_02: chest<br />
<br />
:spine_03:<br />
<br />
:clavicle_l: left_shoulder<br />
<br />
:UpperArm_L: left_biceps<br />
<br />
:lowerarm_l: left_wrist<br />
<br />
:Hand_L: left_handfist<br />
<br />
:clavicle_r : right_shoulder<br />
<br />
:UpperArm_R: right_biceps<br />
<br />
:lowerarm_r: right_wrist<br />
<br />
:Hand_R: right_handfist<br />
<br />
:neck_01: neck<br />
<br />
:head: head<br />
<br />
:Thigh_L: left_thigh<br />
<br />
:calf_l: left_calf<br />
<br />
:Foot_L: left_foot<br />
<br />
:Thigh_R: right_thigh<br />
<br />
:calf_r: right_calf<br />
<br />
:Foot_R: right_foot</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26749Talk:Restless Souls/Wishlist2017-09-15T04:14:24Z<p>EdT: Comparison of basic bones names</p>
<hr />
<div>'''Tutorials for UE4'''<br />
<br />
'''Skeleton assets'''<br />
<br />
Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
<br />
'''Unreal Engine 4 Full Character Creation'''<br />
<br />
The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4.<br />
https://www.youtube.com/watch?v=oiwJIlQjCrU<br />
<br />
<br />
'''Miscellaneous'''<br />
<br />
Comparison of bone names between UE4 and Oni<br />
<br />
:Root:<br />
<br />
:Pelvis: pelvis<br />
<br />
:spine_01: mid<br />
<br />
:spine_02: chest<br />
<br />
:spine_03:<br />
<br />
:clavicle_l: left_shoulder<br />
<br />
:UpperArm_L: left_biceps<br />
<br />
:lowerarm_l: left_wrist<br />
<br />
:Hand_L: left_handfist<br />
<br />
:clavicle_r : right_shoulder<br />
<br />
:UpperArm_R: right_biceps<br />
<br />
:lowerarm_r: right_wrist<br />
<br />
:Hand_R: right_handfist<br />
<br />
:neck_01: neck<br />
<br />
:head: head<br />
<br />
:Thigh_L: left_thigh<br />
<br />
:calf_l: left_calf<br />
<br />
:Foot_L: left_foot<br />
<br />
:Thigh_R: right_thigh<br />
<br />
:calf_r: right_calf<br />
<br />
:Foot_R: right_foot</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Restless_Souls/Wishlist&diff=26748Talk:Restless Souls/Wishlist2017-09-15T01:42:16Z<p>EdT: Collecting video tutorials for UE4, hopefully they will be useful</p>
<hr />
<div>Miscellaneous Tutorials for UE4<br />
<br />
'''Skeleton assets'''<br />
<br />
Skeleton Assets: Overview: https://www.youtube.com/watch?v=FDbpHamn2eY<br />
<br />
Importing, Sharing Skeletons & Anims: https://www.youtube.com/watch?v=JkcJ5bjGPsg<br />
<br />
Skeleton Assets: Anim Retargeting Different Skeletons: https://www.youtube.com/watch?v=xy9aLbZLdeA<br />
<br />
<br />
'''Unreal Engine 4 Full Character Creation'''<br />
<br />
The video is unpolished and awkward at times. But it shows how to create a new character, import to Blender, set up the bones, then import to UE4 and finally how to create animations within UE4.<br />
https://www.youtube.com/watch?v=oiwJIlQjCrU</div>EdThttps://wiki.oni2.net/w/index.php?title=Blender&diff=26745Blender2017-09-13T23:07:23Z<p>EdT: /* Viewport */ Global lighting</p>
<hr />
<div>{{finish}}<br />
[[Category:Bi-platform modding tools]]<br />
<br />
For now have a look [[User:Iritscen/BlenderTutorial|HERE]].<br />
<br />
<br />
==Controls==<br />
Blender is so radical different from any other tool that you maybe want to customize the controls.<br />
<br />
In that case have a look at:<br />
: File > User Preferences... > Input > 3D View > 3D View (Global)<br />
<br />
<br />
==Viewport==<br />
[[Image:Blender_display_mode_Texture.png|200px|right|thumb]] [[Image:Blender_display_mode_Material.png|200px|right|thumb]]<br />
Q: How can I change the '''display mode to see textures'''?<br />
:A: At the bottom, click at the '''circle button''' to get a dropdown menu.<br />
:: Texture gives you just rough shading.<br />
:: '''Use Material''' instead to see textures plus rough shading.<br />
<br />
Q: How to get global lighting?<br />
:A: Go to the World properties and select the box Environment Lighting. (See the Warehouse screenshot)<br />
<br />
[[Image:Oni_WH_Env_Blender.png|200px|right|thumb]]<br />
<br />
==UI==<br />
Q: How do you '''close panels'''?<br />
:A: [https://www.youtube.com/watch?v=4q6mLdO1E4Q In the upper right corner drag the triangle symbol on another equal sized panel.]<br />
<br />
<br />
==Tools and actions==<br />
Q: '''How do you select''' faces, edges and vertecies (points)?<br />
:A: There are controls at the bottom of the viewport. While being in '''Edit Mode''', make the '''Edge symbol''' active. '''Right-click a component''' to select it. Use Shift to add or subtract.<br />
<br />
Q: How do you '''toggle between selection modes'''.<br />
:A: [https://blenderartists.org/forum/showthread.php?208794-Can-we-toggle-between-face-edge-vert-select-modes-with-hotkeys&s=b38da8b5a0b20011e8850462988d8e3c&p=1990947&viewfull=1#post1990947 ...]<br />
<br />
Q: How to '''(de)select all'''.<br />
:A: Press A.<br />
<br />
Q: How do you '''fill holes''' in meshes?<br />
:A: '''Select edges''' of the hole. '''Press F''' to make a N-gon face '''or''' press '''F + Alt''' to make a triangulated face.<br />
<br />
Q: How do you '''show normals'''?<br />
:A: '''Press N''' to toggle for a panel with more properties. Scroll down to '''Mesh Display section'''. You likely want to click the '''faces symbol'''.<br />
<br />
Q: How do you '''edit UVs'''?<br />
:A:</div>EdThttps://wiki.oni2.net/w/index.php?title=Blender&diff=26744Blender2017-09-13T23:04:44Z<p>EdT: /* Viewport */</p>
<hr />
<div>{{finish}}<br />
[[Category:Bi-platform modding tools]]<br />
<br />
For now have a look [[User:Iritscen/BlenderTutorial|HERE]].<br />
<br />
<br />
==Controls==<br />
Blender is so radical different from any other tool that you maybe want to customize the controls.<br />
<br />
In that case have a look at:<br />
: File > User Preferences... > Input > 3D View > 3D View (Global)<br />
<br />
<br />
==Viewport==<br />
[[Image:Blender_display_mode_Texture.png|200px|right|thumb]] [[Image:Blender_display_mode_Material.png|200px|right|thumb]]<br />
Q: How can I change the '''display mode to see textures'''?<br />
:A: At the bottom, click at the '''circle button''' to get a dropdown menu.<br />
:: Texture gives you just rough shading.<br />
:: '''Use Material''' instead to see textures plus rough shading.<br />
<br />
Q: How to get global lighting?<br />
:A: Go to the World properties and select the box Environment Lighting.<br />
<br />
[[Image:Oni_WH_Env_Blender.png|200px|right|thumb]]<br />
<br />
==UI==<br />
Q: How do you '''close panels'''?<br />
:A: [https://www.youtube.com/watch?v=4q6mLdO1E4Q In the upper right corner drag the triangle symbol on another equal sized panel.]<br />
<br />
<br />
==Tools and actions==<br />
Q: '''How do you select''' faces, edges and vertecies (points)?<br />
:A: There are controls at the bottom of the viewport. While being in '''Edit Mode''', make the '''Edge symbol''' active. '''Right-click a component''' to select it. Use Shift to add or subtract.<br />
<br />
Q: How do you '''toggle between selection modes'''.<br />
:A: [https://blenderartists.org/forum/showthread.php?208794-Can-we-toggle-between-face-edge-vert-select-modes-with-hotkeys&s=b38da8b5a0b20011e8850462988d8e3c&p=1990947&viewfull=1#post1990947 ...]<br />
<br />
Q: How to '''(de)select all'''.<br />
:A: Press A.<br />
<br />
Q: How do you '''fill holes''' in meshes?<br />
:A: '''Select edges''' of the hole. '''Press F''' to make a N-gon face '''or''' press '''F + Alt''' to make a triangulated face.<br />
<br />
Q: How do you '''show normals'''?<br />
:A: '''Press N''' to toggle for a panel with more properties. Scroll down to '''Mesh Display section'''. You likely want to click the '''faces symbol'''.<br />
<br />
Q: How do you '''edit UVs'''?<br />
:A:</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:EdT&diff=26743User talk:EdT2017-09-13T22:59:58Z<p>EdT: </p>
<hr />
<div>[[Image:Oni_WH_Env_Blender.png|200px|right|thumb]]<br />
Hi Edd,<br />
<br />
if you don't mind I hope you can answer these questions.<br />
<br />
Is this in Material view in your screenshot or does the Texture view works as it should on Mac side?<br />
<br />
Was Konoko imported with that pose or did you move her bones?<br />
<br />
Do you remember a helpful resource and some annoying pitfalls about rigging characters in blender? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 23:52, 12 September 2017 (CEST)<br />
<br />
: It was Object Mode with Material for Viewport shading. I had to merge all 19 parts of original Konoko into a single mesh for Overgrowth and used this pose. This was the .obj version that I posted in the Lugara thread, so no bones. Also I imported the AKEV.dae file for the Warehouse directly into Blender.<br />
: Fortunately, I kept the links to the tutorials I used for rigging. Rigging and Skinning a Character Model: https://www.youtube.com/watch?v=PPbSGUPj72w, Making a Simple Walk Animation: https://www.youtube.com/watch?v=kSDWfx6ib9k A search on youtube will give you more up to date tutorials, including how to use the Blender Game Engine. <br />
: You might want to search for "Third Person Characters in Unity" in youtube, they look interesting. EdT<br />
<br />
Thank you. Will look into the tuts at weekend. For now I will go with Blender (only for content creation) and UE4. Learning three programs at once might be a bit much, don't you think. Or maybe you want to tell me some features of Unity that are totally mind blowing.<br />
I'm not that keen in programming h2h combat without the help of visual scripting - we need a lot of customizations and I have already seen a bunch of promising tutorials on youtube for ue4. [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:26, 13 September 2017 (CEST)<br />
<br />
: Nope nothing mind blowing about Unity :) I just happened to look at the videos for it. Now I will look into UE4, can you share some of the promising videos? Also, let's continue this discussion by email, you have my email address from s10k. EdT<br />
<br />
<br />
<br />
<br />
----<br />
<br />
'''Talk page archives''': [[User_talk:EdT/Archive1|#1]]<br />
<br />
Phew, another dusty talk page! *cough cough* I just wanted to draw your attention to [[User_talk:Iritscen#slowmo|this conversation]], which is in reference to [http://wiki.oni2.net/w/index.php?title=PC_vs_Mac&diff=22319&oldid=22248 this edit of mine]. Thanks. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:59, 7 May 2013 (CEST)<br />
<br />
::Cleaned up all the dust. :) [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 00:41, 8 May 2013 (CEST)<br />
<br />
::: Mm, yes, but... :-S well, it's much better to archive it then delete it. There's a lot of history back there, like when geyser helped you patch the Mac app and we experimented with plugins. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:47, 8 May 2013 (CEST)<br />
<br />
::::Archived. Thanks for the suggestion. [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 01:09, 8 May 2013 (CEST)<br />
<br />
:::::Thank ''you'' :-) --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 01:23, 8 May 2013 (CEST)</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:EdT&diff=26741User talk:EdT2017-09-12T23:44:34Z<p>EdT: </p>
<hr />
<div>[[Image:Oni_WH_Env_Blender.png|200px|right|thumb]]<br />
Hi Edd,<br />
<br />
if you don't mind I hope you can answer these questions.<br />
<br />
Is this in Material view in your screenshot or does the Texture view works as it should on Mac side?<br />
<br />
Was Konoko imported with that pose or did you move her bones?<br />
<br />
Do you remember a helpful resource and some annoying pitfalls about rigging characters in blender? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 23:52, 12 September 2017 (CEST)<br />
<br />
: It was Object Mode with Material for Viewport shading. I had to merge all 19 parts of original Konoko into a single mesh for Overgrowth and used this pose. This was the .obj version that I posted in the Lugara thread, so no bones. Also I imported the AKEV.dae file for the Warehouse directly into Blender.<br />
: Fortunately, I kept the links to the tutorials I used for rigging. Rigging and Skinning a Character Model: https://www.youtube.com/watch?v=PPbSGUPj72w, Making a Simple Walk Animation: https://www.youtube.com/watch?v=kSDWfx6ib9k A search on youtube will give you more up to date tutorials, including how to use the Blender Game Engine. <br />
: You might want to search for "Third Person Characters in Unity" in youtube, they look interesting. EdT<br />
<br />
<br />
----<br />
<br />
'''Talk page archives''': [[User_talk:EdT/Archive1|#1]]<br />
<br />
Phew, another dusty talk page! *cough cough* I just wanted to draw your attention to [[User_talk:Iritscen#slowmo|this conversation]], which is in reference to [http://wiki.oni2.net/w/index.php?title=PC_vs_Mac&diff=22319&oldid=22248 this edit of mine]. Thanks. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:59, 7 May 2013 (CEST)<br />
<br />
::Cleaned up all the dust. :) [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 00:41, 8 May 2013 (CEST)<br />
<br />
::: Mm, yes, but... :-S well, it's much better to archive it then delete it. There's a lot of history back there, like when geyser helped you patch the Mac app and we experimented with plugins. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:47, 8 May 2013 (CEST)<br />
<br />
::::Archived. Thanks for the suggestion. [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 01:09, 8 May 2013 (CEST)<br />
<br />
:::::Thank ''you'' :-) --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 01:23, 8 May 2013 (CEST)</div>EdThttps://wiki.oni2.net/w/index.php?title=Blender&diff=26732Blender2017-09-11T22:01:33Z<p>EdT: /* Viewport */ Add sample image of textured model</p>
<hr />
<div>{{finish}}<br />
[[Category:Bi-platform modding tools]]<br />
<br />
For now have a look [[User:Iritscen/BlenderTutorial|HERE]].<br />
<br />
<br />
==Controls==<br />
Blender is so radical different from any other tool that you maybe want to customize the controls.<br />
<br />
In that case have a look at:<br />
: File > User Preferences... > Input > 3D View > 3D View (Global)<br />
<br />
<br />
==Viewport==<br />
[[Image:Blender_display_mode_Texture.png|200px|right|thumb]] [[Image:Blender_display_mode_Material.png|200px|right|thumb]]<br />
Q: How can I change the '''display mode to see textures'''?<br />
:A: At the bottom, click at the '''circle button''' to get a dropdown menu.<br />
:: Texture gives you just rough shading.<br />
:: '''Use Material''' instead to see textures plus rough shading.<br />
<br />
<br />
[[Image:Oni_WH_Env_Blender.png|200px|right|thumb]]<br />
<br />
==UI==<br />
Q: How do you '''close panels'''?<br />
:A: [https://www.youtube.com/watch?v=4q6mLdO1E4Q In the upper right corner drag the triangle symbol on another equal sized panel.]</div>EdThttps://wiki.oni2.net/w/index.php?title=File:Oni_WH_Env_Blender.png&diff=26731File:Oni WH Env Blender.png2017-09-11T21:56:19Z<p>EdT: Warehouse AKEV in Blender</p>
<hr />
<div>Warehouse AKEV in Blender</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:Paradox-01/Archive1&diff=22969User talk:Paradox-01/Archive12014-01-04T21:09:08Z<p>EdT: /* Dead link */ My fault</p>
<hr />
<div>==Translations issues==<br />
* An English translation for RS related stuff was requested. Dunno if I really want to translate ''brainstorming'' stuff or if I distillate some parts and wreck the other.<br />
* It has been suggested to put some stuff at Added value sections.<br />
* Keeping track of quotes:<br />
:http://carnage.bungie.org/oniforum/oni.forum.pl?read=19468 (http://wiki.oni2.net/User:Paradox-01/quotes_chef_1)<br />
:http://forums.bungie.org/oni/archive.pl?read=15104<br />
<br />
note about influences:<br />
:http://forums.bungie.org/oni/archive.pl?read=4618<br />
<br />
search page (somehow defunct):<br />
:http://forums.bungie.org/oni/archive.pl?<br />
<br />
two more pages (with undocumented sources, cannot find them again):<br />
:http://wiki.oni2.net/User:Paradox-01/quotes_clearfy<br />
:http://wiki.oni2.net/User:Paradox-01/quotes_old_questions<br />
<br />
<br />
==List of (now) unused sections==<br />
While translating I noticed two misplaced sections. "Where went all the details?" was actually part of "Griffin in a Syndicate helicopter?" but off-topic.<br />
* [[Talk:Restless_Souls/Reconstruction/Gapfilling#Where went all the details.F3]] (contains Hardy's talk)<br />
* [[Talk:Restless_Souls/Reconstruction/Gapfilling#Jamie]] (random thoughts)<br />
::Paradox, you do know about this page, right? -- [[Restless_Souls/Reconstruction/Summary_of_2032]]. It is orphaned, so I just wanted to make sure you didn't forget about it. --[[User:Iritscen|Iritscen]] 20:13, 28 February 2008 (CET)<br />
:::^_^ Nah, it's not orphaned but '''part''' of [[Restless_Souls/Reconstruction/Story_factors]] '''as''' <nowiki>"{{:Restless_Souls/Reconstruction/Summary_of_2032}}"</nowiki><br />
:::I had split material bigger than 32kb and put it into separate pages.<br />
:::But thanks for keeping an eye onto redlinks and such.<br />
:::--[[User:Paradox-01|Paradox-01]] 21:19, 28 February 2008 (CET)<br />
::::Ah, good. Just checking. I never took the time to try to understand the structure of your Restless Souls pages. It's like you have your own little site as part of the wiki :) --[[User:Iritscen|Iritscen]] 21:54, 28 February 2008 (CET)<br />
<br />
==RS pages structure chart==<br />
<br />
Restless_Souls<br />
|<br />
+--> various links<br><br><br />
Restless_Souls/Reconstruction<br />
| | |<br />
| | |<br />
| | +--> <nowiki>{{:Restless_Souls/Reconstruction/Gapfilling}}</nowiki><br />
| +----> <nowiki>{{:Restless_Souls/Reconstruction/Global_development}}</nowiki><br />
+------> <nowiki>{{:Restless_Souls/Reconstruction/Story_factors}}</nowiki><br />
|<br />
+--> '''<nowiki>{{:Restless_Souls/Reconstruction/Summary_of_2032}}</nowiki>'''<br />
<br />
<br />
==XML Project==<br />
Question: "How should I *not* move pages?" Answer: "By using transclusion." :-P Normally you should use the Move tool, but since the OBD talk pages have had some actual "talk" on them, we probably want to selectively copy and paste the XML content to the new XML: pages. We can discuss this more later, I just wanted to let you know before you made any more "moves" :-) --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 02:48, 3 November 2012 (CET)<br />
<br />
: "Answer: By using transclusion"<br />
: By using <nowiki>{{:}}</nowiki>, like I did in XML:AISA ? When I switched off the PC I realized that it wasn't such a good idea (although there was no talk on that page).<br />
: XML:AISA doesn't appear in the search because there's no real content on it. So I agree with you to copy-paste the content. -- [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:15, 3 November 2012 (CET)<br />
<br />
:Solved. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
===Redirects===<br />
Iritscen, on YIM you said "there will be a checkbox when you click Move". But I don't see it.<br />
<br />
In the process where only those two pages: [https://dl.dropbox.com/u/139715/temp/moving_a_page_1.png (1)], [https://dl.dropbox.com/u/139715/temp/moving_a_page_2.png (2)]<br />
<br />
Any ideas? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 13:50, 4 November 2012 (CET)<br />
<br />
''Solved'': missing user right. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
===Broken Links===<br />
Okay, I moved the pages that we agreed did not have notable history or extant discussion that needed to stay in the OBD namespace (sorry it took so long). Note that there are now red links on pages that referred to the moved pages. You could try going [[Special:WantedPages|here]] and searching for "talk". Also, if you search there for "XML"... I assume those are just types that you haven't gotten to document yet? Just curious. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:54, 6 November 2012 (CET)<br />
<br />
: "sorry it took so long" -- I don't mind. Thanks for your assistance. :)<br />
: Yes, there are two file types that still need documentation (and others for sake of completeness). Modding the combat behavior was never my favorite and SABD had not much attention so I used my time on different things. The others will be redirects, either because Oni don't use it (AITR) or because the XML for that instance simply exist as file type ([http://ssg.oni2.net/oni_fi_l.htm AGQR, now part of AKEV]).<br />
: There are one or two things I would like you to pick up: ONLV and maybe TRBS (see list for reason).<br />
<br />
: things that need care<br />
::XML:AITR replace with better link: redirect to TRGV (I was blindly following analogy to OBD template)<br />
::XML:AGQR replace with better link: redirect to ONLV (^)<br />
::XML:BINA/SABD todo: documentation<br />
::XML:BINA/OBJC/CMBT todo: documentation<br />
::XML:HPge todo: documentation (for sake of completeness)<br />
::''possibly one or two other types that aren't of much use'' --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
::Okay, I moved ONLV, but what did you want me to do with TRBS? It looks like you already cut-and-pasted it to XML:. But let me know what else I can do to help. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:08, 6 November 2012 (CET)<br />
<br />
lol You are right, I guess my cold makes me dizzy. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 09:33, 7 November 2012 (CET)<br />
<br />
Iritscen, when you see this please move another one: http://wiki.oni2.net/OBD_talk:TRGE --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 19:57, 7 November 2012 (CET)<br />
<br />
<br />
===Category===<br />
You might want to consider using a category-macro template like [[Template:OBD]] instead of manually entering the category name on each XML page. You can then simply drop a little "<nowiki>{{XML}}</nowiki>" at the bottom of each page, and later on the whole category can be "renamed" if we change our minds. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 14:36, 8 November 2012 (CET)<br />
<br />
: For the records: 'scen, that worked fine.<br />
<br />
<br />
===Overview===<br />
# Do we have a main XML: page like OBD: has [[OBD:Oni Binary Data]]? Would it be "XML_basic_tutorial"?<br />
# Is [http://ssg.oni2.net/oni_fi_l.htm SSG's overview] anywhere on the wiki? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:42, 7 November 2012 (CET)<br />
<br />
:# Not name-wise. I don't wanted to create a new XML:??? page because that would have been pretty much XML_basic_tutorial as you already guessed. Should it be moved to - lets say - XML:basics ?<br />
:# Afaik, ssg's overview isn't on this wiki yet. It would be nice to have a port of it. Maybe following style will be sufficient enough. (There are more overviews, just in case you didn't noticed: [http://ssg.oni2.net/oni_fi_c.htm character files], [http://ssg.oni2.net/oni_fi_m.htm message files], [http://ssg.oni2.net/oni_fi_0.htm level 0 files].)<br />
<br />
AAAA<br />
|<br />
+-- BBBB<br />
+-- CCCC<br />
| |<br />
| +-- DDDD<br />
|<br />
+-- EEEE<br />
<br />
<br />
: I changed my mind: colored table cells could show embedded instances of files, so ssg's style should be better.<br />
: Check this out: https://dl.dropbox.com/u/139715/temp/ssg_overviews_wikified.txt<br />
: Now we've to find a good place for it. Any ideas? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 20:08, 11 November 2012 (CET)<br />
::Ooh, I like! The question of where to put it is a good one, as I would love to find a way to merge that hierarchical information with the acronym expansions given on the [[OBD:File types|File types]] page, and, even better, to also have a small summary of each type ("AKEV (Akira Environment) is ___"). Short of using [[Template:H|hover text]], which I don't think is ideal, I don't have any ideas yet as to how to fit everything into one display. It just seems wasteful to use a whole page just for showing relationships, with no explanation of each type; also, the File types page is now somewhat wasteful of space too, since investigation of the file types is essentially done and we no longer need a page to track its progress with smileys. At least, that's my opinion; what do you think?<br />
::P.S.: One small tip -- I'm generally against the use of images external to the wiki. I would suggest uploading SSG's arrow pics to the wiki and then invoking them as shown below. The blank link field makes them non-clickable: <pre>[[File:Wiki.png|link=]]</pre> --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 21:02, 11 November 2012 (CET)<br />
<br />
<br />
SSG's arrow pics: before we upload them let's be sure we will use them. (If it's going to be a html from an oni2 user account then we wouldn't upload them.)<br />
<br />
Proposal of that new page (recycling OBD:file_types). (For Neo's sake, let's keep the ^_^ ? Or another symbol that makes them as done.)<br />
* With a narrow table the content (types + hierarchy + explanation) should fit on one page.<br />
* By default the hierarchy tables and explanations are hidden. Clicking a file type from the list at the left makes the corresponding table + explanation visible.<br />
<br />
Problem<br />
* If we can't pull this off we might consider writing a html page although a wiki page would be more appropriated.<br />
* I don't know if we can show a table and at same time hide the previous table on click event. At least <nowiki><div></nowiki> demonstrates that some hiding/showing can be done on the wiki.<br />
{{divhide|inspiration}}<br />
Can you reuse the template source code at some point?<br />
{{divhide|end}}<br />
<br />
PS: http://wiki.oni2.net/User:Iritscen/vector.js - That's some customization but how do you store/call actual java script functions? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 15:56, 12 November 2012 (CET)<br />
<br />
{|class="wikitable" width="100%"<br />
|width="100"|<br />
<br />
;file types<br />
*<a href="#AISA" id="table_1">AISA</a><br />
*<a href="#TXMP" id="table_2">TXMP</a><br />
*<a href="#ONCC" id="table_3">ONCC</a><br />
<br />
|width="420"|<br />
{|class="wikitable" width="400" style="text-align:center"<br />
|style="background-color:#DDDDDD;"| TxtC<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|-<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGPA<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGPG<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF;"| TSFF<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSFL<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSFT<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSGA<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| PSpc<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| TXMP<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGSA<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGSt<br />
|<br />
|}<br />
<br />
|<br />
;explanation of clicked file type<br />
* .......<br />
|}<br />
<br />
:Cool, I like the diagonal striping; I didn't even know that was possible. I also really like how you fit everything onto the page in three columns. I don't have the time this minute to do much work on this myself, but I can at least answer a couple of your questions.<br />
:'''"For Neo's sake, let's keep the ^_^ ?"''' -- If he still uses them, we should definitely keep them. I guess I was under the impression that Neo isn't really using those anymore. We should ask him.<br />
:'''"I don't know if we can show a table and at same time hide the previous table on click event [...] That's some customization but how do you store/call actual java script functions"''' -- I would direct your attention to [[MediaWiki:Common.js]] (also, note that all the JS pages are linked to on my user page). Towards the top of Common.js is code that imports additional scripts, such as [[MediaWiki:Common.js/edit.js]], based on the type or name of the page. E.g., anyone performing an edit will have edit.js loaded for them, which does things like adding buttons to the toolbar (at least, it will when I fix it!). Does that help? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:39, 12 November 2012 (CET)<br />
:Just a quick note, the repeating-linear-gradient property does not work for WebKit browsers. Chrome/Safari apparently need "-webkit-repeating-linear-gradient" instead. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 03:31, 13 November 2012 (CET)<br />
:Another quick note, we would probably want to mimic the JS that enables the divhide template, as you already suggested and in line with [http://www.mwusers.com/forums/showthread.php?18647-onclick-in-wikitext&s=4573f23d960e24c3c6523e4a072b4ba9&p=61594&viewfull=1#post61594 this forum post], which means that we probably want to create a new table class (e.g. "click-table") that responds to 'onclick' events by modifying the text in a column in the table (e.g. "click-table-descrip"). But I can't figure out where the file type description text would come from. We don't really want all the description texts lodged inside the Javascript, but rather somewhere we can edit them freely. One possibility is to figure out how to copy/transclude text from a subpage, similar to the way [[Quotes/Consoles]] works, where each console quote is on a separate, editable page. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 14:38, 13 November 2012 (CET)<br />
<br />
I tried get myself more familiar with the different codes and their mixing, but I would just ending to make hundreds of edits just to learn how to do this or that. So I can't be a great help here. :/ [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 22:09, 13 November 2012 (CET)<br />
:That's okay, I have played around with JS before. I'll spend some time on this soon. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:42, 14 November 2012 (CET)<br />
<br />
Okay, I wrote some quick and dirty code and put it in Common.js. Go to my test space's file type table and you should get descriptions when you hover over each type. This could easily be adjusted to require a click instead of a hover but I liked the idea of a no-click interface. I'm going to step aside now and give you the chance to work with this table type as you see fit. I had to simplify the markup for testing purposes, and you might have some better ideas as to how to arrange the table.<br />
<br />
As you'll see, the basic idea is that you attach the class "hovertable" to a wikitable, then you place multiple spans in one large cell of class "hovertable_descrip". Each span is "display:none" and contains the description for one type, which is given as that span's id. Then you declare other cells in the hovertable as class "hovercell" with ids that match the ones in the descrip cell. The JS I wrote attaches event handlers to all hovercells which display their corresponding span in the hovertable_descrip cell when the hovercell receives 'mouseover', and hide the span upon 'mouseout'. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:22, 16 November 2012 (CET)<br />
<br />
: I checked your test space. It looks awesome, I didn't expected to see so fast results on this. However, there are 2 things I would like you to think about.<br />
:: 1) SSG's [https://dl.dropbox.com/u/139715/temp/ssg_overviews_wikified.txt "Level files" table] (ONLV) is ''too big'' for an ''absolute location'' of the explanation: if the user hovers the CRSA table cell he would see nothing because the explanation is out of view.<br />
::: The solution to this problem might be to fix the explanation area to the screen. Here's an example made of [https://dl.dropbox.com/u/139715/temp/explanation_fixed_to_screen.htm CSS]. (basically ''style="position: fixed; top: 50%; left: 50%;"'')<br />
:: 2) We talked about merging those hierarchies and the general file type overview. In my last draft the types were vertical listed but I think it will look less odd if they are horizontal (because the tables differ in their number of rows).<br />
::: At the moment the chasing explanation makes a strange impression but that's due to the other content here. With nothing else then the content under the gray line should look ... not "super" ... but good enough. Or we make a step back and use H template?<br />
:: 2a) If we agree on the merging then the file types should be click-able: if user clicks TxtC type then of course the TxtC table should appear.<br />
::: I think you can reuse the mechanism here you just created. Not sure about IGPG: it appears in TxtC but also in others (DPge, WPge, Opge, ...)<br />
:: '''2b)''' Facing this problem we might choose an easier path than hiding all tables by default.<br />
::: If we put all table under each other we could create "AAAA-using types" sections at the end of all tables: If the user clicked IGPG then the browser jumps to that section and there the user reads IGPG being used by this, this and that type. From there he can jump again (by clicking <nowiki>[[#ABCD|ABCD]]</nowiki>) and reaches his final choice (TxtC/DPge/WPge/... table).<br />
<br />
<br />
-----<br />
<br />
<br />
<br />
<br />
<br />
<br />
{| width="100%" style="text-align:center; font-weight:bold;"<br />
| ABNA<br />
| AGQC<br />
| AGQG<br />
| AGQR<br />
| AISA<br />
| AKAA<br />
| AKBA<br />
| AKBP<br />
| AKEV<br />
| AKOT<br />
| AKVA<br />
| BINA<br />
| CBPI<br />
| CBPM<br />
| CONS<br />
| CRSA<br />
| DOOR<br />
| DPge<br />
| ENVP<br />
| FILM<br />
| HPge<br />
| IDXA<br />
| IGHH<br />
|-<br />
| IGPA<br />
| [[#IGPG-using types|IGPG]]<br />
| IGSA<br />
| IGSt<br />
| Impt<br />
| IPge<br />
| KeyI<br />
| M3GA<br />
| M3GM<br />
| Mtrl<br />
| OBAN<br />
| OBOA<br />
| OFGA<br />
| ONCC<br />
| ONCP<br />
| ONCV<br />
| ONGS<br />
| ONIA<br />
| ONLD<br />
| ONLV<br />
| ONOA<br />
| ONSK<br />
| ONVL<br />
|- <br />
| ONWC<br />
| OPge<br />
| OSBD<br />
| OTIT<br />
| OTLF<br />
| PLEA<br />
| PNTA<br />
| PSpc<br />
| PSpL<br />
| PSUI<br />
| QTNA<br />
| SNDD<br />
| SUBT<br />
| TRAC<br />
| TRAM<br />
| TRAS<br />
| TRBS<br />
| TRCM<br />
| TRGA<br />
| TRGE<br />
| TRIA<br />
| TRIG<br />
| TRMA<br />
|-<br />
| TRSC<br />
| TRTA<br />
| TSFF<br />
| TSFL<br />
| TSFT<br />
| TSGA<br />
| TURR<br />
| TXAN<br />
| TXCA<br />
| TXMA<br />
| TXMB<br />
| TXMP<br />
| [[#TxtC|TxtC]]<br />
| VCRA<br />
| WMCL<br />
| WMDD<br />
| WMM<br />
| WMMB<br />
| WPge<br />
|}<br />
<br />
Based on OBD:file_types. Maybe we should list BINA subtypes too (object collections like [[XML:BINA/OBJC/CHAR|CHAR]], CONS, DOOR, ...) ?<br />
<br />
<br />
====TxtC====<br />
{|width="100%"<br />
|width="200" valign="top"| <br />
<br />
{|class="wikitable hovertable" width="400" style="text-align:center; font-weight:bold;"<br />
|style="background-color:#DDDDDD;" class="hovercell" id="txtc"| [[TxtC]]<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|-<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igpa"| [[IGPA]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igpg"| [[IGPG]]<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF;" class="hovercell" id="tsff"| [[TSFF]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsfl"| [[TSFL]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsft"| [[TSFT]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsga"| [[TSGA]]<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|class="hovercell" id="pspc"| [[PSpc]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|class="hovercell" id="txmp"| [[TXMP]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igsa"| [[IGSA]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igst"| [[IGSt]]<br />
|}<br />
<br />
|valign="top"|<br />
<br />
{|style="position: fixed; top: 30%"<br />
|class="hovertable_descrip" valign="top"| <br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="txtc">'''TxtC''': This is console text.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igpa">'''IGPA''': In-Game User Interface Page Array.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igpg">'''IGPG''': In-Game User Interface Page.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsff">'''TSFF''': A font family.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsfl">'''TSFL''': A font language.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsft">'''TSFT''': Actual font bitmaps.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsga">'''TSGA''': A glyph array linking 256 possible symbols to their bitmaps (TSFTs).</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="pspc">'''PSpc''': Part Specification (coordinates for finding a UI symbol in a bitmap collection of UI elements.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="txmp">'''TXMP''': A texture map!</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igsa">'''IGSA''': In-Game user interface String Array.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igst">'''IGSt''': In-Game user interface STring.</span><br />
|}<br />
<br />
|}<br />
<br />
<br />
[ other tables ]<br />
<br />
<br />
<br />
<br />
<br />
====IGPG-using types====<br />
* [[#TxtC|TxtC]]<br />
* OPge<br />
* IPge<br />
* WPge<br />
<br />
<br />
----<br />
Ah, the fixed-position box is interesting, that could be the answer. I think we will need to have a chat before I can fully understand what we are trying to document, though, in terms of what/how hierarchies are to be shown. I'll look for you online this weekend. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 03:41, 17 November 2012 (CET)<br />
<br />
Just a note on where I left off -- I fixed the classes so that the cells are being styled correctly. However, I seem to have accidentally changed the stripe style; I didn't mean to create a stripe with a gradient in it; I just want to make the blue and background colors evenly spaced at 10px or 15px. Also, the "position:fixed" on the descrip cell was somehow shifting the location of the next cell (TxtC), so for now I have removed that property. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:56, 17 November 2012 (CET)<br />
<br />
:If you look closely there are 3 px value in the gradient code: for clean stripes let the last value be the sum of the others.<br />
: background-image: -webkit-repeating-linear-gradient(-45deg, transparent, transparent '''10px''', rgba(0, 0, 255, 0.2) '''10px''', rgba(0, 0, 255, 0.2) '''20px'''); --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:29, 18 November 2012 (CET)<br />
<br />
: The table in your [[User:Iritscen/TestSpace|test space]] will look okay if you enable the position fixed in Common.css again. That code piece rips the cell out of the table. I added some columns to fix it. --13:12, 18 November 2012 (CET)<br />
<br />
Sorry, 'dox, I didn't think it would take very long, but after I had written some of the JavaScript, I could see how complicated it would be. Then I got sidetracked by real life for a while. Normally I would just keep at it until it's done, but seeing as I am trying to get back to my main Oni project ASAP, I'm afraid I have to cut short my work on this. Maybe it's more complicated than it needs to be. If you want to "retreat" back to a simpler solution, then let me know how I can help with that. Otherwise I might have time to finish this at a later date. I just don't want to spend hours on it when it's keeping me from my other work. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:57, 17 December 2012 (CET)<br />
<br />
===New overview===<br />
Just wanted to say, I still feel this is an important thing to add to the wiki. But I made it too complex the first time around. Rather than a dynamically generated table, we should probably stick to something that is set up manually. Although my more complex code was never finished, we do still have the hovertable class available, as used above (and I can easily change it to display info on a click instead of a mouse-hover if that's better). Let me know if you have any new ideas on how to present the info, or if you want to stick with the format we had before.<br />
<br />
The fact is, looking at this with a fresh perspective, I'm not 100% convinced that the arrow-based table is the best use of space or the easiest thing to read, or that we need fancy JS either. What about the simple text-based approach I suggested [[OniGalore:Current_events#Organizing_the_modding_side_of_the_wiki|here]], combined with your anchor-based TOC serving as an alphabetical index at the beginning? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:03, 18 April 2013 (CEST)<br />
<br />
: About that thing at [[OniGalore:Current_events#Organizing_the_modding_side_of_the_wiki|Current_events]]. Sounds like you want a simple page with sections and links. So if you don't want to hierarchal information then you could take [[XML:File_types]] and extend it. In that case I wouldn't use '''<nowiki>===</nowiki>''' but '''<nowiki>{{Anchor|some_anchor_name}}</nowiki>'''. This prevents the page to be ripped in sections. By that the user can follow links and the page will still look nice. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 12:56, 18 April 2013 (CEST)<br />
<br />
::Basically, yes. I like that "File types" page, I just would like the descriptions to be a bit longer and to list what types they have under them, or what types can contain them, and maybe group them by type. I think I'll make a separate WIP table in my userspace so I don't mess up yours, because I'm not 100% clear on what I want it to look like. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 13:59, 18 April 2013 (CEST)<br />
::Okay, it can use some nicer formatting, but if you look at my [[User:Iritscen/TestSpace|TestSpace]], you'll see what I had in mind. It's similar to your XML File types page, just organized by category, and with "parent" and "child" anchor links to the related types on the same page. Probably it can also contain your colored documentation dots and the types can link to their XML: pages instead of OBD:, at least if this replaces your File types page. Any suggestions? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 22:07, 19 April 2013 (CEST)<br />
<br />
Caution, the header template on pages like [[XML:BINA/OBJC/CHAR]] link to "other BINA" and "other OBJC" ([[XML:File_types]]) in analogy to [[OBD:BINA/OBJC]] and [[OBD:BINA]].<br />
<br />
I like how you structure the descriptions, I'm just a bit unhappy with the index thing because of the mentioned template header.<br />
As a compromise perhaps make 3 type indices so that the template can still link to those.<br />
:Type index: BINA<br />
:* [...]<br />
:Type index: CJBO<br />
:* [...]<br />
:Type index: other files<br />
:* [...]<br />
<br />
:Add color dots and links and I totally agree with replacing current file types page with this second version. :) --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 22:43, 19 April 2013 (CEST)<br />
::Sorry, I don't understand the point you're making. I'm not 100% fluent in where all Oni's data is stored (particularly what is in .sep vs. .raw), but my idea was that this wasn't an important distinction to make for the beginner who just wants to know what these kinds of data do. After all, we no longer have to know which file to look in with a hex editor to mod something, we just ask OniSplit to export the data :-) But please let me know what you meant if there's a reason the reader has to think in terms of BINA vs. CBJO vs. everything else. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:17, 19 April 2013 (CEST)<br />
<br />
I just want the user to be aware of what types belong to object collections (for instance so he does chose the door collection and not the door class) and that searches can be easily be done by BINA*/BINAOBJC*. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 14:19, 20 April 2013 (CEST)<br />
<br />
==Your Red Links==<br />
Hello, I just looked over the wiki's red links and thought you might like to know that these belong to you:<br />
*<strike>Camp (2 links)<br />
*Silver Dawn (2 links)<br />
*Green Village (2 links)<br />
*Mind Seal (2 links)<br />
*Restless Souls/timeline 2032 (2 links)<br />
*„Regierung“ (1 link)</strike><br />
*Talk:Restless Souls/Reconstruction (1 link)<br />
*Talk:Restless Souls/Summary (1 link)<br />
*Talk:Restless Souls/Tree Of Theories (1 link)<br />
*<strike>Elfenbeintürmen (1 link)</strike><br />
*Talk:Restless Souls/Fragments (1 link)<br />
*Talk:Restless Souls/Ikimas (1 link)<br />
*<strike>Oni2:Shinobi (1 link)<br />
*Sub-dermal transponder (2 links)<br />
*2.3.1 WKR (1 link)<br />
*2.3.3 Syndikat (1 link)<br />
*D-Spray (1 link)<br />
*BLACKSTARS (2 links)<br />
*Mukade's reanimation (2 links)</strike><br />
Just an informational service ^_^ --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:13, 10 April 2013 (CEST)<br />
:Just a little related question, are you planning to move these to XML:?<br />
:*OBD talk:KeyI<br />
:*OBD talk:WMCL<br />
:*OBD talk:DOOR<br />
:I ask because they are the only pages left that use the old XMLModdingHints template and seem like the only OBD talk pages left with XML info on them. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:18, 12 April 2013 (CEST)<br />
<br />
Oh yea I totally forgot about them. But something was going on the the rights. Normal user can't do that unless they want to leave a redirect or something. '''[[User_talk:Paradox-01#Redirects|D:]]''' --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 19:43, 12 April 2013 (CEST)<br />
:Ah, I guess we never fixed that. I'll move them over. In the future, since you probably won't have many pages to move (will you?), you can just move them and leave the redirect. I'll see it in the logs after and just delete the redirect. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:46, 12 April 2013 (CEST)<br />
<br />
:Now that those pages are moved over to XML:, do you have any plans to use Template:XMLModdingHints anymore, or can I delete it? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 17:38, 17 April 2013 (CEST)<br />
<br />
:: Smash it. :D --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 19:56, 17 April 2013 (CEST)<br />
<br />
:::Heh, okay. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:28, 17 April 2013 (CEST)<br />
<br />
==Music issues==<br />
When you have time, can you please test this package: http://edt.oni2.net/temp/60000Soundtrackrenewal.zip I converted this file to oni file: https://soundcloud.com/mengermeester/oni-ae-fight-wip Hopefully, I made the windows version correctly.<br />
<br />
I replaced the original files with the updated version. However, it doesn't seems to playback correctly, the transition isn't smooth. The original files were about 11 seconds and less, the updated are 20 seconds and less.<br />
<br />
You can hear this music at Manplant save point 1<br />
<br />
Thanks [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
:You imported them correctly. The song plays at that SP. It's as you say the transition doesn't fit. But that's no wonder since it's still a one-piece song and not designed to play pieces in a random order, isn't it?<br />
:"Once we have a nice pool of sounds we will go over every trigger and see what fits where. Then we will cut the loops to be modular." I guess we have to wait for the final version? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:17, 16 April 2013 (CEST)<br />
<br />
::I didn't realize that Oni's music was designed to be played randomly. Learn something everyday. As a temporary workaround, I can modify the OSBD to include only the one song in its entirety, just to be able to hear it in-game. Thanks [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
== Modding file paths ==<br />
<br />
Just tried to update the XML pages for the new AE's hierarchy, hopefully I didn't mess things up. Just one question, do you want the level-specific file types to give the path as "GameDataFolder/levelX_Final.dat", or should they use AE paths like the other XML pages, i.e. "AE/AEInstaller/vanilla/level0_Final.dat"? Perhaps you want all paths to be consistently using the AE .dats. I thought I was making those paths "universal" by deleting "Edition/", but I didn't think about the fact that "GameDataFolder/levelX_Final.dat" only works for vanilla Oni, as in the AE it would be "AEInstaller/vanilla/levelX_Final.dat". So I'll fix those if you agree, since I'm the one that messed them up :-) --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 15:43, 18 April 2013 (CEST)<br />
<br />
: Consistency is good. I just hope we can tell newbes somewhere that vanilla are original files only and GameDataFolder contain vanilla + mods. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 15:55, 18 April 2013 (CEST)<br />
<br />
::Well, the vanilla/ folder is documented in AE/Framework, but it probably should be repeated in other places to make sure the modder understands that. I do agree that we should be consistent, so I'll fix those pages. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:07, 18 April 2013 (CEST)<br />
<br />
== Gears sound ==<br />
<br />
Hey, not that I want you to spend much time on this, but I'm not very familiar with how ambient sounds work, and I was wondering if you ever looked into [[AE:Requests#Missing_gears_sound|this issue]]. I can see the reference to SNDDgears in the level's CBJOSound file, but adding the sound EdT supplied to level 14 (I also tried level 0) doesn't seem to add any noise to the gears at the end of the level. I teleported to the coordinates the Sound file has set for "gears", 676.3 64.7 -1898.3, and it places you on top of the gears, so I don't know why the sound isn't there. Maybe just something to spend a minute on if you feel like it. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 15:42, 23 April 2013 (CEST)<br />
<br />
It turned out that SNDD is stereo while the grp file asks for a mono channel file. New [https://dl.dropboxusercontent.com/u/139715/temp/OSBDgears.grp.oni grp file].<br />
:Cool, thanks! Now if I can find a good royalty-free sound to use, I can fix this in AE core. At the least, it prevents us from getting bombarded with errors when we get near there in Dev Mode! --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 21:16, 23 April 2013 (CEST)<br />
<br />
Hmm, sorry to bother you about this again, but can you watch these two 5MB movies? http://iritscen.oni2.net/temp/GearsTestMac.mp4 and http://iritscen.oni2.net/temp/GearsTestWindows.mp4. The gears sound completely different! The original sound is [http://iritscen.oni2.net/temp/gears6.wav here] and the package is [http://iritscen.oni2.net/temp/06000MissingSounds.zip here] (note that it has a core number so it will show up in core packages in the AEI, not the main window). Incidentally, the movies are of me testing sound occlusion, but that's a whole different subject. I looked around the wiki but I don't see anything about sounds turning out completely different from platform to platform. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 14:05, 24 April 2013 (CEST)<br />
<br />
: The new mac file doesn't work for me.<br />
: Over here the old mac file sounds like your pc version. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 16:09, 24 April 2013 (CEST)<br />
<br />
::Mac sound is fine here. Perhaps it will be easier if Paradox can convert the original gear sound to Win version and test. [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
::I wasn't really asking you to test the Mac side, just to listen to the sounds in the movies :-) What do you mean it doesn't work for you? The WAV version was saved directly from the AIFF file (chose "uncompressed 44KHz" for the WAV, but I'm not sure it's PCM), so it's the same sound, but in-game it sounds really muddy, and lower-pitched. I thought this might have been covered already on the wiki, I just don't know where to look. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:43, 24 April 2013 (CEST)<br />
<br />
:::As you saw after that sndd page edit: 44.1 mono needs also number of channel: 2. Next time simply include the grp file in the package. :) --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:13, 24 April 2013 (CEST)<br />
<br />
::::I had tried using my own .grp and I think it disabled the sound on Mac or Windows, so I went back to using the existing one. I guess now I understand that it should use "2" for NumberOfChannels in Windows and "1" on Mac, so I will try that later today. Thanks! --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 18:53, 24 April 2013 (CEST)<br />
<br />
While testing sound files I had problems with level0 plugins, I'm not sure if new grp/amb are accepted from those. In the end I used import via AE package. Maybe it's the same problem for you? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 20:23, 24 April 2013 (CEST)<br />
<br />
:Well, I only use packages when modding :) But perhaps it didn't like just getting the .grp without the .amb or vice-versa. At one point I was trying to adjust the volume, and another time I wanted to widen the sound sphere, but I think both changes failed to work for me. It was one of those awful modding sessions where I stayed up late and got nothing done; and here I thought this would be a simple matter to put to rest! --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 21:07, 24 April 2013 (CEST)<br />
<br />
::In case you changed amb's sphere, I believe that it gets overwritten by BINACJBOSound.xml's own. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:25, 24 April 2013 (CEST)<br />
<br />
:::Oh brother. Okay, good to know. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 21:35, 24 April 2013 (CEST)<br />
<br />
== Old prone mode ==<br />
<br />
Do you think [[AE:Sniper_scope_and_prone_mode]] needs to be kept? I glanced at it, and it seems to be a more primitive version of your Prone Mode 1.0.3. Since I am cleaning up stuff that was formerly a part (or planned part) of the AE, I'd like to be able to get rid of that page. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 22:01, 23 April 2013 (CEST)<br />
<br />
:I actually like how geyser explained the difficulties with the scope in words of wisdom (including ninja left handedness). Maybe you could move those details elsewhere? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:19, 24 April 2013 (CEST)<br />
<br />
::Okay, I've actually changed my mind since I posted that and no longer desire to delete most of those old AE pages. I'll just make a note explaining how it is obsolete. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 18:57, 24 April 2013 (CEST)<br />
<br />
== Dead link ==<br />
Hi Paradox-01 the following link for demo files is down, can you upload it again? Maybe to depot so it don't get deleted?<br />
<br />
page: http://wiki.oni2.net/XML:ONLV#Level_import_with_OniSplit_v0.9.82.0.2B<br />
link: http://dl.dropbox.com/u/1869/lab.zip<br />
"Level import with OniSplit v0.9.82.0+<br />
<br />
Demo files<br />
Demo files can be downloaded here."<br />
<br />
[[User:Script 10k|Script 10k]] ([[User talk:Script 10k|talk]]) 18:56, 4 January 2014 (CET)<br />
<br />
<br />
: Were not mine, but I will see if can throw something new together. :)<br />
: --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 20:16, 4 January 2014 (CET)<br />
<br />
:: Sorry my fault, I don't know how I deleted that file. It has been replaced with a newer version, more stuff inside :) [[User:EdT|EdT]] ([[User talk:EdT|talk]])</div>EdThttps://wiki.oni2.net/w/index.php?title=XML:BINA/OBJC/CHAR&diff=22885XML:BINA/OBJC/CHAR2013-10-09T01:51:14Z<p>EdT: Fixed spelling of Switzerland</p>
<hr />
<div>{{XML_OBJC_Header | type=CHAR | prev=WEAP | next=CMBT | name=Character }}<br />
<br />
'''general information'''<br />
* The xml code on this page is based on onisplit '''v0.9.61.0'''<br />
* '''BINACJBOCharacter.oni''' is level specific. (It can be found in AE/AEInstaller/vanilla/level'''X'''_Final.dat)<br />
* An alternative is [[XML:AISA|AISA]].<br />
* All original characters can be seen [http://ssg.oni2.net/subfold/charas/charas.htm HERE.] (The lists include used ONCC, character's BSL name, health, team and BSL function.)<br />
<br />
<br />
'''XML structure'''<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni><br />
<Objects><br />
'''''[...]'''''<br />
</Objects><br />
</Oni><br />
<br />
'''''[...]''''' means at least one character. Paste all character data into there (this includes '''<font color="#0A0"><CHAR Id="..."></font>''' and '''<font color="#0A0"></CHAR></font>''' tag).<br />
<br />
'''example'''<br />
<br />
'''<font color="#0A0"><CHAR Id="3860"></font>'''<br />
<Header><br />
<Flags></Flags><br />
<Position>-543.22 159 -630.0954</Position><br />
<Rotation>0 180 0</Rotation><br />
</Header><br />
<OSD><br />
<Flags>NotInitiallyPresent</Flags><br />
<Class>konoko_generic</Class><br />
<Name>konoko</Name><br />
<Weapon>w1_tap</Weapon><br />
<Scripts><br />
<Spawn></Spawn><br />
<Die>you_lose</Die><br />
<Combat></Combat><br />
<Alarm></Alarm><br />
<Hurt></Hurt><br />
<Defeated></Defeated><br />
<OutOfAmmo></OutOfAmmo><br />
<NoPath></NoPath><br />
</Scripts><br />
<AdditionalHealth>0</AdditionalHealth><br />
<Job><br />
<Type>None</Type><br />
<PatrolPathId>0</PatrolPathId><br />
</Job><br />
<Behaviors><br />
<CombatId>0</CombatId><br />
<MeleeId>0</MeleeId><br />
<NeutralId>0</NeutralId><br />
</Behaviors><br />
<Inventory><br />
<Ammo><br />
<Use>3</Use><br />
<Drop>0</Drop><br />
</Ammo><br />
<EnergyCell><br />
<Use>0</Use><br />
<Drop>0</Drop><br />
</EnergyCell><br />
<Hypo><br />
<Use>0</Use><br />
<Drop>0</Drop><br />
</Hypo><br />
<Shield><br />
<Use>0</Use><br />
<Drop>0</Drop><br />
</Shield><br />
<Invisibility><br />
<Use>0</Use><br />
<Drop>0</Drop><br />
</Invisibility><br />
</Inventory><br />
<Team>Konoko</Team><br />
<AmmoPercentage>100</AmmoPercentage><br />
<Alert><br />
<Initial>Lull</Initial><br />
<Minimal>Lull</Minimal><br />
<JobStart>Low</JobStart><br />
<Investigate>Medium</Investigate><br />
</Alert><br />
<AlarmGroups>0</AlarmGroups><br />
<Pursuit><br />
<StrongUnseen>Look</StrongUnseen><br />
<WeakUnseen>Forget</WeakUnseen><br />
<StrongSeen>Look</StrongSeen><br />
<WeakSeen>Look</WeakSeen><br />
<Lost>ReturnToJob</Lost><br />
</Pursuit><br />
</OSD><br />
'''<font color="#0A0"></CHAR></font>'''<br />
<br />
<br />
{| class="wikitable" width="100%"<br />
!width=200px| XML tag<br />
!width=200px| content type<br />
! description<br />
|-<br />
|valign=top| <?xml version="1.0" encoding="utf-8"?><br />
|valign=top| float, flag<br />
| There's no reason to change this.<br />
|-<br />
|valign=top| <Oni><br />
|valign=top| -<br />
|<br />
|-<br />
|valign=top| <Objects><br />
|valign=top| -<br />
|<br />
|-<br />
|valign=top| <CHAR Id="3860"><br />
|valign=top| integer<br />
| Id doesn't matter. -- For [[XML:ONLV|level import]] use <CHAR>.<br />
|-<br />
| <Header><br />
|valign=top| -<br />
|<br />
|-<br />
|valign=top| <Flags><br />
|valign=top| -<br />
| unknown; usually empty<br />
|-<br />
|valign=top| <Position><br />
|valign=top| float x3<br />
| character is spawned at this xyz-position<br />
|-<br />
|valign=top| <Rotation><br />
|valign=top| float x3<br />
| character is spawned with this xyz-rotation, only y is useful<br />
|-<br />
|valign=top| <OSD><br />
|valign=top| -<br />
|<br />
|-<br />
|valign=top| <Flags><br />
|valign=top| flag<br />
| determines some special properties<br />
: IsPlayer (1) (if you have two of them then delete one and spawn the other one at same time, if not made simultaneously camera glitch can appear)<br />
: RandomCostume (2) (flag belongs to [[XML:ONCV|ONCV]])<br />
: NotInitiallyPresent (4)<br />
: NonCombatant (8)<br />
: CanSpawnMultiple (16) (needs WasSpawned)<br />
: WasSpawned (32) (...)<br />
: Unkillable (64) (character won't loss more life points if it reaches 1, same as BSL command "chr_unkillable")<br />
: InfiniteAmmo (128) (Raiden: "You got enough ?" Snake points to his head. "Infinite ammo...")<br />
: Omniscient (256) (useless?; tested ideas: doesn't unlock moves for player)<br />
: HasLSI (512) (this character drops an level specific item like truck keys in [[CHAPTER_14_._DAWN_OF_THE_CHRYSALIS|level 19]])<br />
: Boss (1024) (used for boss mode fights. makes the AI ignore this character unless there is nobody else around)<br />
: UpgradeDifficulty (2048) (spawns a stronger enemy if you play on medium or hard)<br />
: NoAutoDrop (4096) (doesn't drop "used" shield, "used" invisibility and LSI when killed)<br />
<br />
'''After onisplit v0.9.54.0, merged integer flags can appear.'''<br />
<br />
Let's say you encounter a 6180, then it's actually 4096 + 2048 + 32 + 4.<br />
|-<br />
|valign=top| <Class><br />
|valign=top| char[64]<br />
| ONCC file name without file pre- and suffix. Character can change appearance with "chr_set_class".<br />
|-<br />
|valign=top| <Name><br />
|valign=top| char[32]<br />
| used by BSL commands<br />
|-<br />
|valign=top| <Weapon><br />
|valign=top| char[64]<br />
| ONWC file name without file pre- and suffix. The character is spawned with that weapon. <br />
<br />
Original weapon classes:<br />
: w1_tap (TCTF pistol)<br />
: w2_sap (Syndicate uzi)<br />
: w3_phr (plasma rifle)<br />
: w4_psm (phase stream projector)<br />
: w5_sbg (super ball gun)<br />
: w6_vdg (shocker)<br />
: w7_scc (scram cannon (mini-rockets))<br />
: w8_mbo (mercury bow)<br />
: w9_scr (screamer gun)<br />
: w10_sni (Mukade's firework)<br />
: w11_ba1 (Barabas' gun)<br />
: w12_ba2 (-)<br />
|-<br />
|valign=top| <Scripts><br />
|valign=top| string<br />
| BSL function<br />
: <Spawn> (called when character is spawned)<br />
: <Die> (called when character dies (health reaches 0); can work multiple times)<br />
: <Combat> (called when character notices an enemy; works only once)<br />
: <Alarm> (called when character is alarmed)<br />
: <Hurt> (called when character is hurt for the first time; works only once)<br />
: <Defeated> (called when character is "defeated" (health reaches 1); works only once)<br />
: <OutOfAmmo> (called when character runs out of ammo (reloads a weapon with the last clip/cell); works only once, and the character must have the ammo at spawn-time)<br />
: <font style="color:#777"><NoPath> (should be called when a character has trouble pathfinding, but isn't</font>)<br />
|-<br />
|valign=top| <AdditionalHealth><br />
|valign=top| integer<br />
| ''main'' health is stored in ONCC, "additional health" will be added to that ''main'' health; also negative value possible here (which would then reduce main health)<br />
|-<br />
|valign=top| <Job><br />
|valign=top| -<br />
|<br />
|-<br />
|valign=top| <Type><br />
|valign=top| flag<br />
|<br />
: None<br />
: Idle<br />
: <font color="#777">Guard (never used in Oni)</font><br />
: Patrol<br />
: <font color="#777">Teambattle (never used in Oni)</font><br />
: Combat (not tested)<br />
: Melee (not tested)<br />
: Alarm (not tested)<br />
: Neutral (not tested)<br />
: Panic (not tested)<br />
|-<br />
|valign=top| [[XML:BINA/OBJC/PATR|<PatrolPathId>]]<br />
|valign=top| integer<br />
|<br />
|-<br />
|valign=top| <Behaviors><br />
|valign=top| -<br />
| specified by IDs linking to melee, combat and neutral profile collection file<br />
|-<br />
|valign=top| [[OBD_talk:BINA/OBJC/CMBT|<CombatId>]]<br />
|valign=top| flag<br />
|<br />
: 0 (Stand_and_Fire)<br />
: 1 (Murder)<br />
: 2 (Shoot_And_Fight)<br />
: 3 (Take_my_Big_Black_Stuff)<br />
: 4 (Assault)<br />
: 5 (Civilian)<br />
: 6 (Pursuit)<br />
: 7 (Group_battle)<br />
: 8 (Watchman)<br />
: 9 (Barabbas_TCTF)<br />
: 10 (COMGUY)<br />
: 11 (SuperNinja)<br />
: 12 (Griffin)<br />
: 13 (Mutant_Muro)<br />
: 14 (Alarm Guard)<br />
: 15 (Non-Combatant)<br />
: 16 (Griffin_Final)<br />
: 207 (Sniper)<br />
: 208 (Sniper For Joe)<br />
: 17 (Average_striker; new profile for AE)<br />
|-<br />
|valign=top| <MeleeId><br />
|valign=top| flag<br />
| [[OBD:BINA/OBJC/MELE#All_profiles_sorted_by_ID|here are all melee IDs sorted by ID]]<br />
|-<br />
|valign=top| <NeutralId><br />
|valign=top| flag<br />
|[[OBD:BINA/OBJC/NEUT|...]] (no overview so far)<br />
|-<br />
|valign=top| <Inventory><br />
|valign=top| -<br />
|<br />
|-<br />
|valign=top| <Ammo><br />
|valign=top| integer<br />
|<br />
: <Use> (Player becomes spawned with ammo clips, here you set the amount.)<br />
: <Drop> (AI drop these items when defeated.)<br />
|-<br />
|valign=top| <EnergyCell><br />
|valign=top| integer<br />
|<br />
: <Use><br />
: <Drop><br />
|-<br />
|valign=top| <Hypo><br />
|valign=top| integer<br />
| <br />
: <Use><br />
: <Drop> (AI cannot use hypos.)<br />
|-<br />
|valign=top| <Shield><br />
|valign=top| integer<br />
|<br />
: <Use><br />
: <Drop><br />
|-<br />
|valign=top| <Invisibility><br />
|valign=top| integer<br />
|<br />
: <Use><br />
: <Drop><br />
|-<br />
|valign=top| <Team><br />
|valign=top| flag<br />
|<br />
: Konoko<br />
: TCTF<br />
: Syndicate<br />
: Neutral<br />
: SecurityGuard<br />
: RogueKonoko<br />
: Switzerland (is melee-immune)<br />
: SyndicateAccessory<br />
|-<br />
|valign=top| <AmmoPercentage><br />
|valign=top| integer<br />
| ammo in weapon, percent value: 0 - 100, ''overload'' not tested<br />
|-<br />
|valign=top| <Alert><br />
|valign=top| -<br />
| [[AI|HERE]] you get some helpful information on how to use "Alert" and "Pursuit".<br />
: Lull<br />
: Low<br />
: Medium<br />
: High<br />
: Combat<br />
|-<br />
|valign=top| <Initial><br />
|valign=top| flag<br />
| initial alert level, see <Alert> for all flags<br />
|-<br />
|valign=top| <Minimal><br />
|valign=top| flag<br />
| minimal alert level, see <Alert> for all flags<br />
|-<br />
|valign=top| <JobStarting><br />
|valign=top| flag<br />
| alert level when starting a job, see <Alert> for all flags<br />
|-<br />
|valign=top| <Investigating><br />
|valign=top| flag<br />
| alert level when investigating, see <Alert> for all flags<br />
|-<br />
|valign=top| <AlarmGroups><br />
|valign=top| integer<br />
|It's a bitset32 converted to int32. If Ns bit = TRUE then a bot gets highest alert level by a console command ai2_tripalarm(N)<br />
: <AlarmGroups>VAR</AlarmGroups><br />
:: VAR = 2^N1 + 2^N2 + 2^N3 etc.<br />
|-<br />
|valign=top| <Pursuit><br />
|valign=top| -<br />
|<br />
: None<br />
: Forget<br />
: GoTo<br />
: Wait<br />
: Look<br />
: Move<br />
: Hunt<br />
: Glanc<br />
|-<br />
|valign=top| <nowiki><StrongUnseen></nowiki><br />
|valign=top| flag<br />
| usually ''Look'', see <Pursuit> for all flags<br />
|-<br />
|valign=top| <WeakUnseen><br />
|valign=top| flag<br />
| usually ''Forget'', see <Pursuit> for all flags<br />
|-<br />
|valign=top| <StrongSeen><br />
|valign=top| flag<br />
| usually ''Look'', see <Pursuit> for all flags<br />
|-<br />
|valign=top| <WeakSeen><br />
|valign=top| flag<br />
| usually ''Look'', see <Pursuit> for all flags<br />
|-<br />
|valign=top| <Lost><br />
|valign=top| flag<br />
| usually ''ReturnToJob''<br />
: ReturnToJob<br />
: KeepLooking<br />
: FindAlarm<br />
|}<br />
<br />
{{XML}}</div>EdThttps://wiki.oni2.net/w/index.php?title=XML_talk:ONLV&diff=22825XML talk:ONLV2013-08-24T02:01:14Z<p>EdT: /* Pathfinding with GridIgnore flagged objects */ Demo video</p>
<hr />
<div>===Pathfinding with GridIgnore flagged objects===<br />
Regarding Pathfinding on uneven ground, my testing shows that it will work as long as the top of the ground is 20 world units or less above the BNV, any higher and the grid is no longer active and the AI will not move. [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 18:08, 21 August 2013 (CEST)<br />
: Ok thanks, I will check this tomorrow so we are sure it's the same on pc/mac. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 20:33, 21 August 2013 (CEST)<br />
:: Just curious, how did you get the number 17,9? I placed the BNV at 0 and until 19 world units, the pathfinding grids were visible using ai2_showgrids=1, but at a height of 20, the grids disappeared and the AI was no longer active. [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 01:00, 23 August 2013 (CEST)<br />
::: Like seen in the first vid I kept the BNV at all times at height 0. Only the top of the GridIgnore pyramid-thingy changes in height. I tested its top with 19,1; 19; 18,9; 18. See time code 03:17 - 03:22. AI still loses PF at height 18, so I decided to do the next height to be 16. PF works there again. The video ends there but I made more test until I reached 17,9 where AI seems to not randomly lose PF. -- At all times I didn't observed the grids, the AIs behavior was more important to me. [https://dl.dropboxusercontent.com/u/139715/OniGalore/BNV_test.zip Test files.]<br />
::: After [http://youtu.be/vfKPzP5hiCo more tests] today, not only jumps can break PF at 17,9 - also rolls, cartwheels and running kicks do. There are probably more anims. Do those issues somehow have to do with the foot/pelvis height? I don't know what's going on anymore. ^_^' --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 10:13, 23 August 2013 (CEST)<br />
<br />
::: I had another look on the original pathfinding and noticed that ghosts aren't equally high... My test level didn't used ghosts at all, just one BNV, so OniSplit probably added some default values. (Maybe this also explains our different test results.) -- After splitting the BNV and [https://dl.dropboxusercontent.com/u/139715/OniGalore/BNV_test_2.zip adding high ghosts] the Strike was able to run on a plain that was 42 above the BNV. More testing could be done to determine the max height (if there's any). --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 15:43, 23 August 2013 (CEST)<br />
<br />
:::: The tall ghosts work! Here is video from my old Outside level with updated bnvs and ghosts: http://www.youtube.com/watch?v=Yj3ptZnZtx0 [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
===Objects that are too low to pass them by sliding/crawling/sneaking===<br />
atm sliding under low objects don't seem to work <br />
:[[User:EdT|EdT]] ([[User talk:EdT|talk]]) The reason for this are the collision spheres, even though you slide, the collision spheres remain vertical.<br />
<br />
<br />
Okay, thanks for the warning.<br />
<br />
I remembered some [http://geyser.oni2.net/pics/screenshots/salto.jpg old] [http://geyser.oni2.net/pics/screenshots/hoops2.jpg screenies] and assumed it would be possible. Don't know where those were posted. Probably those object don't have collision at all. :(<br />
:[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 23:19, 27 February 2013 (CET)<br />
<br />
<br />
Those hoops are ONWC weapons. Screens were created by Geyser shortly after the "chair video" discovery, that weapons can be kicked around by A.I. characters (and they even emit sound as they are dragged around) and thus it ''could be'' possible to simulate movable obstacles as unpickable weapons.<br />
The idea sort of failed because:<br />
:* weapons fade over time (can be worked around by setting BSL variable ''wp_disable_fade=1'')<br />
:* there is a limit of 128 weapons and also no way how to work separately with a single weapon via BSL (no way to reposition it, no way to delete just the single weapon), so in case ''wp_disable_fade=1'' the amount of BSL control over this feature is practically zero.<br />
:* '''and the most prominent''', for some reason player character is excluded from the weapon-character collision. BSL command wp_kickable unfortunately also works only for A.I. characters.<br />
<br />
Still, with the daodan.dll now being used to patch executable, this idea could come to life again again, if certain tweaks are done (player included in weapon-character collision, addition of BSL commands to work with weapons).<br />
:--[[User:Loser|Loser]] ([[User talk:Loser|talk]]) 06:46, 28 February 2013 (CET)</div>EdThttps://wiki.oni2.net/w/index.php?title=XML_talk:ONLV&diff=22821XML talk:ONLV2013-08-22T23:00:31Z<p>EdT: Question on height</p>
<hr />
<div>Regarding Pathfinding on uneven ground, my testing shows that it will work as long as the top of the ground is 20 world units or less above the BNV, any higher and the grid is no longer active and the AI will not move. [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 18:08, 21 August 2013 (CEST)<br />
: Ok thanks, I will check this tomorrow so we are sure it's the same on pc/mac. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 20:33, 21 August 2013 (CEST)<br />
:: Just curious, how did you get the number 17,9? I placed the BNV at 0 and until 19 world units, the pathfinding grids were visible using ai2_showgrids=1, but at a height of 20, the grids disappeared and the AI was no longer active. [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 01:00, 23 August 2013 (CEST)<br />
<br />
<br />
atm sliding under low objects don't seem to work <br />
:[[User:EdT|EdT]] ([[User talk:EdT|talk]]) The reason for this are the collision spheres, even though you slide, the collision spheres remain vertical.<br />
<br />
<br />
Okay, thanks for the warning.<br />
<br />
I remembered some [http://geyser.oni2.net/pics/screenshots/salto.jpg old] [http://geyser.oni2.net/pics/screenshots/hoops2.jpg screenies] and assumed it would be possible. Don't know where those were posted. Probably those object don't have collision at all. :(<br />
:[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 23:19, 27 February 2013 (CET)<br />
<br />
<br />
Those hoops are ONWC weapons. Screens were created by Geyser shortly after the "chair video" discovery, that weapons can be kicked around by A.I. characters (and they even emit sound as they are dragged around) and thus it ''could be'' possible to simulate movable obstacles as unpickable weapons.<br />
The idea sort of failed because:<br />
:* weapons fade over time (can be worked around by setting BSL variable ''wp_disable_fade=1'')<br />
:* there is a limit of 128 weapons and also no way how to work separately with a single weapon via BSL (no way to reposition it, no way to delete just the single weapon), so in case ''wp_disable_fade=1'' the amount of BSL control over this feature is practically zero.<br />
:* '''and the most prominent''', for some reason player character is excluded from the weapon-character collision. BSL command wp_kickable unfortunately also works only for A.I. characters.<br />
<br />
Still, with the daodan.dll now being used to patch executable, this idea could come to life again again, if certain tweaks are done (player included in weapon-character collision, addition of BSL commands to work with weapons).<br />
:--[[User:Loser|Loser]] ([[User talk:Loser|talk]]) 06:46, 28 February 2013 (CET)</div>EdThttps://wiki.oni2.net/w/index.php?title=XML_talk:ONLV&diff=22817XML talk:ONLV2013-08-21T16:08:14Z<p>EdT: Height limit to pathfinding on uneven ground</p>
<hr />
<div>Regarding Pathfinding on uneven ground, my testing shows that it will work as long as the top of the ground is 20 world units or less above the BNV, any higher and the grid is no longer active and the AI will not move. [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 18:08, 21 August 2013 (CEST)<br />
<br />
<br />
atm sliding under low objects don't seem to work <br />
:[[User:EdT|EdT]] ([[User talk:EdT|talk]]) The reason for this are the collision spheres, even though you slide, the collision spheres remain vertical.<br />
<br />
<br />
Okay, thanks for the warning.<br />
<br />
I remembered some [http://geyser.oni2.net/pics/screenshots/salto.jpg old] [http://geyser.oni2.net/pics/screenshots/hoops2.jpg screenies] and assumed it would be possible. Don't know where those were posted. Probably those object don't have collision at all. :(<br />
:[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 23:19, 27 February 2013 (CET)<br />
<br />
<br />
Those hoops are ONWC weapons. Screens were created by Geyser shortly after the "chair video" discovery, that weapons can be kicked around by A.I. characters (and they even emit sound as they are dragged around) and thus it ''could be'' possible to simulate movable obstacles as unpickable weapons.<br />
The idea sort of failed because:<br />
:* weapons fade over time (can be worked around by setting BSL variable ''wp_disable_fade=1'')<br />
:* there is a limit of 128 weapons and also no way how to work separately with a single weapon via BSL (no way to reposition it, no way to delete just the single weapon), so in case ''wp_disable_fade=1'' the amount of BSL control over this feature is practically zero.<br />
:* '''and the most prominent''', for some reason player character is excluded from the weapon-character collision. BSL command wp_kickable unfortunately also works only for A.I. characters.<br />
<br />
Still, with the daodan.dll now being used to patch executable, this idea could come to life again again, if certain tweaks are done (player included in weapon-character collision, addition of BSL commands to work with weapons).<br />
:--[[User:Loser|Loser]] ([[User talk:Loser|talk]]) 06:46, 28 February 2013 (CET)</div>EdThttps://wiki.oni2.net/w/index.php?title=BSL:Variables&diff=22815BSL:Variables2013-08-21T01:15:54Z<p>EdT: /* Built-in variables */ env_show_ghostgqs works the same on Macs.</p>
<hr />
<div>'''Variables''' in BSL are very similar to variables in other programming languages. Here's a brief explanation of what a variable is:<br />
<br />
When writing logical programs, one often needs the program to remember some information (a number, a piece of text, the ON/OFF state of a switch, etc) so that the information can be used at a later time.<br />
<br />
The usual thing to do in this situation is to store the needed data in a '''variable''': an elementary data container.<br />
<br />
<br />
==General notions==<br />
===Type and value===<br />
A variable (data container) has three important attributes: the ''name'', the ''type'' and the ''value''.<br />
<br />
The ''value'' or the variable is just the contents it currently stores. It can be read and written.<br />
<br />
Also, a given variable can store only a specific ''type'' of data (floating-point number or integer or text string or boolean), and that is what we call the variable's type.<br />
<br />
Finally, the ''name'' of a variable is a unique text string that is used to identify the data container within the script. Like [[BSL:Functions|function]] names, variable names are case-sensitive (NOTE: all variables and functions are lower-case). Valid characters are: ''please fill me in''<br />
<br />
An easy way to get the ''type'' and ''value'' of an existing BSL variable is to enter its ''name'' at the console in [[Developer Mode]]: you typically get console output like "bool: 1" or "int32: 42" or "float: 3.14" or "string: hello"<br />
<br />
<br />
----<br />
===Declaration and assignment===<br />
If you want to use a new variable (data container), you must set it up (''declare'' it) first, with the '''var''' keyword. A declaration statement can look a bit like this:<br />
var int my_superduper_integer;<br />
var bool my_totally_awesome_boolean;<br />
var string my_incredible_text_string;<br />
var float my_cool_floating_point_number;<br />
The first word is the keyword "var", next comes the type (keyword), then the name of the variable. The final ";" is required. The name can be any valid name (i.e., not a keyword and not containing invalid characters)<br />
<br />
A declaration is usually seen at "global scope" (i.e., outside all functions). It is recommended to group declarations at the beginning of a BSL file (for readability), but it's not necessary. It is also not necessary (but strongly recommended) to declare a variable ''before'' the context where it is used for the first time.<br />
<br />
On some occasions you may want to declare a ''local'' variable (i.e., to embed a declaration statement into a [[BSL:Functions|function]]). This feature will be detailed elsewhere.<br />
<br />
<br />
----<br />
===Assignment===<br />
You can assign a new value to an existing variable with the assignment operator "=". The name of the variable you want to modify is on the left-hand-side (LHS) of the "=", and on the right-hand-side (RHS) you can have any valid [[BSL:Expressions|expression]] that evaluates/converts into the variable's type.<br />
<br />
An assignment can be combined with a declaration (see above). That means the variable will have a definite value right after it is created. If you don't specify/define such a starting value, you should not, generally speaking, assume anything about the value.<br />
<br />
However, apparently there ''are'' "default" values assigned to every variable even if it hasn't been defined yet. Those values are 0 (i.e., false) for bool, 0 for int and float, and "" (empty string) for string.<br />
<br />
<br />
----<br />
----<br />
==Built-in variables==<br />
All the built-in BSL variables are listed here, in alphabetical order.<br />
<br />
;Color<br />
:White: available on all versions<br />
:Blue: command only exists in Mac Intel build<br />
:Green: command only exists in Windows build<br />
;Default value<br />
:'''# !!!''': reset by engine at level load (not checked yet for '''chr_buffer_size''' and beyond, unless specified)<br />
:'''!?''': set by engine at game/level load, depends on [[persist.dat]]<br />
;Works<br />
:"OK": both platforms can use this command<br />
:"OK-M": the command only works on Intel Macs<br />
:"OK?": confirmation/refinement required<br />
:"??": command may not work<br />
:"NO": command is proven not to work<br />
<br />
<br />
{|border=1 cellspacing=0 cellpadding=2<br />
!Type!!Name!!Default value!!Comment!!Works<br />
|-<br />
|bool||[[ai2_barabbas_run]]||1<br />
|"lets Barabbas run while carrying his gun"||OK<br />
|-<br />
|bool||[[ai2_blind]]||'''0 !!!'''<br />
|"turns off the AI's visual sensing system"||OK<br />
|-<br />
|bool||[[ai2_boss_battle]]||'''0 !!!'''<br />
|"enables AI boss-battle target selection"<br>used in '''compound''': apparently makes Muro's friends focus on yours rather than on you. Only seems to have effect on ''Boss'' flagged characters at BINACJBOCharacter file. It seems that makes other characters try to ignore the ''Boss'' flagged character and make the ''Boss'' flagged character focus on the player rather the other characters.||OK<br />
|-<br />
|bool||[[ai2_chump_stop]]||'''0 !!!'''<br />
|"stops the chump"<br>disables the pathfinding behaviour of chump(s)||OK<br />
|-<br />
|bool||[[ai2_deaf]]||'''0 !!!'''<br />
|"turns off the AI's sound sensing system"||OK<br />
|-bgcolor="lime"<br />
|int32||[[ai2_debug_localmove_lines]]||20<br />
|"number of lines to cast to debug local-movement code"||OK<br />
|-<br />
|bool||[[ai2_debug_localmovement]]||0<br />
|"debug local-movement code from player's position"||OK<br />
|-<br />
|bool||[[ai2_debug_localpathfinding]]||0<br />
|"debug local-path code from player's position and facing"||OK<br />
|-<br />
|bool||[[ai2_debug_showsettingIDs]]||0<br />
|"shows ID numbers for combat, melee and neutral settings"||??<br />
|-<br />
|bool||[[ai2_ignore_player]]||'''0 !!!'''<br />
|"makes all AI ignore the player"||OK<br />
|-<br />
|bool||[[ai2_melee_weightcorrection]]||1<br />
|"weights down non-attack techniques so they are never more than attacks"||??<br />
|-<br />
|bool||[[ai2_printspawn]]||0<br />
|"prints information about each AI spawn"||OK<br />
|-<br />
|bool||[[ai2_showactivationpaths]]||0<br />
|"turns on inactive ==> active pathfinding rendering"||OK<br />
|-<br />
|bool||[[ai2_showastar]]||0<br />
|"shows grid squares that are evaluated by the A* pathfinding"||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||[[ai2_showcombatranges]]||0<br />
|"shows circles that represent the combat ranges of each AI"||OK<br />
|-<br />
|bool||[[ai2_showconnections]]||0<br />
|"turns on pathfinding connection rendering"<br>(result of a call to [[ai2_findconnections]])||OK <br />
|-<br />
|bool||[[ai2_showdynamicgrids]]||0<br />
|"turns on pathfinding dynamic grid display"<br>(moving obstacles; needs '''ai2_showgrids''')||OK<br />
|-<br />
|bool||[[ai2_showfights]]||0<br />
|"shows fights in progress"||OK? <br />
|-<br />
|bool||[[ai2_showfiringspreads]]||0<br />
|"shows AI firing spread knowledge"||OK<br />
|-<br />
|bool||[[ai2_showgrids]]||0<br />
|"turns on pathfinding grid rendering"<br>(static grids; see [[OBD:AKVA|AKVA]])||OK<br />
|-<br />
|bool||[[ai2_showhealth]]||0<br />
|"draws a health bar for every AI above their head"||OK<br />
|-<br />
|bool||[[ai2_showintersections]]||0<br />
|"debug AI's melee intersections"||??<br />
|-<br />
|bool||[[ai2_showjoblocations]]||0<br />
|"draws a green cross at each AI's job location"||OK? <br />
|-<br />
|bool||[[ai2_showlasers]]||0<br />
|"turns on laser sights for AI2 characters"||??<br />
|-<br />
|bool||[[ai2_showlinetochar]]||0<br />
|"draws a line from the player to every AI"||OK<br />
|-<br />
|bool||[[ai2_showlocalmelee]]||0<br />
|"shows local-environment melee awareness"||OK? <br />
|-<br />
|bool||[[ai2_showlos]]||0<br />
|"shows AI line-of-sight checking"<br>(LOS of all aiming AI leaves a permanent trace)|| OK<br />
|-<br />
|bool||[[ai2_shownames]]||0<br />
|"draws the name of every AI above their head"||OK<br />
|-<br />
|bool||[[ai2_showpathfindingerrors]]||0<br />
|"enables visual display of pathfinding errors"||OK? <br />
|-<br />
|bool||[[ai2_showpaths]]||0<br />
|"shows the path each AI is following"||OK<br />
|-<br />
|bool||[[ai2_showprediction]]||0<br />
|"shows prediction info for AI2 characters"<br>(player's "predicted" position is shown etc)||OK <br />
|-<br />
|bool||[[ai2_showprojectiles]]||0<br />
|"shows AI projectile knowledge"||OK <br />
|-<br />
|bool||[[ai2_showsounds]]||0<br />
|"shows AI sounds as they are generated"||OK<br />
|-<br />
|bool||[[ai2_showtargeting]]||0<br />
|"shows targeting info for AI2 characters"||OK<br />
|-<br />
|bool||[[ai2_showvision]]||0<br />
|"shows each AI's vision cones (central and peripheral)"||OK<br />
|-<br />
|int32||[[ai2_spacing_cookies]]||2<br />
|"number of cookies per fight"<br>the more cookies, the more attacks: 0 means nothing but maneuver||OK <br />
|-<br />
|bool||[[ai2_spacing_enable]]||1<br />
|"master enable switch for spacing behavior"||OK?<br />
|-<br />
|bool||[[ai2_spacing_weights]]||1<br />
|"enables position-sensitive weighting of spacing behaviors"||OK?<br />
|-<br />
|int32||[[ai2_stopignoring_count]]||6<br />
|"set the number of events before the AI will stop ignoring"||??<br />
|-<br />
|int32||[[ai2_stopignoring_time]]||240<br />
|"set the delay timer before the AI forgets about ignored events"||??<br />
|-<br />
|bool||am_hit_everything||0<br />
|"makes the laser pointer hit all objects"||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||am_invert||'''!?'''<br />
|"inverts aiming"||OK<br />
|-<br />
|bool||am_show_axes||0<br />
|"shows world axes"||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||am_show_closest||0<br />
|"dumps the closest GQ index to console"||??<br />
|-<br />
|bool||am_show_filenames||0<br />
|"dumps the closest GQ index file/obj name to console"<br>WTF? shows debug box, but doesn't dump anything||bgcolor=#ccccff|OK-M<br />
|-bgcolor=#ccccff<br />
|bool||am_show_texturenames||0<br />
|"Shows Texture name"||OK<br />
|-<br />
|float||character_name_distance||150.<br />
|"specifies the distance from the camera that character names no longer draw"<br>(probably needs show_characters)||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||chr_active||1<br />
|"enables character activity"<br>(0 freezes animation etc)||OK<br />
|-<br />
|float||chr_aim_width||70.<br />
|"number of degress of aiming width"<br>width of the aiming arc, in degrees||OK<br />
|-<br />
|bool||chr_all_active||0<br />
|"forces all characters to be active"||OK<br />
|-<br />
|float||chr_auto_aim_arc||90.<br />
|"number of degress of auto aiming arc"<br>width of the auto aiming arc, in degrees||OK<br />
|-<br />
|float||chr_auto_aim_dist||40.<br />
|"distance for auto aiming"<br>upper threshold, in world units||OK<br />
|-<br />
|bool||chr_big_head||'''0 !!!'''<br />
|"draws everyone with a big head"<br>(head size set by chr_big_head_amount)||OK<br />
|-<br />
|float||chr_big_head_amount||4.<br />
|"Controls the size of the big head"||OK<br />
|-<br />
|float||chr_block_angle||20.<br />
|"controls the angle at which the characters can block"||OK<br />
|-<br />
|int32||chr_buffer_size||8<br />
|"0 = normal buffer, otherwise buffer duration"||??<br />
|-<br />
|bool||chr_collision_box||1<br />
|"toggles character bounding box / bounding sphere collision"||??<br />
|-<br />
|float||chr_collision_grow||0.<br />
|"sets character bounding box collision grow amount"||?? <br />
|-<br />
|bool||chr_corpse_fade_offscreen||1<br />
|"makes corpses fade when they are offscreen"||??<br />
|-<br />
|int32||chr_death_fade_frames||180<br />
|"the number of game ticks until charaters fade over"||??<br />
|-<br />
|int32||chr_death_fade_start||7200<br />
|"the number of game ticks until charaters begin to fade"||??<br />
|-<br />
|bool||chr_debug_aiming_screen||0<br />
|"turns on aiming screen debugging"<br>(dumps AS changes to console)||OK<br />
|-<br />
|bool||chr_debug_characters||0<br />
|"enables debugging information for characters"||OK<br />
|-<br />
|bool||chr_debug_collision||0<br />
|"turns on/off debugging of collision"<br>(melee collision info written to console)||OK<br />
|-<br />
|bool||chr_debug_fall||0<br />
|"controls debugging falling"<br>(dumps events to console)||OK<br />
|-<br />
|bool||chr_debug_footsteps||0<br />
|"footstep debugging mode"<br>(dumps events to console)||OK<br />
|-<br />
|bool||chr_debug_footsteps_verbose||0<br />
|"verbose footstep debugging mode"<br>(dumps anim/type/frame to console)||OK<br />
|-<br />
|bool||chr_debug_handle||0<br />
|"turns on debugging for the handle code"<br>(dumps events to console)||OK<br />
|-<br />
|bool||chr_debug_impacts||0<br />
|"prints debugging info about character melee impacts"<br>(to console)||OK<br />
|-<br />
|bool||chr_debug_overlay||0<br />
|"enables debugging information for overlays"||OK<br />
|-<br />
|bool||chr_debug_pathfinding||0<br />
|"control pathfinding debugging"||OK<br />
|-<br />
|bool||chr_debug_sphere||0<br />
|"enables sphere tree debugging for characters"<br>(draws collision spheres for every character)||OK<br />
|-<br />
|int32||chr_debug_target||0<br />
|"selects the character debugging target"<br>(used by all debugging routines)||OK<br />
|-<br />
|bool||chr_debug_trigger_quad||0<br />
|"controls trigger quad debugging"<br>(draws characters as vertical lines)||OK<br />
|-<br />
|bool||chr_disable_melee||0<br />
|"turns off all melee damage"<br>(also disables knockdowns; does NOT disable throws)||OK<br />
|-<br />
|bool||chr_disable_visactive||0<br />
|"disables visibility activation"||OK<br />
|-<br />
|bool||chr_draw_aiming_vector||0<br />
|"enables drawing of the aiming vector"||OK<br />
|-<br />
|bool||chr_draw_all_characters||0<br />
|"forces the drawing of all characters"<br>(also keeps them active)||OK<br />
|-<br />
|bool||chr_draw_facing_vector||0<br />
|"enables drawing of the facing vector"||OK<br />
|-<br />
|bool||chr_draw_weapon||1<br />
|"controls drawing of weapons"||OK<br />
|-<br />
|bool||chr_enable_collision||1<br />
|"enables character collision"<br>(does NOT prevent throws)||OK<br />
|-<br />
|int32||chr_lod||-1<br />
|"forces a given lod if it is between 0 and 4"<br>(uses automatic LOD otherwise)||OK<br />
|-<br />
|bool||chr_mini_me||0<br />
|"decreases the size of the main character"<br>(custom size set by chr_mini_me_amount)||OK<br />
|-<br />
|float||chr_mini_me_amount||0.5<br />
|"controls the size of the main character"<br>(if chr_mini_me is enabled)||OK<br />
|-<br />
|bool||chr_pin_character||0<br />
|"pins a character to the ground"<br>(freezes coordinates of ''all'' chars)||OK<br />
|-<br />
|bool||chr_print_sound||0<br />
|"turns on printing of the sound effect"||??<br />
|-<br />
|bool||chr_show_bnv||0<br />
|"shows the bnv of the main character"<br>(pathfinding volume; see [[OBD:AKVA|AKVA]])||OK<br />
|-<br />
|bool||chr_show_lod||0<br />
|"shows the current lod of the main character"||OK<br />
|-<br />
|int32||chr_show_movement||0<br />
|"enables movement debugging information for characters"<br>(dumps XZ velocity to console every # frames)||OK<br />
|-bgcolor=#ccccff<br />
|int32||chr_show_weaponid||0<br />
|"Shows weapon ID"||OK<br />
|-bgcolor=#ccccff<br />
|bool||chr_showextent_globals||0<br />
|"shows the global parts of an attack animation's extent"||OK<br />
|-<br />
|bool||chr_weapon_auto_aim||1<br />
|"enables auto aiming"<br>(melee auto aiming not affected)||OK<br />
|-<br />
|float||cinematic_xoffset||20.<br />
|"offset from the vertical edge of the screen for the cinematic insert"||??<br />
|-<br />
|float||cinematic_yoffset||65.<br />
|"offset from the horizontal edge of the screen for the cinematic insert"||??<br />
|-<br />
|float||cm_canter_unarmed||7.<br />
|"camera canter"<br>(when not aiming; in degrees)||OK<br />
|-<br />
|float||cm_canter_weapon||8.<br />
|"camera canter"<br>(when aiming, in degrees)||OK<br />
|-<br />
|float||cm_distance||33.<br />
|"camera distance"<br>(to target, in world units)||OK<br />
|-<br />
|float||cm_height||15.<br />
|"camera target"<br>(target height to feet of target character, in world units)||OK<br />
|-<br />
|int32||cm_jello_amt||20<br />
|"sets the transparency of walls"<br>(for [[Jello-cam]] mode, in % )||OK<br />
|-<br />
|float||cm_jello_radius||12.<br />
|radius of effect of [[Jello-cam]] mode||OK<br />
|-<br />
|float||cm_lookspring_percent||0.5<br />
|"at what percent of lookspring fight mode turns off"||??<br />
|-<br />
|bool||cm_plane_test||1<br />
|"jello camera plane test"||OK<br />
|-<br />
|bool||co_display||1<br />
|"enables console display"<br>(console output only)||OK<br />
|-<br />
|int32||co_fade_time||600<br />
|"the fade time of the console"||OK<br />
|-<br />
|bool||co_message_display||1<br />
|"enables text message display"<br>(dmsg and prompts)||OK<br />
|-<br />
|int32||co_priority||0<br />
|"changes the priority of messages to display on the console"<br>not sure what messages have priority >0||OK<br />
|-<br />
|1||debug_consoles||0<br />
|"prints debugging information about console usage"<br>(information about ''in-game'' consoles; prints to ''dev mode'' console ^^)||OK<br />
|-bgcolor=#ccccff<br />
|bool||debug_font_cache||0<br />
|"displays font cache texture"||??<br />
|-<br />
|bool||debug_gun_behavior||0<br />
|"enable AI gun behavior debugging"<br>(dumps events to console)||OK<br />
|-<br />
|bool||debug_impacts||0<br />
|"prints impacts as they occur"<br>(to console; footsteps, melee, projectiles...)||OK <br />
|-<br />
|bool||debug_scripts||0<br />
|"enable script debugging"<br>(dumps events to console)||OK<br />
|-<br />
|bool||debug_triggers||0<br />
|"enable trigger volume debugging"<br>(dumps events to console)||OK<br />
|-<br />
|bool||debug_weapons||0<br />
|"prints debugging info about weapon particle events"||OK<br />
|-<br />
|bool||door_drawframes||0<br />
|"draws doorframes for all unplaced doors"||??<br />
|-<br />
|bool||door_ignore_locks||0<br />
|"disables all door locks"||OK<br />
|-<br />
|bool||door_pop_lighting||0<br />
|"uses bad door lighting"||??<br />
|-<br />
|bool||door_show_activation||0<br />
|"draws a circle where door activates"||??<br />
|-<br />
|bool||door_show_debug||0<br />
|"shows debug geometry"<br>(dumps events to console)||OK<br />
|-<br />
|bool||[[draw_every_frame]]||0<br />
|"forces drawing of every frame"<br>(every '''draw_every_frame_multiple'''th frame)||OK<br />
|-<br />
|int32||[[draw_every_frame_multiple]]||1 <br />
||"draw every frame multiple"<br>set drawing frequency if '''draw_every_frame''' is ON||OK<br />
|-<br />
|bool||env_collision||1<br />
|"enables environment collision"||??<br />
|-<br />
|bool||env_drawallgqs||0<br />
|"draw all the GQs"||??<br />
|-<br />
|bool||env_drawfrustum||0<br />
|"draw the frustum around the environment camera"||??<br />
|-<br />
|bool||env_drawvisonly||0<br />
|"draw only the GQs used for visibility"||??<br />
|-<br />
|int32||[[env_highlight_gq]]||-1<br />
|"highlights a particular gq"<br>(-1 means none)||OK<br />
|-<br />
|int32||[[env_ray_number]]||20<br />
|"sets the number of rays to cast"<br>(per frame?)||OK<br />
|-<br />
|bool||env_show_ghostgqs||0<br />
|"when true show ghost GQs" (PC&Mac: Works only for self-made GQs via onisplit v0.9.93.0 -create:level in '''-debug''' out/*.xml; )||OK<br />
|-<br />
|bool||env_show_leafnodes||0<br />
|"enables display of environment octtree leaf nodes"||??<br />
|-<br />
|bool||env_show_octnode_gqs||0<br />
|"when true the environment only renders triangles in the octnode that contains the manual camera"||?? <br />
|-<br />
|bool||env_show_octtree||0<br />
|"enables display of environment octtree traversal"||??<br />
|-<br />
|bool||[[env_show_quad_count]]||0<br />
|"shows the count of visable environment quads"||??<br />
|-<br />
|bool||env_show_rays||0<br />
|"draw the rays"||??<br />
|-<br />
|bool||env_show_stairflagged||0<br />
|"show specially flagged noncollision quads"||??<br />
|-<br />
|bool||fast_lookup||0<br />
|"enables fast lookup"||??<br />
|-<br />
|bool||fast_mode||0<br />
|"makes the game run fast"||OK<br />
|-<br />
|float||flag_name_distance||150.0<br />
|"specifies the distance from the camera that flag names no longer draw"<br>(probably needs show_flags)||??<br />
|-<br />
|int32||flag_new_id||'''!?'''<br />
|"specifies the id for a new flag"<br>(equal to the last flag added at level load)||??<br />
|-<br />
|bool||footstep_flash||0<br />
|"footstep flash mode"||OK<br />
|-<br />
|float||fx_laser_width||0.2<br />
|width of lasers (weapons and triggers)||OK<br />
|-<br />
|bool||gl_disable_depth_reads||0<br />
|"disable_depth_reads"||??<br />
|-bgcolor=#ccccff<br />
|bool||gl_disable_dxt1||0<br />
|"lets you disable use of DXT1"||??<br />
|-bgcolor=#ccccff<br />
|bool||gl_disable_packed_pixels||0<br />
|"lets you disable packed-pixels support"||??<br />
|-<br />
|float||[[gl_fog_blue]]||'''0.25 !!!'''<br />
|"fog blue"<br>(amount: 0 to 1)||OK<br />
|-<br />
|float||[[gl_fog_end]]||'''1. !!!'''<br />
|"fog end" in frustum space||OK<br />
|-<br />
|float||[[gl_fog_green]]||'''0.25 !!!'''<br />
|"fog green"<br>(amount: 0 to 1)||OK<br />
|-<br />
|float||[[gl_fog_red]]||'''0.25 !!!'''<br />
|"fog red"<br>(amount: 0 to 1)||OK<br />
|-<br />
|float||[[gl_fog_start]]||'''0.975 !!!'''<br />
|"fog start" in frustum space||OK<br />
|-bgcolor=#ccccff<br />
|int32||gl_mipmap_offset||0<br />
|"lets you disable miplevels (-ve = disable big, +ve = disable small)"||??<br />
|-<br />
|float||gs_input_accel||5.0<br />
|"use this to control the input sensitivity"||??<br />
|-<br />
|int32||gs_screen_shot_reduce||0<br />
|"2^n amount of reduction"||OK<br />
|-<br />
|bool||gs_show_characters||0<br />
|"turns on the drawing of characters"||OK<br />
|-<br />
|bool||gs_show_corpses||1<br />
|"show corpses"||OK<br />
|-<br />
|bool||gs_show_environment||1<br />
|"turns on doing the environment"||OK<br />
|-<br />
|bool||gs_show_object_count||0<br />
|"shows the count of objects"||??<br />
|-<br />
|bool||gs_show_objects||1<br />
|"turns on the drawing of objects"||OK<br />
|-<br />
|bool||gs_show_particles||1<br />
|"turns on the drawing of particles"||OK<br />
|-<br />
|bool||gs_show_physics_count||0<br />
|"shows the count of physics"||??<br />
|-<br />
|bool||gs_show_scripting_count||0<br />
|"shows the count of active scripting contexts"||??<br />
|-<br />
|bool||gs_show_shadows||1<br />
|"enables character shadows"||OK<br />
|-<br />
|bool||gs_show_sky||1<br />
|"turns on the sky"||??<br />
|-<br />
|bool||gs_show_ui||1<br />
|"turns on the ui" (aka HUD)||OK<br />
|-<br />
|bool||gs_sleep||0<br />
|"turns on a call to sleep to make debugging easier"||??<br />
|-<br />
|bool||gs_stable_ear||1<br />
|"makes the ear stable"||??<br />
|-<br />
|bool||[[invincible]]||'''0 !!!'''<br />
|"makes player invincible"||OK<br />
|-<br />
|bool||laser_alpha||0<br />
|WTF? lasers are always transparent||??<br />
|-bgcolor="lime"<br />
|bool||li_center_cursor||1<br />
|"should we center the cursor"||OK<br />
|-<br />
|bool||m3_buffer_clear||1<br />
|"toggles buffer clear"||OK<br />
|-<br />
|bool||m3_clear_color||0<br />
|"color to clear the back buffer to" (color behind skybox)<br>(actually a 32-bit RGB integer; can calculate it with [http://www.shodor.org/stella2java/rgbint.html this site])||OK<br />
|-<br />
|bool||m3_double_buffer||1<br />
|"toggles double buffer mode"||OK<br />
|-<br />
|bool||m3_fill_solid||1<br />
|"toggles wireframe/solid"||OK<br />
|-<br />
|bool||m3_shade_vertex||1<br />
|"vertex shader on/off"||OK<br />
|-<br />
|bool||m3_texture||1<br />
|0 >> crash ^^||??<br />
|-<br />
|bool||m3_zcompareon||1<br />
|"true if zcompare is on"||OK<br />
|-<br />
|bool||marketing_line_off||0<br />
|"turns the laser line off"||OK<br />
|-<br />
|bool||ob_show_debug||0<br />
|"enable physics debugging visuals"<br>(shows spheres for doors etc)||OK<br />
|-<br />
|bool||[[omnipotent]]||'''0 !!!'''<br />
|"makes player omnipotent"||OK<br />
|-<br />
|int32||p3_debug_collision||256<br />
|"enables collision debugging display"<br>(actually a boolean; only the low bit counts)||OK<br />
|-<br />
|bool||p3_everything_breakable||0<br />
|"makes every quad breakable"||OK<br />
|-<br />
|bool||p3_furniture_breakable||0<br />
|"makes all furniture breakable"||OK<br />
|-<br />
|bool||p3_glass_breakable||1<br />
|"enables breakable glass"||OK<br />
|-<br />
|bool||p3_show_env_collision||0<br />
|"draws particle / environment collisions"||OK<br />
|-<br />
|float||patrolpath_name_distance||150.0<br />
|"specifies the distance from the camera that patrol point names no longer draw"<br>(probably needs show_patrolpaths)||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||ph_active||1<br />
|"enable physics"||OK<br />
|-<br />
|bool||ph_debug_keyforces||0<br />
|"toggle keyboard applied forces"||??<br />
|-<br />
|bool||ph_show_collisions||0<br />
|"toggle display of colliding quads"||OK<br />
|-<br />
|float||recoil_base||0.0<br />
|"base" (for current ONWC; needs recoil_edit)||OK<br />
|-<br />
|bool||recoil_edit||0<br />
|"enables editable recoil"<br>||OK<br />
|-<br />
|float||recoil_factor||0.0<br />
|"factor" (for current ONWC; needs recoil_edit)||OK<br />
|-<br />
|float||recoil_max||0.0<br />
|"factor" (for current ONWC; needs recoil_edit)||OK<br />
|-<br />
|float||recoil_return_speed||0.0<br />
|"factor" (for current ONWC; needs recoil_edit)||OK<br />
|-<br />
|int32||save_point||'''!?'''<br />
|which save point we are on||OK<br />
|-<br />
|int32||saved_film_character_offset||1<br />
|"dumps the filmed animation data of the player to file"||OK?<br />
|-<br />
|bool||saved_film_loop||0<br />
|enables looping when '''play_record'''ing||OK<br />
|-<br />
|string||sc_bind_f2||""<br />
|name of animation bound to '''cutscene1'''||OK<br />
|-<br />
|string||sc_bind_f3||""<br />
|name of animation bound to '''cutscene2'''||OK<br />
|-<br />
|bool||show_characters||0<br />
|"enables the display of character starting positions"<br>(see BINA/OBJC/CHAR)||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||show_chr_env_collision||0<br />
|"draws character / environment collisions"<br>(same as ph_show_collisions?)||OK<br />
|-<br />
|bool||show_flags||0<br />
|"enables the display of flags"<br>(see BINA/OBJC/FLAG)||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||show_laser_env_collision||0<br />
|"draws laser / environment collisions"<br>(works with any loaded gun)||OK<br />
|-<br />
|bool||show_patrolpaths||0<br />
|"enables the display of AI patrol path objects"<br>(see BINA/OBJC/PATR)||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||show_performance||0<br />
|"enables performance display"<br>(shows FPS counter)||OK<br />
|-<br />
|bool||show_performance_gsd||0<br />
|??||??<br />
|-<br />
|bool||show_performance_gsu||0<br />
|??||??<br />
|-<br />
|bool||show_sound_all||0<br />
|"sound rings will always be drawn, not just when a sound is selected"<br>(environment sounds, see BINA/OBJC/SNDG)||?? <br />
|-<br />
|bool||show_sound_rectangles||0<br />
|"sound rectangles will always be drawn, not just when a sound Rectangle is selected"<br>(environment sounds, see BINA/OBJC/SNDG)||??<br />
|-<br />
|bool||show_sound_spheres||0<br />
|"sound spheres will always be drawn, not just when a sound Rectangle is selected"<br>(environment sounds, see BINA/OBJC/SNDG)||??<br />
|-<br />
|bool||show_triggers||1<br />
|"enables the display of triggers"<br>(see BINA/OBJC/TRIG)||OK<br />
|-bgcolor=#ccccff<br />
|bool||show_triggervolumes||0<br />
|"Display trigger volumes"||OK<br />
|-<br />
|bool||show_turrets||1<br />
|"enables the display of turrets"<br>(see BINA/OBJC/TURR)||OK<br />
|-<br />
|bool||single_step||0<br />
|"puts the game in single step mode"||OK <br />
|-<br />
|float||sky_height||0.<br />
|Y offset of skybox?||?? <br />
|-<br />
|bool||sky_show_clouds||1<br />
|"toggles display of the clouds"||??<br />
|-<br />
|bool||[[sky_show_planet]]||1<br />
|"toggles display of the planet (sun/moon)"<br>(sun present only in levels 2 and 3)||OK <br />
|-<br />
|bool||sky_show_sky||1<br />
|"toggles display of the sky" (master switch)||OK <br />
|-<br />
|bool||sky_show_skybox||1<br />
|"toggles display of the skybox"||OK<br />
|-<br />
|bool||sky_show_stars||1<br />
|"toggles display of the stars"<br>(no stars in any level)||??<br />
|-<br />
|bool||sound_show_debug||0<br />
|"displays sound debugging info"||OK<br />
|-<br />
|bool||spatial_footsteps||1<br />
|"spatial footsteps"||??<br />
|-<br />
|bool||sync_debug||0<br />
|"enables sync debugging"||??<br />
|-<br />
|float||[[target_max_distance]]||75000.<br />
|"Sets the distance at which the radar will start to change from its minimum"||OK<br />
|-<br />
|bool||turret_show_debug||0<br />
|"enables the display of turret debug lines"||bgcolor=#ccccff|OK-M<br />
|-<br />
|bool||[[ui_suppress_prompt]]||0<br />
|"suppresses UI prompting about new objectives or moves"<br>(and saved games and training tips and such)||OK<br />
|-<br />
|bool||[[unstoppable]]||'''0 !!!'''<br />
|makes player unstoppable||OK<br />
|-<br />
|bool||[[wait_for_key]]||0<br />
|"makes the game wait for a key before level load"||OK<br />
|-<br />
|bool||[[wp_disable_fade]]||0<br />
|"disables weapon fading"||OK<br />
|-<br />
|int32||wp_fadetime||360<br />
|"sets free time for powerups"||??<br />
|-<br />
|bool||[[wp_force_half_scale]]||0<br />
|crosshairs scale with distance, pow_adjustment redundant||OK<br />
|-<br />
|bool||[[wp_force_no_scale]]||0<br />
|crosshairs don't scale with distance, pow_adjustment ineffective||OK<br />
|-<br />
|bool||[[wp_force_scale]]||0<br />
|crosshairs scale with distance, pow_adjustment ineffective||OK<br />
|-<br />
|int32||wp_hypostrength||25<br />
|"sets strength of hypo spray"<br>apparently in % of full health, seems hard-coded||??<br />
|-<br />
|bool||[[wp_kickable]]||0<br />
|"lets the player kick weapons"<br>(actually lets everyone ''but'' the player collide with guns)||OK<br />
|-<br />
|float||[[wp_pow_adjustment]]||0.3<br />
|scales crosshair separately (or not, depending on "force" flags)||OK<br />
|-<br />
|float||[[wp_scale_adjustment]]||1.<br />
|adjusts scales||OK<br />
|}<br />
<br />
[[Category:Bungie scripting language docs]]</div>EdThttps://wiki.oni2.net/w/index.php?title=OniSplit&diff=22812OniSplit2013-08-12T00:55:13Z<p>EdT: /* Download links */ Update to 0.9.93</p>
<hr />
<div>{{TOCfloat|side=right}}<br />
'''OniSplit''', written by [[User_talk:Neo|Neo]], is an integral part of the [[Anniversary Edition]] and an essential modding tool on its own. It is able to import and export almost all kinds of Oni game data, including textures, sound, 3D models, level geometry and combat animations. Its name comes from its first feature, which was breaking Oni's level data files into individual resources. OniSplit incorporates the latest knowledge about Oni's game data, and it is currently the community's main modding tool.<br />
<br />
==Getting it==<br />
===Download links===<br />
* Latest release of OniSplit: [http://mods.oni2.net/node/38 v0.9.93.0]<br />
* The current GUI for OniSplit is [[Vago (tool)|Vago]]. '''You should try the GUI to see if it does what you need before working with OniSplit on the command line.'''<br />
<br />
===Requirements===<br />
OniSplit requires .NET 2.0 for Windows and the Mono framework for Mac OS X.<br />
<br />
* [http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe .NET 2.0 (x86)]; [http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x64.exe .NET 2.0 (x64)]<br />
* [http://www.go-mono.com/mono-downloads/download.html Latest version of mono (requires OS X 10.5+)]<br />
<br />
==Workflow==<br />
OniSplit is used in up to four different stages when modding:<br />
{|<br />
|rowspan="2"|<span style="font-size:150%">'''OUT'''</span><br />
|''Exporting'' - using the <tt>-export</tt> command, a [[Dat|level data file]] is broken into its component resources, .oni files.<br />
|-<br />
|style="border-style: solid; border-width: 0 0 1px 0"|''Extracting'' - using the <tt>-extract</tt> commands, .oni files are converted to standard-format files that can be edited in various third-party programs.<br />
|-<br />
|rowspan="2"|<center><span style="font-size:150%">'''IN'''</span></center><br />
|''Creating'' - using the <tt>-create</tt> commands, standard-format files are converted into .oni files.<br />
|-<br />
|''Importing'' - using the <tt>-import</tt> command, a folder of .oni files is combined into a level data file.<br />
|}<br />
<br />
Note that "extracting" refers to a conversion from one format to another, but "exporting" only refers to the creation of .oni files from a .dat file. When exporting, no conversion or re-formatting is taking place; the data is simply being copied out of a .dat (any connected binary data in .raw/.sep files will be concatenated to the data from the .dat when making the .oni).<br />
<br />
==Beginner's tips==<br />
{{Divhide|For users new to the command line or to OniSplit}}<br />
In Windows, you want to find the Command Prompt. The fastest way to get there is to bring up the "Run..." dialog with Windows+R, then type "cmd" and hit Enter.<br />
<br />
On Macs, the command line is found in the Terminal app (/Applications/Utilities) (press Command-Spacebar and type "Terminal" to get there faster).<br />
<br />
===OniSplit syntax===<br />
The basic syntax is:<br />
{|<br />
|-<br />
|'''Windows'''||<tt><span style="background:rgb(235,235,235); border-radius:0.33em;">OniSplit.exe</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-create:trbs</span> <span style="background:rgb(255,156,156); border-radius:0.33em;">C:\Games\Oni\SomeFolder</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-normals</span> <span style="background:rgb(156,255,156); border-radius:0.33em;">C:\Games\Oni\Modding\TRBSMyNewChar.dae</span></tt><br />
|-<br />
|'''Mac'''||<tt><span style="background:rgb(235,235,235); border-radius:0.33em;">mono OniSplit.exe</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-create:trbs</span> <span style="background:rgb(255,156,156); border-radius:0.33em;">/Games/Oni/SomeFolder</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-normals</span> <span style="background:rgb(156,255,156); border-radius:0.33em;">/Games/Oni/Modding/TRBSMyNewChar.dae</span></tt><br />
|}<br />
<br />
Here's how it breaks down:<br />
{|<br />
! style="width:130px"|<br />
|- valign="top"<br />
|<span style="background:rgb(235,235,235); border-radius:0.33em;">'''Invocation'''</span><br />
|Windows can refer to the program directly, but Macs use Mono to run the .NET app; note also that if OniSplit.exe is not in the Command Prompt/Terminal's current directory, you must provide the full path to it or set the path variable.<br />
|-<br />
|<span style="background:rgb(175,175,255); border-radius:0.33em;">'''Option'''</span>||The command.<br />
|- valign="top"<br />
|<span style="background:rgb(255,156,156); border-radius:0.33em;">'''Path to folder'''</span>||Whether destination or source, the folder path comes first. <u>Use the full path to the folder (starting from C:\, or "/" on Macs).</u> For most commands, OniSplit wants a destination folder name, not a file name; the files that OniSplit creates will be named automatically when they are placed in the destination folder. A rare exception is the <tt>-import</tt> command, where you need to supply the name of the level files to be created.<br />
|-<br />
|<span style="background:rgb(175,175,255); border-radius:0.33em;">'''Option flags'''</span>||The flags that can optionally go with this command, separated by spaces.<br />
|- valign="top"<br />
|<span style="background:rgb(156,255,156); border-radius:0.33em;">'''Path to file/folder'''</span>||Whether destination or source, the file path comes second. Sometimes the second parameter is also a folder, as with <tt>-create</tt>. <u>Use the full path to the folder (starting from "C:\", or "/" on Macs).</u><br />
|}<br />
<br />
===CLI tips===<br />
*Command-line interfaces (CLI) usually supply an auto-complete feature to save on typing. If you've typed enough of a file/folder name to identify it, press the Tab key and the rest should fill in. In Windows, you may not get the right path name autocompleted on the first try if there are multiple possible autocompletions based on the names in that directory, so keep pressing Tab to cycle through all possibilities. On Macs, if you have not typed enough of the name to narrow it down to a single autocompletion, you will hear an error sound. Double-tap Tab to see a list of possible autocompletions, then keep typing until you have narrowed it down to one of those and then hit Tab to fill in the rest of its name.<br />
<br />
*Note that you can also drag files/folders into the window and the path will magically appear; in cases where you don't need to use a wildcard, this is the fastest way to build an OniSplit command.<br />
<br />
===Wildcards===<br />
Wildcards can be used to supply patterns to CLI programs. The wildcard is simply the <tt>*</tt> character. For instance:<br />
OniSplit.exe -export:TRAM* <destination> <source .dat><br />
will export all the TRAMs in the source .dat into the destination folder. Using "TRAMKON*" would export all of Konoko's animations.<br />
<br />
===Spaces in paths===<br />
Command-line interfaces (CLI) do not recognize spaces as a possible part of a path name because spaces are what separate terms in your commands. The best course of action is to not use paths with spaces in their names! But if you must, you can use quotes to tell the CLI that a certain string is a single path:<br />
<br />
C:\Games\Oni\>OniSplit.exe -list "My Mod Folder\level5_Final.dat"<br />
<br />
This works in the Mac Terminal too, but you can also use the escape character, <tt>\</tt>. Also, other characters like <tt>(</tt> need to be escaped as well if you do not use quotes:<br />
<br />
iMac:Oni you$ mono OniSplit.exe -list My\ Mods\ \(In\ Progress\)/level5_Final.dat<br />
<br />
But as mentioned, the best practice is to not use any characters besides the alphabet and numbers. It makes your life simpler, and if you ask for help on the forum with a command, no one wants to have to read your long path with lots of spaces or escaped characters in it ;-)<br />
<br />
===Reading the commands below===<br />
*The following commands should be complete, but the current list can be obtained by calling OniSplit with the <tt>-help</tt> option (you should also use <tt>-version</tt> to make sure you're using the same version that's documented here).<br />
<br />
*Occasional sample usages are given after certain commands. These are in DOS style, so simply flip the <tt>\</tt>s to <tt>/</tt>s for Macs and make "C:\" into a leading "/" to indicate "root-level".<br />
<br />
*Optional flags are listed in square brackets simply to indicate that they're optional; don't enter the brackets when typing a command.<br />
<br />
Note that only the .dat file from a level's data files is mentioned. The .raw and .sep files will be accessed by OniSplit as necessary when working with the .dat file you supply the name of.<br />
{{Divhide|end}}<br />
<br />
==Commands==<br />
===Conversion between .dat and .oni===<br />
{|<br />
! style="width:430px"|<br />
|-<br />
|<code>-list <file name></code>||Lists the named resources contained in a .dat (see [[OBD:File_types/Named|HERE]] for info on unnamed resources)<br />
|-<br />
|<code>-export <destination directory> <dat file></code>||Breaks .dat file into .oni files<br />
|-<br />
|<code>-export:<pattern> <destination directory> <dat file></code>||Exports named resource (wildcards also allowed) from .dat file<br />
|- valign="top"<br />
|<code>-import <source directory> <new dat file></code>||Compiles level files from source directory using the name you supply for the .dat file; tries to get target file format from source SNDD, but it's better to use the :sep or :nosep variants below<br />
|-<br />
|colspan="2"|<span style="padding-left:20px">To create level5_Final.dat/.raw[/.sep] from the files in MyNewLevel\: <code>OniSplit.exe -import C:\Oni\MyNewLevel\ C:\Oni\GameDataFolder\level5_Final.dat</code><span><br />
|-<br />
|<code>-import:sep <source directory> <new dat file></code>||Imports target file (.dat) from source directory; uses .dat/.raw/.sep format (Mac and PC Demo)<br />
|-<br />
|<code>-import:nosep <source directory> <new dat file></code>||Imports target file (.dat) from source directory; uses .dat/.raw format (PC retail)<br />
|}<br />
:Note that <tt>-import</tt> will search subdirectories too. If you find having hundreds or thousand of files .oni in one directory to be unmanageable you can always group them in subdirectories any way you like. The only exception is that a subdirectory named "noimport" or "_noimport" is always ignored.<br />
<br />
===Management of .oni files===<br />
Sometimes you want to move some .oni files out of a larger folder of .onis. You could do this manually, but OniSpit knows which files depend on others. It will also look for those dependencies in subfolders beneath the level of the file you supply the name of. The filename field supports wildcards. This is mostly used by the [[AE]] Installer rather than modders themselves.<br />
{|<br />
|<code>-deps <oni file></code>||Displays a list of .oni files that the specified .oni file depends on<br />
|-<br />
|<code>-copy <destination directory> <oni file></code>||Copies .oni file and its dependencies; skips file if it already exists at destination<br />
|-<br />
|<code>-move <destination directory> <oni file></code>||Moves an .oni file and its dependencies; skips file if it already exists at destination<br />
|-<br />
|<code>-move:overwrite <destination directory> <oni file></code>||Moves an .oni file and its dependencies; overwrites any existing .oni files<br />
|-<br />
|<code>-move:delete <destination directory> <oni file></code>||Moves an .oni file and its dependencies; doesn't overwrite; deletes source files<br />
|}<br />
<br />
===Conversion between .oni/.dat and 3rd party formats===<br />
====Textures====<br />
Unless mentioned otherwise, source filenames support wildcards. See [[AE:Modifying textures|HERE]] for a detailed tutorial. The <tt>-extract</tt> commands can work with .oni files (a single file or several files if you use the wildcard), or rip all the TXMPs from a .dat file.<br />
{|<br />
|<code>-extract:dds <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into DDS files<br />
|-<br />
|<code>-extract:tga <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into TGA files<br />
|-<br />
|<code>-extract:png <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into PNG files<br />
|-<br />
|<code>-create:txmp <destination directory><br>[-genmipmaps] [-nouwrap] [-novwrap]<br><nowiki>[-format:bgr32|bgra32|bgr555|bgra5551|bgra4444|dxt1]</nowiki><br>[-envmap:texture_name] <image file></code><br />
|valign=top|Creates .oni file from image file (PNG, TGA, or DDS)<br />
|}<br />
<br />
====Models====<br />
[[M3GM]]s, [[ONWC]]s, [[ONCC]]s can be exported to the Wavefront .obj and COLLADA .dae formats. For details see [[Importing character models]] and [[Importing weapon models]]. The generic <tt>-extract</tt> commands can work with .oni files (a single file, or several files if you use the wildcard), or rip all the TXMP from a .dat file. TRBS and ONCC support additional <tt>-noanim</tt> and <tt>-anim</tt> options for <tt>-extract:dae</tt>; see [[Importing character models]] for details. Imported geometry must only contain triangles.<br />
{|<br />
! style="width:540px"|<br />
|- valign="top"<br />
|<code>-extract:obj <destination directory> <dat/oni file></code>||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Wavefront OBJ files<br />
|- valign="top"<br />
|<code>-extract:dae <destination directory> <dat/oni file></code>||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Collada DAE files<br />
|-<br />
|<code>-create:m3gm <destination directory> [-tex:texture_name] <OBJ file></code>||Creates a M3GM .oni from an .obj file<br />
|-<br />
|<code>-create:trbs <destination directory> [-cel] [-normals] <DAE file></code>||Creates a TRBS .oni from a .dae file<br />
|}<br />
<br />
====Levels====<br />
OniSplit can convert AKEV files (level geometry) and the associated file types to and from DAE format:<br />
{|<br />
|<code>-extract:dae <destination directory> <AKEV.oni file></code>||Extracts 3D data in AKEV and related resources from dependencies into Collada file<br />
|}<br />
<br />
<br />
The next two steps are used on a folder in which you have placed the DAE and XML-formatted instances of the required files, as well as textures in TGA format. See [http://oni.bungie.org/community/forum/viewtopic.php?id=1515 HERE] for details.<br />
{|<br />
|- valign="top"<br />
|<code>-create <destination directory><br>[-genmipmaps] [-format:dxt1]<br><source directory></code>||Converts all AKEV and related instances to .oni files<br />
|- valign="top"<br />
|<code>-import:nosep <source directory><br><target file name>.dat</code>||The standard command for creating .dat/.raw files from .oni files (remember to use the import:sep option on Mac!)<br />
|}<br />
<br />
====Sounds====<br />
The sounds in Windows Oni are stored in WAV format, and on Macs are stored in AIFF format. This also means creating each of your SNDD files in both formats in order to work on both platforms.<br />
{|<br />
|<code>-extract:wav <destination directory> <dat/oni file></code>||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .wav files<br />
|-<br />
|<code>-extract:aif <destination directory> <dat/oni file></code>||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .aif files<br />
|}<br />
<br />
====Text====<br />
{|<br />
|<code>-extract:txt <destination directory> <dat/oni file></code>||Rips text data from a SUBT .oni file (or all SUBTs from a .dat) as .txt files<br />
|-<br />
|<code>-create:subt <destination directory> <TXT file></code>||Creates a SUBT .oni file from a .txt file<br />
|}<br />
<br />
====XML====<br />
One of the latest features is conversion of .oni files to and from an XML file, or an XML metafile and related 3rd-party format files. XML files are easier to read and edit.<br />
::Currently XML export/import is limited to files that do not have raw/sep parts. 2-way conversion is known to work for [[BINA]], [[CONS]], [[DOOR]], [[DPge]], [[FILM]], [[HPge]], [[IGHH]], [[IPge]], [[M3GM]], [[OBAN]], [[ONCC]], [[ONCV]], [[ONLD]], [[ONLV]], [[ONGS]], [[ONSK]], [[ONVL]], [[ONWC]], [[OPge]], [[OSBD]], [[PSpc]], [[PSpL]], [[PSUI]], [[TRAC]], [[TRAM]], [[TRIG]], [[TRGE]], [[TRMA]], [[TRSC]], [[TXMB]], [[TXMP]], [[WMCL]], [[WMDD]], [[WMM_]], [[WPge]].<br />
:::For detailed examples and tutorials, see [[XML|HERE]]<br />
{|<br />
|<code>-extract:xml <destination directory> <oni file></code>||Extracts .oni file and all related resources to XML files and 3rd-party formats<br />
|-<br />
|<code>-create <destination directory> <XML file></code>||Creates an .oni file from an XML file<br />
|}<br />
<br />
[[Category:Completed modding tools]][[Category:Bi-platform modding tools]][[Category:Modding tutorials]]</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:OniSplit&diff=22677Talk:OniSplit2013-06-04T04:35:35Z<p>EdT: Update to 0.9.90</p>
<hr />
<div>Talk page archives: [[/Archive1|#1]]<br />
<br />
==Change Log ==<br />
OniSplit version: OniSplit v0.9.90<br />
<br />
What's new:<br />
:* Fixes bugs with Import/Export of M3GMs (obj files).<br />
:* Fixes euler angle issues with exported TRAMs.<br />
:* Fixes -noanim command to produce a standing pose.<br />
:* In the ONWC file, you should be able to reference the dae/obj file directly then you don't need the separate M3GM.<br />
:* When exporting AKEV, quads that have script ids assigned to them are exported to separate files. This is related to BSL commands such as env_show 540 0<br />
:* Adds option -anim-merge to export multiple animations to a single dae. Useful in dealing with walk/run or combo animations.<br />
<br />
onisplit -extract:xml <destination directory> -anim-merge -anim-body:src\Path_To_\TRBSkonoko_body_high.oni Path_To\TRAMKONCOMcomb_k.oni Path_To\TRAMKONCOMcomb_k_k.oni Path_To\TRAMKONCOMcomb_k_k_k.oni<br />
<br />
:* Adds a scene exporter<br />
<br />
OniSplit -export:xml <destination directory> scene.xml<br />
<br />
For example if the scene.xml file looks like this <br />
<br />
<Scene><br />
<Node Name="camera"><br />
<Camera /><br />
<Animation>OBANCamout01.oni</Animation><br />
<Animation>OBANCamout02.oni</Animation><br />
<Animation>OBANCamout03.oni</Animation><br />
<Animation>OBANCamout04.oni</Animation><br />
<Animation>OBANCamout05.oni</Animation><br />
<Animation>OBANCamout06.oni</Animation><br />
</Node><br />
<Node Name="motorcycle02"><br />
<Geometry>M3GMmotorcycle02.oni</Geometry><br />
<Animation>OBANmotorcycle02.oni</Animation><br />
<Animation>OBANmotorcycle02_stop.oni</Animation><br />
<Node Name="hubs"><br />
<Geometry>M3GMhubs.oni</Geometry><br />
<Animation>OBANhubs.oni</Animation><br />
<Animation>OBANhubs_stop.oni</Animation><br />
</Node><br />
<Node Name="hubs_rear"><br />
<Geometry>M3GMhubs_rear.oni</Geometry><br />
<Animation>OBANhubs_rear.oni</Animation><br />
<Animation>OBANhubs_rear_stop.oni</Animation><br />
</Node><br />
</Node><br />
</Scene><br />
<br />
When you load the dae in XSI you'll find the motorcycle and the lab level intro camera<br />
If you select the camera and press play you'll get to see the motorcycle into animation like you see it in game <br />
<br />
<br />
OniSplit version: OniSplit v0.9.52<br />
<br />
What's new:<br />
:* When a TRBS file is exported to xml the geometry is exported to separate .dae files, one .dae file for each LOD<br />
:* New -anim-body option. This allows a particular body (ONCC or TRBS) to be specified when exporting animations:<br />
<br />
onisplit -extract:xml out -anim-body:ONCCbarabus.oni TRAMsomething.oni<br />
<br />
:* New -recurse option for the xml exporter. Have fun :)<br />
<br />
onisplit -extract:xml out -recurse ONCCbarabus.oni<br />
<br />
:* Changed light color in the environment importer to white (it used to be blueish)<br />
:* New -env-notxmp option. This prevents the automatic creation of TXMP files while importing the environment.<br />
:* Made -normals work when importing TRBS from xml + dae files.<br />
:* Fixed the Collada importer to work with 3DSMax exported files<br />
<br />
OniSplit version: OniSplit v0.9.40<br />
<br />
What's new:<br />
<br />
:* support for exporting/importing [[OBD:BINA/SABD|sound animations]] to/from xml files<br />
:* better Collada export for environment<br />
:* support for full color transparent textures (-format:bgra32 on the command line, ARGB8888 format in an xml file)<br />
:* different (hopefully better) xml export format for animations (this one is actually from 0.9.38 but since that wasn't mentioned here...)<br />
:* a more or less complete animation importer. This one deservers some notes:<br />
::-unlike other importers that produce .oni files this one produces and .xml file (similar to the one you get when exporting a TRAM)<br />
::when you do<br />
onisplit -create:tram target_dir animation.dae<br />
::in the target dir you'll get a TRAManimation.xml file.<br />
::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.<br />
::-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.<br />
::-Note that the geometry that is present inside the Collada file is used to compute the "vertical extents" so it better be the same or close to the one the animation is intended for.<br />
::-The biggest problem are the attacks. While it's not difficult to add attacks to the xml file, computing the necessary "extents" is not going to be easy. I guess in the end I'll have to add some command to OniSplit to do it.<br />
::-Everything else that I forgot :)<br />
<br />
[[User:Neo|Neo]]<br />
<br />
New OniSplit version: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit|_v0.9.37.zip OniSplit v0.9.37]<br />
<br />
What's new:<br />
<br />
:* support for transparency in the environment importer<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.35<br />
<br />
What's new:<br />
<br />
:* conversion of recorded films (.dat binary files) to xml files that can be used to create FILM .oni files<br />
<br />
OniSplit film2xml out_dir film.dat<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.34<br />
<br />
What's new:<br />
<br />
:* SNDD importer<br />
::-WAV files (.wav, mono/stereo, 22.05KHz/44.1KHz, uncompressed(PCM)/compressed(MS-ADPCM)) produce SNDD files that are compatible with Oni PC retail.<br />
::-AIFC files (.aif/.aifc/.afc, mono/stereo 22.05KHz, compressed(ima4)) produce SNDD files that are compatible with Oni Mac.<br />
::Example<br />
<br />
<br />
<br />
OniSplit -create out_dir test.aif<br />
OniSplit -create out_dir test.wav<br />
<br />
<br />
:*LOD support for creating TRBS files. This can be done by creating an xml file containing the following:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni Version="0.9.29.0"><br />
<Instance id="0" type="TRBS"><br />
<Elements><br />
<Link>barabus_body_1.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_3.dae</Link><br />
<Link>barabus_body_4.dae</Link><br />
<Link>barabus_body_5.dae</Link><br />
</Elements><br />
</Instance><br />
</Oni><br />
<br />
::and running the command (assuming the created xml file's name is barabus_body.xml):<br />
<br />
OniSplit -create out_dir barabus_body.xml<br />
<br />
::It's not strictly necessary to create 5 different geometries for each LOD. The following works just as well:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni Version="0.9.29.0"><br />
<Instance id="0" type="TRBS"><br />
<Elements><br />
<Link>barabus_body_1.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_3.dae</Link><br />
</Elements><br />
</Instance><br />
</Oni><br />
<br />
<br />
:*An xml file can contain "links" to other xml/obj/dae files. For example you can have the following line in an ONWC xml file:<br />
<br />
<Geometry>pistol.obj</Geometry><br />
<br />
::Assuming the file pistol.obj exists in the same directory an M3GM .oni file will be automatically created from it.<br />
<br />
::Relative paths work just as well:<br />
<br />
<Geometry>geometry/pistol.obj</Geometry><br />
<br />
<br />
:*The -create:subt, -create:txmp and -create:m3gm are sort of obsolete. They still work but now you can simply use '-create' (or just 'create'):<br />
<br />
OniSplit -create out_dir crate.dae<br />
OniSplit create out_dir -format:bgr555 -genmipmaps pic.tga<br />
OniSplit create out_dir subtitles.txt<br />
<br />
<br />
:*Work in progress: the AKEV importer now reads Collada materials so the resulting AKEV is textured.<br />
<br />
:Sample levels:<br />
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/noglass.zip TestLevel1] -- This level should look like this in-game: <u>[[:Image:NoGlass Import Test 1.jpg|Image 1]]</u> <u>[[:Image:NoGlass Import Test 2.jpg|Image 2]]</u> <u>[[:Image:NoGlass Import Test 3.jpg|Image 3]]</u><br />
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/hexagon.zip TestLevel2] -- This level should look like this in-game: <u>[http://edt.oni2.net/images/hexagon1.jpg Image 1]</u><br />
:A zip file contains the minimum needed to get a new level running in Oni. To "compile" a level extract it to a folder and run the following commands:<br />
<br />
OniSplit -create out -genmipmaps -format:dxt1 *.xml<br />
OniSplit -import:nosep . Oni\GameDataFolder\level1_Final.dat<br />
<br />
:(Of course, you need to change the output .dat file path to match your Oni installation path)<br />
<br />
:Note1: The hexagon level needs to be scaled up to work properly. Use the envscale option for this:<br />
OniSplit -create out -genmipmaps -format:dxt1 -envscale:40 *.xml<br />
<br />
:Note2: I've updated the level files to contain 20 empty corpses to prevent crashes.</div>EdThttps://wiki.oni2.net/w/index.php?title=OniSplit&diff=22676OniSplit2013-06-04T04:34:58Z<p>EdT: /* Download links */ Update to 0.9.90</p>
<hr />
<div>{{TOCfloat|side=right}}<br />
'''OniSplit''', written by [[User_talk:Neo|Neo]], is an integral part of the [[Anniversary Edition]] and an essential modding tool on its own. It is able to import and export almost all kinds of Oni game data, including textures, sound, 3D models, level geometry and combat animations. Its name comes from its first feature, which was breaking Oni's level data files into individual resources. OniSplit incorporates the latest knowledge about Oni's game data, and it is currently the community's main modding tool.<br />
<br />
==Getting it==<br />
===Download links===<br />
* Latest release of OniSplit: [http://mods.oni2.net/node/38 v0.9.90.0]<br />
* The current GUI for OniSplit is [[Vago (tool)|Vago]]. '''You should try the GUI to see if it does what you need before working with OniSplit on the command line.'''<br />
<br />
===Requirements===<br />
OniSplit requires .NET 2.0 for Windows and the Mono framework for Mac OS X.<br />
<br />
* [http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe .NET 2.0 (x86)]; [http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x64.exe .NET 2.0 (x64)]<br />
* [http://www.go-mono.com/mono-downloads/download.html Latest version of mono (requires OS X 10.5+)]<br />
<br />
==Workflow==<br />
OniSplit is used in up to four different stages when modding:<br />
{|<br />
|rowspan="2"|<span style="font-size:150%">'''OUT'''</span><br />
|''Exporting'' - using the <tt>-export</tt> command, a [[Dat|level data file]] is broken into its component resources, .oni files.<br />
|-<br />
|style="border-style: solid; border-width: 0 0 1px 0"|''Extracting'' - using the <tt>-extract</tt> commands, .oni files are converted to standard-format files that can be edited in various third-party programs.<br />
|-<br />
|rowspan="2"|<center><span style="font-size:150%">'''IN'''</span></center><br />
|''Creating'' - using the <tt>-create</tt> commands, standard-format files are converted into .oni files.<br />
|-<br />
|''Importing'' - using the <tt>-import</tt> command, a folder of .oni files is combined into a level data file.<br />
|}<br />
<br />
Note that "extracting" refers to a conversion from one format to another, but "exporting" only refers to the creation of .oni files from a .dat file. When exporting, no conversion or re-formatting is taking place; the data is simply being copied out of a .dat (any connected binary data in .raw/.sep files will be concatenated to the data from the .dat when making the .oni).<br />
<br />
==Beginner's tips==<br />
{{Divhide|For users new to the command line or to OniSplit}}<br />
In Windows, you want to find the Command Prompt. The fastest way to get there is to bring up the "Run..." dialog with Windows+R, then type "cmd" and hit Enter.<br />
<br />
On Macs, the command line is found in the Terminal app (/Applications/Utilities) (press Command-Spacebar and type "Terminal" to get there faster).<br />
<br />
===OniSplit syntax===<br />
The basic syntax is:<br />
{|<br />
|-<br />
|'''Windows'''||<tt><span style="background:rgb(235,235,235); border-radius:0.33em;">OniSplit.exe</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-create:trbs</span> <span style="background:rgb(255,156,156); border-radius:0.33em;">C:\Games\Oni\SomeFolder</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-normals</span> <span style="background:rgb(156,255,156); border-radius:0.33em;">C:\Games\Oni\Modding\TRBSMyNewChar.dae</span></tt><br />
|-<br />
|'''Mac'''||<tt><span style="background:rgb(235,235,235); border-radius:0.33em;">mono OniSplit.exe</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-create:trbs</span> <span style="background:rgb(255,156,156); border-radius:0.33em;">/Games/Oni/SomeFolder</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-normals</span> <span style="background:rgb(156,255,156); border-radius:0.33em;">/Games/Oni/Modding/TRBSMyNewChar.dae</span></tt><br />
|}<br />
<br />
Here's how it breaks down:<br />
{|<br />
! style="width:130px"|<br />
|- valign="top"<br />
|<span style="background:rgb(235,235,235); border-radius:0.33em;">'''Invocation'''</span><br />
|Windows can refer to the program directly, but Macs use Mono to run the .NET app; note also that if OniSplit.exe is not in the Command Prompt/Terminal's current directory, you must provide the full path to it or set the path variable.<br />
|-<br />
|<span style="background:rgb(175,175,255); border-radius:0.33em;">'''Option'''</span>||The command.<br />
|- valign="top"<br />
|<span style="background:rgb(255,156,156); border-radius:0.33em;">'''Path to folder'''</span>||Whether destination or source, the folder path comes first. <u>Use the full path to the folder (starting from C:\, or "/" on Macs).</u> For most commands, OniSplit wants a destination folder name, not a file name; the files that OniSplit creates will be named automatically when they are placed in the destination folder. A rare exception is the <tt>-import</tt> command, where you need to supply the name of the level files to be created.<br />
|-<br />
|<span style="background:rgb(175,175,255); border-radius:0.33em;">'''Option flags'''</span>||The flags that can optionally go with this command, separated by spaces.<br />
|- valign="top"<br />
|<span style="background:rgb(156,255,156); border-radius:0.33em;">'''Path to file/folder'''</span>||Whether destination or source, the file path comes second. Sometimes the second parameter is also a folder, as with <tt>-create</tt>. <u>Use the full path to the folder (starting from "C:\", or "/" on Macs).</u><br />
|}<br />
<br />
===CLI tips===<br />
*Command-line interfaces (CLI) usually supply an auto-complete feature to save on typing. If you've typed enough of a file/folder name to identify it, press the Tab key and the rest should fill in. In Windows, you may not get the right path name autocompleted on the first try if there are multiple possible autocompletions based on the names in that directory, so keep pressing Tab to cycle through all possibilities. On Macs, if you have not typed enough of the name to narrow it down to a single autocompletion, you will hear an error sound. Double-tap Tab to see a list of possible autocompletions, then keep typing until you have narrowed it down to one of those and then hit Tab to fill in the rest of its name.<br />
<br />
*Note that you can also drag files/folders into the window and the path will magically appear; in cases where you don't need to use a wildcard, this is the fastest way to build an OniSplit command.<br />
<br />
===Wildcards===<br />
Wildcards can be used to supply patterns to CLI programs. The wildcard is simply the <tt>*</tt> character. For instance:<br />
OniSplit.exe -export:TRAM* <destination> <source .dat><br />
will export all the TRAMs in the source .dat into the destination folder. Using "TRAMKON*" would export all of Konoko's animations.<br />
<br />
===Spaces in paths===<br />
Command-line interfaces (CLI) do not recognize spaces as a possible part of a path name because spaces are what separate terms in your commands. The best course of action is to not use paths with spaces in their names! But if you must, you can use quotes to tell the CLI that a certain string is a single path:<br />
<br />
C:\Games\Oni\>OniSplit.exe -list "My Mod Folder\level5_Final.dat"<br />
<br />
This works in the Mac Terminal too, but you can also use the escape character, <tt>\</tt>. Also, other characters like <tt>(</tt> need to be escaped as well if you do not use quotes:<br />
<br />
iMac:Oni you$ mono OniSplit.exe -list My\ Mods\ \(In\ Progress\)/level5_Final.dat<br />
<br />
But as mentioned, the best practice is to not use any characters besides the alphabet and numbers. It makes your life simpler, and if you ask for help on the forum with a command, no one wants to have to read your long path with lots of spaces or escaped characters in it ;-)<br />
<br />
===Reading the commands below===<br />
*The following commands should be complete, but the current list can be obtained by calling OniSplit with the <tt>-help</tt> option (you should also use <tt>-version</tt> to make sure you're using the same version that's documented here).<br />
<br />
*Occasional sample usages are given after certain commands. These are in DOS style, so simply flip the <tt>\</tt>s to <tt>/</tt>s for Macs and make "C:\" into a leading "/" to indicate "root-level".<br />
<br />
*Optional flags are listed in square brackets simply to indicate that they're optional; don't enter the brackets when typing a command.<br />
<br />
Note that only the .dat file from a level's data files is mentioned. The .raw and .sep files will be accessed by OniSplit as necessary when working with the .dat file you supply the name of.<br />
{{Divhide|end}}<br />
<br />
==Commands==<br />
===Conversion between .dat and .oni===<br />
{|<br />
! style="width:430px"|<br />
|-<br />
|<code>-list <file name></code>||Lists the named resources contained in a .dat (see [[OBD:File_types/Named|HERE]] for info on unnamed resources)<br />
|-<br />
|<code>-export <destination directory> <dat file></code>||Breaks .dat file into .oni files<br />
|-<br />
|<code>-export:<pattern> <destination directory> <dat file></code>||Exports named resource (wildcards also allowed) from .dat file<br />
|- valign="top"<br />
|<code>-import <source directory> <new dat file></code>||Compiles level files from source directory using the name you supply for the .dat file; tries to get target file format from source SNDD, but it's better to use the :sep or :nosep variants below<br />
|-<br />
|colspan="2"|<span style="padding-left:20px">To create level5_Final.dat/.raw[/.sep] from the files in MyNewLevel\: <code>OniSplit.exe -import C:\Oni\MyNewLevel\ C:\Oni\GameDataFolder\level5_Final.dat</code><span><br />
|-<br />
|<code>-import:sep <source directory> <new dat file></code>||Imports target file (.dat) from source directory; uses .dat/.raw/.sep format (Mac and PC Demo)<br />
|-<br />
|<code>-import:nosep <source directory> <new dat file></code>||Imports target file (.dat) from source directory; uses .dat/.raw format (PC retail)<br />
|}<br />
:Note that <tt>-import</tt> will search subdirectories too. If you find having hundreds or thousand of files .oni in one directory to be unmanageable you can always group them in subdirectories any way you like. The only exception is that a subdirectory named "noimport" or "_noimport" is always ignored.<br />
<br />
===Management of .oni files===<br />
Sometimes you want to move some .oni files out of a larger folder of .onis. You could do this manually, but OniSpit knows which files depend on others. It will also look for those dependencies in subfolders beneath the level of the file you supply the name of. The filename field supports wildcards. This is mostly used by the [[AE]] Installer rather than modders themselves.<br />
{|<br />
|<code>-deps <oni file></code>||Displays a list of .oni files that the specified .oni file depends on<br />
|-<br />
|<code>-copy <destination directory> <oni file></code>||Copies .oni file and its dependencies; skips file if it already exists at destination<br />
|-<br />
|<code>-move <destination directory> <oni file></code>||Moves an .oni file and its dependencies; skips file if it already exists at destination<br />
|-<br />
|<code>-move:overwrite <destination directory> <oni file></code>||Moves an .oni file and its dependencies; overwrites any existing .oni files<br />
|-<br />
|<code>-move:delete <destination directory> <oni file></code>||Moves an .oni file and its dependencies; doesn't overwrite; deletes source files<br />
|}<br />
<br />
===Conversion between .oni/.dat and 3rd party formats===<br />
====Textures====<br />
Unless mentioned otherwise, source filenames support wildcards. See [[AE:Modifying textures|HERE]] for a detailed tutorial. The <tt>-extract</tt> commands can work with .oni files (a single file or several files if you use the wildcard), or rip all the TXMPs from a .dat file.<br />
{|<br />
|<code>-extract:dds <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into DDS files<br />
|-<br />
|<code>-extract:tga <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into TGA files<br />
|-<br />
|<code>-extract:png <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into PNG files<br />
|-<br />
|<code>-create:txmp <destination directory><br>[-genmipmaps] [-nouwrap] [-novwrap]<br><nowiki>[-format:bgr32|bgra32|bgr555|bgra5551|bgra4444|dxt1]</nowiki><br>[-envmap:texture_name] <image file></code><br />
|valign=top|Creates .oni file from image file (PNG, TGA, or DDS)<br />
|}<br />
<br />
====Models====<br />
[[M3GM]]s, [[ONWC]]s, [[ONCC]]s can be exported to the Wavefront .obj and COLLADA .dae formats. For details see [[Importing character models]] and [[Importing weapon models]]. The generic <tt>-extract</tt> commands can work with .oni files (a single file, or several files if you use the wildcard), or rip all the TXMP from a .dat file. TRBS and ONCC support additional <tt>-noanim</tt> and <tt>-anim</tt> options for <tt>-extract:dae</tt>; see [[Importing character models]] for details. Imported geometry must only contain triangles.<br />
{|<br />
! style="width:540px"|<br />
|- valign="top"<br />
|<code>-extract:obj <destination directory> <dat/oni file></code>||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Wavefront OBJ files<br />
|- valign="top"<br />
|<code>-extract:dae <destination directory> <dat/oni file></code>||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Collada DAE files<br />
|-<br />
|<code>-create:m3gm <destination directory> [-tex:texture_name] <OBJ file></code>||Creates a M3GM .oni from an .obj file<br />
|-<br />
|<code>-create:trbs <destination directory> [-cel] [-normals] <DAE file></code>||Creates a TRBS .oni from a .dae file<br />
|}<br />
<br />
====Levels====<br />
OniSplit can convert AKEV files (level geometry) and the associated file types to and from DAE format:<br />
{|<br />
|<code>-extract:dae <destination directory> <AKEV.oni file></code>||Extracts 3D data in AKEV and related resources from dependencies into Collada file<br />
|}<br />
<br />
<br />
The next two steps are used on a folder in which you have placed the DAE and XML-formatted instances of the required files, as well as textures in TGA format. See [http://oni.bungie.org/community/forum/viewtopic.php?id=1515 HERE] for details.<br />
{|<br />
|- valign="top"<br />
|<code>-create <destination directory><br>[-genmipmaps] [-format:dxt1]<br><source directory></code>||Converts all AKEV and related instances to .oni files<br />
|- valign="top"<br />
|<code>-import:nosep <source directory><br><target file name>.dat</code>||The standard command for creating .dat/.raw files from .oni files (remember to use the import:sep option on Mac!)<br />
|}<br />
<br />
====Sounds====<br />
The sounds in Windows Oni are stored in WAV format, and on Macs are stored in AIFF format. This also means creating each of your SNDD files in both formats in order to work on both platforms.<br />
{|<br />
|<code>-extract:wav <destination directory> <dat/oni file></code>||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .wav files<br />
|-<br />
|<code>-extract:aif <destination directory> <dat/oni file></code>||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .aif files<br />
|}<br />
<br />
====Text====<br />
{|<br />
|<code>-extract:txt <destination directory> <dat/oni file></code>||Rips text data from a SUBT .oni file (or all SUBTs from a .dat) as .txt files<br />
|-<br />
|<code>-create:subt <destination directory> <TXT file></code>||Creates a SUBT .oni file from a .txt file<br />
|}<br />
<br />
====XML====<br />
One of the latest features is conversion of .oni files to and from an XML file, or an XML metafile and related 3rd-party format files. XML files are easier to read and edit.<br />
::Currently XML export/import is limited to files that do not have raw/sep parts. 2-way conversion is known to work for [[BINA]], [[CONS]], [[DOOR]], [[DPge]], [[FILM]], [[HPge]], [[IGHH]], [[IPge]], [[M3GM]], [[OBAN]], [[ONCC]], [[ONCV]], [[ONLD]], [[ONLV]], [[ONGS]], [[ONSK]], [[ONVL]], [[ONWC]], [[OPge]], [[OSBD]], [[PSpc]], [[PSpL]], [[PSUI]], [[TRAC]], [[TRAM]], [[TRIG]], [[TRGE]], [[TRMA]], [[TRSC]], [[TXMB]], [[TXMP]], [[WMCL]], [[WMDD]], [[WMM_]], [[WPge]].<br />
:::For detailed examples and tutorials, see [[XML|HERE]]<br />
{|<br />
|<code>-extract:xml <destination directory> <oni file></code>||Extracts .oni file and all related resources to XML files and 3rd-party formats<br />
|-<br />
|<code>-create <destination directory> <XML file></code>||Creates an .oni file from an XML file<br />
|}<br />
<br />
[[Category:Completed modding tools]][[Category:Bi-platform modding tools]][[Category:Modding tutorials]]</div>EdThttps://wiki.oni2.net/w/index.php?title=OniSplit&diff=22674OniSplit2013-06-03T17:46:44Z<p>EdT: /* Download links */</p>
<hr />
<div>{{TOCfloat|side=right}}<br />
'''OniSplit''', written by [[User_talk:Neo|Neo]], is an integral part of the [[Anniversary Edition]] and an essential modding tool on its own. It is able to import and export almost all kinds of Oni game data, including textures, sound, 3D models, level geometry and combat animations. Its name comes from its first feature, which was breaking Oni's level data files into individual resources. OniSplit incorporates the latest knowledge about Oni's game data, and it is currently the community's main modding tool.<br />
<br />
==Getting it==<br />
===Download links===<br />
* Latest release of OniSplit: [http://mods.oni2.net/node/38 v0.9.88.0]<br />
* The current GUI for OniSplit is [[Vago (tool)|Vago]]. '''You should try the GUI to see if it does what you need before working with OniSplit on the command line.'''<br />
<br />
===Requirements===<br />
OniSplit requires .NET 2.0 for Windows and the Mono framework for Mac OS X.<br />
<br />
* [http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe .NET 2.0 (x86)]; [http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x64.exe .NET 2.0 (x64)]<br />
* [http://www.go-mono.com/mono-downloads/download.html Latest version of mono (requires OS X 10.5+)]<br />
<br />
==Workflow==<br />
OniSplit is used in up to four different stages when modding:<br />
{|<br />
|rowspan="2"|<span style="font-size:150%">'''OUT'''</span><br />
|''Exporting'' - using the <tt>-export</tt> command, a [[Dat|level data file]] is broken into its component resources, .oni files.<br />
|-<br />
|style="border-style: solid; border-width: 0 0 1px 0"|''Extracting'' - using the <tt>-extract</tt> commands, .oni files are converted to standard-format files that can be edited in various third-party programs.<br />
|-<br />
|rowspan="2"|<center><span style="font-size:150%">'''IN'''</span></center><br />
|''Creating'' - using the <tt>-create</tt> commands, standard-format files are converted into .oni files.<br />
|-<br />
|''Importing'' - using the <tt>-import</tt> command, a folder of .oni files is combined into a level data file.<br />
|}<br />
<br />
Note that "extracting" refers to a conversion from one format to another, but "exporting" only refers to the creation of .oni files from a .dat file. When exporting, no conversion or re-formatting is taking place; the data is simply being copied out of a .dat (any connected binary data in .raw/.sep files will be concatenated to the data from the .dat when making the .oni).<br />
<br />
==Beginner's tips==<br />
{{Divhide|For users new to the command line or to OniSplit}}<br />
In Windows, you want to find the Command Prompt. The fastest way to get there is to bring up the "Run..." dialog with Windows+R, then type "cmd" and hit Enter.<br />
<br />
On Macs, the command line is found in the Terminal app (/Applications/Utilities) (press Command-Spacebar and type "Terminal" to get there faster).<br />
<br />
===OniSplit syntax===<br />
The basic syntax is:<br />
{|<br />
|-<br />
|'''Windows'''||<tt><span style="background:rgb(235,235,235); border-radius:0.33em;">OniSplit.exe</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-create:trbs</span> <span style="background:rgb(255,156,156); border-radius:0.33em;">C:\Games\Oni\SomeFolder</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-normals</span> <span style="background:rgb(156,255,156); border-radius:0.33em;">C:\Games\Oni\Modding\TRBSMyNewChar.dae</span></tt><br />
|-<br />
|'''Mac'''||<tt><span style="background:rgb(235,235,235); border-radius:0.33em;">mono OniSplit.exe</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-create:trbs</span> <span style="background:rgb(255,156,156); border-radius:0.33em;">/Games/Oni/SomeFolder</span> <span style="background:rgb(175,175,255); border-radius:0.33em;">-normals</span> <span style="background:rgb(156,255,156); border-radius:0.33em;">/Games/Oni/Modding/TRBSMyNewChar.dae</span></tt><br />
|}<br />
<br />
Here's how it breaks down:<br />
{|<br />
! style="width:130px"|<br />
|- valign="top"<br />
|<span style="background:rgb(235,235,235); border-radius:0.33em;">'''Invocation'''</span><br />
|Windows can refer to the program directly, but Macs use Mono to run the .NET app; note also that if OniSplit.exe is not in the Command Prompt/Terminal's current directory, you must provide the full path to it or set the path variable.<br />
|-<br />
|<span style="background:rgb(175,175,255); border-radius:0.33em;">'''Option'''</span>||The command.<br />
|- valign="top"<br />
|<span style="background:rgb(255,156,156); border-radius:0.33em;">'''Path to folder'''</span>||Whether destination or source, the folder path comes first. <u>Use the full path to the folder (starting from C:\, or "/" on Macs).</u> For most commands, OniSplit wants a destination folder name, not a file name; the files that OniSplit creates will be named automatically when they are placed in the destination folder. A rare exception is the <tt>-import</tt> command, where you need to supply the name of the level files to be created.<br />
|-<br />
|<span style="background:rgb(175,175,255); border-radius:0.33em;">'''Option flags'''</span>||The flags that can optionally go with this command, separated by spaces.<br />
|- valign="top"<br />
|<span style="background:rgb(156,255,156); border-radius:0.33em;">'''Path to file/folder'''</span>||Whether destination or source, the file path comes second. Sometimes the second parameter is also a folder, as with <tt>-create</tt>. <u>Use the full path to the folder (starting from "C:\", or "/" on Macs).</u><br />
|}<br />
<br />
===CLI tips===<br />
*Command-line interfaces (CLI) usually supply an auto-complete feature to save on typing. If you've typed enough of a file/folder name to identify it, press the Tab key and the rest should fill in. In Windows, you may not get the right path name autocompleted on the first try if there are multiple possible autocompletions based on the names in that directory, so keep pressing Tab to cycle through all possibilities. On Macs, if you have not typed enough of the name to narrow it down to a single autocompletion, you will hear an error sound. Double-tap Tab to see a list of possible autocompletions, then keep typing until you have narrowed it down to one of those and then hit Tab to fill in the rest of its name.<br />
<br />
*Note that you can also drag files/folders into the window and the path will magically appear; in cases where you don't need to use a wildcard, this is the fastest way to build an OniSplit command.<br />
<br />
===Wildcards===<br />
Wildcards can be used to supply patterns to CLI programs. The wildcard is simply the <tt>*</tt> character. For instance:<br />
OniSplit.exe -export:TRAM* <destination> <source .dat><br />
will export all the TRAMs in the source .dat into the destination folder. Using "TRAMKON*" would export all of Konoko's animations.<br />
<br />
===Spaces in paths===<br />
Command-line interfaces (CLI) do not recognize spaces as a possible part of a path name because spaces are what separate terms in your commands. The best course of action is to not use paths with spaces in their names! But if you must, you can use quotes to tell the CLI that a certain string is a single path:<br />
<br />
C:\Games\Oni\>OniSplit.exe -list "My Mod Folder\level5_Final.dat"<br />
<br />
This works in the Mac Terminal too, but you can also use the escape character, <tt>\</tt>. Also, other characters like <tt>(</tt> need to be escaped as well if you do not use quotes:<br />
<br />
iMac:Oni you$ mono OniSplit.exe -list My\ Mods\ \(In\ Progress\)/level5_Final.dat<br />
<br />
But as mentioned, the best practice is to not use any characters besides the alphabet and numbers. It makes your life simpler, and if you ask for help on the forum with a command, no one wants to have to read your long path with lots of spaces or escaped characters in it ;-)<br />
<br />
===Reading the commands below===<br />
*The following commands should be complete, but the current list can be obtained by calling OniSplit with the <tt>-help</tt> option (you should also use <tt>-version</tt> to make sure you're using the same version that's documented here).<br />
<br />
*Occasional sample usages are given after certain commands. These are in DOS style, so simply flip the <tt>\</tt>s to <tt>/</tt>s for Macs and make "C:\" into a leading "/" to indicate "root-level".<br />
<br />
*Optional flags are listed in square brackets simply to indicate that they're optional; don't enter the brackets when typing a command.<br />
<br />
Note that only the .dat file from a level's data files is mentioned. The .raw and .sep files will be accessed by OniSplit as necessary when working with the .dat file you supply the name of.<br />
{{Divhide|end}}<br />
<br />
==Commands==<br />
===Conversion between .dat and .oni===<br />
{|<br />
! style="width:430px"|<br />
|-<br />
|<code>-list <file name></code>||Lists the named resources contained in a .dat (see [[OBD:File_types/Named|HERE]] for info on unnamed resources)<br />
|-<br />
|<code>-export <destination directory> <dat file></code>||Breaks .dat file into .oni files<br />
|-<br />
|<code>-export:<pattern> <destination directory> <dat file></code>||Exports named resource (wildcards also allowed) from .dat file<br />
|- valign="top"<br />
|<code>-import <source directory> <new dat file></code>||Compiles level files from source directory using the name you supply for the .dat file; tries to get target file format from source SNDD, but it's better to use the :sep or :nosep variants below<br />
|-<br />
|colspan="2"|<span style="padding-left:20px">To create level5_Final.dat/.raw[/.sep] from the files in MyNewLevel\: <code>OniSplit.exe -import C:\Oni\MyNewLevel\ C:\Oni\GameDataFolder\level5_Final.dat</code><span><br />
|-<br />
|<code>-import:sep <source directory> <new dat file></code>||Imports target file (.dat) from source directory; uses .dat/.raw/.sep format (Mac and PC Demo)<br />
|-<br />
|<code>-import:nosep <source directory> <new dat file></code>||Imports target file (.dat) from source directory; uses .dat/.raw format (PC retail)<br />
|}<br />
:Note that <tt>-import</tt> will search subdirectories too. If you find having hundreds or thousand of files .oni in one directory to be unmanageable you can always group them in subdirectories any way you like. The only exception is that a subdirectory named "noimport" or "_noimport" is always ignored.<br />
<br />
===Management of .oni files===<br />
Sometimes you want to move some .oni files out of a larger folder of .onis. You could do this manually, but OniSpit knows which files depend on others. It will also look for those dependencies in subfolders beneath the level of the file you supply the name of. The filename field supports wildcards. This is mostly used by the [[AE]] Installer rather than modders themselves.<br />
{|<br />
|<code>-deps <oni file></code>||Displays a list of .oni files that the specified .oni file depends on<br />
|-<br />
|<code>-copy <destination directory> <oni file></code>||Copies .oni file and its dependencies; skips file if it already exists at destination<br />
|-<br />
|<code>-move <destination directory> <oni file></code>||Moves an .oni file and its dependencies; skips file if it already exists at destination<br />
|-<br />
|<code>-move:overwrite <destination directory> <oni file></code>||Moves an .oni file and its dependencies; overwrites any existing .oni files<br />
|-<br />
|<code>-move:delete <destination directory> <oni file></code>||Moves an .oni file and its dependencies; doesn't overwrite; deletes source files<br />
|}<br />
<br />
===Conversion between .oni/.dat and 3rd party formats===<br />
====Textures====<br />
Unless mentioned otherwise, source filenames support wildcards. See [[AE:Modifying textures|HERE]] for a detailed tutorial. The <tt>-extract</tt> commands can work with .oni files (a single file or several files if you use the wildcard), or rip all the TXMPs from a .dat file.<br />
{|<br />
|<code>-extract:dds <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into DDS files<br />
|-<br />
|<code>-extract:tga <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into TGA files<br />
|-<br />
|<code>-extract:png <destination directory> <dat/oni file></code>||Extracts all textures (TXMP) from a Oni .dat/.oni file into PNG files<br />
|-<br />
|<code>-create:txmp <destination directory><br>[-genmipmaps] [-nouwrap] [-novwrap]<br><nowiki>[-format:bgr32|bgra32|bgr555|bgra5551|bgra4444|dxt1]</nowiki><br>[-envmap:texture_name] <image file></code><br />
|valign=top|Creates .oni file from image file (PNG, TGA, or DDS)<br />
|}<br />
<br />
====Models====<br />
[[M3GM]]s, [[ONWC]]s, [[ONCC]]s can be exported to the Wavefront .obj and COLLADA .dae formats. For details see [[Importing character models]] and [[Importing weapon models]]. The generic <tt>-extract</tt> commands can work with .oni files (a single file, or several files if you use the wildcard), or rip all the TXMP from a .dat file. TRBS and ONCC support additional <tt>-noanim</tt> and <tt>-anim</tt> options for <tt>-extract:dae</tt>; see [[Importing character models]] for details. Imported geometry must only contain triangles.<br />
{|<br />
! style="width:540px"|<br />
|- valign="top"<br />
|<code>-extract:obj <destination directory> <dat/oni file></code>||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Wavefront OBJ files<br />
|- valign="top"<br />
|<code>-extract:dae <destination directory> <dat/oni file></code>||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Collada DAE files<br />
|-<br />
|<code>-create:m3gm <destination directory> [-tex:texture_name] <OBJ file></code>||Creates a M3GM .oni from an .obj file<br />
|-<br />
|<code>-create:trbs <destination directory> [-cel] [-normals] <DAE file></code>||Creates a TRBS .oni from a .dae file<br />
|}<br />
<br />
====Levels====<br />
OniSplit can convert AKEV files (level geometry) and the associated file types to and from DAE format:<br />
{|<br />
|<code>-extract:dae <destination directory> <AKEV.oni file></code>||Extracts 3D data in AKEV and related resources from dependencies into Collada file<br />
|}<br />
<br />
<br />
The next two steps are used on a folder in which you have placed the DAE and XML-formatted instances of the required files, as well as textures in TGA format. See [http://oni.bungie.org/community/forum/viewtopic.php?id=1515 HERE] for details.<br />
{|<br />
|- valign="top"<br />
|<code>-create <destination directory><br>[-genmipmaps] [-format:dxt1]<br><source directory></code>||Converts all AKEV and related instances to .oni files<br />
|- valign="top"<br />
|<code>-import:nosep <source directory><br><target file name>.dat</code>||The standard command for creating .dat/.raw files from .oni files (remember to use the import:sep option on Mac!)<br />
|}<br />
<br />
====Sounds====<br />
The sounds in Windows Oni are stored in WAV format, and on Macs are stored in AIFF format. This also means creating each of your SNDD files in both formats in order to work on both platforms.<br />
{|<br />
|<code>-extract:wav <destination directory> <dat/oni file></code>||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .wav files<br />
|-<br />
|<code>-extract:aif <destination directory> <dat/oni file></code>||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .aif files<br />
|}<br />
<br />
====Text====<br />
{|<br />
|<code>-extract:txt <destination directory> <dat/oni file></code>||Rips text data from a SUBT .oni file (or all SUBTs from a .dat) as .txt files<br />
|-<br />
|<code>-create:subt <destination directory> <TXT file></code>||Creates a SUBT .oni file from a .txt file<br />
|}<br />
<br />
====XML====<br />
One of the latest features is conversion of .oni files to and from an XML file, or an XML metafile and related 3rd-party format files. XML files are easier to read and edit.<br />
::Currently XML export/import is limited to files that do not have raw/sep parts. 2-way conversion is known to work for [[BINA]], [[CONS]], [[DOOR]], [[DPge]], [[FILM]], [[HPge]], [[IGHH]], [[IPge]], [[M3GM]], [[OBAN]], [[ONCC]], [[ONCV]], [[ONLD]], [[ONLV]], [[ONGS]], [[ONSK]], [[ONVL]], [[ONWC]], [[OPge]], [[OSBD]], [[PSpc]], [[PSpL]], [[PSUI]], [[TRAC]], [[TRAM]], [[TRIG]], [[TRGE]], [[TRMA]], [[TRSC]], [[TXMB]], [[TXMP]], [[WMCL]], [[WMDD]], [[WMM_]], [[WPge]].<br />
:::For detailed examples and tutorials, see [[XML|HERE]]<br />
{|<br />
|<code>-extract:xml <destination directory> <oni file></code>||Extracts .oni file and all related resources to XML files and 3rd-party formats<br />
|-<br />
|<code>-create <destination directory> <XML file></code>||Creates an .oni file from an XML file<br />
|}<br />
<br />
[[Category:Completed modding tools]][[Category:Bi-platform modding tools]][[Category:Modding tutorials]]</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:OniSplit&diff=22673Talk:OniSplit2013-06-03T17:46:02Z<p>EdT: /* Change Log */ v0.9.88</p>
<hr />
<div>Talk page archives: [[/Archive1|#1]]<br />
<br />
==Change Log ==<br />
OniSplit version: OniSplit v0.9.88<br />
<br />
What's new:<br />
:* Fixes bugs with Import/Export of M3GMs (obj files).<br />
:* Fixes euler angle issues with exported TRAMs.<br />
:* Fixes -noanim command to produce a standing pose.<br />
:* In the ONWC file, you should be able to reference the dae/obj file directly then you don't need the separate M3GM.<br />
:* When exporting AKEV, quads that have script ids assigned to them are exported to separate files. This is related to BSL commands such as env_show 540 0<br />
:* Adds option -anim-merge to export multiple animations to a single dae. Useful in dealing with walk/run or combo animations.<br />
<br />
onisplit -extract:xml <destination directory> -anim-merge -anim-body:src\Path_To_\TRBSkonoko_body_high.oni Path_To\TRAMKONCOMcomb_k.oni Path_To\TRAMKONCOMcomb_k_k.oni Path_To\TRAMKONCOMcomb_k_k_k.oni<br />
<br />
:* Adds a scene exporter<br />
<br />
OniSplit -export:xml <destination directory> scene.xml<br />
<br />
For example if the scene.xml file looks like this <br />
<br />
<Scene><br />
<Node Name="camera"><br />
<Camera /><br />
<Animation>OBANCamout01.oni</Animation><br />
<Animation>OBANCamout02.oni</Animation><br />
<Animation>OBANCamout03.oni</Animation><br />
<Animation>OBANCamout04.oni</Animation><br />
<Animation>OBANCamout05.oni</Animation><br />
<Animation>OBANCamout06.oni</Animation><br />
</Node><br />
<Node Name="motorcycle02"><br />
<Geometry>M3GMmotorcycle02.oni</Geometry><br />
<Animation>OBANmotorcycle02.oni</Animation><br />
<Animation>OBANmotorcycle02_stop.oni</Animation><br />
<Node Name="hubs"><br />
<Geometry>M3GMhubs.oni</Geometry><br />
<Animation>OBANhubs.oni</Animation><br />
<Animation>OBANhubs_stop.oni</Animation><br />
</Node><br />
<Node Name="hubs_rear"><br />
<Geometry>M3GMhubs_rear.oni</Geometry><br />
<Animation>OBANhubs_rear.oni</Animation><br />
<Animation>OBANhubs_rear_stop.oni</Animation><br />
</Node><br />
</Node><br />
</Scene><br />
<br />
When you load the dae in XSI you'll find the motorcycle and the lab level intro camera<br />
If you select the camera and press play you'll get to see the motorcycle into animation like you see it in game <br />
<br />
<br />
OniSplit version: OniSplit v0.9.52<br />
<br />
What's new:<br />
:* When a TRBS file is exported to xml the geometry is exported to separate .dae files, one .dae file for each LOD<br />
:* New -anim-body option. This allows a particular body (ONCC or TRBS) to be specified when exporting animations:<br />
<br />
onisplit -extract:xml out -anim-body:ONCCbarabus.oni TRAMsomething.oni<br />
<br />
:* New -recurse option for the xml exporter. Have fun :)<br />
<br />
onisplit -extract:xml out -recurse ONCCbarabus.oni<br />
<br />
:* Changed light color in the environment importer to white (it used to be blueish)<br />
:* New -env-notxmp option. This prevents the automatic creation of TXMP files while importing the environment.<br />
:* Made -normals work when importing TRBS from xml + dae files.<br />
:* Fixed the Collada importer to work with 3DSMax exported files<br />
<br />
OniSplit version: OniSplit v0.9.40<br />
<br />
What's new:<br />
<br />
:* support for exporting/importing [[OBD:BINA/SABD|sound animations]] to/from xml files<br />
:* better Collada export for environment<br />
:* support for full color transparent textures (-format:bgra32 on the command line, ARGB8888 format in an xml file)<br />
:* different (hopefully better) xml export format for animations (this one is actually from 0.9.38 but since that wasn't mentioned here...)<br />
:* a more or less complete animation importer. This one deservers some notes:<br />
::-unlike other importers that produce .oni files this one produces and .xml file (similar to the one you get when exporting a TRAM)<br />
::when you do<br />
onisplit -create:tram target_dir animation.dae<br />
::in the target dir you'll get a TRAManimation.xml file.<br />
::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.<br />
::-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.<br />
::-Note that the geometry that is present inside the Collada file is used to compute the "vertical extents" so it better be the same or close to the one the animation is intended for.<br />
::-The biggest problem are the attacks. While it's not difficult to add attacks to the xml file, computing the necessary "extents" is not going to be easy. I guess in the end I'll have to add some command to OniSplit to do it.<br />
::-Everything else that I forgot :)<br />
<br />
[[User:Neo|Neo]]<br />
<br />
New OniSplit version: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit|_v0.9.37.zip OniSplit v0.9.37]<br />
<br />
What's new:<br />
<br />
:* support for transparency in the environment importer<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.35<br />
<br />
What's new:<br />
<br />
:* conversion of recorded films (.dat binary files) to xml files that can be used to create FILM .oni files<br />
<br />
OniSplit film2xml out_dir film.dat<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.34<br />
<br />
What's new:<br />
<br />
:* SNDD importer<br />
::-WAV files (.wav, mono/stereo, 22.05KHz/44.1KHz, uncompressed(PCM)/compressed(MS-ADPCM)) produce SNDD files that are compatible with Oni PC retail.<br />
::-AIFC files (.aif/.aifc/.afc, mono/stereo 22.05KHz, compressed(ima4)) produce SNDD files that are compatible with Oni Mac.<br />
::Example<br />
<br />
<br />
<br />
OniSplit -create out_dir test.aif<br />
OniSplit -create out_dir test.wav<br />
<br />
<br />
:*LOD support for creating TRBS files. This can be done by creating an xml file containing the following:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni Version="0.9.29.0"><br />
<Instance id="0" type="TRBS"><br />
<Elements><br />
<Link>barabus_body_1.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_3.dae</Link><br />
<Link>barabus_body_4.dae</Link><br />
<Link>barabus_body_5.dae</Link><br />
</Elements><br />
</Instance><br />
</Oni><br />
<br />
::and running the command (assuming the created xml file's name is barabus_body.xml):<br />
<br />
OniSplit -create out_dir barabus_body.xml<br />
<br />
::It's not strictly necessary to create 5 different geometries for each LOD. The following works just as well:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<Oni Version="0.9.29.0"><br />
<Instance id="0" type="TRBS"><br />
<Elements><br />
<Link>barabus_body_1.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_2.dae</Link><br />
<Link>barabus_body_3.dae</Link><br />
</Elements><br />
</Instance><br />
</Oni><br />
<br />
<br />
:*An xml file can contain "links" to other xml/obj/dae files. For example you can have the following line in an ONWC xml file:<br />
<br />
<Geometry>pistol.obj</Geometry><br />
<br />
::Assuming the file pistol.obj exists in the same directory an M3GM .oni file will be automatically created from it.<br />
<br />
::Relative paths work just as well:<br />
<br />
<Geometry>geometry/pistol.obj</Geometry><br />
<br />
<br />
:*The -create:subt, -create:txmp and -create:m3gm are sort of obsolete. They still work but now you can simply use '-create' (or just 'create'):<br />
<br />
OniSplit -create out_dir crate.dae<br />
OniSplit create out_dir -format:bgr555 -genmipmaps pic.tga<br />
OniSplit create out_dir subtitles.txt<br />
<br />
<br />
:*Work in progress: the AKEV importer now reads Collada materials so the resulting AKEV is textured.<br />
<br />
:Sample levels:<br />
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/noglass.zip TestLevel1] -- This level should look like this in-game: <u>[[:Image:NoGlass Import Test 1.jpg|Image 1]]</u> <u>[[:Image:NoGlass Import Test 2.jpg|Image 2]]</u> <u>[[:Image:NoGlass Import Test 3.jpg|Image 3]]</u><br />
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/hexagon.zip TestLevel2] -- This level should look like this in-game: <u>[http://edt.oni2.net/images/hexagon1.jpg Image 1]</u><br />
:A zip file contains the minimum needed to get a new level running in Oni. To "compile" a level extract it to a folder and run the following commands:<br />
<br />
OniSplit -create out -genmipmaps -format:dxt1 *.xml<br />
OniSplit -import:nosep . Oni\GameDataFolder\level1_Final.dat<br />
<br />
:(Of course, you need to change the output .dat file path to match your Oni installation path)<br />
<br />
:Note1: The hexagon level needs to be scaled up to work properly. Use the envscale option for this:<br />
OniSplit -create out -genmipmaps -format:dxt1 -envscale:40 *.xml<br />
<br />
:Note2: I've updated the level files to contain 20 empty corpses to prevent crashes.</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:EdT&diff=22507User talk:EdT2013-05-07T23:09:22Z<p>EdT: </p>
<hr />
<div>'''Talk page archives''': [[User_talk:EdT/Archive1|#1]]<br />
<br />
Phew, another dusty talk page! *cough cough* I just wanted to draw your attention to [[User_talk:Iritscen#slowmo|this conversation]], which is in reference to [http://wiki.oni2.net/w/index.php?title=PC_vs_Mac&diff=22319&oldid=22248 this edit of mine]. Thanks. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:59, 7 May 2013 (CEST)<br />
<br />
::Cleaned up all the dust. :) [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 00:41, 8 May 2013 (CEST)<br />
<br />
::: Mm, yes, but... :-S well, it's much better to archive it then delete it. There's a lot of history back there, like when geyser helped you patch the Mac app and we experimented with plugins. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:47, 8 May 2013 (CEST)<br />
<br />
::::Archived. Thanks for the suggestion. [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 01:09, 8 May 2013 (CEST)</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:EdT/Archive1&diff=22506User talk:EdT/Archive12013-05-07T23:06:58Z<p>EdT: Archived not deleted :)</p>
<hr />
<div>:Hi Ed,<br />
:Here's a tentative fix for the mismapped enter key in the OSX port:<br />
:*go to the offset '''0x1B6050'''<br />
:*you should see '''0D 00 00 0A''' (Oni's "enter" bound to external "return")<br />
:*change it to '''0D 00 00 0D''' (Oni's "enter" bound to external "enter")<br />
:It should work. Please confirm.<br />
::[[User:Geyser|geyser]] 04:29, 2 January 2007 (CET)<br />
----<br />
<br />
:Second, open your '''key_config.txt''', and make it look something like this:<br />
unbindall<br />
<br />
bind w to forward<br />
bind a to stepleft<br />
bind s to backward<br />
bind d to stepright<br />
bind q to swap<br />
bind e to drop<br />
bind f to punch<br />
bind c to kick<br />
<br />
bind space to jump<br />
bind leftshift to crouch<br />
<br />
bind mousebutton1 to fire1<br />
bind mousebutton2 to fire2<br />
bind mousebutton3 to fire3<br />
bind mousexaxis to aim_LR<br />
bind mouseyaxis to aim_UD<br />
<br />
bind fkey1 to pausescreen<br />
bind v to lookmode<br />
bind z to walk<br />
bind leftcontrol to action<br />
<br />
bind tab to hypo<br />
bind r to reload<br />
bind fkey12 to screenshot<br />
<br />
#bind p to forward<br />
#bind l to stepleft<br />
#bind apostrophe to stepright<br />
#bind semicolon to backward<br />
#bind o to swap<br />
#bind leftbracket to drop<br />
#bind k to punch<br />
#bind comma to kick<br />
#bind enter to walk<br />
<br />
bind p to man_cam_move_forward<br />
bind l to man_cam_move_left<br />
bind apostrophe to man_cam_move_right<br />
bind semicolon to man_cam_move_backward<br />
bind leftarrow to man_cam_pan_right<br />
bind rightarrow to man_cam_pan_left<br />
bind rightshift to man_cam_move_up<br />
bind rightcontrol to man_cam_move_down<br />
:Allow for some variations, of course. Adopt, adapt and improve.<br />
:The basic idea is that the left-handed controls ''are'' mapped properly.<br />
:And we never use them. So? let's map them to '''man_cam_...''' instead!<br />
:'''leftarrow''' and '''rightarrow''' are consistent with the auto-bound '''uparrow''' and '''downarrow'''.<br />
:You may want to use '''pageup''' and '''pagedown''' instead of '''rightshift''' and '''rightcontrol'''.<br />
<br />
:Note that you'll hardly ever use anything but the equivalent of WASD, i.e.:<br />
:*man_cam_move_forward<br />
:*man_cam_move_left<br />
:*man_cam_move_right<br />
:*man_cam_move_backward<br />
:Why? Because in camera mode 2 (press Enter twice), you can aim up, and then '''man_cam_move_forward''' makes you go up much faster than '''man_cam_move_up''' would. Same for going down.<br />
<br />
:The only occasion on which you'll use the other 6 keys is when you want to:<br />
::move the camera away so as to get a nice remote view<br />
::''and'' keep mouse control over Konoko<br />
:That's what camera mode 1 is for. Then you need the whole lot. And you got it.<br />
::[[User:Geyser|geyser]] 16:55, 4 January 2007 (CET)<br />
<br />
----<br />
Just wanted to thank you for the work on the modding tutorials (TXMP, adding char.s). That's some really important info. Also, I had a thought about the topic I brought up above, glass-breaking. Since the hack makes the dust particle break glass, can't we mod a move to generate dust if we want that move to break glass? It's still my goal at some point to see a mod that allows Konoko to break glass when she has a weapon in hand, and punches with it. I noticed we have [[OBD:TRAM/raw0x2C|specific documentation]] that shows where an animation can generate a particle. I bet we could just mod that to generate the glass-breaking particle. What do you think? --[[User:Iritscen|Iritscen]] 15:47, 17 April 2008 (CEST)<br />
<br />
----<br />
I've been meaning to get the tutorials up, hopefully, it will help others to do more modding.<br />
<br />
I think it is a good idea, I found the post with Loser's glass breaking hack:<br />
http://oni.bungie.org/community/forum/viewtopic.php?pid=2856#p2856<br />
<br />
[[User:EdT|EdT]]<br />
----<br />
:[http://geyser.oni2.net/edition/characters/cosplay_motoko.zip HERE] is what I meant by more creative choice of body part meshes. She still looks like a cosplayer, but not a completely lame one at that. Obviously I haven't touched the textures at all.<br />
::[[User:Geyser|geyser]] 01:47, 5 May 2008 (CEST)<br />
----<br />
:And another thing. [http://geyser.oni2.net/edition/characters/cosplay_level.zip HERE] you'll find a dat/raw/sep set that you can place in your GameDataFolder (use the ones with the "Mac" suffix; PC dudes would of course use the ones with the "PC" suffix).<br />
:In order for Oni to load those plugins, you have to modify a byte in the engine (both on Mac and on PC). Here are the instructions, let us know if it works on the Mac:<br />
:*for the Mac executable (OMNI):<br />
::go to 0x0E2D19 and change 7A to 9A<br />
:*for the PC demo executable:<br />
::go to 0x021148 and change 00 to 01<br />
:*for the PC retail executable ("standard" a.k.a. "eastern" a.k.a. [http://geyser.oni2.net/EXE/pc.east THIS] one):<br />
::go to 0x0206A8 and change 00 to 01<br />
:In case you're wondering: yes, it's a little big revolution. There are a few limitations, but mods will be much more modder- and user-friendly with this feature.<br />
::[[User:Geyser|geyser]] 04:41, 5 May 2008 (CEST)<br />
<br />
<br />
Wow! <br />
<br />
I made the change in the Oni and the plugin loaded as you can see here:<br />
:Got Level Info for level0_CosplayMac.dat.<br />
:Valid Level level0_CosplayMac.dat<br />
<br />
EDIT: I see what it does, it loads the cosplay Konoko as a global character. <br />
<br />
EDIT2: Are you limited to a single character or could you, for example, make a plugin with all 3 versions of the Masterchief, plus any other new content? <br />
<br />
I look forward to more info on how this can be done.<br />
<br />
I can see how this will make it much easier for the end user, just put the files in the GameDataFolder and you're done!<br />
<br />
Also, thanks for the cosplay model. I still have lots to learn about using the right meshes. But It seems the facets in my Motoko model are a result of the FBX converter. I did another extract of ONCCk4_K and then converted the .dae to fbx. If you're interested, you can see the results here; http://edt.oni2.net/3D/ONCCk4_K.zip<br />
<br />
[[User:EdT|EdT]] 06:55, 5 May 2008 (CEST)<br />
<br />
Wow, geyser, you are full of surprises. I do have to say that it didn't work for me last night. I changed the byte to 9A, verifying that it was 7A to begin with. I put the cosplay .dat/.raw/.sep files in the GDF. But when I loaded a level and used F8, I didn't find any new Konokos. Still, it worked for Ed, so that means I probably just did something wrong. This is really amazing. We demand details! How does this work, what are the limitations, etc. And thanks! --[[User:Iritscen|Iritscen]] 15:28, 6 May 2008 (CEST)<br />
:Ed: As for the FBX conversion, I guess you'll have to tell us what you're converting ''with''. It looks like the model is not completely faceted, but was auto-smoothed with a rather small smoothing angle. You should be able to fine-tune that angle or to switch to full smoothing.<br />
:It's good to hear that the plugin worked for you. There is no limitation as for what a plugin can hold. You can, for example, split level0_Final into several smaller bundles/folders, with modularity and quick import in mind. You can also have level-specific plugins (e.g., OBJC).<br />
:There is, however, a limitation as for the number of .dat files detected by Oni at startup (and also as for the number of .dat files loaded simultaneously). The former limitation is the most relevant to you since OMNI's engine can only "see" 16 .dat files, which is quite minimal.<br />
:Iritscen: try to at least fake some patience, for the sake of our [[friend]]ship. It works simply because the public versions of Oni have an internal test, whereby they only accept "_Final.dat" as valid level files: we've merely disabled that check. And it's not Russian power because I'm just the middleman here.<br />
:As for you not seeing any new Konokos (technically, it's a Motoko we're talking about), Motoko is supposed to be at the very start of the F8 loop (meaning that after enabling shapeshifting you'll get her with F8,Shift+F8 or Shift+F8,F8. You can also check startup.txt to see if the .dat was loaded correctly.<br />
:Once the engine is patched to allow for non-Final files, you can use OniSplit to create [[dat|instance files]] with any name (although you still can't use "_tools" or "_Tools"; there's another check for that, which we consider a minor limitation).<br />
:It is critical that you create the files with OniSplit. Renaming them by hand won't work, because the name of the file is hashed and used throughout the [[dat|instance file]] as a key (BTW, Ed, looks like Dox and you did double work here; sorry).<br />
:Of course, the files are sepness-specific, so if you mean to distribute plugins to both Mac and PC users, you'll have to build a dat/raw/sep set ''and'' a dat/raw set like I did for the example above (and the examples below).<br />
:To get a feel for the possible applications and for the limitations of OMNI's engine, try the following two plugins.<br />
:*a global "BGI" plugin featuring a bunch of Spartans and the tentative machinegun thingie:<br />
::http://geyser.oni2.net/edition/plugins/level0_BGI.zip<br />
:*a local instance file supposed to alter the character lineup in {{C|2}}:<br />
::http://geyser.oni2.net/edition/plugins/level2_OBJC.zip<br />
:If you place both of these in your GDF and then look at the startup file (and at the Load Game dialog), you should notice that level9_Final ( {{C|7}} ) failed to load (and maybe other chapters if you've kept the Cosplay around). That's the 16-instance-file limitation issue. If we can't fix OMNI's engine, you'll have to play Oni one "act" at a time (something like 6 chapters + level0 + plugins).<br />
:All limitations aside, the effect of the plugins depends on the order in which they are listed and on the type of instance inside. The characters and weapon in level0_BGI end up ''before'' those in level0_Final, but it's the BINACJBOCharacter from ''level2_OBJC'' that is used, even though level2_OBJC is loaded ''after'' level2_Final. Not too intuitive, but hopefully there are firm rules that apply here.<br />
::[[User:Geyser|geyser]] 04:53, 8 May 2008 (CEST)<br />
:My problem with the machine gun is that it has non-planar quads triangulated the wrong way (meaning 17secs didn't really do his job as a modeler), and that it has a rather plain look and feel. See it as just an example.<br />
:The Spartans have a few remaining issues (apart from them being stolen from Halo, of course).<br />
:*The downsampled and posterized texture (that can only be fixed by remapping the whole thing; then again, the env mapping does a good job at concealing the ugly bits).<br />
:*The awkward look of the shoulder joints while aiming (that's an Oni-wide animation issue, even if it looks especially bad here; maybe the skeleton needs another polish, too).<br />
:*The environment maps won't look "exactly right" unless there are weighted normals (again, this is a general issue in Oni; unweighted normals = ugly Gouraud and envmaps).<br />
::[[User:Geyser|geyser]] 04:53, 8 May 2008 (CEST)<br />
<br />
:::How am I lacking patience? I tried it and it didn't work. There was nothing else for me to try so I reported my problem so you guys could help me. EdT did so by sending me his version of the modded app. Although I think I applied the hack properly, his copy had debugging msgs enabled, and I realized that as I switched characters, it was skipping every other one. Char 1 --> Char 3 --> Char 5, and looping around to hit the even numbers, 2, 4, 6, etc. I still cycled through every character eventually, but didn't see Motoko. Then I realized that if I turned 'shapeshifter' off, it didn't skip characters ^_^' I've always been in the habit of turning it on right after turning on 'killmequick', because it seemed that shape-shifting didn't work properly otherwise. But now it seems to. So, yeah, apparently having shapeshifter enabled twice means each F8 advances two characters, not one. It also skips #0, which is how it identifies Motoko, even when it's doing evensies, apparently because some code thinks that zero is not even, so it starts at 2. But I guess the solution is simply, Don't enable 'shapeshifter' with the Edition. Heh.<br />
:::Re the 16 level limit, I'm no hacker, but that should be as easy to fix as disabling the check for "_Final". It's also much more important than disabling that check. It's a small thing to have to name a mod patch "yadayada_Final" in order to go along with the original name-check system, but it's a real shame if every patch installed knocks out a level of the game. But I would think it would be easy enough to change a '16' to at least a '31' in the code, if it can be found in the first place. Oh well, I look forward to trying those "plugins".<br />
:::--[[User:Iritscen|Iritscen]] 15:59, 8 May 2008 (CEST)<br />
<br />
Reporting in... kinda of busy right now, so it will be brief<br />
<br />
I was able to load all the levels, none were missing, so it looks like there is no 16 instance file limits. Here's the startup file: http://edt.oni2.net/OniSplit/startup.txt<br />
<br />
An army of Spartans, cool.<br />
<br />
I used FBX converter by AutoDesk, the one Neo mentioned, there are no options for Collada import or export (At least in the GUI)<br />
<br />
When you have time, please post instructions on how to create the instance files, I would like to give it a test.<br />
<br />
Iritscen: Once I'm in Dev Mode, all I need to do it press F8 to shapeshift or F7 to cycle weapons, I don't need to enter shapeshfter again.<br />
<br />
[[User:EdT|EdT]] 17:00, 8 May 2008 (CEST)<br />
<br />
::Okay, that's great news; so maybe we don't need to worry about that level limit. And yeah, Ed, I knew that shapeshifter was supposed to work without entering the specific code, but there was some reason traditionally why I always did that, like the Edition's shapeshifting wasn't cycling backwards when you hit Shift-F8 or something. Maybe I was mistaken, since that works now. --[[User:Iritscen|Iritscen]] 17:42, 8 May 2008 (CEST)<br />
<br />
Regarding the 16 .dat files limit: I'd suggest someone check if all levels are actually loading.<br />
<br />
[[User:Neo|Neo]]<br />
:Ed, I second Neo's request. You ''did'' say "I was able to load all the levels", but could you please confirm:<br />
:*that you can indeed load and play every one of Oni's 14 chapters<br />
:*that the "army of Spartans" (and cosplay Motoko) is available globally <br />
:*that the character lineup in Chapter 2 is modified as expected (Barabas at the start and Muro at the end)<br />
:I mean, the 16-dat limit is a major issue to us, so we can't accept it's gone without a thorough check.<br />
:About the Collada-FBX conversion, well, it's a shame that Autodesk's converter has no custom settings.<br />
:However, Cheetah almost certainly allows you to recompute the normals, so that the FBX has no facets.<br />
:Then there's a chance that the resulting FBX will be converted back to Collada without any trouble.<br />
:If Autodesk's converter introduces automatic smoothing on the way back, too, there'll be a problem.<br />
:Perhaps the best way around it is to let OniSplit autogenerate normals (there's a -normals tag now).<br />
::[[User:Geyser|geyser]] 19:39, 8 May 2008 (CEST)<br />
:Iritscen, '''shapeshifter''' is totally redundant of the DevMode. Maybe you used to have problems with Shift+F8 because of the Shift key not being bound or something. Anyway, glad it works for you now. One thing, though. There's no reason why the "double shapeshifter" should ignore 0, so you may want to double-check that. As a matter of fact Oni doesn't care about anything being "even" there, and it ''just'' acts as if you kept pressing F8 twice in a row. So I kinda doubt your report about 0, sorry.<br />
:By "patience" I merely meant that you could have avoided "We demand details!". I ''know'' it's not serious, but ''you'' know I hate that crap. You don't need to fake enthusiasm like that, and if it's not faked, then you have a problem ^_^<br />
:As for your suggestion about "yadayada_Final", you don't really know what you're talking about. The "_Final" the engine used to check for is supposed to come ''right after'' the "level#" sequence, and '''level0_yadayada_Final''', for example, is ''not'' a "_Final" name (neither is '''level0_Final_yadayada''')<br />
:The 16 can't be changed easily, or else we (me and the ''expert hacker'' I represent) wouldn't have been so alarmed/pessimistic about it. We ''do'' know where it is, but if it wasn't for the lucky fact that the 16 is somehow ignored, you would have had to load and play Oni one "act" at a time, most likely.<br />
::[[User:Geyser|geyser]] 20:16, 8 May 2008 (CEST)<br />
:::Sorry to interject, but I didn't realize that OniSplit could generate normals. They're smoothed? Also, is it at all possible that the Mac does not have the same limitation as the PC version? It could even be a difference in the width of the variable that is declared, on the Mac vs. the PC. Just throwing that out there. --[[User:Iritscen|Iritscen]] 19:51, 8 May 2008 (CEST)<br />
:The -normals option was requested (by me) some time ago, but only appeared in the latest not-quite-release of OniSplit (0.9.9). It only works for TRBS right now, and still needs some checking.<br />
:These normals are totally smooth and "angle-based": the vertex normal is a weigthed sum of the normals of all adjacent faces, the weight being the angle of every face's corner at that vertex. This weighting provides much more accurate normals than an unweighted sum, and hence better-looking Gouraud shading and environment mapping.<br />
:As for the limitation, it is of course different on PC and on Mac. On PC, there's no 16 anywhere to see: we can have 512 .dat files in GDF at Oni startup and 64 can be loaded simultaneously. The 64 limit is apparently the same on every version, but the 512 limit is a 16 on Mac and PC demo, apparently ignored (so, no limit?).<br />
::[[User:Geyser|geyser]] 20:16, 8 May 2008 (CEST)<br />
:::Or does that mean 64 is the limit? I will test this myself when I get the opportunity. --[[User:Iritscen|Iritscen]] 20:31, 8 May 2008 (CEST)<br />
:No, technically, 64 is about the simultaneously ''loaded'' instance files, not the ones detected at startup. Like, level0_Final and 31 level0_ plugins, and then level9_Final and 31 level9_ plugins (that said, you no longer need to have a _Final file at all. the names can be anything).<br />
:Oh, and I see I forgot do address Ed's question about how to make those plugins. I already told you. They're ''just'' files built the usual way, with -import:sep or -import:nosep. The only difference is that the target name no longer has to be level#_Final. No changes at all apart from that.<br />
::[[User:Geyser|geyser]] 20:51, 8 May 2008 (CEST)<br />
<br />
Sorry, didn't enough time to test all levels when I posted my original comment.<br />
:All levels loaded and can be played except for Level 8 TCTF Headquarters. Thus 17 instances loaded? 0-16?<br />
:Spartans and cosplay are global<br />
:Character lineup has changed with Barabas and Muro<br />
<br />
Anything else I should test?<br />
<br />
Too many things going on in real life...<br />
[[User:EdT|EdT]] 22:44, 8 May 2008 (CEST)<br />
:Please confirm: does '''startup.txt''' look like the one you posted previously (all 18 .dat files listed and reported as valid)?<br />
:What about level8 a.k.a. Chapter 6? What can you say about the way that it "can't be played"? Not visible in Load Game?<br />
:What about level9 a.k.a. Chapter 7? Could it be that you've skipped it when testing all the levels? Please check again...<br />
::[[User:Geyser|geyser]] 03:51, 9 May 2008 (CEST)<br />
:Hm, I'm testing with the PC demo and I get a behavior similar to yours, Ed. Here's what I'm doing (Neo, you too, listen up).<br />
:I generated [http://geyser.oni2.net/edition/plugins/level0_Crap.zip A BATCH OF level0_Crap# FILES] from the chaingun thingie and managed to saturate GameDataFolder with them.<br />
:First, the results with a clean demo (with only level0_Final, level1_Final and level4_Final in GDF to start with)<br />
:*If I put all 16 Crap files into GDF (that makes 16 + 3 = 19), Oni exits (no Blam) while "loading level 0..."<br />
:*If I only use 15 Crap files (that makes 15 + 3 = 18), Oni lets me play level 4, but Blams upon loading level 1.<br />
:*If I only use 14 Crap files (that makes 14 + 3 = 17), Oni lets me play level 1, but Blams upon loading level 4.<br />
:*If I only use 13 Crap files (that makes 13 + 3 = 16) or less, Oni starts normally and lets me load either level.<br />
::(in all these cases startup.txt lists all present .dat as valid, and all the expected ONWCs are available)<br />
:Now, with the extra level (with level0_Final, level1_Final, level2_Final and level4_Final in GDF to start with)<br />
:*If I put all 16 Crap files into GDF (that makes 16 + 4 = 20), Oni exits (without a Blam) while "loading level 0..."<br />
:*If I only use 15 Crap files (that makes 15 + 4 = 19), Oni ''still'' exits while "loading level 0...", this time ''with'' a Blam:<br />
::(here's the message given by the Daodan DLL in this case; I didn't bother with the level-load Blams)<br />
loading level 0...<br />
<br />
Oni crashed…<br />
Please post your “startup.txt” file to <http://oni.bungie.org/community/forum/>…<br />
Caught exception 0xc0000005 at 0x004244ce…<br />
EAX = 0000000000, ECX = 0x0027e201, EDX = 0x08000001<br />
EBX = 0x0054fc20, ESI = 0x0c2b6028, EDI = 0x0c2b6028<br />
EBP = 0x00bfab20, ESP = 0x0012f590<br />
:*If I only use 14 Crap files (that makes 14 + 4 = 18), Oni lets me play levels 1 and 4, but Blams upon loading level 2.<br />
:*If I only use 13 Crap files (that makes 13 + 4 = 17), Oni lets me play levels 1 and 2, but Blams upon loading level 4.<br />
:*If I only use 12 Crap files (that makes 12 + 4 = 16) or less, Oni starts normally and lets me load all three levels.<br />
::(in all these cases startup.txt lists all present .dat as valid, and all the expected ONWCs are available)<br />
:So it appears that 16 is indeed the threshold for normal behavior.<br />
:Fails to load last file for 17, pre-last for 18, doesn't run at all for 19+.<br />
:This is consistent with Ed's report, so I guess this all holds for the Macs.<br />
:For the record, PC retail runs normally with all 16 crap files and then some.<br />
:It's really a shame, but it looks like the Mac build was born to nag us...<br />
::[[User:Geyser|geyser]] 03:51, 9 May 2008 (CEST)<br />
<br />
: To confirm, only the TCTF Headquarters level will start to load then Oni will crash. I also tested it on my Intel computer, same result.<br />
: Here is the crash log: http://edt.oni2.net/OniSplit/PluginCrash.txt <br />
<br />
[[User:EdT|EdT]] 05:20, 9 May 2008 (CEST)<br />
<br />
"(Neo, you too, listen up)". Already did the test :). I split level0_Final.dat into 19 files and now the PC Demo doesn't even start. Reason: the filename of the 17th file got corrupted so it cannot find the file. That's why I asked someone with a Mac to check if the levels really load.<br />
<br />
[[User:Neo|Neo]]<br />
<br />
It's probably unnecessary for me to report this, but yes, my Intel Mac also also crashed when it tried to load the 1st TCTF level (when I had three plugins in the GDF). I can confirm that the (very nice-looking!) Spartans are present, although I forgot to test the chaingun. And Barabus is an unexpected surprise in Chapter 2. But yeah, crash-a-rama with the TCTF HQ.<br />
<br />
So it looks like we have three options as far as the Mac goes:<br />
# Change the '16' (which is not easy, apparently)<br />
# Only use this method for basic crucial patches to the Edition or generally global effects like adding the Spartans<br />
# Compiling more and more patches into the same one or two plug-ins, and releasing those newer versions of the plug-ins, to replace the older versions<br />
<br />
P.S.: Please don't be oversensitive, geyser; you dropped in with blockbuster information and gave us no details on its workings, of course I said, "We demand details!" I hope you know that, at least to a native English speaker (which I often forget you aren't because your English is so good), "We demand __!" would not be interpreted as a strict command, but a friendly enthusiastic request. At least between familiar acquaintances it means that; perhaps a smiley would have helped convey my tone of voice.<br />
<br />
P.P.S.: I don't fake enthusiasm, geyser, it's all real :-D<br />
--[[User:Iritscen|Iritscen]] 15:59, 13 May 2008 (CEST)<br />
<br />
----<br />
When using the level0_BGI plugin and the modified Oni.exe with a "normal" installation of Oni (Not AE) only one Masterchief (Striker version) will appear and he will be 1/2 black 1/2 transparent.<br />
<br />
Script_10K first reported it and paradox-01 confirmed it. Video from Script_10K http://edt.oni2.net/AE/Script10K_MC_bug.WMV<br />
<br />
EDIT: I just confirmed it with the Mac Demo, only the Striker version appears partly transparent. Since I'm using the demo when shaping shifting to the other MC version, I get the error message "master_muro had a NULL animation collection"<br />
<br />
http://edt.oni2.net/AE/MC_transparent.jpg<br />
<br />
[[User:EdT|EdT]] 00:53, 25 May 2008 (CEST)<br />
:Thanks for the reports.<br />
:"only one Masterchief (Striker version) will appear" As you can see, Oni complains about character classes that specify an invalid TRAC. Actually, since there's no such thing as a "default TRAC", every ONCC that links to a non-existent TRAC is ignored. Apart from the Striker variant, all the Chiefs use fancy male TRAC that can only be found in specific levels, as we well know. Since level0 instance files are loaded before everything else, those global Chiefs need their TRAC to be global. That means that without AE's globalization, indeed, only the Striker Chief will be available with this plugin. I don't think it's worth fixing.<br />
:"and he will be 1/2 black 1/2 transparent." That's because of another resource I'm assuming to be global, namely [[TXMP]]SUPER_REFLECT (Mukade's envmap texture). This is a bit more limiting because TXMPSUPER_REFLECT is missing from the demo (then again, so are a couple of TRAC used in level0_BGI), so even the Edition won't fix the Chiefs in the demo right now. I guess I'll fix that eventually, probably by including a reflection texture with the pack. For now, either play a full version, with AE's globalization of both TRAC and TXMP... or hex-fix level0_BGI.dat, e.g., by replacing the TXMPblack_chief_lo_res at the end with TXMPw5_sbg_ref or such.<br />
:On a completely different note, the [[OniSplit]] page is not exactly up-to-date, is it? I know I can do it myself, but since you were doing all the XML testing I thought you were in a better position than me to mirror and link to the new versions ^_^<br />
::[[User:Geyser|geyser]] 03:47, 25 May 2008 (CEST)<br />
<br />
----<br />
<br />
::Hi EdT, I have a question. Recently I am toying with 3d models, but I cannot IMPORT them back into Oni (It simply won't create M3GM back from my modified 3d model). Can you please tell me some programmes + what to do?. Big thanks, Loser<br />
<br />
Loser: Are you saying that OniSplit cannot import the model or that once its inside Oni, it doesn't work? <br />
A couple of things to check, do you have the latest version of OniSplit? Is the 3D model highly detailed, if so, Oni will crash when the object comes into view.<br />
<br />
You might want to look at this tutorial:<br />
http://wiki.oni2.net/AE:Importing_character_models<br />
<br />
Its hard to say what the problem is without seeing the model. Can you post it?<br />
<br />
[[User:EdT|EdT]] 14:22, 22 June 2008 (CEST)<br />
<br />
----<br />
<br />
Hey man, there is [http://www.paradox.oni2.net/mods/mac_shapeshift_test.zip something] to test for you =)<br />
: (Instructions: delete all compound scripts, put in "test.bsl". The character file is for level19_Final. Hope it works.) --[[User:Paradox-01|Paradox-01]] 20:10, 6 October 2008 (CEST)<br />
:: Muro appeared first then, Barabus a few seconds later. The command "chr_wait_animtype 0 jump" had no effect. I didn't know you can have more than one character flagged as "IsPlayer" [[User:EdT|EdT]] 20:48, 6 October 2008 (CEST)<br />
<br />
:::I don't know why but "chr_wait_animtype .." is needed on PC. (Try to comment it out (#)..) I tried lots of combinations but that's the way it seems to work.<br />
:::Somehow, it is skipped when Muro becomes deleted. The strange thing is that the cam stays focused on Muro even if I delete him, ergo: the cam is floating into nothing... in a piece of a second out of the level.<br />
:::Surely you can go on experimenting on your machine, maybe there are differences. But for now we have finally a way to shapeshift on a mac. --[[User:Paradox-01|Paradox-01]] 21:40, 6 October 2008 (CEST)<br />
::::Ed, there is a second player character in level1, called "konoko", with which you can do the same trick. You can also use '''chr_create 0''' if there is a valid 0 character in the [[AISA]], i.e., everywhere except in the original level7. --[[User:Geyser|geyser]] 03:08, 7 October 2008 (CEST)<br />
::::Dox, it works fine as long as Muro is deleted immediately before the new player is spawned. You can simply enter "chr_delete(Muro);ai2_spawn(barabus);" from the console, or you can delay those 2 simultaneous commands with pretty much anything: chr_wait_animtype, sleep, chr_wait health, cm_interpolate_block, chr_has_lsi in a loop... anything. --[[User:Geyser|geyser]] 03:08, 7 October 2008 (CEST)<br />
----<br />
:Here is a simple script that should work nicely in the original level18 (posing as Karen) --[[User:Geyser|geyser]] 03:08, 7 October 2008 (CEST)<br />
func main {<br />
chr_teleport 0 0<br />
chr_facetoflag 0 0<br />
ai2_spawnall<br />
door_ignore_locks=1<br />
fork disguise<br />
}<br />
func disguise {<br />
dmsg "please do a Devil Spin Kick"<br />
chr_wait_animation 0 KONCOMkick_heavy<br />
sleep 60<br />
chr_delete 0<br />
chr_create 0<br />
}<br />
<br />
::Using the above script, Konoko changed to TCTF_Lite, but no matter where I was when I did the Devil Spin Kick, I changed to the TCTF_lite and transported to location 0. Is that how it works on the PC, or do you change at the location of the DSK? [[User:EdT|EdT]] 04:40, 7 October 2008 (CEST)<br />
:::Ed, that's the fundamental limitation of Dox's hack. The fake shapeshifting involves deleting one player character and spawning another. when spawning the new character, the engine has no way of knowing where the old one was, and no reason to take it into account: all that happens is that control and camera focus are transferred to the new player. "Ergo", the position and facing of the new player must be set approximately: in the Mac case, either from [[CHAR]], [[FLAG]] or [[FILM]]. As you can see, this kind of transition will only look good if carefully scripted, either coordinated with trigger volumes and such, or somehow making the warp look less awkward (teleportation or fade-out effect). --[[User:Geyser|geyser]] 05:30, 7 October 2008 (CEST)<br />
:::As for the TCTF Lite (Cop_generic, without shoulderplates, I assume?), that's the way it works with globalized resources, yes. The 0 AISA entry links to a missing ONCC, so Oni uses the first available ONCC instead. This is Karen in the original Oni, ONCCCop_generic in the edition so far, a Spartan or a HD Griffin if you use a plugin, etc. --[[User:Geyser|geyser]] 05:30, 7 October 2008 (CEST)<br />
<br />
:Here is one that will work with your modified BINACJBOCharacter in level19 --[[User:Geyser|geyser]] 03:08, 7 October 2008 (CEST)<br />
func main {<br />
chr_teleport 0 109<br />
chr_facetoflag 0 0<br />
fork upgrade<br />
}<br />
func upgrade {<br />
dmsg "please jump down to your doom"<br />
chr_wait_health 0 199<br />
chr_delete 0<br />
ai2_spawn barabus<br />
chr_teleport 0 194<br />
chr_facetoflag 0 0<br />
}<br />
:Of course, the upgrade will depend on whether ONCCbarabus is global. -[[User:Geyser|geyser]] 03:08, 7 October 2008 (CEST)<br />
:And of course, this emulation of [[chr_set_class]] is quite limited. --[[User:Geyser|geyser]] 03:08, 7 October 2008 (CEST)<br />
:But nevertheless very resourceful, and useful for scripted missions. --[[User:Geyser|geyser]] 03:08, 7 October 2008 (CEST)<br />
:My respects for finding this delete-spawn thing: not intuitive at all. --[[User:Geyser|geyser]] 03:08, 7 October 2008 (CEST)<br />
<br />
----<br />
It looks like there's a couple different links to Oni apps in your subdomain, EdT, http://edt.oni2.net/files/OniOSXfix.zip and http://edt.oni2.net/files/Oni.zip, and they both work. Unless there's a specific purpose behind this, I think you get where I'm going -- we should consistently point to just one download link that will always be the latest modded app. --[[User:Iritscen|Iritscen]] 16:58, 12 October 2008 (CEST)</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:EdT&diff=22503User talk:EdT2013-05-07T22:41:47Z<p>EdT: Spring cleaning on this page.</p>
<hr />
<div>Phew, another dusty talk page! *cough cough* I just wanted to draw your attention to [[User_talk:Iritscen#slowmo|this conversation]], which is in reference to [http://wiki.oni2.net/w/index.php?title=PC_vs_Mac&diff=22319&oldid=22248 this edit of mine]. Thanks. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:59, 7 May 2013 (CEST)<br />
<br />
::Cleaned up all the dust. :) [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 00:41, 8 May 2013 (CEST)</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:Iritscen&diff=22501User talk:Iritscen2013-05-07T22:36:21Z<p>EdT: /* slowmo */</p>
<hr />
<div>__TOC__<br />
'''Talk page archives''': [[/Archive1|#1]]<br />
<br />
==Pre-beta image==<br />
Hello,<br />
<br />
This pre-beta image really seems bio lab to me. Didn't you agree?<br />
<br />
[[Image:Pre-beta Vago Lab.png]]<br />
<br />
See you. [[User:Script 10k|Script 10k]]<br />
<br />
:Ah, you're right, that must be the pre-beta night-time version of the Lab! I've re-named it and moved it to the proper place on the page. Thanks. --[[User:Iritscen|Iritscen]] 01:31, 23 November 2009 (UTC)<br />
<br />
==AI self-healing==<br />
;Hi Iritscen,<br />
:it has been a long time since I have contributed something. I don't have time (and Oni) right now, but I ask you to try this idea out. It is connected to AI2 driven characters being able to actually use hypo sprays they possess to heal themselves (like the human player).<br />
:It could be easy as it involves only usage of BSL. However, I don't know if several things (mainly "''chr_holdkey''" command, which is core of this idea) work the way I think they work.<br />
:'''Requirements for the experiment:'''<br />
::- take one AI2 character whose name you know from some level you like. But this AI should be near some savepoint for easy debugging.<br />
::- add function to the scripts of your selected level, which will be forked from your selected savepoint, where your AI2 spawns.<br />
::- this function will contain following commands:<br />
:::"''ai2_showhealth=1''" - I think this is clear<br />
:::"''ai2_spawn'' name" - clear<br />
:::"''ai2_ignore_player''=1" - to be able to experiment<br />
:::"''chr_inv_reset'' name" - to make sure we have everything under control<br />
:::"''chr_givepowerup'' name hypo" - now we know our AI2 char has one hypo<br />
:::"''chr_set_health'' name 1" - to make it logical to use a hypo ^_^<br />
:::"''chr_wait_animtype'' 0 crouch" - to be able to trigger it when you want<br />
:::"''chr_holdkey'' name keys_hypo 10" - THIS IS IT. Key part, if I understand that command right<br />
::- now run the selected savepoint of selected level, don't crouch, get to your AI2, which is active but ignores you as a player and has only one HP left. NOW crouch. If everything goes according to the theory, this AI2 will use its one hypo to heal itself. Obviously should be seen with "''ai2_showhealth''=1".<br />
:- if it works, please let us (community) know. This way, we can set up smarter behavior for AI2s, where AI2s heal themselves in battle. Well, they try at least, because if they get hit, healing effect is reduced, as we know. And we cannot command AI2 to "play defensively because it used a hypo and healing is in the process". At least not the BSL way.<br />
:- also, this could be used for some daodanized AI2 characters, where AI2s inject hypos to get into regular overpower mode.<br />
:- I am aware of the fact that we can use "''chr_set_health''" command to do the same work. However, "''chr_set_health''" is dependent on the value it has written in, so you have to set up some mechanisms to reduce the value in "''chr_set_health''" command as AI2s health drops if we want to use it as an hypo emulation. Plus it is tied with only one AI2 character then.<br />
:- hypo usage emulation via "''chr_holdkey''" (if it will work) is on the other hand simply used to force '''any''' AI2 char (just input its name and be sure this char has a hypo in its inventory) to take a hypo and rest is handled by engine. Simple and effective. <br />
:--[[User:Loser|Loser]] 00:12, 17 March 2009 (UTC)<br />
<br />
Loser, I have tried to get chr_holdkey to work for some time now. Peering at the asm, I can see that there is code there for it, but it might have been commented out in some form. It is really hard to tell. ALSO, using a hypo doesn't seem to be one of the allowable keys. They seem to be: forward, back, stepleft, stepright, crouch, jump, fire, altfire, punch, kick, action. HOWEVER, there is a different method we can use for AIs using hypos. Record Konoko using a hypo, export\import it using Onisplit, then use the from_here option in chr_playback. I would recommend using Konoko's watch animation or something of the sort to go along as a visual cue. [[User:Gumby|Gumby]]<br />
<br />
<br />
Thank you for report, Gumby. Yes, I know about playback solution, that way of solving this problem works quite fine. Point of this BSL idea was that it requires only scripting, no files changed.<br />
: But if we have to end up with changing files, then we can modify CHAR as well, adding trigger of the function *heal_mechanicsXX.name_of_ai2_written_here* into CHAR when character is hurt. XX represents number of the healing group. If I recall correctly, engine takes "''name_of_ai2_written_here''" as string parameter of the function *heal_mechanics*.<br />
<br />
: About that XX - enemies have various health levels, but we can see some of them have quite similar max health levels (+/- 25 HP). So my idea is - we have groups of CHARacters, which share same version of heal_mechanicsXX function, labeled by its number (saves space). These CHARacters have similar max health levels and have exactly the same amount of hypos they can use.<br />
:Then one very simple function for such a group can look like this:<br />
::'''func''' '''void''' heal_mechanics01(string ''ai_name'')<br />
::{<br />
:: '''chr_wait_health''' (''ai_name'', value_of_approximate_half_of_max_HP_for_this_group_members)<br />
:: '''chr_playback_block''' (''ai_name'', name_of_hypo_trigger_[[FILM]]_file, fromhere)<br />
::}<br />
<br />
:This function would be triggered by members of heal_mechanics01 (they have writen it in their CHAR file, under "hurt" trigger). When called, it takes name of the CHAR as a parameter and then waits until this CHAR's HP drops around 1/2 (value is set maually in the script). Then it calles hypo using FILM for this CHAR.<br />
: Nice, isn't it? --[[User:Loser|Loser]] 18:29, 17 March 2009 (UTC)<br />
::Yeah, thats about what I meant. :) Either method requires changing files though, because AFAIK AI aren't given hypos in the CHAR. [[User:Gumby|Gumby]] 08:24, 18 March 2009 (UTC)<br />
<br />
Hey. When Gumby is on it, there's another worthy thing to try. Duplicating chr_poison (ai_name, damage, interval, initial_interval) and replacing the health reducing function by a health adding function. Then that could be used instead of chr_playback_block. It would not only simulate "AI Hypos" but better AI and player regeneration than chr_set_health. Smooth health increment (for player) can be done in a looped BSL function. 20:35, 17 March 2009 (UTC)<br />
<br />
:Done that already, in ReOni. The problem lies in the fact that there isn't an easy way AFAIK to copy a function using the Daodan. The other problem is that Macs would be left out cold. [[User:Gumby|Gumby]] 08:24, 18 March 2009 (UTC)<br />
<br />
::Hm, do I actually even need to say anything? The conversation is going well without me ^_^ I find your idea interesting, Loser, but I personally just can't focus on it at this point, or I won't be able to help Gumby with the Edition (Real Life is knocking hard on my door right now and demanding me to cut down on my Oni time). Besides, any topic beyond BSL is kinda over my head anyway :-) --[[User:Iritscen|Iritscen]] 14:35, 18 March 2009 (UTC)<br />
<br />
:::Ran into a small problem, the character still rotates, even with "fromhere". :( [[User:Gumby|Gumby]] 19:07, 18 March 2009 (UTC)<br />
<br />
<br />
==Newbies==<br />
Oi who are all those never editing newbees? Are you sure they are human? --[[User:Paradox-01|Paradox-01]]<br />
<br />
==About operators==<br />
You said '=' is an alternate form of 'eq'. Are you sure? I was considering '=' to be used for definition and 'eq' for comparison.<br />
[[User:Lukas Kreator|Lukas Kreator]] ([[User talk:Lukas Kreator|talk]]) 16:34, 11 November 2012 (CET)<br />
:My bad, you're correct. '=' is the assignment operator. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:49, 11 November 2012 (CET)<br />
<br />
==slowmo==<br />
"no idea why I wrote that about slowmo"<br />
<br />
EdT told me when making the Old China level that it was different in mac and pc. If you check the scripts you will notice that the parameter values are different for each version. Not sure how it works on mac since I don't own one. [[User:Script 10k|Script 10k]] ([[User talk:Script 10k|talk]]) 17:32, 28 April 2013 (CEST)<br />
<br />
:Yes, I see now, that was why I wrote that. I guess I have to ask EdT about that. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 17:37, 28 April 2013 (CEST)<br />
<br />
::The answer, I don't know. I believe that normally, slowmo works the same for both PC and Mac. However, in the old China Mod, there was a big difference. For the PC slowmo(100) lasted less than 2 seconds, on the Mac is was more like 15-20 seconds and during that time you couldn't do anything. So we changed it to slowmo(30) for the Mac, but it could simply have been my computer not able to handle all the action of the final battle. :) [[User:EdT|EdT]] ([[User talk:EdT|talk]]) 00:36, 8 May 2013 (CEST)</div>EdThttps://wiki.oni2.net/w/index.php?title=Developer_Mode&diff=22494Developer Mode2013-05-07T17:11:50Z<p>EdT: /* Hotkeys */ Enable Cycle active camera, then turn around to see its effect</p>
<hr />
<div>[[Image:TheDayIsMine_crate.png|frame|Found on a crate in<br>Syndicate Warehouse]]<br />
{{TOCfloat|limit=3}}<br />
Developer Mode is a bundle of features created by [[Bungie West]] to help them develop [[Oni]] -- a console, camera controls, and various debugging features -- that was associated with the [[Cheats|cheat code]] '''thedayismine''' (see picture above for related [[Easter eggs|Easter egg]]). This cheat code did not work upon Oni's release, and it was long believed that Developer Mode had been cut from retail versions of Oni; it had only been observed to work in the [[Mac beta]] that was leaked during Oni's beta testing. However, this mode is actually present in ''all'' available versions of Oni (except PS2). It just needs to be unlocked, as the community learned [[History_of_Oni_modding/The_tale_of_Dev_Mode|back in 2006]].<br />
<br />
Below you will find download links, unlocking instructions, and finally an overview of the Developer Mode's features.<br />
<br clear="all" /><br />
==Getting it to work==<br />
===Download it...===<br />
In Windows, you can install the [[Daodan DLL]] to unlock Developer Mode. On the Mac, the Intel build already has Dev Mode unlocked; it can be found [[AE:FERAL|HERE]].<br />
<br />
{{Divhide|...or do it yourself}}<br />
===...or do it yourself===<br />
You may want to read this if your Windows version of Oni is not covered by the above DLL (e.g. if you have an odd language version) or if your Mac is not running the Intel build (though a Dev Mode-enabled version of the last PPC build is [[AE:OMNI|HERE]]).<br />
<br />
First, get a good hex editor. Ideally, it should allow you to search for sequences containing joker characters (that is, wildcards or bit masks). One such editor for PC is [http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm XVI32]. On Macs, [http://www.ufsexplorer.com/cihex.php CI Hex Viewer] is free, powerful, and can perform the search you need, but [http://ridiculousfish.com/hexfiend/ Hex Fiend] has a better comparison function so you can check your work afterward (open original and edited binaries and choose File>Compare "Oni" and "Oni").<br />
<br />
====Cheat code lookup tables====<br />
{|style="float:right"<br />
|+Cheat codes and IDs<br />
|<br />
{|border=1 cellspacing=0<br />
|-<br />
|shapeshifter<br />
|0x00<br />
|-<br />
|liveforever<br />
|0x01<br />
|-<br />
|touchofdeath<br />
|0x02<br />
|-<br />
|canttouchthis<br />
|0x03<br />
|-<br />
|''fatloot''<br />
|0x04<br />
|-<br />
|glassworld<br />
|0x05<br />
|-<br />
|''winlevel''<br />
|0x06<br />
|-<br />
|''loselevel''<br />
|0x07<br />
|-<br />
|bighead<br />
|0x08<br />
|-<br />
|minime<br />
|0x09<br />
|-<br />
|superammo<br />
|0x0A<br />
|}<br />
|<br />
{|border=1 cellspacing=0<br />
|-<br />
|'''thedayismine'''<br />
|0x0B<br />
|-<br />
|reservoirdogs<br />
|0x0C<br />
|-<br />
|roughjustice<br />
|0x0D<br />
|-<br />
|chenille<br />
|0x0E<br />
|-<br />
|behemoth<br />
|0x0F<br />
|-<br />
|elderrune<br />
|0x10<br />
|-<br />
|moonshadow<br />
|0x11<br />
|-<br />
|''munitionfrenzy''<br />
|0x12<br />
|-<br />
|fistsoflegend<br />
|0x13<br />
|-<br />
|killmequick<br />
|0x14<br />
|-<br />
|carousel<br />
|0x15<br />
|}<br />
|}<br />
<br />
;Cheat overview<br />
:There are 22 cheat events in every version of Oni, indexed from 0 to 21 (or 0x00 to 0x15 in hexadecimal). See table on right; the cheat code omitted by Bungie, thedayismine, is in bold. The four italicized cheat codes are "one-way" cheats that do not have on/off states, which affects the table described below.<br />
:The order is the same in every version, so we can refer to the cheats by their ID, or by the cheat code used to activate them.<br />
<br />
;Cheat lookup table<br />
:When you type characters in the "pause screen", the text you enter is progressively compared with all the strings in the cheat table.<br />
:When and if there is a match, the corresponding confirmation message is displayed for enablement/confirmation or for disablement if the cheat was already on, and the corresponding cheat event takes effect when the Pause screen is closed.<br />
:In full, each row of the cheat table consists of:<br />
:*a pointer to the cheat code string<br />
:*a pointer to the "enabled"/recognition message<br />
:*a pointer to the "disabled" message (if any)<br />
:*the internal ID of the cheat event to launch<br />
There is a row for every cheat, and they appear by order of increasing ID. In most Oni builds, the developer mode cheat (ID 0x0B) is simply skipped over; '''reservoirdogs''' (0x0C) comes right after '''superammo''' (0x0A).<br />
<br />
;Data size on different platforms<br />
:In the PC, PC demo and Mac OS X (PPC) builds, every row of the lookup table takes up 16 bytes; the 3 pointers and the ID are 4-byte data words (Little Endian on PC, Big Endian on PPC Macs); if a cheat has no "disabled" message, the row's third pointer is null.<br />
<!--This does not appear to be true, not sure what version geyser was looking at. The item below this claimed to be for the Mac beta, but it's actually true of the Mac retail app. --Iritscen<br />
:In the Mac OS 9 retail and demo, every row of the lookup table takes up 8 bytes; the 3 pointers and the ID are 3-byte data words (Big Endian); if a cheat has no "disabled" message, the last byte of the third element is taken up by the ID (the remaining 2 bytes are garbage, as well as the ID field).--><br />
:In the Mac OS 9 builds, the pointers and the ID are 2-byte words (Big Endian); regular rows take up 8 bytes; for one-way cheats with no "disabled" message, weird stuff happens to the third pointer and to the ID, and the row takes up 10 bytes... the ID can be found in what would be the first byte of the ID field instead of the second, and the remaining 3 bytes are garbage. An additional garbage byte is added between consecutive one-way cheats (0x06 and 0x07).<br />
<br />
====Let's kill killmequick====<br />
In the PC, PC demo and Mac OS X (PPC) builds, there's extra space at the end of the lookup table and where the cheat codes/messages are stored, so one can add '''thedayismine''' as an extra cheat. On Mac OS 9, the data is packed tighter (and the text strings are stored together with their size), so the only easy way is to replace an existing cheat. Since replacing an existing cheat is the only solution that works on all platforms, the following mini-tutorial will explain how to bind the Developer Mode cheat event to the Ultra Mode cheat code '''killmequick''' (since hardly anyone uses that cheat).<br />
<br />
====Finding the lookup table====<br />
Open the executable (or the data fork of the executable in the Mac OS 9 build), after backing it up of course.... We shall look for the last three elements of the table, corresponding to '''fistsoflegend''', '''killmequick''' and '''carousel'''.<br />
;In the PC retail and PC demo builds, look for '''13 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 14 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 15 00 00 00'''<br />
;In the Mac OS X (PPC) build, look for '''00 00 00 13 ## ## ## ## ## ## ## ## ## ## ## ## 00 00 00 14 ## ## ## ## ## ## ## ## ## ## ## ## 00 00 00 15''' ([[:File:Finding killmequick - Omni build.jpg|sample pic]])<br />
;In the Mac OS 9 builds, look for '''00 13 ## ## ## ## ## ## 00 14 ## ## ## ## ## ## 00 15''' ([[:File:Finding killmequick - Mac OS 9 build.jpg|sample pic]])<br />
;<br />
where the ## are joker characters (wildcard bytes). Once you've found that data (make sure it occurs only once in the file), replace the '''14''' with a '''0B'''.<br />
<br />
Developer Mode will now be enabled/disabled every time you type '''killmequick''' at the Pause screen; you'll get "Ultra Mode Enabled" and "Ultra Mode Disabled" as confirmation messages.<br />
{{Divhide|end}}<br />
<br />
==Using it==<br />
===First check===<br />
Cheats are normally unavailable until you finish the full version of the game, and Developer Mode can only be activated through a cheat code. For unlocking cheats "manually" (especially necessary with the demos), see [[Cheats|HERE]]. However, cheats are enabled all the time when the Daodan DLL is installed in Windows or when using the Mac Intel build.<br />
<br />
Enter the Pause screen (default key F1) and look for a confirmation message after typing the Developer Mode cheat ('''thedayismine''', or '''killmequick''' if you followed the DIY tutorial, or just '''x''' -- the DLL and Intel build provide that shortcut). However, you may not notice anything special when you get back to the game (although there should be occasional console messages appearing at the bottom-left). <br />
<br />
The quickest way to tell whether Dev Mode definitely works, right after you get the confirmation message, is to exit the Diary screen and to press '''End'''. That should teleport you to where the camera is (usually back and up, possibly through walls and ceilings).<br />
<br />
Here's another quick test, meant to see if the Control and Alt keys work fine (on Mac, use the Option key instead of Alt): Ctrl+Shift+U and Ctrl+Alt+U should both perform the "unstick" action; Konoko will shift forward by a small amount.<br />
<br />
===Console output===<br />
In Developer Mode, Oni prints debug messages about in-game events along the bottom-left of the screen. Past messages scroll up across the screen and fade. In some situations, messages don't fade (e.g. if character debugging is enabled or you are currently using the console line).<br />
<br />
The easiest way to check whether that output works at all is to press '''F8''': the character class change is acknowledged with a console message.<br />
<br />
If you don't see anything, that means console output is unfortunately disabled in your version of Oni. If you're on PC retail, you may have applied [[Troubleshooting/Blam|Ian's patch]] (aka XP patch), which disables console output. On PC demo, both console output and console input are invisible (i.e. you can enter script commands, but you're "blindfolded").<br />
<br />
===Console input===<br />
U.S. QWERTY: By default, Oni auto-binds the "console" toggle to the key which on U.S. keyboards has a grave accent, <span style="font-size:200%; top:0.3em; position:relative">`</span>, in the lowercase position and a tilde, <span style="font-size:175%">~</span>, in the uppercase position. It is usually called the "tilde key" by users, and perhaps even elsewhere on this wiki; however, you would have to hold Shift to type a tilde, and the console is activated by just pressing the key without Shift, thus it is actually the "grave accent key" which activates the console. On non-U.S. keyboards, that key may not be recognized. Just add a line like "bind leftalt to console" to '''key_config.txt''' in your Oni folder and you'll be able to open the console with that key. In some cases, this bound key will not ''close'' the console; however, pressing the grave accent key, oddly enough, may work.<br />
<br />
German QWERTZ: By default, Oni uses the circumflex accent key, <span style="font-size:150%">^</span>, for console access. On Windows, when playing Oni in windowed mode, you should use "rightalt" as your alternative console binding because "leftalt" activates the window's menu, stealing Oni's controls.<br />
<br />
<br />
===Controls===<br />
====Hotkeys====<br />
Below are Oni's hardcoded mappings for Developer Mode functions. The Alt key (Option key on Macs) can be used in placed of Ctrl. Alternate mappings are welcome if you have another version of Oni that you would like to have listed below.<br />
<br />
The QWERTY column is for the English release of Oni, for U.S. QWERTY keyboards. The QWERTZ column is for German Oni and only lists the hotkeys that are different from QWERTY on German QWERTZ keyboards; note that on German keyboards, the "Ctrl" key is named "Strg".<br />
<br />
{|class="wikitable" style="margin-left:auto; margin-right:auto;"<br />
!Hotkey (QWERTY)<br />
!Hotkey (QWERTZ)<br />
!Description<br />
!width=75|Windows<br />
!width=75|Mac<br />
|-<br />
|Ctrl+Shift+o<br />
|<br />
|Draw no-occlusion quads (only makes console screens disappear)<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+i<br />
|<br />
|Draw invisible quads<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+y<br />
|Ctrl+Shift+z<br />
|Performance display (includes FPS)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+t<br />
|<br />
|Draw character collision<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+r<br />
|<br />
|Draw object collision<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+f<br />
|<br />
|Fast Mode (runs Oni at up to 24x)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+g<br />
|<br />
|Draw Every Frame Mode<br />
|<center>{{ckblue}}</center><br />
|<center>'''(1)'''</center><br />
|-<br />
|Ctrl+Shift+x<br />
|<br />
|Secret X / (Mac only) Show trigger volumes<br />
|<br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+y<br />
|<br />
|Secret Y<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+z<br />
|<br />
|Secret Z<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+Ins<br />
|<br />
|Add flag<br />
|<center>{{ckblue}}</center><br />
|<center>'''(2)'''</center><br />
|-<br />
|Ctrl+Shift+Del<br />
|<br />
|Delete flag<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+u<br />
|<br />
|Unstick player<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+n<br />
|<br />
|Camera recording start<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+m<br />
|<br />
|Camera recording stop<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+,<br />
|<br />
|Camera recording playback<br />
|<br />
|<br />
|-<br />
|?<br />
|<br />
|Place quad<br />
|<center>?</center><br />
|<center>?</center><br />
|-<br />
|?<br />
|<br />
|Place quad mode<br />
|<center>?</center><br />
|<center>?</center><br />
|-<br />
|Ctrl+Shift+\<br />
|Ctrl+Shift+#<br />
|Profile toggle (doesn't seem to have any effect)<br />
|<center>{{ckblue}}</center><br />
|<br />
|-<br />
|Ctrl+Shift+l<br />
|<br />
|Dumps a screenshot every frame<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+1<br />
|<br />
|Test One<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+2<br />
|<br />
|Test Two<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+3<br />
|<br />
|Test Three<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+4<br />
|<br />
|Test Four<br />
|<br />
|<br />
|-<br />
|. (period)<br />
|<br />
|Single Step Mode<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|/<br />
| -<br />
|Advance one step (when in Single Step Mode)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|.+/<br />
|.+-<br />
|Exit Single Step Mode (press keys simultaneously)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+Home<br />
|<br />
|Cycle active camera<br />
|<br />
|<center>{{ckblue}}</center><br />
|-<br />
|End<br />
|<br />
|Warp to camera<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+k<br />
|<br />
|Kill particles<br />
|<br />
|<br />
|-<br />
|Backspace<br />
|<br />
|Enter AI debugger<br />
|<br />
|<br />
|-<br />
|7<br />
|<br />
|Explode One<br />
|<br />
|<br />
|-<br />
|8<br />
|<br />
|Explode Two<br />
|<br />
|<br />
|-<br />
|9<br />
|<br />
|Explode Three<br />
|<br />
|<br />
|-<br />
|0<br />
|<br />
|Explode Four<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+j<br />
|<br />
|Reset particles<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+w<br />
|<br />
|Drop flag and add waypoint<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+b<br />
|<br />
|Shows current opponent's logic<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|]<br />
|~<br />
|Freeze (now causes camera drift while on;<br>stopping Freeze mode teleports to camera location)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|[<br />
|<br />
|Frame Advance (now renders Konoko at camera location)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+s<br />
|<br />
|Highlight furniture (turns their textures red)<br />
|<center>{{ckblue}}</center><br />
|<br />
|-<br />
|F8, Shift+F8<br />
|<br />
|Cycle characters<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+p<br />
|<br />
|Display particle performance<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+;<br />
|<br />
|Lock particle performance display<br />
|<br />
|<br />
|-<br />
|F2<br />
|<br />
|Cutscene Animation 1<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F3<br />
|<br />
|Cutscene Animation 2<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F6<br />
|<br />
|Kill all AIs<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+F7<br />
|<br />
|Play dead<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F7, Shift+F7<br />
|<br />
|Cycle weapons (holster to get second weapon)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F9<br />
|<br />
|Start recording<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F10<br />
|<br />
|Stop recording<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F11<br />
|<br />
|Playback recording<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|` (grave accent)<br />
|^<br />
|Displays console<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Return/Enter<br />
|<br />
|Cycle camera modes (see table below for camera controls):<br>1. Normal<br>2. Detached A - mouse still controls character aim<br>3. Detached B - mouse aims camera<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|}<br />
<br />
'''(1)''' On Macs, Draw Every Frame Mode speeds up the game almost to the extent of Fast Mode, but with glitchy animations.<br />
<br />
'''(2)''' Please see talk page section "Insert key on Macs".<br />
<br />
====Camera controls====<br />
Note that the camera controls have default mappings, given below, but unlike the developer hotkeys, they are '''custom-bindable'''. In fact, on Macs, the default numpad bindings ''need'' to be customized or they won't work at all. See note [[Customizing/Binding#Detached camera controls|HERE]] about how to bind these keys and fix the Mac numpad controls. Also, the definitions of panning left and right seem to be reversed, as NumPad4 will simulate the act of turning your head to the left, but its action is called "man_cam_pan_right", and vice versa for NumPad6....<br />
{|class="wikitable" style="margin-left:auto; margin-right:auto;"<br />
|align="center"|'''Windows'''<br />
{|class="wikitable" style="margin-left:auto; margin-right:auto;"<br />
!Key<br />
!Result<br />
|-<br />
|NumPad 1/3<br />
|Move camera left/right<br />
|-<br />
|NumPad 8/5<br />
|Move camera forward/backward<br />
|-<br />
|NumPad -/+<br />
|Move camera up/down<br />
|-<br />
|NumPad 6/4<br />
|Pan camera left/right<br />
|-<br />
|Up/Down Arrow<br />
|Pan camera up/down<br />
|}<br />
|align="center"|'''Mac'''<br />
{|class="wikitable" style="margin-left:auto; margin-right:auto;"<br />
!Key<br />
!Result<br />
|-<br />
|Left/Right Arrow<br />
|Move camera left/right<br />
|-<br />
|Up/Down Arrow<br />
|Move camera forward/backward<br />
|-<br />
|Page Up/Down<br />
|Move camera up/down<br />
|-<br />
|NumPad 6/4<br />
|Pan camera left/right<br />
|-<br />
|NumPad 8/2<br />
|Pan camera up/down<br />
|}<br />
|}<br />
<br />
====Runtime scripting====<br />
=====Basic idea=====<br />
(Almost) anything you write in scripts you can enter at runtime with the console. The only thing you can't do is register new variables and functions.<br />
<br />
You can call existing functions, check on the values of existing variables. "Existing" means either built-in ones, or part of the original level logic, or part of your own scripts for the given level.<br />
<br />
If a function/variable was succesfully registered by Oni during level load, you will be able to refer to them from the console.<br />
<br />
You will even be able to browse the registered variables/functions with the '''Tab''' key, while typing at the console. '''Tab''' autocompletes the command being typed, then cycles through all available commands in (hex)alphabetical order (A...Z come before a...z). '''Shift+Tab''' lets you go back.<br />
<br />
Previous commands can be navigated with up and down arrows. You can't insert/delete text in the middle of a command : you have to use '''Backspace'''.<br />
<br />
The only keys that have an effect while the console is active are : '''Escape''', '''Enter''', '''Backspace''', '''(Shift+)Tab''', ASCII character keys and the arrow keys.<br />
<br />
If you press an illegal key during console input (such as F1), the input display will freeze : hit '''Tab''' a few times to fix.<br />
<br />
=====Limitations=====<br />
Obviously, if you have no console output, it's a bit frustrating. Even more so if console ''input'' is invisible -- you're in for some ''blindfolded'' scripting then. Still, there are a few commands which you can type in as complements to regular cheats:<br />
:'''chr_nocollision 0 1''' and '''chr_nocollision 0 0''' enable/disable no-clipping. When in no-clipping mode, you can't fall down; thus, jumping makes you flail in midair, and eventually you die (so be careful about that)<br />
:'''give_powerup shield''' gives you a force shield (which you can't have with '''fatloot''')<br />
:'''dump_docs''' prints all the registered commands/variables to a file in your Oni folder (so you know just what you can type)<br />
<br />
[[Category:Modding information]]</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Developer_Mode&diff=22493Talk:Developer Mode2013-05-07T17:09:35Z<p>EdT: /* Playing dead */</p>
<hr />
<div>==More testing needed==<br />
At some point, someone should review what hotkeys definitely work on the Windows side, because this questionable PC I'm testing on does not seem to do some of the things Windows is supposed to do (and in some cases things the Mac can do), like Single Step mode, f2/f3-binding, screenshots, and adding flags (actually, I seem to be able to add a flag, but show_flags is not displaying flags so I can't confirm; all I know is that hitting Delete Flag after hitting Add Flag does not return an error about not being close enough to a flag). In some cases I have marked these things as working just because I'm told they are supposed to work in Windows. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 01:04, 7 May 2013 (CEST)<br />
<br />
: I seem to recall the f2/f3 binding works only when you are recording a movie. Those keys were used in the arena levels. I may have time tomorrow to give it a try on the Mac. [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
::Ah, that's it! I don't remember reading that anywhere... maybe I missed it. I see these actually work on Mac too, nice. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:06, 7 May 2013 (CEST)<br />
::: It is written in the arena_menu_bsl "F2 and F3 are only active when Oni is recording a movie" [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
::::geyser did in fact document this on the Binding page, I just didn't read carefully enough. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:46, 7 May 2013 (CEST)<br />
<br />
==Insert key on Macs==<br />
''Putting this extension to the article here to allow responses to it, but also because it only interests Mac users who want to place flags in Dev Mode; a rather niche audience.''<br />
<br />
The Insert key never matters at all to a Mac user until one day it becomes the most important key on the keyboard. That is because Mac keyboards have for years lacked any key that says '''Insert''' or '''Ins'''. Well, modern apps tend to not use this key, so it only matters in certain situations. In Oni, the DevMode "addflag" key is '''Ctrl+Shift+Ins'''. Now, admittedly adding flags is not that useful when you can't save the flag location into the game data as Bungie once could. But I thought I would gather some information on how to reproduce the "Insert" key, and just leave it here for anyone who's interested, because it's a rather confusing subject. The following keys or combinations have been claimed by various parties, including Apple, to produce an Insert-key event on certain systems (or then again, it may all be an elaborate prank). And remember, you have to add '''Ctrl+Shift''' to Insert in order for it to become the "addflag" key Oni is looking for:<br />
*Help (don't have a Help key? Me neither...)<br />
*fn+Help<br />
*Ctrl+fn+m (I think Ctrl may be unneeded on each of these combos, but just for thoroughness' sake...)<br />
*Ctrl+fn+Home<br />
*Ctrl+fn+Return<br />
*Ctrl+fn+Enter<br />
*Shift+Clear (to turn off numlock), then NumPad0<br />
*fn+NumPad0<br />
*Shift+Option+Command+NumPad0 (now surely you must be joking, right?)<br />
Well, lots of options, that's, uh, nice, right? However, none of these seem to work on my Mac (mid-2011 iMac). It's difficult to even know what app to test these in, as I can't know if they are even coded to look for a key that isn't supposed to exist on Macs. But I'd love to hear feedback from other Mac users on what works for them. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 04:38, 7 May 2013 (CEST)<br />
<br />
:I have a keyboard that has the Ins key which is the same as the Help key except I need to press the fn key along with the help key. However pressing the Ctrl+Shift+Ins or Ctrl+Shift+Ins+fn has no effect, no message in the console and no flags appear. [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
::I didn't remember to mention this above, but I assume you did "show_flags=1" first? It actually won't print a message to console whether it succeeds or fails, so you have to be able to see flags to know if it works. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:06, 7 May 2013 (CEST)<br />
:::Of course I used show_flags=1. Also I did the same test as you did, insert flag then delete flag, however I got the message "not close enough to flag" so that shows a flag was not added. [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
::::Okay, then Oni probably just doesn't recognize Insert on Macs (probably a side effect of how we have to simulate the Ins key event instead of pushing the actual key, but who knows). Since flags can't be written to disk anyway, this is a fairly useless feature. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:46, 7 May 2013 (CEST)<br />
<br />
==Playing dead==<br />
I'm surprised to see that this works for EdT, since on my Mac, Ctrl+F7 has the same effect as F7 -- it cycles weapons. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:46, 7 May 2013 (CEST)<br />
: Playing dead has worked on the Mac since the PPC version was patched to enable Dev Mode. Also Cycle active camera has worked since then too. [[User:EdT|EdT]] ([[User talk:EdT|talk]])</div>EdThttps://wiki.oni2.net/w/index.php?title=Developer_Mode&diff=22490Developer Mode2013-05-07T14:31:42Z<p>EdT: Ctrl+F7 I can also play dead on the Mac</p>
<hr />
<div>[[Image:TheDayIsMine_crate.png|frame|Found on a crate in<br>Syndicate Warehouse]]<br />
{{TOCfloat|limit=3}}<br />
Developer Mode is a bundle of features created by [[Bungie West]] to help them develop [[Oni]] -- a console, camera controls, and various debugging features -- that was associated with the [[Cheats|cheat code]] '''thedayismine''' (see picture above for related [[Easter eggs|Easter egg]]). This cheat code did not work upon Oni's release, and it was long believed that Developer Mode had been cut from retail versions of Oni; it had only been observed to work in the [[Mac beta]] that was leaked during Oni's beta testing. However, this mode is actually present in ''all'' available versions of Oni (except PS2). It just needs to be unlocked, as the community learned [[History_of_Oni_modding/The_tale_of_Dev_Mode|back in 2006]].<br />
<br />
Below you will find download links, unlocking instructions, and finally an overview of the Developer Mode's features.<br />
<br clear="all" /><br />
==Getting it to work==<br />
===Download it...===<br />
In Windows, you can install the [[Daodan DLL]] to unlock Developer Mode. On the Mac, the Intel build already has Dev Mode unlocked; it can be found [[AE:FERAL|HERE]].<br />
<br />
{{Divhide|...or do it yourself}}<br />
===...or do it yourself===<br />
You may want to read this if your Windows version of Oni is not covered by the above DLL (e.g. if you have an odd language version) or if your Mac is not running the Intel build (though a Dev Mode-enabled version of the last PPC build is [[AE:OMNI|HERE]]).<br />
<br />
First, get a good hex editor. Ideally, it should allow you to search for sequences containing joker characters (that is, wildcards or bit masks). One such editor for PC is [http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm XVI32]. On Macs, [http://www.ufsexplorer.com/cihex.php CI Hex Viewer] is free, powerful, and can perform the search you need, but [http://ridiculousfish.com/hexfiend/ Hex Fiend] has a better comparison function so you can check your work afterward (open original and edited binaries and choose File>Compare "Oni" and "Oni").<br />
<br />
====Cheat code lookup tables====<br />
{|style="float:right"<br />
|+Cheat codes and IDs<br />
|<br />
{|border=1 cellspacing=0<br />
|-<br />
|shapeshifter<br />
|0x00<br />
|-<br />
|liveforever<br />
|0x01<br />
|-<br />
|touchofdeath<br />
|0x02<br />
|-<br />
|canttouchthis<br />
|0x03<br />
|-<br />
|''fatloot''<br />
|0x04<br />
|-<br />
|glassworld<br />
|0x05<br />
|-<br />
|''winlevel''<br />
|0x06<br />
|-<br />
|''loselevel''<br />
|0x07<br />
|-<br />
|bighead<br />
|0x08<br />
|-<br />
|minime<br />
|0x09<br />
|-<br />
|superammo<br />
|0x0A<br />
|}<br />
|<br />
{|border=1 cellspacing=0<br />
|-<br />
|'''thedayismine'''<br />
|0x0B<br />
|-<br />
|reservoirdogs<br />
|0x0C<br />
|-<br />
|roughjustice<br />
|0x0D<br />
|-<br />
|chenille<br />
|0x0E<br />
|-<br />
|behemoth<br />
|0x0F<br />
|-<br />
|elderrune<br />
|0x10<br />
|-<br />
|moonshadow<br />
|0x11<br />
|-<br />
|''munitionfrenzy''<br />
|0x12<br />
|-<br />
|fistsoflegend<br />
|0x13<br />
|-<br />
|killmequick<br />
|0x14<br />
|-<br />
|carousel<br />
|0x15<br />
|}<br />
|}<br />
<br />
;Cheat overview<br />
:There are 22 cheat events in every version of Oni, indexed from 0 to 21 (or 0x00 to 0x15 in hexadecimal). See table on right; the cheat code omitted by Bungie, thedayismine, is in bold. The four italicized cheat codes are "one-way" cheats that do not have on/off states, which affects the table described below.<br />
:The order is the same in every version, so we can refer to the cheats by their ID, or by the cheat code used to activate them.<br />
<br />
;Cheat lookup table<br />
:When you type characters in the "pause screen", the text you enter is progressively compared with all the strings in the cheat table.<br />
:When and if there is a match, the corresponding confirmation message is displayed for enablement/confirmation or for disablement if the cheat was already on, and the corresponding cheat event takes effect when the Pause screen is closed.<br />
:In full, each row of the cheat table consists of:<br />
:*a pointer to the cheat code string<br />
:*a pointer to the "enabled"/recognition message<br />
:*a pointer to the "disabled" message (if any)<br />
:*the internal ID of the cheat event to launch<br />
There is a row for every cheat, and they appear by order of increasing ID. In most Oni builds, the developer mode cheat (ID 0x0B) is simply skipped over; '''reservoirdogs''' (0x0C) comes right after '''superammo''' (0x0A).<br />
<br />
;Data size on different platforms<br />
:In the PC, PC demo and Mac OS X (PPC) builds, every row of the lookup table takes up 16 bytes; the 3 pointers and the ID are 4-byte data words (Little Endian on PC, Big Endian on PPC Macs); if a cheat has no "disabled" message, the row's third pointer is null.<br />
<!--This does not appear to be true, not sure what version geyser was looking at. The item below this claimed to be for the Mac beta, but it's actually true of the Mac retail app. --Iritscen<br />
:In the Mac OS 9 retail and demo, every row of the lookup table takes up 8 bytes; the 3 pointers and the ID are 3-byte data words (Big Endian); if a cheat has no "disabled" message, the last byte of the third element is taken up by the ID (the remaining 2 bytes are garbage, as well as the ID field).--><br />
:In the Mac OS 9 builds, the pointers and the ID are 2-byte words (Big Endian); regular rows take up 8 bytes; for one-way cheats with no "disabled" message, weird stuff happens to the third pointer and to the ID, and the row takes up 10 bytes... the ID can be found in what would be the first byte of the ID field instead of the second, and the remaining 3 bytes are garbage. An additional garbage byte is added between consecutive one-way cheats (0x06 and 0x07).<br />
<br />
====Let's kill killmequick====<br />
In the PC, PC demo and Mac OS X (PPC) builds, there's extra space at the end of the lookup table and where the cheat codes/messages are stored, so one can add '''thedayismine''' as an extra cheat. On Mac OS 9, the data is packed tighter (and the text strings are stored together with their size), so the only easy way is to replace an existing cheat. Since replacing an existing cheat is the only solution that works on all platforms, the following mini-tutorial will explain how to bind the Developer Mode cheat event to the Ultra Mode cheat code '''killmequick''' (since hardly anyone uses that cheat).<br />
<br />
====Finding the lookup table====<br />
Open the executable (or the data fork of the executable in the Mac OS 9 build), after backing it up of course.... We shall look for the last three elements of the table, corresponding to '''fistsoflegend''', '''killmequick''' and '''carousel'''.<br />
;In the PC retail and PC demo builds, look for '''13 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 14 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 15 00 00 00'''<br />
;In the Mac OS X (PPC) build, look for '''00 00 00 13 ## ## ## ## ## ## ## ## ## ## ## ## 00 00 00 14 ## ## ## ## ## ## ## ## ## ## ## ## 00 00 00 15''' ([[:File:Finding killmequick - Omni build.jpg|sample pic]])<br />
;In the Mac OS 9 builds, look for '''00 13 ## ## ## ## ## ## 00 14 ## ## ## ## ## ## 00 15''' ([[:File:Finding killmequick - Mac OS 9 build.jpg|sample pic]])<br />
;<br />
where the ## are joker characters (wildcard bytes). Once you've found that data (make sure it occurs only once in the file), replace the '''14''' with a '''0B'''.<br />
<br />
Developer Mode will now be enabled/disabled every time you type '''killmequick''' at the Pause screen; you'll get "Ultra Mode Enabled" and "Ultra Mode Disabled" as confirmation messages.<br />
{{Divhide|end}}<br />
<br />
==Using it==<br />
===First check===<br />
Cheats are normally unavailable until you finish the full version of the game, and Developer Mode can only be activated through a cheat code. For unlocking cheats "manually" (especially necessary with the demos), see [[Cheats|HERE]]. However, cheats are enabled all the time when the Daodan DLL is installed in Windows or when using the Mac Intel build.<br />
<br />
Enter the Pause screen (default key F1) and look for a confirmation message after typing the Developer Mode cheat ('''thedayismine''', or '''killmequick''' if you followed the DIY tutorial, or just '''x''' -- the DLL and Intel build provide that shortcut). However, you may not notice anything special when you get back to the game (although there should be occasional console messages appearing at the bottom-left). <br />
<br />
The quickest way to tell whether Dev Mode definitely works, right after you get the confirmation message, is to exit the Diary screen and to press '''End'''. That should teleport you to where the camera is (usually back and up, possibly through walls and ceilings).<br />
<br />
Here's another quick test, meant to see if the Control and Alt keys work fine (on Mac, use the Option key instead of Alt): Ctrl+Shift+U and Ctrl+Alt+U should both perform the "unstick" action; Konoko will shift forward by a small amount.<br />
<br />
===Console output===<br />
In Developer Mode, Oni prints debug messages about in-game events along the bottom-left of the screen. Past messages scroll up across the screen and fade. In some situations, messages don't fade (e.g. if character debugging is enabled or you are currently using the console line).<br />
<br />
The easiest way to check whether that output works at all is to press '''F8''': the character class change is acknowledged with a console message.<br />
<br />
If you don't see anything, that means console output is unfortunately disabled in your version of Oni. If you're on PC retail, you may have applied [[Troubleshooting/Blam|Ian's patch]] (aka XP patch), which disables console output. On PC demo, both console output and console input are invisible (i.e. you can enter script commands, but you're "blindfolded").<br />
<br />
===Console input===<br />
U.S. QWERTY: By default, Oni auto-binds the "console" toggle to the key which on U.S. keyboards has a grave accent, <span style="font-size:200%; top:0.3em; position:relative">`</span>, in the lowercase position and a tilde, <span style="font-size:175%">~</span>, in the uppercase position. It is usually called the "tilde key" by users, and perhaps even elsewhere on this wiki; however, you would have to hold Shift to type a tilde, and the console is activated by just pressing the key without Shift, thus it is actually the "grave accent key" which activates the console. On non-U.S. keyboards, that key may not be recognized. Just add a line like "bind leftalt to console" to '''key_config.txt''' in your Oni folder and you'll be able to open the console with that key. In some cases, this bound key will not ''close'' the console; however, pressing the grave accent key, oddly enough, may work.<br />
<br />
German QWERTZ: By default, Oni uses the circumflex accent key, <span style="font-size:150%">^</span>, for console access. On Windows, when playing Oni in windowed mode, you should use "rightalt" as your alternative console binding because "leftalt" activates the window's menu, stealing Oni's controls.<br />
<br />
<br />
===Controls===<br />
====Hotkeys====<br />
Below are Oni's hardcoded mappings for Developer Mode functions. The Alt key (Option key on Macs) can be used in placed of Ctrl. Alternate mappings are welcome if you have another version of Oni that you would like to have listed below.<br />
<br />
The QWERTY column is for the English release of Oni, for U.S. QWERTY keyboards. The QWERTZ column is for German Oni and only lists the hotkeys that are different from QWERTY on German QWERTZ keyboards; note that on German keyboards, the "Ctrl" key is named "Strg".<br />
<br />
{|class="wikitable" style="margin-left:auto; margin-right:auto;"<br />
!Hotkey (QWERTY)<br />
!Hotkey (QWERTZ)<br />
!Description<br />
!width=75|Windows<br />
!width=75|Mac<br />
|-<br />
|Ctrl+Shift+o<br />
|<br />
|Draw no-occlusion quads (only makes console screens disappear)<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+i<br />
|<br />
|Draw invisible quads<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+y<br />
|Ctrl+Shift+z<br />
|Performance display (includes FPS)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+t<br />
|<br />
|Draw character collision<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+r<br />
|<br />
|Draw object collision<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+f<br />
|<br />
|Fast Mode (runs Oni at up to 24x)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+g<br />
|<br />
|Draw Every Frame Mode<br />
|<center>{{ckblue}}</center><br />
|<center>'''(1)'''</center><br />
|-<br />
|Ctrl+Shift+x<br />
|<br />
|Secret X / (Mac only) Show trigger volumes<br />
|<br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+y<br />
|<br />
|Secret Y<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+z<br />
|<br />
|Secret Z<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+Ins<br />
|<br />
|Add flag<br />
|<center>{{ckblue}}</center><br />
|<center>'''(2)'''</center><br />
|-<br />
|Ctrl+Shift+Del<br />
|<br />
|Delete flag<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+u<br />
|<br />
|Unstick player<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+n<br />
|<br />
|Camera recording start<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+m<br />
|<br />
|Camera recording stop<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+,<br />
|<br />
|Camera recording playback<br />
|<br />
|<br />
|-<br />
|?<br />
|<br />
|Place quad<br />
|<center>?</center><br />
|<center>?</center><br />
|-<br />
|?<br />
|<br />
|Place quad mode<br />
|<center>?</center><br />
|<center>?</center><br />
|-<br />
|Ctrl+Shift+\<br />
|Ctrl+Shift+#<br />
|Profile toggle (doesn't seem to have any effect)<br />
|<center>{{ckblue}}</center><br />
|<br />
|-<br />
|Ctrl+Shift+l<br />
|<br />
|Dumps a screenshot every frame<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+1<br />
|<br />
|Test One<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+2<br />
|<br />
|Test Two<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+3<br />
|<br />
|Test Three<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+4<br />
|<br />
|Test Four<br />
|<br />
|<br />
|-<br />
|. (period)<br />
|<br />
|Single Step Mode<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|/<br />
| -<br />
|Advance one step (when in Single Step Mode)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|.+/<br />
|.+-<br />
|Exit Single Step Mode (press keys simultaneously)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+Home<br />
|<br />
|Cycle active camera<br />
|<br />
|<br />
|-<br />
|End<br />
|<br />
|Warp to camera<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+k<br />
|<br />
|Kill particles<br />
|<br />
|<br />
|-<br />
|Backspace<br />
|<br />
|Enter AI debugger<br />
|<br />
|<br />
|-<br />
|7<br />
|<br />
|Explode One<br />
|<br />
|<br />
|-<br />
|8<br />
|<br />
|Explode Two<br />
|<br />
|<br />
|-<br />
|9<br />
|<br />
|Explode Three<br />
|<br />
|<br />
|-<br />
|0<br />
|<br />
|Explode Four<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+j<br />
|<br />
|Reset particles<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+w<br />
|<br />
|Drop flag and add waypoint<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+b<br />
|<br />
|Shows current opponent's logic<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|]<br />
|~<br />
|Freeze (now causes camera drift while on;<br>stopping Freeze mode teleports to camera location)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|[<br />
|<br />
|Frame Advance (now renders Konoko at camera location)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+s<br />
|<br />
|Highlight furniture (turns their textures red)<br />
|<center>{{ckblue}}</center><br />
|<br />
|-<br />
|F8, Shift+F8<br />
|<br />
|Cycle characters<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+Shift+p<br />
|<br />
|Display particle performance<br />
|<br />
|<br />
|-<br />
|Ctrl+Shift+;<br />
|<br />
|Lock particle performance display<br />
|<br />
|<br />
|-<br />
|F2<br />
|<br />
|Cutscene Animation 1<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F3<br />
|<br />
|Cutscene Animation 2<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F6<br />
|<br />
|Kill all AIs<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Ctrl+F7<br />
|<br />
|Play dead<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F7, Shift+F7<br />
|<br />
|Cycle weapons (holster to get second weapon)<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F9<br />
|<br />
|Start recording<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F10<br />
|<br />
|Stop recording<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|F11<br />
|<br />
|Playback recording<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|` (grave accent)<br />
|^<br />
|Displays console<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|-<br />
|Return/Enter<br />
|<br />
|Cycle camera modes (see table below for camera controls):<br>1. Normal<br>2. Detached A - mouse still controls character aim<br>3. Detached B - mouse aims camera<br />
|<center>{{ckblue}}</center><br />
|<center>{{ckblue}}</center><br />
|}<br />
<br />
'''(1)''' On Macs, Draw Every Frame Mode speeds up the game almost to the extent of Fast Mode, but with glitchy animations.<br />
<br />
'''(2)''' Please see talk page section "Insert key on Macs".<br />
<br />
====Camera controls====<br />
Note that the camera controls have default mappings, given below, but unlike the developer hotkeys, they are '''custom-bindable'''. In fact, on Macs, the default numpad bindings ''need'' to be customized or they won't work at all. See note [[Customizing/Binding#Detached camera controls|HERE]] about how to bind these keys and fix the Mac numpad controls. Also, the definitions of panning left and right seem to be reversed, as NumPad4 will simulate the act of turning your head to the left, but its action is called "man_cam_pan_right", and vice versa for NumPad6....<br />
{|class="wikitable" style="margin-left:auto; margin-right:auto;"<br />
|align="center"|'''Windows'''<br />
{|class="wikitable" style="margin-left:auto; margin-right:auto;"<br />
!Key<br />
!Result<br />
|-<br />
|NumPad 1/3<br />
|Move camera left/right<br />
|-<br />
|NumPad 8/5<br />
|Move camera forward/backward<br />
|-<br />
|NumPad -/+<br />
|Move camera up/down<br />
|-<br />
|NumPad 6/4<br />
|Pan camera left/right<br />
|-<br />
|Up/Down Arrow<br />
|Pan camera up/down<br />
|}<br />
|align="center"|'''Mac'''<br />
{|class="wikitable" style="margin-left:auto; margin-right:auto;"<br />
!Key<br />
!Result<br />
|-<br />
|Left/Right Arrow<br />
|Move camera left/right<br />
|-<br />
|Up/Down Arrow<br />
|Move camera forward/backward<br />
|-<br />
|Page Up/Down<br />
|Move camera up/down<br />
|-<br />
|NumPad 6/4<br />
|Pan camera left/right<br />
|-<br />
|NumPad 8/2<br />
|Pan camera up/down<br />
|}<br />
|}<br />
<br />
====Runtime scripting====<br />
=====Basic idea=====<br />
(Almost) anything you write in scripts you can enter at runtime with the console. The only thing you can't do is register new variables and functions.<br />
<br />
You can call existing functions, check on the values of existing variables. "Existing" means either built-in ones, or part of the original level logic, or part of your own scripts for the given level.<br />
<br />
If a function/variable was succesfully registered by Oni during level load, you will be able to refer to them from the console.<br />
<br />
You will even be able to browse the registered variables/functions with the '''Tab''' key, while typing at the console. '''Tab''' autocompletes the command being typed, then cycles through all available commands in (hex)alphabetical order (A...Z come before a...z). '''Shift+Tab''' lets you go back.<br />
<br />
Previous commands can be navigated with up and down arrows. You can't insert/delete text in the middle of a command : you have to use '''Backspace'''.<br />
<br />
The only keys that have an effect while the console is active are : '''Escape''', '''Enter''', '''Backspace''', '''(Shift+)Tab''', ASCII character keys and the arrow keys.<br />
<br />
If you press an illegal key during console input (such as F1), the input display will freeze : hit '''Tab''' a few times to fix.<br />
<br />
=====Limitations=====<br />
Obviously, if you have no console output, it's a bit frustrating. Even more so if console ''input'' is invisible -- you're in for some ''blindfolded'' scripting then. Still, there are a few commands which you can type in as complements to regular cheats:<br />
:'''chr_nocollision 0 1''' and '''chr_nocollision 0 0''' enable/disable no-clipping. When in no-clipping mode, you can't fall down; thus, jumping makes you flail in midair, and eventually you die (so be careful about that)<br />
:'''give_powerup shield''' gives you a force shield (which you can't have with '''fatloot''')<br />
:'''dump_docs''' prints all the registered commands/variables to a file in your Oni folder (so you know just what you can type)<br />
<br />
[[Category:Modding information]]</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Developer_Mode&diff=22488Talk:Developer Mode2013-05-07T14:21:22Z<p>EdT: </p>
<hr />
<div>==More testing needed==<br />
At some point, someone should review what hotkeys definitely work on the Windows side, because this questionable PC I'm testing on does not seem to do some of the things Windows is supposed to do (and in some cases things the Mac can do), like Single Step mode, f2/f3-binding, screenshots, and adding flags (actually, I seem to be able to add a flag, but show_flags is not displaying flags so I can't confirm; all I know is that hitting Delete Flag after hitting Add Flag does not return an error about not being close enough to a flag). In some cases I have marked these things as working just because I'm told they are supposed to work in Windows. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 01:04, 7 May 2013 (CEST)<br />
<br />
: I seem to recall the f2/f3 binding works only when you are recording a movie. Those keys were used in the arena levels. I may have time tomorrow to give it a try on the Mac. [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
::Ah, that's it! I don't remember reading that anywhere... maybe I missed it. I see these actually work on Mac too, nice. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:06, 7 May 2013 (CEST)<br />
::: It is written in the arena_menu_bsl "F2 and F3 are only active when Oni is recording a movie" [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
==Insert key on Macs==<br />
''Putting this extension to the article here to allow responses to it, but also because it only interests Mac users who want to place flags in Dev Mode; a rather niche audience.''<br />
<br />
The Insert key never matters at all to a Mac user until one day it becomes the most important key on the keyboard. That is because Mac keyboards have for years lacked any key that says '''Insert''' or '''Ins'''. Well, modern apps tend to not use this key, so it only matters in certain situations. In Oni, the DevMode "addflag" key is '''Ctrl+Shift+Ins'''. Now, admittedly adding flags is not that useful when you can't save the flag location into the game data as Bungie once could. But I thought I would gather some information on how to reproduce the "Insert" key, and just leave it here for anyone who's interested, because it's a rather confusing subject. The following keys or combinations have been claimed by various parties, including Apple, to produce an Insert-key event on certain systems (or then again, it may all be an elaborate prank). And remember, you have to add '''Ctrl+Shift''' to Insert in order for it to become the "addflag" key Oni is looking for:<br />
*Help (don't have a Help key? Me neither...)<br />
*fn+Help<br />
*Ctrl+fn+m (I think Ctrl may be unneeded on each of these combos, but just for thoroughness' sake...)<br />
*Ctrl+fn+Home<br />
*Ctrl+fn+Return<br />
*Ctrl+fn+Enter<br />
*Shift+Clear (to turn off numlock), then NumPad0<br />
*fn+NumPad0<br />
*Shift+Option+Command+NumPad0 (now surely you must be joking, right?)<br />
Well, lots of options, that's, uh, nice, right? However, none of these seem to work on my Mac (mid-2011 iMac). It's difficult to even know what app to test these in, as I can't know if they are even coded to look for a key that isn't supposed to exist on Macs. But I'd love to hear feedback from other Mac users on what works for them. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 04:38, 7 May 2013 (CEST)<br />
<br />
:I have a keyboard that has the Ins key which is the same as the Help key except I need to press the fn key along with the help key. However pressing the Ctrl+Shift+Ins or Ctrl+Shift+Ins+fn has no effect, no message in the console and no flags appear. [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
::I didn't remember to mention this above, but I assume you did "show_flags=1" first? It actually won't print a message to console whether it succeeds or fails, so you have to be able to see flags to know if it works. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:06, 7 May 2013 (CEST)<br />
:::Of course I used show_flags=1. Also I did the same test as you did, insert flag then delete flag, however I got the message "not close enough to flag" so that shows a flag was not added. [[User:EdT|EdT]] ([[User talk:EdT|talk]])</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Developer_Mode&diff=22480Talk:Developer Mode2013-05-07T04:30:38Z<p>EdT: f2/f3 binding works in the arena script</p>
<hr />
<div>==More testing needed==<br />
At some point, someone should review what hotkeys definitely work on the Windows side, because this questionable PC I'm testing on does not seem to do some of the things Windows is supposed to do (and in some cases things the Mac can do), like Single Step mode, f2/f3-binding, screenshots, and adding flags (actually, I seem to be able to add a flag, but show_flags is not displaying flags so I can't confirm; all I know is that hitting Delete Flag after hitting Add Flag does not return an error about not being close enough to a flag). In some cases I have marked these things as working just because I'm told they are supposed to work in Windows. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 01:04, 7 May 2013 (CEST)<br />
<br />
: I seem to recall the f2/f3 binding works only when you are recording a movie. Those keys were used in the arena levels. I may have time tomorrow to give it a try on the Mac. [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
==Insert key on Macs==<br />
''Putting this extension to the article here to allow responses to it, but also because it only interests Mac users who want to place flags in Dev Mode; a rather niche audience.''<br />
<br />
The Insert key never matters at all to a Mac user until one day it becomes the most important key on the keyboard. That is because Mac keyboards have for years lacked any key that says '''Insert''' or '''Ins'''. Well, modern apps tend to not use this key, so it only matters in certain situations. In Oni, the DevMode "addflag" key is '''Ctrl+Shift+Ins'''. Now, admittedly adding flags is not that useful when you can't save the flag location into the game data as Bungie once could. But I thought I would gather some information on how to reproduce the "Insert" key, and just leave it here for anyone who's interested, because it's a rather confusing subject. The following keys or combinations have been claimed by various parties, including Apple, to produce an Insert-key event on certain systems (or then again, it may all be an elaborate prank). And remember, you have to add '''Ctrl+Shift''' to Insert in order for it to become the "addflag" key Oni is looking for:<br />
*Help (don't have a Help key? Me neither...)<br />
*Ctrl+fn+m (I think Ctrl may be unneeded on each of these combos, but just for thoroughness' sake...)<br />
*Ctrl+fn+Home<br />
*Ctrl+fn+Return<br />
*Ctrl+fn+Enter<br />
*Shift+Clear (to turn off numlock), then NumPad0<br />
*fn+NumPad0<br />
*Shift+Option+Command+NumPad0 (now surely you must be joking, right?)<br />
Well, lots of options, that's, uh, nice, right? However, none of these seem to work on my Mac (mid-2011 iMac). It's difficult to even know what app to test these in, as I can't know if they are even coded to look for a key that isn't supposed to exist on Macs. But I'd love to hear feedback from other Mac users on what works for them. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 04:38, 7 May 2013 (CEST)<br />
<br />
:I have a keyboard that has the Ins key which is the same as the Help key except I need to press the fn key along with the help key. However pressing the Ctrl+Shift+Ins or Ctrl+Shift+Ins+fn has no effect, no message in the console and no flags appear. [[User:EdT|EdT]] ([[User talk:EdT|talk]])</div>EdThttps://wiki.oni2.net/w/index.php?title=Talk:Developer_Mode&diff=22479Talk:Developer Mode2013-05-07T04:20:49Z<p>EdT: </p>
<hr />
<div>==More testing needed==<br />
At some point, someone should review what hotkeys definitely work on the Windows side, because this questionable PC I'm testing on does not seem to do some of the things Windows is supposed to do (and in some cases things the Mac can do), like Single Step mode, f2/f3-binding, screenshots, and adding flags (actually, I seem to be able to add a flag, but show_flags is not displaying flags so I can't confirm; all I know is that hitting Delete Flag after hitting Add Flag does not return an error about not being close enough to a flag). In some cases I have marked these things as working just because I'm told they are supposed to work in Windows. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 01:04, 7 May 2013 (CEST)<br />
<br />
==Insert key on Macs==<br />
''Putting this extension to the article here to allow responses to it, but also because it only interests Mac users who want to place flags in Dev Mode; a rather niche audience.''<br />
<br />
The Insert key never matters at all to a Mac user until one day it becomes the most important key on the keyboard. That is because Mac keyboards have for years lacked any key that says '''Insert''' or '''Ins'''. Well, modern apps tend to not use this key, so it only matters in certain situations. In Oni, the DevMode "addflag" key is '''Ctrl+Shift+Ins'''. Now, admittedly adding flags is not that useful when you can't save the flag location into the game data as Bungie once could. But I thought I would gather some information on how to reproduce the "Insert" key, and just leave it here for anyone who's interested, because it's a rather confusing subject. The following keys or combinations have been claimed by various parties, including Apple, to produce an Insert-key event on certain systems (or then again, it may all be an elaborate prank). And remember, you have to add '''Ctrl+Shift''' to Insert in order for it to become the "addflag" key Oni is looking for:<br />
*Help (don't have a Help key? Me neither...)<br />
*Ctrl+fn+m (I think Ctrl may be unneeded on each of these combos, but just for thoroughness' sake...)<br />
*Ctrl+fn+Home<br />
*Ctrl+fn+Return<br />
*Ctrl+fn+Enter<br />
*Shift+Clear (to turn off numlock), then NumPad0<br />
*fn+NumPad0<br />
*Shift+Option+Command+NumPad0 (now surely you must be joking, right?)<br />
Well, lots of options, that's, uh, nice, right? However, none of these seem to work on my Mac (mid-2011 iMac). It's difficult to even know what app to test these in, as I can't know if they are even coded to look for a key that isn't supposed to exist on Macs. But I'd love to hear feedback from other Mac users on what works for them. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 04:38, 7 May 2013 (CEST)<br />
<br />
:I have a keyboard that has the Ins key which is the same as the Help key except I need to press the fn key along with the help key. However pressing the Ctrl+Shift+Ins or Ctrl+Shift+Ins+fn has no effect, no message in the console and no flags appear. [[User:EdT|EdT]] ([[User talk:EdT|talk]])</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:Neo&diff=22281User talk:Neo2013-04-25T15:02:32Z<p>EdT: sound_show_debug=1 is your friend</p>
<hr />
<div>'''Talk page archives''': [[User_talk:Neo/Archive1|#1]] - [[User_talk:Neo/Archive2|#2]] - [[User_talk:Neo/Archive3|#3]] - [[User_talk:Neo/Archive4|#4]] - [[User_talk:Neo/Archive5|#5]]<br />
<br />
Hi Neo, In the latest oni split 0.9.55, there seems to be a problem with converting ONCC files, <br />
It fails to convert ONCC.xml files made by earlier to oni files .. says something about jump fields, the ONCC xml created by older versions are different from the ones created by this one, different fields <Jump Constants> and <Air Constants> instead of <Physics>, that would be ok we could switch to the new layout. However onisplit v.55 also fails to convert ONCC.xml it created back to oni. .. convert any ONCC.oni to xml, try to convert that xml back to oni, it fails.<br />
<br />
2- It is also unable to convert a TRAM.oni file made from a dae by older versions back to xml : Operation is not valid due to current state of object. (containing QKEYS) while 0.941 is able to convert them.<br />
<br />
reported by Samer on July 10 2011<br />
<br />
<br />
<br />
Hi Neo, a bug has been ecountered by me in OniSplit's xml export. The bug applies on versions 0.9.50.0 and 0.9.52.0. If exported TRAM file has direct animation links, only the second direct link is written into XML file. The first direct link is ignored (is always an empty element).<br />
<br />
This is an excerpt from KONCOMcomb_p_p XML file as created by OniSplit 0.9.52.0:<br />
<DirectAnimations><br />
<Link /><br />
<Link>TRAMKONCOMcomb_p_p_k</Link><br />
</DirectAnimations><br />
<br />
It should be:<br />
<DirectAnimations><br />
<Link>TRAMKONCOMcomb_p_p_p</Link><br />
<Link>TRAMKONCOMcomb_p_p_k</Link><br />
</DirectAnimations><br />
<br />
Binary (*.oni) files contain both direct links. Exported XML files don't. Since usually only the first direct link is used, this bug poses quite a nuisance. Thank you in advance.<br />
<br />
: It might be that the binary (oni/exe) are corrupted. My version of TRAMKONCOMcomb_p_p.oni was correctly extracted with onisplit 52. [http://dl.dropbox.com/u/139715/temp/talk/TRAMKONCOMcomb_p_p.oni link]. --[[User:Paradox-01|paradox-01]] 19:00, 8 July 2011 (CEST)<br />
<br />
While I'm here I will take the chance to also ask something. I'm trying to create a combo. The animations work fine with animation type Kick, Kick2, Kick3 but not with KickRight, KrKr*, KrKrKr**. Could it be that those* animation types are dead? [http://dl.dropbox.com/u/139715/temp/talk/combo_tests.zip Here] are the plugin/file to test for you guys. I hope you will find out what's wrong. --[[User:Paradox-01|paradox-01]] 19:00, 8 July 2011 (CEST)<br />
<br />
: Loser: The problem more than likely was the fact that the TRAMKONCOMcomb_p_p_p.oni was not in the same directory as TRAMKONCOMcomb_p_p. To test, I removed TRAMKONCOMcomb_p_p_p.oni and got the same result as you did, added it back and got the correct output. OniSplit wants all the files to be in the same directory. [[User:EdT|EdT]] 23:36, 8 July 2011 (CEST)<br />
<br />
<br />
<br />
----<br />
<br />
<br />
Neo, do you think we can have something like a -nodeps argument added to OniSplit? We could use a way to prevent the program from automatically following all dependencies when exporting files like ONCCs to XML. --[[User:Iritscen|Iritscen]] 14:26, 6 July 2011 (CEST)<br />
:Oops, never mind, it sounds like this is already OniSplit's default behavior.... --[[User:Iritscen|Iritscen]] 16:24, 6 July 2011 (CEST)<br />
<br />
-----<br />
Pathfinding issue fixed, though it seems to be still slightly off:<br />
<br />
http://edt.oni2.net/images/junkyard_PFG.jpg<br />
<br />
There is still the issue of falling through the ground.<br />
<br />
level files are here: http://edt.oni2.net/testlevel/junkyard.zip<br />
<br />
[[User:EdT|EdT]] 03:14, 18 June 2011 (CEST)<br />
<br />
<br />
<br />
Hi Neo,<br />
<br />
I was able to create the pathfinding grids, however, they are offset from the geometry. Also, there is a spot where you will fall through the ground.<br />
<br />
http://edt.oni2.net/testlevel/junkyard.png<br />
<br />
The bnv itself is correct:<br />
<br />
http://edt.oni2.net/testlevel/junkyard_bnv.png<br />
<br />
Here are my files: http://edt.oni2.net/testlevel/TestLevel.zip<br />
<br />
EDIT: Tested OniSplit with the arena level data: http://mods.oni2.net/system/files/80200ArenaofHurt.zip<br />
Extracted the AKEV, then used create:akev to import the level. The pathfinding grids were offset from the geometry and there were areas where the player will fall through the floor. <br />
<br />
[[User:EdT|EdT]] 01:03, 17 June 2011 (CEST)<br />
<br />
-----<br />
<br />
<br />
<br />
Hi Neo,<br />
I have tried Your ".dae" to ".xml" animation importer. I keep getting message ".dae files cannot be imported as TRAM". Can you tell me please where is the problem? Thank you. --[[User:Loser|Loser]] 13:00, 11 July 2010 (UTC)<br />
<br />
Hello, to import an animation you need an xml file and a dae file. If you try to export a TRAM to xml you get both files and when importing you need to provide the xml file, not the dae file. The dae file is referenced from inside the xml file (see the DaeImport element) [[User:Neo|Neo]]<br />
<br />
<br />
New OniSplit version: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit%5E_v0.9.52.zip OniSplit v0.9.52]<br />
<br />
What's new:<br />
:* When a TRBS file is exported to xml the geometry is exported to separate .dae files, one .dae file for each LOD<br />
:* New -anim-body option. This allows a particular body (ONCC or TRBS) to be specified when exporting animations:<br />
<br />
onisplit -extract:xml out -anim-body:ONCCbarabus.oni TRAMsomething.oni<br />
<br />
:* New -recurse option for the xml exporter. Have fun :)<br />
<br />
onisplit -extract:xml out -recurse ONCCbarabus.oni<br />
<br />
:* Changed light color in the environment importer to white (it used to be blueish)<br />
:* New -env-notxmp option. This prevents the automatic creation of TXMP files while importing the environment.<br />
:* Made -normals work when importing TRBS from xml + dae files.<br />
<br />
New OniSplit version: OniSplit v0.9.41<br />
<br />
What's new:<br />
<br />
:* fixed the Collada importer to work with 3DSMax exported files<br />
<br />
New OniSplit version: OniSplit v0.9.40<br />
<br />
What's new:<br />
<br />
:* support for exporting/importing [[OBD:BINA/SABD|sound animations]] to/from xml files<br />
:* better Collada export for environment<br />
:* support for full color transparent textures (-format:bgra32 on the command line, ARGB8888 format in an xml file)<br />
:* different (hopefully better) xml export format for animations (this one is actually from 0.9.38 but since that wasn't mentioned here...)<br />
:* a more or less complete animation importer. This one deservers some notes:<br />
::-unlike other importers that produce .oni files this one produces and .xml file (similar to the one you get when exporting a TRAM)<br />
::when you do<br />
onisplit -create:tram target_dir animation.dae<br />
::in the target dir you'll get a TRAManimation.xml file.<br />
::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.<br />
::-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.<br />
::-Note that the geometry that is present inside the Collada file is used to compute the "vertical extents" so it better be the same or close to the one the animation is intended for.<br />
::-The biggest problem are the attacks. While it's not difficult to add attacks to the xml file, computing the necessary "extents" is not going to be easy. I guess in the end I'll have to add some command to OniSplit to do it.<br />
::-Everything else that I forgot :)<br />
<br />
[[User:Neo|Neo]]<br />
<br />
New OniSplit version: OniSplit v0.9.37<br />
<br />
What's new:<br />
<br />
:* support for transparency in the environment importer<br />
<br />
<br />
New OniSplit version: OniSplit v0.9.35<br />
<br />
What's new:<br />
<br />
:* conversion of recorded films (.dat binary files) to xml files that can be used to create FILM .oni files<br />
<br />
OniSplit film2xml out_dir film.dat<br />
<br />
----<br />
Neo<br />
<br />
I get this error message using the command create:tram<br />
<br />
System.NotSupportedException: Invalid rotation axis {X:0 Y:0 Z:-1} for rotate transform in animation pelvis-node-ry<br />
at Oni.Totoro.AnimationDaeReader.FindRotations () [0x00000] <br />
at Oni.Totoro.AnimationDaeReader.Import (System.String filePath, System.String outputDirPath) [0x00000] <br />
at Oni.Program.CreateGeneric (System.String[] args) [0x00000] <br />
at Oni.Program.Main (System.String[] args) [0x00000] (1)<br />
<br />
The dae files are here: http://www.filefront.com/14507129/dae.rar<br />
<br />
xml animation file here: http://www.filefront.com/14507115/ID%20walking.xaf<br />
<br />
Thanks [[User:EdT|EdT]]<br />
<br />
Yep, caused by Z-up. I'll see what I can do.<br />
<br />
[[User:Neo|Neo]]<br />
<br />
Hi Neo,<br />
<br />
When you have time, can you take a look at this:<br />
<br />
http://edt.oni2.net/temp/TRBSproblem.jpg<br />
<br />
When I use the latest FBX Converter 2010.2 to convert FBX to DAE, I get this problem. However, when I use an older version, it works fine. Here are the DAEs from both version: http://edt.oni2.net/temp/TRBSproblem.zip G2 is uses the new version, G1 uses the old.<br />
<br />
Thanks [[User:EdT|EdT]]<br />
<br />
Oh boy, the new converter uses matrix transforms instead of individual scale/rotate/translate transforms. I'll see what I can do...<br />
<br />
[[User:Neo|Neo]]<br />
<br />
<br />
----<br />
<br />
The Iron Demon walks! Sorta...<br />
<br />
You can see the video here: http://edt.oni2.net/ID/IDwalk.wmv<br />
<br />
I converted the files from Bobbysoon (TRAMID_run1stepb.DAE, TRAMID_runstart.DAE, TRAMID_runstop.DAE) to xml. The XML gave the pelvis height as <Height>-2175.5</Height>, so I removed the negative and divided the height by 100. But as you can see, the model floats above the ground. Also, the velocity has some large numbers in the first part <Velocity>-4.076141 0</Velocity> I think that is the cause of the ID moving sideways not forward.<br />
<br />
Files here: http://edt.oni2.net/ID/ID_Files.zip<br />
<br />
[[User:EdT|EdT]]<br />
<br />
:Ha ha, that's going in my album of weird modding results. Anyway, I didn't even realize that animations were supposed to work yet, I thought we were waiting for an update to OniSplit. --[[User:Iritscen|Iritscen]] 14:33, 29 November 2009 (UTC)<br />
<br />
<br />
----<br />
<br />
Hi Neo,<br />
<br />
Having problems converting DAEs to trams. I put all the files in a zip and included a ReadMe with the description of the errors. http://edt.oni2.net/temp/NeoTRAM.zip<br />
<br />
I was trying to make new animations, whenever you have time, please take a look. Thanks [[User:EdT|EdT]]<br />
<br />
<br />
----<br />
Hmm... I just discovered that I can't export TXMPs from a .dat file to the PNG format. I am attempting to use the -extract:png command on a virgin .dat file. The -extract:tga options works fine, but the -extract:png option gives:<br />
System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: gdiplus.dll<br />
at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)<br />
at System.Drawing.GDIPlus..cctor () [0x00000] <br />
--- End of inner exception stack trace ---<br />
at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000] <br />
at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (int,int,System.Drawing.Imaging.PixelFormat)<br />
at Oni.Imaging.SysExporter.ExportInstance (Oni.InstanceDescriptor descriptor) [0x00000] <br />
at Oni.Exporter.ExportInstanceList (System.Collections.Generic.List`1 descriptors) [0x00000] <br />
at Oni.Exporter.Export (Oni.InstanceFileManager fileManager, System.String sourceFilePath, System.String filter) [0x00000] <br />
at Oni.Program.ExtractTextures (System.String[] args) [0x00000] <br />
at Oni.Program.Main (System.String[] args) [0x00000]<br />
This occurred in both 0.9.38 and 0.9.41 on my Mac. I used to always extract TXMPs as TGA, so I don't know when this actually worked for me. --[[User:Iritscen|Iritscen]] 17:54, 2 January 2010 (UTC)<br />
<br />
:TGA always works because it's all done in OniSplit. For PNG/JPG I'm using the framework (.NET/Mono) and Mono seems to have a problem. [[User:Neo|Neo]]<br />
<br />
:I just tested it myself and I was able to extract all the textures from a virgin .dat file as PNG. I'm using the latest version 0.9.45 and the latest Mono framework. OSX 10.5.8 and 10.6.2 [[User:EdT|EdT]]<br />
<br />
::Okay, after many aborted attempts at updating mono (I was running 2.0.1) by building from source or using their binary installer, I realized that the installer was putting the files in some meaningless directory, and I ended up copying them to the right system directories, hoping I didn't overwrite libraries that were supposed to stay unchanged. Who knows what the consequences will be down the road for other stuff, but OniSplit now exports PNGs properly for me! --[[User:Iritscen|Iritscen]] 20:28, 3 January 2010 (UTC)<br />
<br />
----<br />
Observations of importing TRAMs to XSI.<br />
<br />
Sometimes, imported TRAMs will have odd rotations mainly related to the pelvis and thighs. Here is one example, the Striker's walking TRAM:<br />
http://edt.oni2.net/TRAMS/WalkOS.wmv As you can see the pelvis and thighs are rotating in an odd fashion. This is due to euler vs quaternion rotations. To see it correctly in XSI, you can use the option to "Convert Euler Rotation to Quaternion" on the pelvis and thighs, then the animation appears correct: http://edt.oni2.net/TRAMS/WalkQT.wmv However, when importing a converted animation back to Oni, you get this result: http://edt.oni2.net/TRAMS/WalkOni.wmv<br />
<br />
When a TRAM is imported to XSI, to "unwrap" a model from the default animation state, the right thigh is rotated 180 on the X axis and -180 on the Z axis, the left is rotated -180 on the X and -180 on the Z axis. Somehow, from this starting point, whenever XSI moves the thigh from a negative to a positive angle (or in the case of this example from positive to negative), the part would rotate the long way around as shown here: http://edt.oni2.net/TRAMS/ThighXZaxis.wmv<br />
<br />
One workaround is to insert keyframes to cause the animation to rotate in the correct direction.<br />
<br />
I found another approach that seems to work, if you are making an animation from scratch. That is to rotate the thighs down 180 on the Y axis. So far in my testing, there are no odd rotations: http://edt.oni2.net/TRAMS/ThighYaxis.wmv<br />
<br />
The Striker DAE files and the XSI scene files are here: http://edt.oni2.net/TRAMS/TRAMfiles.zip<br />
<br />
[[User:EdT|EdT]]<br />
<br />
I'm still unsure how the XZ animation was produced. There's a keyframe (for the Z rotation of left_thigh) that causes this. It's value is 135 while all the other keyframes for Z are well below 0 (-150..-180). If you move that keyframe to something like -215 then the animation works fine. Or so it appears to me... <br />
<br />
[[User:Neo|Neo]]<br />
<br />
:That's true about changing the keyframe to -215, however, for all the TRAMs exported from Oni, the number for the rotations are always less than 180 or -180. When the thigh is positioned in front of the body, the rotation on the Z axis is negative, between the range of -0.x to -179.x and when it is positioned behind the body, the rotation number is positive, between the range of 0.x to 179.x. So my XZ animation was reflecting that aspect. [[User:EdT|EdT]]<br />
<br />
::Ah, I didn't think about that. I don't think it matters if those angles are between -180..180 or not, I haven't seen any problems while trying to import the animation with -215. [[User:Neo|Neo]]<br />
<br />
:::Then my question is, would it be possible to program OniSplit one day, so that it can produce a TRAM DAE that will import into XSI without any of those odd rotations of the pelvis and thighs? Or for OniSplit to import a TRAM DAE that was converted from Euler to Quaternion rotation? It will be much easier to modify existing TRAMs without having to deal with those odd rotations. Thanks [[User:EdT|EdT]]<br />
<br />
::::TRAM DAE: yes, I think so. I have an idea though I've yet to test it. Euler to Quaternion: I don't know why that doesn't work, I'll check. In theory there should be no problem. [[User:Neo|Neo]]<br />
::::Found another solution (in XSI): use "Make rotation keys continuous" (in the same menu as Euler to Quaternion). [[User:Neo|Neo]]<br />
:::::I tested the it, however, TRAMs converted that way do not appear correctly in Oni: http://edt.oni2.net/TRAMS/WalkRot.wmv files:http://edt.oni2.net/TRAMS/TRAMfiles2.zip [[User:EdT|EdT]]<br />
:::::Not to say that this is the only problem but... you're .dae files for left and right are identical :) [[User:Neo|Neo]]<br />
::::::"The Make rotation keys continuous"is working great, no problems. Except for the stupid user error with the Striker's walk... lol [[User:EdT|EdT]]<br />
::::::: Googled a possible solution and fitted it to one method. I have already checked it for some quaternions, which should result in euler angles, which contains values greater than 180 degrees, and it works fine. Here it is:<br />
public static Vector3 FromQ2(Quaternion q1)<br />
{<br />
float sqw = q1.w * q1.w;<br />
float sqx = q1.x * q1.x;<br />
float sqy = q1.y * q1.y;<br />
float sqz = q1.z * q1.z;<br />
float unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor<br />
float test = q1.x * q1.w - q1.y * q1.z;<br />
Vector3 v;<br />
Func<float, float> NormalizeAngle = new Func<float, float>(angle =><br />
{<br />
while (angle > 360)<br />
angle -= 360;<br />
while (angle < 0)<br />
angle += 360;<br />
return angle;<br />
});<br />
Func<Vector3,Vector3> NormalizeAngles = new Func<Vector3,Vector3>(angles =><br />
{<br />
angles.x = NormalizeAngle(angles.x);<br />
angles.y = NormalizeAngle(angles.y);<br />
angles.z = NormalizeAngle(angles.z);<br />
return angles;<br />
} );<br />
if (test > 0.4995f * unit)<br />
{ // singularity at north pole<br />
v.y = 2f * Mathf.Atan2(q1.y, q1.x);<br />
v.x = Mathf.PI / 2;<br />
v.z = 0;<br />
return NormalizeAngles(v * Mathf.Rad2Deg);<br />
}<br />
if (test < -0.4995f * unit)<br />
{ // singularity at south pole<br />
v.y = -2f * Mathf.Atan2(q1.y, q1.x);<br />
v.x = -Mathf.PI / 2;<br />
v.z = 0;<br />
return NormalizeAngles(v * Mathf.Rad2Deg);<br />
}<br />
Quaternion q = new Quaternion(q1.w, q1.z, q1.x, q1.y);<br />
v.y = (float)Math.Atan2(2f * q.x * q.w + 2f * q.y * q.z, 1 - 2f * (q.z * q.z + q.w * q.w)); // Yaw<br />
v.x = (float)Math.Asin(2f * (q.x * q.z - q.w * q.y)); // Pitch<br />
v.z = (float)Math.Atan2(2f * q.x * q.y + 2f * q.z * q.w, 1 - 2f * (q.y * q.y + q.z * q.z)); // Roll<br />
return NormalizeAngles(v * Mathf.Rad2Deg);<br />
}<br />
p.s. sorry, not found any code tags or something like that.<br />
p.s.s. Mathf.Rad2Deg must be 57.2958f. other Mathf stuff is similar to Math<br />
p.s.s.s anyway, looks like the root of evil is not in quaternion -> euler conversion. i will try to investigate that.<br />
[[User:TwinkerTinker|6opoDuJIo]]<br />
<br />
----<br />
<br />
Hi Neo,<br />
<br />
I have thought of adding a point to your todo list if you don't mind. Since the throw target is sort of reversed played in Oni (body rotated by 180 degrees, reversed movement, if I remember correctly), it would come handy if Onisplit can reverse it. Doing it in XSI would be a load of unnecessary work each time. Onisplit could easily recognize this special animation in the XML tags (<Flag>... ThrowTarget ...</Flag>). [http://dl.dropbox.com/u/139715/TRAM/KONCOM_ko_throw.zip Something] you could work with? --[[User:Paradox-01|Paradox-01]] 15:21, 29 March 2010 (UTC)<br />
<br />
----<br />
Here's a mystery: what is wrong with Oni's sound occlusion with 44Khz sounds in Windows (and possibly all occlusion on Macs)? Here are two alternate versions of a package: [http://iritscen.oni2.net/temp/06000MissingSoundsNoOcc.zip NoOcc] and [http://iritscen.oni2.net/temp/06000MissingSoundsOcc.zip Occ]. This package simply adds a sound to the gears at the end of Science Prison. There are probably any number of ways to test for this issue, but this is how I noticed the problem, so I can vouch for its reproducibility.<br />
# Install the Occ version of the package. This uses 22Khz sound.<br />
# Load Science Prison SP1 so there's no music or enemies around, and do "chr_location 0 676.3 64.7 -1898.3". You're now on top of the gears.<br />
# Run into one of the nearby rooms with windows. The sound comes from the point you teleported to, so position yourself so the "ray" from the sound can reach you through a window. If you are standing with part of the room's wall in the way, the sound may cut out completely, which you don't want.<br />
# Listen to the sound. Isn't it soothing? Now shoot the glass out (the M. Bow is a nice choice, it's quiet so you can hear the gears more clearly). The sound should get louder. You can hear this in my movie http://iritscen.oni2.net/temp/GearsTestWindows.mp4 (though the gears sound was distorted at the time because I didn't set the .grp properly, that's besides the point in this case).<br />
# Now replace the Occ package with the NoOcc package and install it. This one uses 44Khz sound.<br />
# Performing the same test, you should hear the gears at the same volume through glass as without the glass in the way. You can hear this issue in my movie http://iritscen.oni2.net/temp/GearsTestMac.mp4. Obviously in the Mac test I was using 22Khz sound, and yet I experienced the same issue. I suspect something was changed in the occlusion code between the Windows and Mac releases, perhaps in tandem with the removal of 44Khz sound support, that glommed the Windows 44Khz bug onto the Mac 22Khz sound code.<br />
<br />
Now, is it definitely a problem with Oni? I guess it is if we're sure that the sounds and .grp I provided are formatted and imported correctly. Or perhaps I'm totally mixed up here and don't know what I'm talking about. I've never done sound work before in Oni. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 15:36, 25 April 2013 (CEST)<br />
<br />
: Iritscen: Try your test again with the command sound_show_debug=1 you will see a list of sounds and the sound level for each one. When you are in front of the gears the level is 1 for gears, gears.aif . Then move into one of the rooms behind the glass, the sound level will drop to around .6 or .7 depending on how far away you are. Shoot out the glass and then the sound level will return to 1.[[User:EdT|EdT]] ([[User talk:EdT|talk]]) 17:02, 25 April 2013 (CEST)</div>EdThttps://wiki.oni2.net/w/index.php?title=Animation_ideas&diff=22277Animation ideas2013-04-25T04:12:40Z<p>EdT: /* Sprinting with rifle/pistol */</p>
<hr />
<div>{{Brainstorm}}<br />
{{update}}<br />
This is a place for the discussion and implementation of animation and melee profile changes. Too much of this stuff happens in Yahoo and is forgotten about. :)<br />
<br />
==Characters==<br />
===Barabus===<br />
===BGI===<br />
===Comguys===<br />
====Radio Saber====<br />
Give Comguys [http://geyser.oni2.net/pics/GIF/Tanker_TH_weapon_specialmove.gif this move] (the gif makes it seem like it has a short reach, but it doesn't) as a heavy kick, using the "Radio Saber!" attack sound. [[User:Gumby|Gumby]] 13:07, 23 May 2009 (UTC)<br />
:I like this idea. --[[User:Iritscen|Iritscen]] 20:06, 23 May 2009 (UTC)<br />
<br />
===Civilians===<br />
===Elites===<br />
===Furies===<br />
===Konoko===<br />
===Mukade===<br />
===Muro===<br />
===Mutant Muro===<br />
===Ninjas===<br />
===Snipers===<br />
====Startled Animation====<br />
Any way we could stop them (and possibly maybe anyone else) from firing while started? They are trained mercenaries, this shouldn't happen...[[User:Gumby|Gumby]] 13:15, 23 May 2009 (UTC)<br />
:They're just very high-strung mercenaries. Okay I guess I agree with you, but it's gonna hurt if we fix that, and first shots with the Bow are always accurate. I like getting a warning shot so I have time to take cover before the next one. --[[User:Iritscen|Iritscen]] 20:06, 23 May 2009 (UTC)<br />
<br />
===Strikers===<br />
===Tankers===<br />
====Fw+Kick Throw combo====<br />
The Fw+kick throw comboing into fw+kick and fw+punch in the beta_combat you sent me was pretty awesome. Keep it. :) [[User:Gumby|Gumby]] 13:12, 23 May 2009 (UTC)<br />
<br />
===TCTF===<br />
===TCTF SWAT===<br />
===Thugs===<br />
I'm going to come out and say it right now: Thugs suck. Badly. Its not an animation thing, its a melee profile thing. They just have poor AI, probably done on purpose. Not fighting well is one thing...but when you can lie on the ground in front of them and watch them run and run and run into you without using a ground attack, something is wrong, IMO. [[User:Gumby|Gumby]] 13:17, 23 May 2009 (UTC)<br />
:I think that Thugs are appropriately bad at fighting. The only thing that does bother me is their lack of ability to use a ground attack. Continuously running into your [[wiktionary:supine|supine]] body is pretty lame. --[[User:Iritscen|Iritscen]] 20:06, 23 May 2009 (UTC)<br />
<br />
==Mechanics==<br />
===Aiming screens===<br />
The shoulder joints of males look awkward for rifle aiming, and more generally extreme aiming angles look funky. This could be fixed by editing or adding keyframes in the aiming screen TRAM; however, there is still no reasonable pipeline for that. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)<br />
:Another issue is that KONRIF side rolls use an aiming screen. On one hand, it allows her to keep shooting while in the middle of a roll, which is cool. On the other, the weapon stays upright when aiming and rotates 360° through Konoko's fist, which is uncool (of course, it only shows up in slowmo and/or side view). There is no solution apart from disabling the aiming screen on KONRIF side rolls. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)<br />
<br />
===Getups===<br />
===Knockdowns===<br />
Loser, would it be possible to link a roll animation to the falling backwards animations? (For rolling recoveries). [[User:Gumby|Gumby]] 18:51, 23 May 2009 (UTC)<br />
:I second that, it sounds like a cool idea to at least try out, although I wonder if the AI could use such a move if it were added. --[[User:Iritscen|Iritscen]] 20:06, 23 May 2009 (UTC)<br />
<br />
===Sprinting with rifle/pistol===<br />
Maybe TRAM files accept combined variant flag. If they do we could disable aiming for them. Then we have nice rif/pis sprint moves. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 18:42, 24 April 2013 (CEST)<br />
<br />
[https://dl.dropboxusercontent.com/u/139715/temp/SPRPIS_SPRRIF_files.zip DL here. :D] Fixes also Konoko's TRAM artifacts in her TRAC files. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:01, 24 April 2013 (CEST)<br />
<br />
:Cool! That was a fast turnaround for idea->execution :-) This worked well for me when I made a package to test it. Shall I put this package on the Depot? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:31, 24 April 2013 (CEST)<br />
<br />
::That works very well! I like it! [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
<br />
[[Category:Modding ideas]]</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:Paradox-01/Archive1&diff=22242User talk:Paradox-01/Archive12013-04-24T14:25:14Z<p>EdT: /* Gears sound */ Mac sound fine</p>
<hr />
<div>==Translations issues==<br />
* An English translation for RS related stuff was requested. Dunno if I really want to translate ''brainstorming'' stuff or if I distillate some parts and wreck the other.<br />
* It has been suggested to put some stuff at Added value sections.<br />
* Keeping track of quotes:<br />
:http://carnage.bungie.org/oniforum/oni.forum.pl?read=19468 (http://wiki.oni2.net/User:Paradox-01/quotes_chef_1)<br />
:http://forums.bungie.org/oni/archive.pl?read=15104<br />
<br />
note about influences:<br />
:http://forums.bungie.org/oni/archive.pl?read=4618<br />
<br />
search page (somehow defunct):<br />
:http://forums.bungie.org/oni/archive.pl?<br />
<br />
two more pages (with undocumented sources, cannot find them again):<br />
:http://wiki.oni2.net/User:Paradox-01/quotes_clearfy<br />
:http://wiki.oni2.net/User:Paradox-01/quotes_old_questions<br />
<br />
<br />
==List of (now) unused sections==<br />
While translating I noticed two misplaced sections. "Where went all the details?" was actually part of "Griffin in a Syndicate helicopter?" but off-topic.<br />
* [[Talk:Restless_Souls/Reconstruction/Gapfilling#Where went all the details.F3]] (contains Hardy's talk)<br />
* [[Talk:Restless_Souls/Reconstruction/Gapfilling#Jamie]] (random thoughts)<br />
::Paradox, you do know about this page, right? -- [[Restless_Souls/Reconstruction/Summary_of_2032]]. It is orphaned, so I just wanted to make sure you didn't forget about it. --[[User:Iritscen|Iritscen]] 20:13, 28 February 2008 (CET)<br />
:::^_^ Nah, it's not orphaned but '''part''' of [[Restless_Souls/Reconstruction/Story_factors]] '''as''' <nowiki>"{{:Restless_Souls/Reconstruction/Summary_of_2032}}"</nowiki><br />
:::I had split material bigger than 32kb and put it into separate pages.<br />
:::But thanks for keeping an eye onto redlinks and such.<br />
:::--[[User:Paradox-01|Paradox-01]] 21:19, 28 February 2008 (CET)<br />
::::Ah, good. Just checking. I never took the time to try to understand the structure of your Restless Souls pages. It's like you have your own little site as part of the wiki :) --[[User:Iritscen|Iritscen]] 21:54, 28 February 2008 (CET)<br />
<br />
==RS pages structure chart==<br />
<br />
Restless_Souls<br />
|<br />
+--> various links<br><br><br />
Restless_Souls/Reconstruction<br />
| | |<br />
| | |<br />
| | +--> <nowiki>{{:Restless_Souls/Reconstruction/Gapfilling}}</nowiki><br />
| +----> <nowiki>{{:Restless_Souls/Reconstruction/Global_development}}</nowiki><br />
+------> <nowiki>{{:Restless_Souls/Reconstruction/Story_factors}}</nowiki><br />
|<br />
+--> '''<nowiki>{{:Restless_Souls/Reconstruction/Summary_of_2032}}</nowiki>'''<br />
<br />
<br />
==XML Project==<br />
Question: "How should I *not* move pages?" Answer: "By using transclusion." :-P Normally you should use the Move tool, but since the OBD talk pages have had some actual "talk" on them, we probably want to selectively copy and paste the XML content to the new XML: pages. We can discuss this more later, I just wanted to let you know before you made any more "moves" :-) --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 02:48, 3 November 2012 (CET)<br />
<br />
: "Answer: By using transclusion"<br />
: By using <nowiki>{{:}}</nowiki>, like I did in XML:AISA ? When I switched off the PC I realized that it wasn't such a good idea (although there was no talk on that page).<br />
: XML:AISA doesn't appear in the search because there's no real content on it. So I agree with you to copy-paste the content. -- [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:15, 3 November 2012 (CET)<br />
<br />
:Solved. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
===Redirects===<br />
Iritscen, on YIM you said "there will be a checkbox when you click Move". But I don't see it.<br />
<br />
In the process where only those two pages: [https://dl.dropbox.com/u/139715/temp/moving_a_page_1.png (1)], [https://dl.dropbox.com/u/139715/temp/moving_a_page_2.png (2)]<br />
<br />
Any ideas? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 13:50, 4 November 2012 (CET)<br />
<br />
''Solved'': missing user right. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
===Broken Links===<br />
Okay, I moved the pages that we agreed did not have notable history or extant discussion that needed to stay in the OBD namespace (sorry it took so long). Note that there are now red links on pages that referred to the moved pages. You could try going [[Special:WantedPages|here]] and searching for "talk". Also, if you search there for "XML"... I assume those are just types that you haven't gotten to document yet? Just curious. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:54, 6 November 2012 (CET)<br />
<br />
: "sorry it took so long" -- I don't mind. Thanks for your assistance. :)<br />
: Yes, there are two file types that still need documentation (and others for sake of completeness). Modding the combat behavior was never my favorite and SABD had not much attention so I used my time on different things. The others will be redirects, either because Oni don't use it (AITR) or because the XML for that instance simply exist as file type ([http://ssg.oni2.net/oni_fi_l.htm AGQR, now part of AKEV]).<br />
: There are one or two things I would like you to pick up: ONLV and maybe TRBS (see list for reason).<br />
<br />
: things that need care<br />
::XML:AITR replace with better link: redirect to TRGV (I was blindly following analogy to OBD template)<br />
::XML:AGQR replace with better link: redirect to ONLV (^)<br />
::XML:BINA/SABD todo: documentation<br />
::XML:BINA/OBJC/CMBT todo: documentation<br />
::XML:HPge todo: documentation (for sake of completeness)<br />
::''possibly one or two other types that aren't of much use'' --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
::Okay, I moved ONLV, but what did you want me to do with TRBS? It looks like you already cut-and-pasted it to XML:. But let me know what else I can do to help. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:08, 6 November 2012 (CET)<br />
<br />
lol You are right, I guess my cold makes me dizzy. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 09:33, 7 November 2012 (CET)<br />
<br />
Iritscen, when you see this please move another one: http://wiki.oni2.net/OBD_talk:TRGE --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 19:57, 7 November 2012 (CET)<br />
<br />
<br />
===Category===<br />
You might want to consider using a category-macro template like [[Template:OBD]] instead of manually entering the category name on each XML page. You can then simply drop a little "<nowiki>{{XML}}</nowiki>" at the bottom of each page, and later on the whole category can be "renamed" if we change our minds. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 14:36, 8 November 2012 (CET)<br />
<br />
: For the records: 'scen, that worked fine.<br />
<br />
<br />
===Overview===<br />
# Do we have a main XML: page like OBD: has [[OBD:Oni Binary Data]]? Would it be "XML_basic_tutorial"?<br />
# Is [http://ssg.oni2.net/oni_fi_l.htm SSG's overview] anywhere on the wiki? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:42, 7 November 2012 (CET)<br />
<br />
:# Not name-wise. I don't wanted to create a new XML:??? page because that would have been pretty much XML_basic_tutorial as you already guessed. Should it be moved to - lets say - XML:basics ?<br />
:# Afaik, ssg's overview isn't on this wiki yet. It would be nice to have a port of it. Maybe following style will be sufficient enough. (There are more overviews, just in case you didn't noticed: [http://ssg.oni2.net/oni_fi_c.htm character files], [http://ssg.oni2.net/oni_fi_m.htm message files], [http://ssg.oni2.net/oni_fi_0.htm level 0 files].)<br />
<br />
AAAA<br />
|<br />
+-- BBBB<br />
+-- CCCC<br />
| |<br />
| +-- DDDD<br />
|<br />
+-- EEEE<br />
<br />
<br />
: I changed my mind: colored table cells could show embedded instances of files, so ssg's style should be better.<br />
: Check this out: https://dl.dropbox.com/u/139715/temp/ssg_overviews_wikified.txt<br />
: Now we've to find a good place for it. Any ideas? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 20:08, 11 November 2012 (CET)<br />
::Ooh, I like! The question of where to put it is a good one, as I would love to find a way to merge that hierarchical information with the acronym expansions given on the [[OBD:File types|File types]] page, and, even better, to also have a small summary of each type ("AKEV (Akira Environment) is ___"). Short of using [[Template:H|hover text]], which I don't think is ideal, I don't have any ideas yet as to how to fit everything into one display. It just seems wasteful to use a whole page just for showing relationships, with no explanation of each type; also, the File types page is now somewhat wasteful of space too, since investigation of the file types is essentially done and we no longer need a page to track its progress with smileys. At least, that's my opinion; what do you think?<br />
::P.S.: One small tip -- I'm generally against the use of images external to the wiki. I would suggest uploading SSG's arrow pics to the wiki and then invoking them as shown below. The blank link field makes them non-clickable: <pre>[[File:Wiki.png|link=]]</pre> --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 21:02, 11 November 2012 (CET)<br />
<br />
<br />
SSG's arrow pics: before we upload them let's be sure we will use them. (If it's going to be a html from an oni2 user account then we wouldn't upload them.)<br />
<br />
Proposal of that new page (recycling OBD:file_types). (For Neo's sake, let's keep the ^_^ ? Or another symbol that makes them as done.)<br />
* With a narrow table the content (types + hierarchy + explanation) should fit on one page.<br />
* By default the hierarchy tables and explanations are hidden. Clicking a file type from the list at the left makes the corresponding table + explanation visible.<br />
<br />
Problem<br />
* If we can't pull this off we might consider writing a html page although a wiki page would be more appropriated.<br />
* I don't know if we can show a table and at same time hide the previous table on click event. At least <nowiki><div></nowiki> demonstrates that some hiding/showing can be done on the wiki.<br />
{{divhide|inspiration}}<br />
Can you reuse the template source code at some point?<br />
{{divhide|end}}<br />
<br />
PS: http://wiki.oni2.net/User:Iritscen/vector.js - That's some customization but how do you store/call actual java script functions? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 15:56, 12 November 2012 (CET)<br />
<br />
{|class="wikitable" width="100%"<br />
|width="100"|<br />
<br />
;file types<br />
*<a href="#AISA" id="table_1">AISA</a><br />
*<a href="#TXMP" id="table_2">TXMP</a><br />
*<a href="#ONCC" id="table_3">ONCC</a><br />
<br />
|width="420"|<br />
{|class="wikitable" width="400" style="text-align:center"<br />
|style="background-color:#DDDDDD;"| TxtC<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|-<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGPA<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGPG<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF;"| TSFF<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSFL<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSFT<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSGA<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| PSpc<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| TXMP<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGSA<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGSt<br />
|<br />
|}<br />
<br />
|<br />
;explanation of clicked file type<br />
* .......<br />
|}<br />
<br />
:Cool, I like the diagonal striping; I didn't even know that was possible. I also really like how you fit everything onto the page in three columns. I don't have the time this minute to do much work on this myself, but I can at least answer a couple of your questions.<br />
:'''"For Neo's sake, let's keep the ^_^ ?"''' -- If he still uses them, we should definitely keep them. I guess I was under the impression that Neo isn't really using those anymore. We should ask him.<br />
:'''"I don't know if we can show a table and at same time hide the previous table on click event [...] That's some customization but how do you store/call actual java script functions"''' -- I would direct your attention to [[MediaWiki:Common.js]] (also, note that all the JS pages are linked to on my user page). Towards the top of Common.js is code that imports additional scripts, such as [[MediaWiki:Common.js/edit.js]], based on the type or name of the page. E.g., anyone performing an edit will have edit.js loaded for them, which does things like adding buttons to the toolbar (at least, it will when I fix it!). Does that help? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:39, 12 November 2012 (CET)<br />
:Just a quick note, the repeating-linear-gradient property does not work for WebKit browsers. Chrome/Safari apparently need "-webkit-repeating-linear-gradient" instead. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 03:31, 13 November 2012 (CET)<br />
:Another quick note, we would probably want to mimic the JS that enables the divhide template, as you already suggested and in line with [http://www.mwusers.com/forums/showthread.php?18647-onclick-in-wikitext&s=4573f23d960e24c3c6523e4a072b4ba9&p=61594&viewfull=1#post61594 this forum post], which means that we probably want to create a new table class (e.g. "click-table") that responds to 'onclick' events by modifying the text in a column in the table (e.g. "click-table-descrip"). But I can't figure out where the file type description text would come from. We don't really want all the description texts lodged inside the Javascript, but rather somewhere we can edit them freely. One possibility is to figure out how to copy/transclude text from a subpage, similar to the way [[Quotes/Consoles]] works, where each console quote is on a separate, editable page. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 14:38, 13 November 2012 (CET)<br />
<br />
I tried get myself more familiar with the different codes and their mixing, but I would just ending to make hundreds of edits just to learn how to do this or that. So I can't be a great help here. :/ [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 22:09, 13 November 2012 (CET)<br />
:That's okay, I have played around with JS before. I'll spend some time on this soon. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:42, 14 November 2012 (CET)<br />
<br />
Okay, I wrote some quick and dirty code and put it in Common.js. Go to my test space's file type table and you should get descriptions when you hover over each type. This could easily be adjusted to require a click instead of a hover but I liked the idea of a no-click interface. I'm going to step aside now and give you the chance to work with this table type as you see fit. I had to simplify the markup for testing purposes, and you might have some better ideas as to how to arrange the table.<br />
<br />
As you'll see, the basic idea is that you attach the class "hovertable" to a wikitable, then you place multiple spans in one large cell of class "hovertable_descrip". Each span is "display:none" and contains the description for one type, which is given as that span's id. Then you declare other cells in the hovertable as class "hovercell" with ids that match the ones in the descrip cell. The JS I wrote attaches event handlers to all hovercells which display their corresponding span in the hovertable_descrip cell when the hovercell receives 'mouseover', and hide the span upon 'mouseout'. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:22, 16 November 2012 (CET)<br />
<br />
: I checked your test space. It looks awesome, I didn't expected to see so fast results on this. However, there are 2 things I would like you to think about.<br />
:: 1) SSG's [https://dl.dropbox.com/u/139715/temp/ssg_overviews_wikified.txt "Level files" table] (ONLV) is ''too big'' for an ''absolute location'' of the explanation: if the user hovers the CRSA table cell he would see nothing because the explanation is out of view.<br />
::: The solution to this problem might be to fix the explanation area to the screen. Here's an example made of [https://dl.dropbox.com/u/139715/temp/explanation_fixed_to_screen.htm CSS]. (basically ''style="position: fixed; top: 50%; left: 50%;"'')<br />
:: 2) We talked about merging those hierarchies and the general file type overview. In my last draft the types were vertical listed but I think it will look less odd if they are horizontal (because the tables differ in their number of rows).<br />
::: At the moment the chasing explanation makes a strange impression but that's due to the other content here. With nothing else then the content under the gray line should look ... not "super" ... but good enough. Or we make a step back and use H template?<br />
:: 2a) If we agree on the merging then the file types should be click-able: if user clicks TxtC type then of course the TxtC table should appear.<br />
::: I think you can reuse the mechanism here you just created. Not sure about IGPG: it appears in TxtC but also in others (DPge, WPge, Opge, ...)<br />
:: '''2b)''' Facing this problem we might choose an easier path than hiding all tables by default.<br />
::: If we put all table under each other we could create "AAAA-using types" sections at the end of all tables: If the user clicked IGPG then the browser jumps to that section and there the user reads IGPG being used by this, this and that type. From there he can jump again (by clicking <nowiki>[[#ABCD|ABCD]]</nowiki>) and reaches his final choice (TxtC/DPge/WPge/... table).<br />
<br />
<br />
-----<br />
<br />
<br />
<br />
<br />
<br />
<br />
{| width="100%" style="text-align:center; font-weight:bold;"<br />
| ABNA<br />
| AGQC<br />
| AGQG<br />
| AGQR<br />
| AISA<br />
| AKAA<br />
| AKBA<br />
| AKBP<br />
| AKEV<br />
| AKOT<br />
| AKVA<br />
| BINA<br />
| CBPI<br />
| CBPM<br />
| CONS<br />
| CRSA<br />
| DOOR<br />
| DPge<br />
| ENVP<br />
| FILM<br />
| HPge<br />
| IDXA<br />
| IGHH<br />
|-<br />
| IGPA<br />
| [[#IGPG-using types|IGPG]]<br />
| IGSA<br />
| IGSt<br />
| Impt<br />
| IPge<br />
| KeyI<br />
| M3GA<br />
| M3GM<br />
| Mtrl<br />
| OBAN<br />
| OBOA<br />
| OFGA<br />
| ONCC<br />
| ONCP<br />
| ONCV<br />
| ONGS<br />
| ONIA<br />
| ONLD<br />
| ONLV<br />
| ONOA<br />
| ONSK<br />
| ONVL<br />
|- <br />
| ONWC<br />
| OPge<br />
| OSBD<br />
| OTIT<br />
| OTLF<br />
| PLEA<br />
| PNTA<br />
| PSpc<br />
| PSpL<br />
| PSUI<br />
| QTNA<br />
| SNDD<br />
| SUBT<br />
| TRAC<br />
| TRAM<br />
| TRAS<br />
| TRBS<br />
| TRCM<br />
| TRGA<br />
| TRGE<br />
| TRIA<br />
| TRIG<br />
| TRMA<br />
|-<br />
| TRSC<br />
| TRTA<br />
| TSFF<br />
| TSFL<br />
| TSFT<br />
| TSGA<br />
| TURR<br />
| TXAN<br />
| TXCA<br />
| TXMA<br />
| TXMB<br />
| TXMP<br />
| [[#TxtC|TxtC]]<br />
| VCRA<br />
| WMCL<br />
| WMDD<br />
| WMM<br />
| WMMB<br />
| WPge<br />
|}<br />
<br />
Based on OBD:file_types. Maybe we should list BINA subtypes too (object collections like [[XML:BINA/OBJC/CHAR|CHAR]], CONS, DOOR, ...) ?<br />
<br />
<br />
====TxtC====<br />
{|width="100%"<br />
|width="200" valign="top"| <br />
<br />
{|class="wikitable hovertable" width="400" style="text-align:center; font-weight:bold;"<br />
|style="background-color:#DDDDDD;" class="hovercell" id="txtc"| [[TxtC]]<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|-<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igpa"| [[IGPA]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igpg"| [[IGPG]]<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF;" class="hovercell" id="tsff"| [[TSFF]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsfl"| [[TSFL]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsft"| [[TSFT]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsga"| [[TSGA]]<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|class="hovercell" id="pspc"| [[PSpc]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|class="hovercell" id="txmp"| [[TXMP]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igsa"| [[IGSA]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igst"| [[IGSt]]<br />
|}<br />
<br />
|valign="top"|<br />
<br />
{|style="position: fixed; top: 30%"<br />
|class="hovertable_descrip" valign="top"| <br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="txtc">'''TxtC''': This is console text.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igpa">'''IGPA''': In-Game User Interface Page Array.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igpg">'''IGPG''': In-Game User Interface Page.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsff">'''TSFF''': A font family.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsfl">'''TSFL''': A font language.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsft">'''TSFT''': Actual font bitmaps.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsga">'''TSGA''': A glyph array linking 256 possible symbols to their bitmaps (TSFTs).</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="pspc">'''PSpc''': Part Specification (coordinates for finding a UI symbol in a bitmap collection of UI elements.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="txmp">'''TXMP''': A texture map!</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igsa">'''IGSA''': In-Game user interface String Array.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igst">'''IGSt''': In-Game user interface STring.</span><br />
|}<br />
<br />
|}<br />
<br />
<br />
[ other tables ]<br />
<br />
<br />
<br />
<br />
<br />
====IGPG-using types====<br />
* [[#TxtC|TxtC]]<br />
* OPge<br />
* IPge<br />
* WPge<br />
<br />
<br />
----<br />
Ah, the fixed-position box is interesting, that could be the answer. I think we will need to have a chat before I can fully understand what we are trying to document, though, in terms of what/how hierarchies are to be shown. I'll look for you online this weekend. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 03:41, 17 November 2012 (CET)<br />
<br />
Just a note on where I left off -- I fixed the classes so that the cells are being styled correctly. However, I seem to have accidentally changed the stripe style; I didn't mean to create a stripe with a gradient in it; I just want to make the blue and background colors evenly spaced at 10px or 15px. Also, the "position:fixed" on the descrip cell was somehow shifting the location of the next cell (TxtC), so for now I have removed that property. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:56, 17 November 2012 (CET)<br />
<br />
:If you look closely there are 3 px value in the gradient code: for clean stripes let the last value be the sum of the others.<br />
: background-image: -webkit-repeating-linear-gradient(-45deg, transparent, transparent '''10px''', rgba(0, 0, 255, 0.2) '''10px''', rgba(0, 0, 255, 0.2) '''20px'''); --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:29, 18 November 2012 (CET)<br />
<br />
: The table in your [[User:Iritscen/TestSpace|test space]] will look okay if you enable the position fixed in Common.css again. That code piece rips the cell out of the table. I added some columns to fix it. --13:12, 18 November 2012 (CET)<br />
<br />
Sorry, 'dox, I didn't think it would take very long, but after I had written some of the JavaScript, I could see how complicated it would be. Then I got sidetracked by real life for a while. Normally I would just keep at it until it's done, but seeing as I am trying to get back to my main Oni project ASAP, I'm afraid I have to cut short my work on this. Maybe it's more complicated than it needs to be. If you want to "retreat" back to a simpler solution, then let me know how I can help with that. Otherwise I might have time to finish this at a later date. I just don't want to spend hours on it when it's keeping me from my other work. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:57, 17 December 2012 (CET)<br />
<br />
===New overview===<br />
Just wanted to say, I still feel this is an important thing to add to the wiki. But I made it too complex the first time around. Rather than a dynamically generated table, we should probably stick to something that is set up manually. Although my more complex code was never finished, we do still have the hovertable class available, as used above (and I can easily change it to display info on a click instead of a mouse-hover if that's better). Let me know if you have any new ideas on how to present the info, or if you want to stick with the format we had before.<br />
<br />
The fact is, looking at this with a fresh perspective, I'm not 100% convinced that the arrow-based table is the best use of space or the easiest thing to read, or that we need fancy JS either. What about the simple text-based approach I suggested [[OniGalore:Current_events#Organizing_the_modding_side_of_the_wiki|here]], combined with your anchor-based TOC serving as an alphabetical index at the beginning? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:03, 18 April 2013 (CEST)<br />
<br />
: About that thing at [[OniGalore:Current_events#Organizing_the_modding_side_of_the_wiki|Current_events]]. Sounds like you want a simple page with sections and links. So if you don't want to hierarchal information then you could take [[XML:File_types]] and extend it. In that case I wouldn't use '''<nowiki>===</nowiki>''' but '''<nowiki>{{Anchor|some_anchor_name}}</nowiki>'''. This prevents the page to be ripped in sections. By that the user can follow links and the page will still look nice. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 12:56, 18 April 2013 (CEST)<br />
<br />
::Basically, yes. I like that "File types" page, I just would like the descriptions to be a bit longer and to list what types they have under them, or what types can contain them, and maybe group them by type. I think I'll make a separate WIP table in my userspace so I don't mess up yours, because I'm not 100% clear on what I want it to look like. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 13:59, 18 April 2013 (CEST)<br />
::Okay, it can use some nicer formatting, but if you look at my [[User:Iritscen/TestSpace|TestSpace]], you'll see what I had in mind. It's similar to your XML File types page, just organized by category, and with "parent" and "child" anchor links to the related types on the same page. Probably it can also contain your colored documentation dots and the types can link to their XML: pages instead of OBD:, at least if this replaces your File types page. Any suggestions? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 22:07, 19 April 2013 (CEST)<br />
<br />
Caution, the header template on pages like [[XML:BINA/OBJC/CHAR]] link to "other BINA" and "other OBJC" ([[XML:File_types]]) in analogy to [[OBD:BINA/OBJC]] and [[OBD:BINA]].<br />
<br />
I like how you structure the descriptions, I'm just a bit unhappy with the index thing because of the mentioned template header.<br />
As a compromise perhaps make 3 type indices so that the template can still link to those.<br />
:Type index: BINA<br />
:* [...]<br />
:Type index: CJBO<br />
:* [...]<br />
:Type index: other files<br />
:* [...]<br />
<br />
:Add color dots and links and I totally agree with replacing current file types page with this second version. :) --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 22:43, 19 April 2013 (CEST)<br />
::Sorry, I don't understand the point you're making. I'm not 100% fluent in where all Oni's data is stored (particularly what is in .sep vs. .raw), but my idea was that this wasn't an important distinction to make for the beginner who just wants to know what these kinds of data do. After all, we no longer have to know which file to look in with a hex editor to mod something, we just ask OniSplit to export the data :-) But please let me know what you meant if there's a reason the reader has to think in terms of BINA vs. CBJO vs. everything else. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:17, 19 April 2013 (CEST)<br />
<br />
I just want the user to be aware of what types belong to object collections (for instance so he does chose the door collection and not the door class) and that searches can be easily be done by BINA*/BINAOBJC*. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 14:19, 20 April 2013 (CEST)<br />
<br />
==Your Red Links==<br />
Hello, I just looked over the wiki's red links and thought you might like to know that these belong to you:<br />
*<strike>Camp (2 links)<br />
*Silver Dawn (2 links)<br />
*Green Village (2 links)<br />
*Mind Seal (2 links)<br />
*Restless Souls/timeline 2032 (2 links)<br />
*„Regierung“ (1 link)</strike><br />
*Talk:Restless Souls/Reconstruction (1 link)<br />
*Talk:Restless Souls/Summary (1 link)<br />
*Talk:Restless Souls/Tree Of Theories (1 link)<br />
*<strike>Elfenbeintürmen (1 link)</strike><br />
*Talk:Restless Souls/Fragments (1 link)<br />
*Talk:Restless Souls/Ikimas (1 link)<br />
*<strike>Oni2:Shinobi (1 link)<br />
*Sub-dermal transponder (2 links)<br />
*2.3.1 WKR (1 link)<br />
*2.3.3 Syndikat (1 link)<br />
*D-Spray (1 link)<br />
*BLACKSTARS (2 links)<br />
*Mukade's reanimation (2 links)</strike><br />
Just an informational service ^_^ --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:13, 10 April 2013 (CEST)<br />
:Just a little related question, are you planning to move these to XML:?<br />
:*OBD talk:KeyI<br />
:*OBD talk:WMCL<br />
:*OBD talk:DOOR<br />
:I ask because they are the only pages left that use the old XMLModdingHints template and seem like the only OBD talk pages left with XML info on them. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:18, 12 April 2013 (CEST)<br />
<br />
Oh yea I totally forgot about them. But something was going on the the rights. Normal user can't do that unless they want to leave a redirect or something. '''[[User_talk:Paradox-01#Redirects|D:]]''' --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 19:43, 12 April 2013 (CEST)<br />
:Ah, I guess we never fixed that. I'll move them over. In the future, since you probably won't have many pages to move (will you?), you can just move them and leave the redirect. I'll see it in the logs after and just delete the redirect. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:46, 12 April 2013 (CEST)<br />
<br />
:Now that those pages are moved over to XML:, do you have any plans to use Template:XMLModdingHints anymore, or can I delete it? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 17:38, 17 April 2013 (CEST)<br />
<br />
:: Smash it. :D --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 19:56, 17 April 2013 (CEST)<br />
<br />
:::Heh, okay. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:28, 17 April 2013 (CEST)<br />
<br />
==Music issues==<br />
When you have time, can you please test this package: http://edt.oni2.net/temp/60000Soundtrackrenewal.zip I converted this file to oni file: https://soundcloud.com/mengermeester/oni-ae-fight-wip Hopefully, I made the windows version correctly.<br />
<br />
I replaced the original files with the updated version. However, it doesn't seems to playback correctly, the transition isn't smooth. The original files were about 11 seconds and less, the updated are 20 seconds and less.<br />
<br />
You can hear this music at Manplant save point 1<br />
<br />
Thanks [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
:You imported them correctly. The song plays at that SP. It's as you say the transition doesn't fit. But that's no wonder since it's still a one-piece song and not designed to play pieces in a random order, isn't it?<br />
:"Once we have a nice pool of sounds we will go over every trigger and see what fits where. Then we will cut the loops to be modular." I guess we have to wait for the final version? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:17, 16 April 2013 (CEST)<br />
<br />
::I didn't realize that Oni's music was designed to be played randomly. Learn something everyday. As a temporary workaround, I can modify the OSBD to include only the one song in its entirety, just to be able to hear it in-game. Thanks [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
== Modding file paths ==<br />
<br />
Just tried to update the XML pages for the new AE's hierarchy, hopefully I didn't mess things up. Just one question, do you want the level-specific file types to give the path as "GameDataFolder/levelX_Final.dat", or should they use AE paths like the other XML pages, i.e. "AE/AEInstaller/vanilla/level0_Final.dat"? Perhaps you want all paths to be consistently using the AE .dats. I thought I was making those paths "universal" by deleting "Edition/", but I didn't think about the fact that "GameDataFolder/levelX_Final.dat" only works for vanilla Oni, as in the AE it would be "AEInstaller/vanilla/levelX_Final.dat". So I'll fix those if you agree, since I'm the one that messed them up :-) --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 15:43, 18 April 2013 (CEST)<br />
<br />
: Consistency is good. I just hope we can tell newbes somewhere that vanilla are original files only and GameDataFolder contain vanilla + mods. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 15:55, 18 April 2013 (CEST)<br />
<br />
::Well, the vanilla/ folder is documented in AE/Framework, but it probably should be repeated in other places to make sure the modder understands that. I do agree that we should be consistent, so I'll fix those pages. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 16:07, 18 April 2013 (CEST)<br />
<br />
== Gears sound ==<br />
<br />
Hey, not that I want you to spend much time on this, but I'm not very familiar with how ambient sounds work, and I was wondering if you ever looked into [[AE:Requests#Missing_gears_sound|this issue]]. I can see the reference to SNDDgears in the level's CBJOSound file, but adding the sound EdT supplied to level 14 (I also tried level 0) doesn't seem to add any noise to the gears at the end of the level. I teleported to the coordinates the Sound file has set for "gears", 676.3 64.7 -1898.3, and it places you on top of the gears, so I don't know why the sound isn't there. Maybe just something to spend a minute on if you feel like it. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 15:42, 23 April 2013 (CEST)<br />
<br />
It turned out that SNDD is stereo while the grp file asks for a mono channel file. New [https://dl.dropboxusercontent.com/u/139715/temp/OSBDgears.grp.oni grp file].<br />
:Cool, thanks! Now if I can find a good royalty-free sound to use, I can fix this in AE core. At the least, it prevents us from getting bombarded with errors when we get near there in Dev Mode! --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 21:16, 23 April 2013 (CEST)<br />
<br />
Hmm, sorry to bother you about this again, but can you watch these two 5MB movies? http://iritscen.oni2.net/temp/GearsTestMac.mp4 and http://iritscen.oni2.net/temp/GearsTestWindows.mp4. The gears sound completely different! The original sound is [http://iritscen.oni2.net/temp/gears6.wav here] and the package is [http://iritscen.oni2.net/temp/06000MissingSounds.zip here] (note that it has a core number so it will show up in core packages in the AEI, not the main window). Incidentally, the movies are of me testing sound occlusion, but that's a whole different subject. I looked around the wiki but I don't see anything about sounds turning out completely different from platform to platform. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 14:05, 24 April 2013 (CEST)<br />
<br />
: The new mac file doesn't work for me.<br />
: Over here the old mac file sounds like your pc version. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 16:09, 24 April 2013 (CEST)<br />
<br />
::Mac sound is fine here. Perhaps it will be easier if Paradox can convert the original gear sound to Win version and test. [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
== Old prone mode ==<br />
<br />
Do you think [[AE:Sniper_scope_and_prone_mode]] needs to be kept? I glanced at it, and it seems to be a more primitive version of your Prone Mode 1.0.3. Since I am cleaning up stuff that was formerly a part (or planned part) of the AE, I'd like to be able to get rid of that page. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 22:01, 23 April 2013 (CEST)</div>EdThttps://wiki.oni2.net/w/index.php?title=User_talk:Paradox-01/Archive1&diff=21948User talk:Paradox-01/Archive12013-04-16T15:35:07Z<p>EdT: /* Music issues */ Thanks</p>
<hr />
<div>==New art by Guido==<br />
I would suggest you to have a look at my oni2.net section. I am pretty sure you have missed something ^ ^ ([[User:Guido]])<br />
<br />
:Oh man! You are always good in surprises! I'm going to add this. Let me know when you make more of it. I'm addicted to your art. xD<br />
:[[User:Paradox-01|Paradox-01]] 15:31, 19 January 2008 (CET)<br />
<br />
==Translations issues==<br />
Hi Paradox! Been a little while since we talked. I have images from Harry to upload (Fan art), but I have to see if they're new or if any are already up on the wiki somewhere. A project for next week, I think. Anyway, here's my question: I see you have a lot of writing in the Restless Souls section. Some of it is in English, but a lot of the material is ''sprachen en sie Deutsche''! This much foreign language frightens my narrow American brain. Anyway, it would be nice for English speakers (who don't know German) to be able to read it (like me!), but it's a lot of text and I don't want to ask you to rewrite it. May I run it through Babelfish (and clean it up, since Babelfish is far from perfect) and then post it somewhere like Restless Souls/TechnologyEN (for the English version of the Technology page)? The translation won't be great, but it will work. Also, I see you have an orphaned page called "Gapfilling" with some interesting material in English -- emails between Harry and someone at Bungie. Where is that from? It would be nice to incorporate those emails into the wiki somewhere.<br />
<br />
P.S.: Is "ikimas" the same Japanese word I'm thinking of? As in, Amuro Ray? --[[User:Iritscen|Iritscen]] 20:52, 15 February 2008 (CET)<br />
:I watched only Gundam SEED and Gundam SEED Destiny where Kira Yamato says "ikimas" alot. According to wikipedia articles I think it's more or less a remake of various gundam series, so Kira could be influenced by the character of Amuro Ray...<br />
:[[User:Paradox-01|Paradox-01]] 00:24, 16 February 2008 (CET)<br />
<br />
<br />
@ Fan Art: so Harry gave you them (finally). I have wonder some time but wasn't in mood to ask... However, it's good you can complete the section; cheers.<br />
<br />
@ RS: The reasons why RS isn't translated yet: it was a spontaneous porting from my old site (much stuff), the material is still "work in progress" and I am still a bad translator. - After a talk with geyser a little age ago: The plan was to translate little sections while improving them (working more out, improves concepts/theories) and write the stuff onto original pages. (For example: putting the RS SLD section in "add value" or "speculation" of the original SLD page. No need for for extra pages like "TechnologieEN".) But we all had other priorities. - Now: well .. or damn it .. I've less free time these days but I want ''to do something about the nightmare''. Tell me a section of your interest and I will try to improve it and maybe even translate. For a bigger number of sections you will need Babelfish, hm right. In this case more English speaking wiki user can jump by, read and discussing the stuff; and this might be good .. in the spirit of a wiki ..<br />
<br />
@ quotes: Ahm.. there's not much material.<br />
<br />
:http://carnage.bungie.org/oniforum/oni.forum.pl?read=19468 (http://wiki.oni2.net/User:Paradox-01/quotes_chef_1)<br />
:http://forums.bungie.org/oni/archive.pl?read=15104<br />
<br />
note about influences:<br />
:http://forums.bungie.org/oni/archive.pl?read=4618<br />
<br />
search page (somehow defunct):<br />
:http://forums.bungie.org/oni/archive.pl?<br />
<br />
two more pages (with undocumented sources, cannot find them again):<br />
:http://wiki.oni2.net/User:Paradox-01/quotes_clearfy<br />
:http://wiki.oni2.net/User:Paradox-01/quotes_old_questions<br />
<br />
:[[User:Paradox-01|Paradox-01]] 00:24, 16 February 2008 (CET)<br />
<br />
Interesting. Thanks for the links. Sorry for such a long delay in responding, but it's hard to say what should be translated first, since I can't read any of it... maybe the sections where you comment on the quotes of the emails. There's at least one page where you have those emails in English, but your commentary is in German; it would be nice to be able to read that part.<br />
<br />
Perhaps I can run your pages through Babelfish, and we'll see if the translation is even slightly acceptable. Then you can simply alter the wording a little if it's not correct. It could save you a lot of typing if you can start from there. I don't want to mess with your pages, so I will post the translation somewhere nearby. --[[User:Iritscen|Iritscen]] 15:55, 21 February 2008 (CET)<br />
<br />
:Okay, I just can't do it. Check this out:<br />
::<font color="red">Herkunft und Alter von Barabas, so wie bei vielen anderen Charakteren, zu bestimmen, gleicht Kaffeesätze zu lesen - dies wird nochmals durch sein Mutanten-Dasein erschwert... Das Beste wird wohl sein einfach ein paar Sachen festzulegen, die der gewählten Zeitlinie zumindest nicht widersprechen. Von dem was der Name hergibt, wurde im OniGalore eine nette Theorie aufgestellt mit der man Barabas' Hintergrund flicken könnte. Und ganau das habe ich nun mit einem selbstgewähltem Szenario vor darstellen. (Ein grundsätzlich freien Hintergrund stelle ich jedoch auch zur Verfügung falls die erste Variante auf zu viel Kritik stößt, die man gegebenfalls nicht mehr anpassen kann.)</font><br />
<br />
becomes<br />
<br />
::<font color="blue">Origin and age of Barabas, as with many other characters to determine resemble coffee-corrode to read - this again by to be Mutanten existence difficult more difficult... The best will probably be simply a few things to specify, which do not contradict the selected zeitlinie at least. From which the name gives, became in the OniGalore a nice theory set up with which one to Barabas ' background repair could. And ganau I have that now with a self-chosen scenario forwards to explain. (in principle a free background make available I however also if the first variant too much criticism encounters, which one cannot adapt no more to if necessary.)</font><br />
<br />
I think that it would be harder for you to fix that mess than to just translate your own German. Well, whenever you have time, maybe you can do a little at a time. Just so others can benefit from your ideas. I see that you wrote a LOT of material, though, so it would take a lot of time to translate. I was hoping that Babelfish would give you a headstart, but if you read what it gives me for your pages, you wouldn't even recognize it as something you wrote :-\ --[[User:Iritscen|Iritscen]] 16:39, 21 February 2008 (CET)<br />
<br />
:Nice chaos. ^_^ In German you can move around various parts of a sentence without making it non-understandable. And babelfish seems to lack this skill.<br />
: > Well, whenever you have time, maybe you can do a little at a time.<br />
:Will do that. --[[User:Paradox-01|Paradox-01]] 19:20, 21 February 2008 (CET)<br />
<br />
Babelfish is actually used for laughs sometimes because it's so bad, but I guess I was naive in thinking that it could even give you a starting point. It would take longer to fix each mistake than to write every word from scratch.<br />
<br />
Speaking of laughs:<br />
<br />
:<font color="red">Aus dem achten und neunten Band des Manga Battle Angel Alita, Last Order. (Nur um das klarzustellen: der Text handelt von Vampir-Werdung...)</font><br />
<br />
becomes<br />
<br />
:<font color="blue">From the respected and ninth volume of the Manga Battle fishing rod Alita, load order. to get straight (only around: the text acts of Vampir becoming...)</font><br />
<br />
Fear the deadly fishing rod Alita! --[[User:Iritscen|Iritscen]] 19:37, 21 February 2008 (CET)<br />
:All I can say : rofl.--[[User:Paradox-01|Paradox-01]] 16:00, 23 February 2008 (CET)<br />
<br />
==List of translated pages / sections==<br />
* [[Restless_Souls/Ikimas]]<br />
* [[Restless_Souls/Reconstruction/Gapfilling]]<br />
<br />
==List of (now) unused sections==<br />
While translating I noticed two misplaced sections. "Where went all the details?" was actually part of "Griffin in a Syndicate helicopter?" but off-topic.<br />
* [[Talk:Restless_Souls/Reconstruction/Gapfilling#Where went all the details.F3]] (contains Hardy's talk)<br />
* [[Talk:Restless_Souls/Reconstruction/Gapfilling#Jamie]] (random thoughts)<br />
::Paradox, you do know about this page, right? -- [[Restless_Souls/Reconstruction/Summary_of_2032]]. It is orphaned, so I just wanted to make sure you didn't forget about it. --[[User:Iritscen|Iritscen]] 20:13, 28 February 2008 (CET)<br />
:::^_^ Nah, it's not orphaned but '''part''' of [[Restless_Souls/Reconstruction/Story_factors]] '''as''' <nowiki>"{{:Restless_Souls/Reconstruction/Summary_of_2032}}"</nowiki><br />
:::I had split material bigger than 32kb and put it into separate pages.<br />
:::But thanks for keeping an eye onto redlinks and such.<br />
:::--[[User:Paradox-01|Paradox-01]] 21:19, 28 February 2008 (CET)<br />
::::Ah, good. Just checking. I never took the time to try to understand the structure of your Restless Souls pages. It's like you have your own little site as part of the wiki :) --[[User:Iritscen|Iritscen]] 21:54, 28 February 2008 (CET)<br />
<br />
==RS pages structure chart==<br />
<br />
Restless_Souls<br />
|<br />
+--> various links<br><br><br />
Restless_Souls/Reconstruction<br />
| | |<br />
| | |<br />
| | +--> <nowiki>{{:Restless_Souls/Reconstruction/Gapfilling}}</nowiki><br />
| +----> <nowiki>{{:Restless_Souls/Reconstruction/Global_development}}</nowiki><br />
+------> <nowiki>{{:Restless_Souls/Reconstruction/Story_factors}}</nowiki><br />
|<br />
+--> '''<nowiki>{{:Restless_Souls/Reconstruction/Summary_of_2032}}</nowiki>'''<br />
<br />
==Deleted teaser==<br />
:Maybe you shouldn't be deleting parts of your pages like that just because they don't seem to fit right now.<br />
:Of course they're kept in the history, but maybe you could use talk pages as a temporary dump for such stuff.<br />
::[[User:Geyser|geyser]] 21:06, 20 February 2008 (CET)<br />
<br />
::What did he delete? --[[User:Iritscen|Iritscen]] 15:55, 21 February 2008 (CET)<br />
<br />
::: .. draft of a (sucking) "message" article / teaser. [http://wiki.oni2.net/w/index.php?title=Restless_Souls/Ikimas&curid=2450&diff=8173&oldid=8068 link.] I recently felt annoyed about it. --[[User:Paradox-01|Paradox-01]] 16:17, 21 February 2008 (CET)<br />
<br />
==Double images==<br />
> OK, why the blam did you name it "TCTF Cracked"? (edit: quote from [http://wiki.oni2.net/w/index.php?title=Image:Ian_McConville_Desktop_1600.jpg&action=history HERE])<br />
<br />
Well, there's another thing you don't know yet. .. ahm .. ^_^"<br />
http://wiki.oni2.net/Image:TFTC_screen_smash_1600.jpg (14. Jan 2008) by Paradox-01<br />
http://wiki.oni2.net/Image:TCTF_Cracked.jpg (1280 x 1024) (16. Jan 2008) by Iritscen<br />
http://wiki.oni2.net/Image:Ian_McConville_Desktop_1600.jpg (21. Feb 2008) by Geyser<br />
<br />
:Now let's all say "Oops" in unison. Well, geyser and I, at least. Apparently I didn't see it in the Gallery (although it could have been there, I just didn't see it) and voila, wasted bandwidth. Who knows what Geyser's excuse is :)<br />
:I don't know where the quote came from about "why the blam" is it named "TCTF Cracked", but as an answer, I don't think I provided that name; it came from somewhere else.<br />
:I'm positive there are more duplicate images out there, but I am not looking for them until I am done with the image uploading I'll be doing in the next week. --[[User:Iritscen|Iritscen]] 19:33, 21 February 2008 (CET)<br />
<br />
==Lorraine Art and Tutorial==<br />
Where oh where did you get those high-res images of Jamie and Hasegawa? That's really cool.<br />
<br />
Also, and nice job carrying over the Tutorial from HTML. I just saw it for the first time. --[[User:Iritscen|Iritscen]] 16:08, 12 March 2008 (CET)<br />
<br />
:Yea, it might be one of the last big Oni secrets out there... I searched like crazy on the net but didn't found the source again. Probable not even [http://www.archive.org/web/web.php wayback] have them anymore. The images here are from a very old and incomplete back-up. ~sigh~<br />
::[[User:Paradox-01|Paradox-01]] 22:00, 12 March 2008 (CET)<br />
:The official Oni page on bungie.net used to have a collection of in-game art.<br />
::(That's where the hi-res splashscreens and Hasegawa drawings are from)<br />
:They were removed for some reason when bungie.net was redesigned.<br />
::[[User:Geyser|geyser]] 22:37, 12 March 2008 (CET)<br />
:Muhahahahar, I get sick. They still have them on the server but unlinked. I toyed with the URLs and viola.<br />
:<del>Will upload them later, time runs out again. - Or you do it. They differ only in the numbers... ~sigh~</del> Done.<br />
::[[User:Paradox-01|Paradox-01]] 23:10, 12 March 2008 (CET)<br />
:::That is ''awesome'', Paradox, ''great'' discovery. You don't have to u/l them all right now, but have you d/led all the mission start/end/whatever screens and the "dream" images to your computer? As long as you have them d/led, I can stop worrying that the Bungie webmaster will be like, "Hey, what are these unused files doing here? *delete*". --[[User:Iritscen|Iritscen]] 17:09, 13 March 2008 (CET)<br />
::::"Aw, c'm'on..." I've had them all backed up for ''years'', guys... [[User:Geyser|geyser]] 17:13, 13 March 2008 (CET)<br />
::Ok, you did not upload them here but you did not even told us that you have them. Do you so much enjoyed our tremble? =P --[[User:Paradox-01|Paradox-01]] 17:23, 13 March 2008 (CET)<br />
<br />
==Random discovers==<br />
How the Oni music CD looks like:<br />
http://www.bysmitty.com/Soundtracks/Oni/Oni.htm<br />
:Yeah, I had to look up the cover art myself just last week to apply to the Oni tracks in iTunes. I just wish that ugly Best Buy label wasn't part of the cover. (I could probably 'shop it out, but I'm too lazy.)<br />
Oni icons for mac:<br />
http://amarsagoo.info/design/icons/index.shtml (Cannot open it. Someone, please check it. Maybe it's useful.)<br />
:I will check them out. They could be very useful for the Mac version of the Edition. How interesting that he produced only a few sets of icons, and he picked Oni as his only game to design icons for. --[[User:Iritscen|Iritscen]] 17:13, 13 March 2008 (CET)<br />
I wondered what hits google would give me for "HapeMask". Didn't found a picture of it but a fan of the game, somehow funny. http://web.archive.org/web/20050413113423/www.hapemask.com/whatisthehape.php<br />
:I didn't even recognize "HapeMask" when you said it, and then it came back to me when I followed the link. But I remember immediately thinking of post-apocalyptic Pokémon when I first saw the poster. "Meowth says, 'Don't forget to wear your mask, kiddies! That air'll kill ya!'" Something like Hapémask would ''definitely'' have to appear in an Oni sequel. :-) --[[User:Iritscen|Iritscen]] 19:42, 18 March 2008 (CET)<br />
<br />
==Thanks for Silly World write-up==<br />
I really appreciate you taking the time to document geyser's mod. I know it will be useful at some point... possibly in BGI... oh, and you'll be hearing from me soon about that. P.S.: Don't be a stranger, visit us on YIM once in a while! --[[User:Iritscen|Iritscen]] 13:30, 7 February 2010 (UTC)<br />
<br />
==XML Project==<br />
Question: "How should I *not* move pages?" Answer: "By using transclusion." :-P Normally you should use the Move tool, but since the OBD talk pages have had some actual "talk" on them, we probably want to selectively copy and paste the XML content to the new XML: pages. We can discuss this more later, I just wanted to let you know before you made any more "moves" :-) --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 02:48, 3 November 2012 (CET)<br />
<br />
: "Answer: By using transclusion"<br />
: By using <nowiki>{{:}}</nowiki>, like I did in XML:AISA ? When I switched off the PC I realized that it wasn't such a good idea (although there was no talk on that page).<br />
: XML:AISA doesn't appear in the search because there's no real content on it. So I agree with you to copy-paste the content. -- [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:15, 3 November 2012 (CET)<br />
<br />
:Solved. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
===Redirects===<br />
Iritscen, on YIM you said "there will be a checkbox when you click Move". But I don't see it.<br />
<br />
In the process where only those two pages: [https://dl.dropbox.com/u/139715/temp/moving_a_page_1.png (1)], [https://dl.dropbox.com/u/139715/temp/moving_a_page_2.png (2)]<br />
<br />
Any ideas? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 13:50, 4 November 2012 (CET)<br />
<br />
''Solved'': missing user right. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
===Broken Links===<br />
Okay, I moved the pages that we agreed did not have notable history or extant discussion that needed to stay in the OBD namespace (sorry it took so long). Note that there are now red links on pages that referred to the moved pages. You could try going [[Special:WantedPages|here]] and searching for "talk". Also, if you search there for "XML"... I assume those are just types that you haven't gotten to document yet? Just curious. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:54, 6 November 2012 (CET)<br />
<br />
: "sorry it took so long" -- I don't mind. Thanks for your assistance. :)<br />
: Yes, there are two file types that still need documentation (and others for sake of completeness). Modding the combat behavior was never my favorite and SABD had not much attention so I used my time on different things. The others will be redirects, either because Oni don't use it (AITR) or because the XML for that instance simply exist as file type ([http://ssg.oni2.net/oni_fi_l.htm AGQR, now part of AKEV]).<br />
: There are one or two things I would like you to pick up: ONLV and maybe TRBS (see list for reason).<br />
<br />
: things that need care<br />
::XML:AITR replace with better link: redirect to TRGV (I was blindly following analogy to OBD template)<br />
::XML:AGQR replace with better link: redirect to ONLV (^)<br />
::XML:BINA/SABD todo: documentation<br />
::XML:BINA/OBJC/CMBT todo: documentation<br />
::XML:HPge todo: documentation (for sake of completeness)<br />
::''possibly one or two other types that aren't of much use'' --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:16, 6 November 2012 (CET)<br />
<br />
::Okay, I moved ONLV, but what did you want me to do with TRBS? It looks like you already cut-and-pasted it to XML:. But let me know what else I can do to help. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:08, 6 November 2012 (CET)<br />
<br />
lol You are right, I guess my cold makes me dizzy. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 09:33, 7 November 2012 (CET)<br />
<br />
Iritscen, when you see this please move another one: http://wiki.oni2.net/OBD_talk:TRGE --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 19:57, 7 November 2012 (CET)<br />
<br />
<br />
===Category===<br />
You might want to consider using a category-macro template like [[Template:OBD]] instead of manually entering the category name on each XML page. You can then simply drop a little "<nowiki>{{XML}}</nowiki>" at the bottom of each page, and later on the whole category can be "renamed" if we change our minds. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 14:36, 8 November 2012 (CET)<br />
<br />
: For the records: 'scen, that worked fine.<br />
<br />
<br />
===Overview===<br />
# Do we have a main XML: page like OBD: has [[OBD:Oni Binary Data]]? Would it be "XML_basic_tutorial"?<br />
# Is [http://ssg.oni2.net/oni_fi_l.htm SSG's overview] anywhere on the wiki? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:42, 7 November 2012 (CET)<br />
<br />
:# Not name-wise. I don't wanted to create a new XML:??? page because that would have been pretty much XML_basic_tutorial as you already guessed. Should it be moved to - lets say - XML:basics ?<br />
:# Afaik, ssg's overview isn't on this wiki yet. It would be nice to have a port of it. Maybe following style will be sufficient enough. (There are more overviews, just in case you didn't noticed: [http://ssg.oni2.net/oni_fi_c.htm character files], [http://ssg.oni2.net/oni_fi_m.htm message files], [http://ssg.oni2.net/oni_fi_0.htm level 0 files].)<br />
<br />
AAAA<br />
|<br />
+-- BBBB<br />
+-- CCCC<br />
| |<br />
| +-- DDDD<br />
|<br />
+-- EEEE<br />
<br />
<br />
: I changed my mind: colored table cells could show embedded instances of files, so ssg's style should be better.<br />
: Check this out: https://dl.dropbox.com/u/139715/temp/ssg_overviews_wikified.txt<br />
: Now we've to find a good place for it. Any ideas? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 20:08, 11 November 2012 (CET)<br />
::Ooh, I like! The question of where to put it is a good one, as I would love to find a way to merge that hierarchical information with the acronym expansions given on the [[OBD:File types|File types]] page, and, even better, to also have a small summary of each type ("AKEV (Akira Environment) is ___"). Short of using [[Template:H|hover text]], which I don't think is ideal, I don't have any ideas yet as to how to fit everything into one display. It just seems wasteful to use a whole page just for showing relationships, with no explanation of each type; also, the File types page is now somewhat wasteful of space too, since investigation of the file types is essentially done and we no longer need a page to track its progress with smileys. At least, that's my opinion; what do you think?<br />
::P.S.: One small tip -- I'm generally against the use of images external to the wiki. I would suggest uploading SSG's arrow pics to the wiki and then invoking them as shown below. The blank link field makes them non-clickable: <pre>[[File:Wiki.png|link=]]</pre> --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 21:02, 11 November 2012 (CET)<br />
<br />
<br />
SSG's arrow pics: before we upload them let's be sure we will use them. (If it's going to be a html from an oni2 user account then we wouldn't upload them.)<br />
<br />
Proposal of that new page (recycling OBD:file_types). (For Neo's sake, let's keep the ^_^ ? Or another symbol that makes them as done.)<br />
* With a narrow table the content (types + hierarchy + explanation) should fit on one page.<br />
* By default the hierarchy tables and explanations are hidden. Clicking a file type from the list at the left makes the corresponding table + explanation visible.<br />
<br />
Problem<br />
* If we can't pull this off we might consider writing a html page although a wiki page would be more appropriated.<br />
* I don't know if we can show a table and at same time hide the previous table on click event. At least <nowiki><div></nowiki> demonstrates that some hiding/showing can be done on the wiki.<br />
{{divhide|inspiration}}<br />
Can you reuse the template source code at some point?<br />
{{divhide|end}}<br />
<br />
PS: http://wiki.oni2.net/User:Iritscen/vector.js - That's some customization but how do you store/call actual java script functions? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 15:56, 12 November 2012 (CET)<br />
<br />
{|class="wikitable" width="100%"<br />
|width="100"|<br />
<br />
;file types<br />
*<a href="#AISA" id="table_1">AISA</a><br />
*<a href="#TXMP" id="table_2">TXMP</a><br />
*<a href="#ONCC" id="table_3">ONCC</a><br />
<br />
|width="420"|<br />
{|class="wikitable" width="400" style="text-align:center"<br />
|style="background-color:#DDDDDD;"| TxtC<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|-<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGPA<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGPG<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF;"| TSFF<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSFL<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSFT<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| TSGA<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
| PSpc<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| TXMP<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGSA<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);"| IGSt<br />
|<br />
|}<br />
<br />
|<br />
;explanation of clicked file type<br />
* .......<br />
|}<br />
<br />
:Cool, I like the diagonal striping; I didn't even know that was possible. I also really like how you fit everything onto the page in three columns. I don't have the time this minute to do much work on this myself, but I can at least answer a couple of your questions.<br />
:'''"For Neo's sake, let's keep the ^_^ ?"''' -- If he still uses them, we should definitely keep them. I guess I was under the impression that Neo isn't really using those anymore. We should ask him.<br />
:'''"I don't know if we can show a table and at same time hide the previous table on click event [...] That's some customization but how do you store/call actual java script functions"''' -- I would direct your attention to [[MediaWiki:Common.js]] (also, note that all the JS pages are linked to on my user page). Towards the top of Common.js is code that imports additional scripts, such as [[MediaWiki:Common.js/edit.js]], based on the type or name of the page. E.g., anyone performing an edit will have edit.js loaded for them, which does things like adding buttons to the toolbar (at least, it will when I fix it!). Does that help? --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:39, 12 November 2012 (CET)<br />
:Just a quick note, the repeating-linear-gradient property does not work for WebKit browsers. Chrome/Safari apparently need "-webkit-repeating-linear-gradient" instead. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 03:31, 13 November 2012 (CET)<br />
:Another quick note, we would probably want to mimic the JS that enables the divhide template, as you already suggested and in line with [http://www.mwusers.com/forums/showthread.php?18647-onclick-in-wikitext&s=4573f23d960e24c3c6523e4a072b4ba9&p=61594&viewfull=1#post61594 this forum post], which means that we probably want to create a new table class (e.g. "click-table") that responds to 'onclick' events by modifying the text in a column in the table (e.g. "click-table-descrip"). But I can't figure out where the file type description text would come from. We don't really want all the description texts lodged inside the Javascript, but rather somewhere we can edit them freely. One possibility is to figure out how to copy/transclude text from a subpage, similar to the way [[Quotes/Consoles]] works, where each console quote is on a separate, editable page. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 14:38, 13 November 2012 (CET)<br />
<br />
I tried get myself more familiar with the different codes and their mixing, but I would just ending to make hundreds of edits just to learn how to do this or that. So I can't be a great help here. :/ [[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 22:09, 13 November 2012 (CET)<br />
:That's okay, I have played around with JS before. I'll spend some time on this soon. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 00:42, 14 November 2012 (CET)<br />
<br />
Okay, I wrote some quick and dirty code and put it in Common.js. Go to my test space's file type table and you should get descriptions when you hover over each type. This could easily be adjusted to require a click instead of a hover but I liked the idea of a no-click interface. I'm going to step aside now and give you the chance to work with this table type as you see fit. I had to simplify the markup for testing purposes, and you might have some better ideas as to how to arrange the table.<br />
<br />
As you'll see, the basic idea is that you attach the class "hovertable" to a wikitable, then you place multiple spans in one large cell of class "hovertable_descrip". Each span is "display:none" and contains the description for one type, which is given as that span's id. Then you declare other cells in the hovertable as class "hovercell" with ids that match the ones in the descrip cell. The JS I wrote attaches event handlers to all hovercells which display their corresponding span in the hovertable_descrip cell when the hovercell receives 'mouseover', and hide the span upon 'mouseout'. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:22, 16 November 2012 (CET)<br />
<br />
: I checked your test space. It looks awesome, I didn't expected to see so fast results on this. However, there are 2 things I would like you to think about.<br />
:: 1) SSG's [https://dl.dropbox.com/u/139715/temp/ssg_overviews_wikified.txt "Level files" table] (ONLV) is ''too big'' for an ''absolute location'' of the explanation: if the user hovers the CRSA table cell he would see nothing because the explanation is out of view.<br />
::: The solution to this problem might be to fix the explanation area to the screen. Here's an example made of [https://dl.dropbox.com/u/139715/temp/explanation_fixed_to_screen.htm CSS]. (basically ''style="position: fixed; top: 50%; left: 50%;"'')<br />
:: 2) We talked about merging those hierarchies and the general file type overview. In my last draft the types were vertical listed but I think it will look less odd if they are horizontal (because the tables differ in their number of rows).<br />
::: At the moment the chasing explanation makes a strange impression but that's due to the other content here. With nothing else then the content under the gray line should look ... not "super" ... but good enough. Or we make a step back and use H template?<br />
:: 2a) If we agree on the merging then the file types should be click-able: if user clicks TxtC type then of course the TxtC table should appear.<br />
::: I think you can reuse the mechanism here you just created. Not sure about IGPG: it appears in TxtC but also in others (DPge, WPge, Opge, ...)<br />
:: '''2b)''' Facing this problem we might choose an easier path than hiding all tables by default.<br />
::: If we put all table under each other we could create "AAAA-using types" sections at the end of all tables: If the user clicked IGPG then the browser jumps to that section and there the user reads IGPG being used by this, this and that type. From there he can jump again (by clicking <nowiki>[[#ABCD|ABCD]]</nowiki>) and reaches his final choice (TxtC/DPge/WPge/... table).<br />
<br />
<br />
-----<br />
<br />
<br />
<br />
<br />
<br />
<br />
{| width="100%" style="text-align:center; font-weight:bold;"<br />
| ABNA<br />
| AGQC<br />
| AGQG<br />
| AGQR<br />
| AISA<br />
| AKAA<br />
| AKBA<br />
| AKBP<br />
| AKEV<br />
| AKOT<br />
| AKVA<br />
| BINA<br />
| CBPI<br />
| CBPM<br />
| CONS<br />
| CRSA<br />
| DOOR<br />
| DPge<br />
| ENVP<br />
| FILM<br />
| HPge<br />
| IDXA<br />
| IGHH<br />
|-<br />
| IGPA<br />
| [[#IGPG-using types|IGPG]]<br />
| IGSA<br />
| IGSt<br />
| Impt<br />
| IPge<br />
| KeyI<br />
| M3GA<br />
| M3GM<br />
| Mtrl<br />
| OBAN<br />
| OBOA<br />
| OFGA<br />
| ONCC<br />
| ONCP<br />
| ONCV<br />
| ONGS<br />
| ONIA<br />
| ONLD<br />
| ONLV<br />
| ONOA<br />
| ONSK<br />
| ONVL<br />
|- <br />
| ONWC<br />
| OPge<br />
| OSBD<br />
| OTIT<br />
| OTLF<br />
| PLEA<br />
| PNTA<br />
| PSpc<br />
| PSpL<br />
| PSUI<br />
| QTNA<br />
| SNDD<br />
| SUBT<br />
| TRAC<br />
| TRAM<br />
| TRAS<br />
| TRBS<br />
| TRCM<br />
| TRGA<br />
| TRGE<br />
| TRIA<br />
| TRIG<br />
| TRMA<br />
|-<br />
| TRSC<br />
| TRTA<br />
| TSFF<br />
| TSFL<br />
| TSFT<br />
| TSGA<br />
| TURR<br />
| TXAN<br />
| TXCA<br />
| TXMA<br />
| TXMB<br />
| TXMP<br />
| [[#TxtC|TxtC]]<br />
| VCRA<br />
| WMCL<br />
| WMDD<br />
| WMM<br />
| WMMB<br />
| WPge<br />
|}<br />
<br />
Based on OBD:file_types. Maybe we should list BINA subtypes too (object collections like [[XML:BINA/OBJC/CHAR|CHAR]], CONS, DOOR, ...) ?<br />
<br />
<br />
====TxtC====<br />
{|width="100%"<br />
|width="200" valign="top"| <br />
<br />
{|class="wikitable hovertable" width="400" style="text-align:center; font-weight:bold;"<br />
|style="background-color:#DDDDDD;" class="hovercell" id="txtc"| [[TxtC]]<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|width="16.66%"|<br />
|-<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igpa"| [[IGPA]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
| style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igpg"| [[IGPG]]<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|style="background-color:#CCCCFF;" class="hovercell" id="tsff"| [[TSFF]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsfl"| [[TSFL]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsft"| [[TSFT]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#CCCCFF; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="tsga"| [[TSGA]]<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20b.gif<br />
|class="hovercell" id="pspc"| [[PSpc]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20a.gif<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|class="hovercell" id="txmp"| [[TXMP]]<br />
|<br />
|-<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igsa"| [[IGSA]]<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
| http://ssg.oni2.net/design/60x20c.gif<br />
|style="background-color:#DDDDDD; background-image: repeating-linear-gradient(-45deg, transparent, transparent 10px, rgba(255,255,255,.5) 10px, rgba(255,255,255,.5) 20px);" class="hovercell" id="igst"| [[IGSt]]<br />
|}<br />
<br />
|valign="top"|<br />
<br />
{|style="position: fixed; top: 30%"<br />
|class="hovertable_descrip" valign="top"| <br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="txtc">'''TxtC''': This is console text.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igpa">'''IGPA''': In-Game User Interface Page Array.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igpg">'''IGPG''': In-Game User Interface Page.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsff">'''TSFF''': A font family.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsfl">'''TSFL''': A font language.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsft">'''TSFT''': Actual font bitmaps.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="tsga">'''TSGA''': A glyph array linking 256 possible symbols to their bitmaps (TSFTs).</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="pspc">'''PSpc''': Part Specification (coordinates for finding a UI symbol in a bitmap collection of UI elements.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="txmp">'''TXMP''': A texture map!</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igsa">'''IGSA''': In-Game user interface String Array.</span><br />
<span style="display:none; background-color:#EEEEEE; border-color:#DDDDDD; border-width:1px; border-style:solid; padding:10px;" id="igst">'''IGSt''': In-Game user interface STring.</span><br />
|}<br />
<br />
|}<br />
<br />
<br />
[ other tables ]<br />
<br />
<br />
<br />
<br />
<br />
====IGPG-using types====<br />
* [[#TxtC|TxtC]]<br />
* OPge<br />
* IPge<br />
* WPge<br />
<br />
<br />
----<br />
Ah, the fixed-position box is interesting, that could be the answer. I think we will need to have a chat before I can fully understand what we are trying to document, though, in terms of what/how hierarchies are to be shown. I'll look for you online this weekend. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 03:41, 17 November 2012 (CET)<br />
<br />
Just a note on where I left off -- I fixed the classes so that the cells are being styled correctly. However, I seem to have accidentally changed the stripe style; I didn't mean to create a stripe with a gradient in it; I just want to make the blue and background colors evenly spaced at 10px or 15px. Also, the "position:fixed" on the descrip cell was somehow shifting the location of the next cell (TxtC), so for now I have removed that property. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:56, 17 November 2012 (CET)<br />
<br />
:If you look closely there are 3 px value in the gradient code: for clean stripes let the last value be the sum of the others.<br />
: background-image: -webkit-repeating-linear-gradient(-45deg, transparent, transparent '''10px''', rgba(0, 0, 255, 0.2) '''10px''', rgba(0, 0, 255, 0.2) '''20px'''); --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:29, 18 November 2012 (CET)<br />
<br />
: The table in your [[User:Iritscen/TestSpace|test space]] will look okay if you enable the position fixed in Common.css again. That code piece rips the cell out of the table. I added some columns to fix it. --13:12, 18 November 2012 (CET)<br />
<br />
Sorry, 'dox, I didn't think it would take very long, but after I had written some of the JavaScript, I could see how complicated it would be. Then I got sidetracked by real life for a while. Normally I would just keep at it until it's done, but seeing as I am trying to get back to my main Oni project ASAP, I'm afraid I have to cut short my work on this. Maybe it's more complicated than it needs to be. If you want to "retreat" back to a simpler solution, then let me know how I can help with that. Otherwise I might have time to finish this at a later date. I just don't want to spend hours on it when it's keeping me from my other work. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:57, 17 December 2012 (CET)<br />
<br />
==Your Red Links==<br />
Hello, I just looked over the wiki's red links and thought you might like to know that these belong to you:<br />
*<strike>Camp (2 links)<br />
*Silver Dawn (2 links)<br />
*Green Village (2 links)<br />
*Mind Seal (2 links)<br />
*Restless Souls/timeline 2032 (2 links)<br />
*„Regierung“ (1 link)</strike><br />
*Talk:Restless Souls/Reconstruction (1 link)<br />
*Talk:Restless Souls/Summary (1 link)<br />
*Talk:Restless Souls/Tree Of Theories (1 link)<br />
*<strike>Elfenbeintürmen (1 link)</strike><br />
*Talk:Restless Souls/Fragments (1 link)<br />
*Talk:Restless Souls/Ikimas (1 link)<br />
*<strike>Oni2:Shinobi (1 link)<br />
*Sub-dermal transponder (2 links)<br />
*2.3.1 WKR (1 link)<br />
*2.3.3 Syndikat (1 link)<br />
*D-Spray (1 link)<br />
*BLACKSTARS (2 links)<br />
*Mukade's reanimation (2 links)</strike><br />
Just an informational service ^_^ --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 20:13, 10 April 2013 (CEST)<br />
:Just a little related question, are you planning to move these to XML:?<br />
:*OBD talk:KeyI<br />
:*OBD talk:WMCL<br />
:*OBD talk:DOOR<br />
:I ask because they are the only pages left that use the old XMLModdingHints template and seem like the only OBD talk pages left with XML info on them. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 19:18, 12 April 2013 (CEST)<br />
<br />
Oh yea I totally forgot about them. But something was going on the the rights. Normal user can't do that unless they want to leave a redirect or something. '''[[User_talk:Paradox-01#Redirects|D:]]''' --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 19:43, 12 April 2013 (CEST)<br />
:Ah, I guess we never fixed that. I'll move them over. In the future, since you probably won't have many pages to move (will you?), you can just move them and leave the redirect. I'll see it in the logs after and just delete the redirect. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:46, 12 April 2013 (CEST)<br />
<br />
==Music issues==<br />
When you have time, can you please test this package: http://edt.oni2.net/temp/60000Soundtrackrenewal.zip I converted this file to oni file: https://soundcloud.com/mengermeester/oni-ae-fight-wip Hopefully, I made the windows version correctly.<br />
<br />
I replaced the original files with the updated version. However, it doesn't seems to playback correctly, the transition isn't smooth. The original files were about 11 seconds and less, the updated are 20 seconds and less.<br />
<br />
You can hear this music at Manplant save point 1<br />
<br />
Thanks [[User:EdT|EdT]] ([[User talk:EdT|talk]])<br />
<br />
:You imported them correctly. The song plays at that SP. It's as you say the transition doesn't fit. But that's no wonder since it's still a one-piece song and not designed to play pieces in a random order, isn't it?<br />
:"Once we have a nice pool of sounds we will go over every trigger and see what fits where. Then we will cut the loops to be modular." I guess we have to wait for the final version? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:17, 16 April 2013 (CEST)<br />
<br />
::I didn't realize that Oni's music was designed to be played randomly. Learn something everyday. As a temporary workaround, I can modify the OSBD to include only the one song in its entirety, just to be able to hear it in-game. Thanks [[User:EdT|EdT]] ([[User talk:EdT|talk]])</div>EdT