Modding errors: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (-finish; revert this edit if you disagree, but I think an article like this will never be "finished"; capitalized section headers)
m (link fix)
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
You might use the browser's search function to quickly find an error text.
You might want to use the browser's search function to quickly find an error message.
__TOC__
{{TOClimit|3}}
 
==Frequently asked questions==
==Frequently asked questions==
{|BORDER=0 CELLSPACING=0 CELLPADDING=0 STYLE="border-style:solid; border-collapse:collapse; empty-cells:show; background-color:#FFFFFF;" style="float:right"
[[Image:modding_errors.jpg|thumb|200px]]
|
[http://i305.photobucket.com/albums/nn207/unknownfuture/screenshots/ouch2.jpg http://i305.photobucket.com/albums/nn207/unknownfuture/screenshots/ouch2_tn.jpg]<br>Well... yea... shit happens.
|}


*Why does Oni crash on game start?
*Why does Oni crash on game start?
:: What did you worked on? A [[#... due to overloaded animation|character animations]]?
::What were you working on? A [[#... due to overloaded animation|character animation]]?
*Why does Oni crash while loading a level?
*Why does Oni crash while loading a level?
:: What did you worked on? A [[#... due to missing files|game level]]?
::What were you working on? A [[#... due to missing files|game level]]?
*[[#missing texture (TXMP)|Why does a character have black body parts?]]
*Why does a character have black body parts?
::You're probably [[#Missing character texture (TXMP)|missing a texture]].
*Why does a character have white 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.
::You are using a mod with bgra32 textures and an old engine that doesn't support bgra32.
* Why can't I convert character animations?
* Why can't I convert character animations?
:: See [[#TRAM-related|HERE]] if you use "-create:tram".
::See [[#TRAM-related|HERE]] if you use "-create:tram".
* Why are body parts in one place in the dae file?
* Why are all body parts overlapping in the DAE file?
:: Because the file wasn't saved the right way. Read on [http://oni.bungie.org/community/forum/viewtopic.php?pid=31310#p31310 here].
::Because the part hierarchy isn't correct. Read more [http://oni.bungie.org/forum/viewtopic.php?pid=31310#p31310 here].




==Visual errors based on settings==
==Visual errors based on settings==
===Black loading/win/lose level screens but normal gameplay===
===Black splashscreens but normal gameplay===
Those screens are black if user has a lower resolution than the screen (TXMB).
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.
: Oni "HD" screen have a resolution of 1024x768.
 
'''Note''': This problem is fixed by [[Daodan DLL]] v3.5 or newer and the [[FERAL|Mac Intel build]] v1.2 or newer.


==Binary errors==
==Binary errors==
Line 31: Line 29:
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.
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><font style="color:#00AA00">'''12'''</font> -156.628983 -14.6175327 -78.3831558</EKey>''
: For example 12 frames ''<EKey><font style="color:#00AA00">'''12'''</font> -156.628983 -14.6175327 -78.3831558</EKey>''
Such ''range'' and EKeys are produced by an older onisplit version. See [[#TRAM-related|HERE]].
Such ranges and EKeys are produced by older OniSplit versions. See [[#TRAM-related|HERE]].


'''Edit:''' You shouldn't encounter this bug anymore with onisplit v0.9.56.0 or newer.
'''Note:''' You shouldn't encounter this bug anymore with OniSplit v0.9.56.0 or newer.


===Crash while loading a level===
===Crash while loading a level===
====... due to improper textures====
====... due to improper textures====
* Textures' x and y (pixel) dimension must be power of two: 512, 256, 128, 64, etc.
Textures' x and y (pixel) dimensions must be a power of two: 512, 256, 128, 64, etc.


====... due to missing files====
====... due to missing files====
Generally it can be said the Oni complains when an instance is missing that is used somewhere else. For instance:
Generally it can be said that Oni complains when an instance is missing that is referenced by another instance. For instance:
* AKEV don't tolerate missing textures.
* AKEVs don't tolerate missing textures.
* ONVL and ONCC don't tolerate missing variants (ONCV).
* ONVLs and ONCCs don't tolerate missing variants (ONCVs).


====... due to triangle limit====
====... due to triangle limit====
* with too many triangles Oni crashes after ca. 90% of the loading process; the triangle limit is ca. 520.000 (500.000 to be on save side)
* 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===
===Crash while playing===
====... due to missing files====
====... due to missing files====
If you encounter a crash when spawning a character or when you cycle through all characters [F8] then check if the crashing character has a TRMA file.
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===
===Non-crash errors===
Line 55: Line 53:


====Multiple savegame names for same level number====
====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.
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:


For fast test you should use a plugin name which names comes before "level0_Final" like "level0_Addin".
: "_Final" list
: new savegame name from "_More"
: cloned savegame name of the slot meant to be overwritten


If you choose a name like "level0_More" the new savegame will be appended after all Final ONLDs, also a clone appears:
====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.


: "Final" list
====Missing character texture (TXMP)====
: new savegame name from "More"
The texture is either missing, or the texture name and the link in [[OBD:TRMA|TRMA]] do not match.
: clone savegame name of the slot meant to overwrite
 
 
====Multiple TXMB====
A level can start with multiple TXMB, visible one by one, although there was just one BSL command calling for one.


Cause: When you use additional plugins, files with the same name can stack.
====Missing character texture (TXMP)====
The texture is either missing, or the texture name and the link in [[OBD:TRMA|TRMA]] are unequal.
====Distorted colors in textures (TXMP)====
====Distorted colors in textures (TXMP)====
[http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/color_spectrum_test.jpg http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XML_modding/color_spectrum_test_tn.jpg]
[[Image:color_spectrum_test.jpg|thumb|200px]]


Why do my source and re-extracted textures look okay but in-game the colors are distorted? The "[[OBD_talk:TXMP#0x_00_10_00_00|little endian data]]" flag in the level archive is missing.
Why do my source and re-extracted textures look okay but in-game the colors are distorted? The "[[OBD_talk:TXMP#0x_00_10_00_00|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.
* bug: TXMP creation via command line and v0.9.56.0 (flag missing), imported with v0.9.52.0 (flag won't be added)
* no bug: TXMP creation via command line and v0.9.56.0 (flag missing), import with v0.9.56.0 (flag becomes added)
* no bug: TXMP creation via XML file and v0.9.56.0 (flag is present), import with v0.9.56.0


====Missing animation collection (TRAC)====
====Missing animation collection (TRAC)====
====Missing 3D model (TRBS)====
====Missing 3D model (TRBS)====
====Distorted 3D model (TRBS)====
====Distorted 3D model (TRBS)====
{| border=0 cellspacing=20 cellpadding=0 style="float:right"
[[Image:XSI_Konoko_Ref.png|thumb|200px]]
| correct names for old version<br>correct order for new version<br>[http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XSI_modding/Konoko_Ref.png http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/XSI_modding/Konoko_Ref_tn.png]
 
|}
When creating the 3D model in Mod Tool, you have to watch out for the naming and order of the body parts.
When creating the 3D in Mod Tool you have to watch out for the naming or order of body parts.
* If you use OniSplit v0.9.58.0 or lower, the naming of body parts must be absolutely correct.
* If you use onisplit v0.9.58.0 or lower the naming of body parts must be absolute 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 > [http://edt.oni2.net/images/schematic.jpg Reorder Nodes Tool] [I] and move an object to its new position.
* If you you higher versions the naming is unimportant but the order matters. The order can be easily changes in the Schematic [9]. Then goto Edit > [http://edt.oni2.net/images/schematic.jpg Reorder Nodes Tool] [I] and move an object to its new position.
 
====Non-working combos (TRAM)====
====Non-working combos (TRAM)====
Situation: When you create combos you want to test your moves in-game. And each move actually works (test via: chr_animate) but the combo does not work.
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:
Requirements to prevent that bug:
* <Attacks> and <HorizontalExtents> data is needed
* <Attacks> and <HorizontalExtents> data is needed
** '''edit:''' with onisplit v0.9.55.0 or newer versions the HorizontalExtents (now named "[[OBD_talk:TRAM#list_of_tags.2C_types.2C_and_flags|AttackRing]]") become calculated automatically
** '''Note:''' With OniSplit v0.9.55.0 or newer, HorizontalExtents (now named "[[XML:TRAM#List_of_tags.2C_types.2C_and_flags|AttackRing]]") is calculated automatically.
* correct links at the Direct Animations tag
* Correct links to the Direct Animations tag
* correct links inside character's animation collection (TRAC)
* 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 [[#BSL_commands_per_file_limitation|here]]). If it's the latter, split your BSL file into more BSL files (creating additional functions if necessary).


==Dev mode error messages==
* ''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.
* ''throwtarget was NULL'' - The throw target animation was not found.


===BSL errors===
* ''Func "(null)", File "main.bsl", Line 1: Illegal token, got "func" expected ";"'' - A previous variable declaration didn't end with a semicolon.
* ''Func "main", File "(called from engine)", Line 0: semantic error, '''function''' "main" '''does not exist''''' - Function "main" wasn't found in any bsl file. (This can also happen with any other function.)
 
* ''Func "(null)", File "test.bsl", Line 3: semantic error, '''Identifier''' "main" already declared'' - In this case the function "main" is double, it can be found in the file "test.bsl" at line 3. (It's not the first but the last line of the double function.)
* ''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.
* ''Func "(null)", File "main.bsl", Line 1: Illegal token, got "func" expected ";"'' - The variable declaration didn't ended with a semicolon.
* ''SLiSchedule_Task_Find FAILED [IMPORTANT]'' - Controls freezes after about 5 messages of this. Maybe caused by calling too many BSL functions in a very short time.


====Mistyped variable====
====Mistyped variable====
* For example ''chr_lod 4'' will produce this error: ''Func "(null)", File "(called from console)", Line 1: Illegal token, got "0" expected ";"''
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''.
** Correct use of this varible would be: ''chr_lod = 4''
 
** '''Equality symbole is needed for variable.'''
====Mistyped function====
====Mistyped function====
* For example ''killled_griffen = 1'' will produce ''Func "(null)", File "(called from console)", Line 1: semantic error, symbole "killed_griffen" is not a variable (function most likely)''
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''.
** Correct use of this function is: ''killed_griffen 1''
 
** '''Equality symbole is <u>not</u> allowed for functions.'''
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").


* Another wrong function: ''chr_givepowerup = 0 ammo 1'' - The debugger will say:
For an example, extract these files and place them in IGMD/EnvWarehouse to experience the problem: [http://script10k.oni2.net/wikifiles/main_not_working_without_commenting_commands.zip], [http://script10k.oni2.net/wikifiles/main_not_working_without_commenting_commands(functions_splitted).zip], [http://script10k.oni2.net/wikifiles/main_splitted_in_two_files.zip]
* ''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 ";"''
** Correct use of this function is: ''chr_givepowerup 0 ammo 1''


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==
==OniSplit error messages==
===TRAM-related===
===TRAM-related===
* ''COLLADA error: dublicate id light'' - Maybe your dae file has more than one root scene. In this case you can right-click the model (that selects all 19 bones), then you go to the crosswalk seettings, check "Selection Only" and save the file.
* ''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. [http://dl.dropbox.com/u/139715/OniGalore/OniSplit_0.9.41.0.zip v0.9.41.0]
* ''.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 from Mod Depot.
* TRAM*tgt has more than 256 (0-255) frames
* If TRAM*tgt has more than 256 (0-255) frames, you'll see:


  Parametername: Value too large for Byte
  Parametername: Value too large for Byte
   bei Oni.BinaryWriter.WriteByte(Int32 value)
   at Oni.BinaryWriter.WriteByte(Int32 value)
   bei Oni.Totoro.AnimationDatWriter.WriteRotations(List`1 rotations, Int32 frameSize)
   at Oni.Totoro.AnimationDatWriter.WriteRotations(List`1 rotations, Int32 frameSize)
   bei Oni.Totoro.AnimationDatWriter.WriteAnimation()
   at Oni.Totoro.AnimationDatWriter.WriteAnimation()
   bei Oni.Xml.XmlImporter.ReadAnimation()
   at Oni.Xml.XmlImporter.ReadAnimation()
   bei Oni.Xml.XmlImporter.Import(String filePath, String outputDirPath)
   at Oni.Xml.XmlImporter.Import(String filePath, String outputDirPath)
   bei Oni.Program.ExecuteTasks(String[] args, String outputDirPath, Set`1 importedFiles, Queue`1 taskQueue)
   at Oni.Program.ExecuteTasks(String[] args, String outputDirPath, Set`1 importedFiles, Queue`1 taskQueue)
   bei Oni.Program.CreateGeneric(String[] args)
   at Oni.Program.CreateGeneric(String[] args)
   bei Oni.Program.Execute(String[] args)
   at Oni.Program.Execute(String[] args)
   bei Oni.Program.Main(String[] args)
   at Oni.Program.Main(String[] args)
 


===TRBS===
===TRBS===
dae files, if a bone has a point cluster, onisplit 0.94.9.0 fails to convert the file.
In DAE files, if a bone has a point cluster, OniSplit v0.9.94.0 fails to convert the file.
 


==AE Installer==
==AE Installer==
===Blank mod list===
===Blank mod list===
Your user account probably doesn't have the necessary rights that the AE Installer needs. (E.g. on 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: right-click Oni folder, properties, security, edit.)
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==
==XSI/Mod Tool errors==
===Corrupted DAE files===
===Corrupted DAE files===
Situation: ''I cannot load my dae file into XSI. It give me an "Unspecified Failure".''
Situation: ''I cannot load my DAE file into XSI. It give me an "Unspecified Failure".''


Possible cause: When you create the dae file also paths are stored inside. If a path contains an illegal letter XSI cannot load the file.
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 [[wikipedia:English_alphabet|English alphabet]].
Solution: Make sure the paths use only letters of the [[wikipedia:English_alphabet|English alphabet]].


===Objects with test image===
===Object with test texture===
If the texture's file name contains a "#" ModTool fails to apply that texture and takes its rainbow colored test image instead.
If the texture's file name contains a "#", ModTool fails to apply that texture and use its rainbow-colored test image instead.


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

Latest revision as of 14:58, 18 May 2021

You might want to use the browser's search function to quickly find an error message.

Frequently asked questions

Modding errors.jpg
  • 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?
You're probably missing a texture.
  • 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)

Color spectrum test.jpg

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)

XSI Konoko Ref.png

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

TRAM-related

  • 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 from Mod Depot.
  • 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.