Modding errors
You might want to use the browser's search function to quickly find an error message.
Frequently asked questions
- Why does Oni crash on game start?
- What were you working on? A character animation?
- Why does Oni crash while loading a level?
- What were you working on? A game level?
- Why does a character have black body parts?
- Why does a character have white body parts?
- You are using a mod with bgra32 textures and an old engine that doesn't support bgra32.
- Why can't I convert character animations?
- See HERE if you use "-create:tram".
- Why are all body parts overlapping in the DAE file?
- Because the part hierarchy isn't correct. Read more here.
Visual errors based on settings
Black splashscreens but normal gameplay
Those screens (all TXMBs) are black if the user has a lower resolution than the screen. Oni's vanilla splashscreens are 640x480 but the AE's "HD Screens" package bumps them up to 1024x768, which is where players usually encounter this problem.
Note: This problem is fixed by Daodan DLL v3.5 or newer and the Mac Intel build v1.2 or newer.
Binary errors
Crash while starting Oni
... due to overloaded animation
Animations with more than 107 keys per bone crash the game. You can import animations with more than 107 frames if the keys cover multiple frames.
- For example 12 frames <EKey>12 -156.628983 -14.6175327 -78.3831558</EKey>
Such ranges and EKeys are produced by older OniSplit versions. See HERE.
Note: You shouldn't encounter this bug anymore with OniSplit v0.9.56.0 or newer.
Crash while loading a level
... due to improper textures
Textures' x and y (pixel) dimensions must be a power of two: 512, 256, 128, 64, etc.
... due to missing files
Generally it can be said that Oni complains when an instance is missing that is referenced by another instance. For instance:
- AKEVs don't tolerate missing textures.
- ONVLs and ONCCs don't tolerate missing variants (ONCVs).
... due to triangle limit
- with too many triangles, Oni crashes after ~90% of the loading process; the triangle limit is ~520,000 (500,000 to be on the safe side).
Crash while playing
... due to missing files
If you encounter a crash when spawning a character or when you cycle through all characters with F8, then check if the crashing character has a TRMA file.
Non-crash errors
These errors are visible inside the game and don't cause a crash when they appear.
Multiple savegame names for same level number
The Load Game menu can show additional savegame names if any new ONLV is provided in another level0 plugin. As a quick test, you should use a plugin name which comes alphabetically before "level0_Final", such as "level0_Addin". If you choose a name like "level0_More", the new savegame will be appended after all "_Final" ONLDs, and also a clone appears:
- "_Final" list
- new savegame name from "_More"
- cloned savegame name of the slot meant to be overwritten
Multiple TXMBs
A level can start with multiple TXMBs, visible one by one, although there was just one BSL command calling for one. This is caused by using additional plugins, because files with the same name can stack.
Missing character texture (TXMP)
The texture is either missing, or the texture name and the link in TRMA do not match.
Distorted colors in textures (TXMP)
Why do my source and re-extracted textures look okay but in-game the colors are distorted? The "little endian data" flag in the level data file is missing. The flag will be added by OniSplit v0.9.56.0 or later when you import it, or you can create the TXMP via an XML file and ensure that the flag is present before import.
Missing animation collection (TRAC)
Missing 3D model (TRBS)
Distorted 3D model (TRBS)
correct names for old version correct order for new version |
When creating the 3D model in Mod Tool, you have to watch out for the naming and order of the body parts.
- If you use OniSplit v0.9.58.0 or lower, the naming of body parts must be absolutely correct.
- If you use higher versions, the naming is unimportant but the order matters. The order can be easily changed in the Schematic [9]. Then go to Edit > Reorder Nodes Tool [I] and move an object to its new position.
Non-working combos (TRAM)
Situation: When you create combos, you want to test your moves in-game. Sometimes each move actually works (tested via chr_animate) but the combo does not.
Requirements to prevent that bug:
- <Attacks> and <HorizontalExtents> data is needed
- Note: With OniSplit v0.9.55.0 or newer, HorizontalExtents (now named "AttackRing") is calculated automatically.
- Correct links to the Direct Animations tag
- Correct links inside the character's animation collection (TRAC)
Developer Mode error messages
Animation errors
throwtarget was NULL - The throw target animation was not found.
BSL errors
- Func "main", File "(called from engine)", Line 0: semantic error, function "main" does not exist, then either the function "main" wasn't found in any BSL file (this can also happen with any other function), or the BSL file has too many commands in it (see here). If it's the latter, split your BSL file into more BSL files (creating additional functions if necessary).
- Func "(null)", File "test.bsl", Line 3: semantic error, Identifier "main" already declared - In this example, there are multiple "main" functions; the last occurrence of main() can be found in the file "test.bsl" at line 3.
- Func "(null)", File "main.bsl", Line 1: Illegal token, got "func" expected ";" - A previous variable declaration didn't end with a semicolon.
- SLiSchedule_Task_Find FAILED [IMPORTANT] - The game will freeze after about 5 instances of this message. Caused by calling too many BSL functions in parallel (using fork) in a very short amount of time.
Mistyped variable
Typing chr_lod 4 will produce this error: Func "(null)", File "(called from console)", Line 1: Illegal token, got "0" expected ";". That's because "chr_lod" is a variable and you need to use the equals symbol to set a variable. The correct use of this variable would be chr_lod = 4.
Mistyped function
Typing killled_griffen = 1 will produce Func "(null)", File "(called from console)", Line 1: semantic error, symbol "killed_griffen" is not a variable (function most likely). That's because "killed_griffen" is a function, and you simply list values (parameters) after function names, with no equals symbol. The correct use of this function is: killed_griffen 1.
Another incorrect example: Typing chr_givepowerup = 0 ammo 1 will produce:
- Func "(null)", File "(called from console)", Line 1: semantic error, symbole "chr_givepowerup" is not a variable (function most likely)
- Func "(null)", File "(called from console)", Line 1: Illegal token, got "ammo" expected ";"
The correct use of this function is chr_givepowerup 0 ammo 1.
BSL commands per file limitation
The engine has some kind of limit on how many BSL commands can occur in a single BSL file. When you pass the limit, you'll get errors in the developer console like this: "Func "main", File "(called from engine)", Line 0: semantic error, function "main" does not exist." (it can also be a function other than "main").
For an example, extract these files and place them in IGMD/EnvWarehouse to experience the problem: [1], [2], [3]
In all these BSL files, the message "This message should appear on the beginning" should appear when you load level 1. However for "main_not_working_without_commenting_commands" it doesn't work unless you comment out the 5th line of the BSL file. The "main_not_working_without_commenting_commands(functions_split)" script is the same, but in this one the "main" function is split into two functions, which is still not enough for the error to go away. The scripts in "main_split_in_two_files" are the same BSL as previously, but the two functions are split into two different files: "main.bsl" and "continuation.bsl". In this case the script works as expected, and the message "This message should appear on the beginning" appears on level load.
So if you experience the error "Function "x" does not exist." when in fact it does, try spreading your functions across more BSL files and it should fix the problem.
OniSplit error messages
- COLLADA error: duplicate id light - Maybe your DAE file has more than one root scene. In this case, you can right-click the model (which selects all 19 bones), then go to the Crosswalk settings, check "Selection Only", and save the file.
- .dae files cannot be imported as TRAM - Newer OniSplit versions doesn't seem to support "-create:tram" any longer. If you use that command, download an older version like v0.9.41.0.
- If TRAM*tgt has more than 256 (0-255) frames, you'll see:
Parametername: Value too large for Byte at Oni.BinaryWriter.WriteByte(Int32 value) at Oni.Totoro.AnimationDatWriter.WriteRotations(List`1 rotations, Int32 frameSize) at Oni.Totoro.AnimationDatWriter.WriteAnimation() at Oni.Xml.XmlImporter.ReadAnimation() at Oni.Xml.XmlImporter.Import(String filePath, String outputDirPath) at Oni.Program.ExecuteTasks(String[] args, String outputDirPath, Set`1 importedFiles, Queue`1 taskQueue) at Oni.Program.CreateGeneric(String[] args) at Oni.Program.Execute(String[] args) at Oni.Program.Main(String[] args)
TRBS
In DAE files, if a bone has a point cluster, OniSplit v0.9.94.0 fails to convert the file.
AE Installer
Blank mod list
Your user account probably doesn't have the necessary rights that the AE Installer needs. In Windows, this can happen if you have Oni installed on an old hard drive which is now wired to your new system. Add "full control" to your account by right-clicking the Oni folder, choosing Properties, and going to the Security tab.
XSI/Mod Tool errors
Corrupted DAE files
Situation: I cannot load my DAE file into XSI. It give me an "Unspecified Failure".
Possible cause: When you create the DAE file, there are file paths are stored inside it. If a path contains an illegal character, XSI cannot load the file.
Solution: Make sure the paths use only letters of the English alphabet.
Object with test texture
If the texture's file name contains a "#", ModTool fails to apply that texture and use its rainbow-colored test image instead.