XML talk:ONLV: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(thx)
mNo edit summary
 
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
==Separated content about ONLV, level import and level reimport==
Talks on Discord during 1st Nov. of 2023 showed that users can confuse ONLV*.xml for a master.xml (project) file. Therefore, the sections were separated. Also, notes for reimports got their own page. They have a significant different workflow. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 11:59, 2 November 2023 (CET)
==Searching vertex shading of animated door geometry==
Now with the source code, it would be easier to find where the vertex shading is stored. This is also interesting for reimports.
==Pathfinding with GridIgnore flagged objects==
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)
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)
: 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)
: 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)
:: 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)
::: 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. Test files (<nowiki>https://dl.dropboxusercontent.com/u/139715/OniGalore/BNV_test.zip</nowiki>, dead link).
::: After more tests (<nowiki>https://youtu.be/vfKPzP5hiCo</nowiki>, dead link) 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)
::: 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 adding high ghosts (<nowiki>https://dl.dropboxusercontent.com/u/139715/OniGalore/BNV_test_2.zip</nowiki>, dead link) 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)


:::: The tall ghosts work!  Here is video from my old Outside level with updated bnvs and ghosts: https://www.youtube.com/watch?v=Yj3ptZnZtx0  [[User:EdT|EdT]] ([[User talk:EdT|talk]])


==Objects that are too low to pass them by sliding/crawling/sneaking==
atm sliding under low objects don't seem to work  
atm sliding under low objects don't seem to work  
:[[User:EdT|EdT]] ([[User talk:EdT|talk]]) The reason for this are the collision spheres, even though you slide, the collision spheres remain vertical.
:[[User:EdT|EdT]] ([[User talk:EdT|talk]]) The reason for this are the collision spheres, even though you slide, the collision spheres remain vertical.
Line 21: Line 35:
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).
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).
:--[[User:Loser|Loser]] ([[User talk:Loser|talk]]) 06:46, 28 February 2013 (CET)
:--[[User:Loser|Loser]] ([[User talk:Loser|talk]]) 06:46, 28 February 2013 (CET)
==Textures that are not power of two==
If you have textures that cause a crash because they are not power of two, please post here those *.oni files.
At the moment I fail to make the game go blam despite such texture for env/char. (500x501 px, OS 93 used) --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 13:24, 22 September 2013 (CEST)
==Sky dome - it's a fail==
[[File:ONSK_fixes_Motoko_plugin.jpg|thumb]]
Maybe it's possible to create a very big sphere or dome that covers the entire level (and let Oni's skybox unused). If it's doable it could avoid ugly lines of the skybox coming from OpenGL rendering.
'''Update:''' 12 June 2012
New issues appeared that need to take care about:
* brightness:
: The brightness can be somewhat influenced by BSL commands like with gl_fog_..., gs_farclipplane and must be set adequately.
* texture size:
: The dome seen in the screenshot has a texture size of 512x512 and hence looks quite ''pixelated''.
: The problem might be solved by splitting the dome into sectors and giving each sector its own texture.
[[File:skybox4sectors_b.jpg|thumb|gl_fog_start=.99999]]
[[File:skybox4sectors_a.jpg|thumb]]
'''Update:''' 14 June 2012
* texture boarder and distortions:
: Texture boarders have darker pixels so the UV must not reach them. Also after splitting the textures inside the editor there will be little distortions but they are still noticeable enough to make the sky look odd. Fine-tuning the UVs didn't really help.
* The gs_farclipplane max value makes the size of the dome quite limited: I think that the max radius here is somewhere between 2500 and 5000 world units.
I consider this as a ''fail''. Oni would need bigger view range and a texture support of 2096x2096.
==Ideas for OniSplit==
'''bugfixes'''
'''CJBOs and the shared folder'''
You should be able to use the original OBJC files with the master xml file. But at the moment (v0.9.90.0, Win7 64-bit), BINACJBODoor.xml wants for example:
<Class>doors/TCdouble.oni</Class>
it should be
<Class>TCdouble</Class>
Works:
* Turret
Works not:
* Door
* Console
* Trigger
Not tested:
* Funiture
----
'''improvements'''
'''better support for script objects'''
                <Import Path="../level19_Final/compound_script_405.dae">
                    <Node>
                        <ScriptId>405</ScriptId>
                    </Node>
                </Import>
it should be just one line because of the keyword '''''script'''''
                <Import Path="../level19_Final/compound_'''''script'''''_405.dae"/>
'''door locklight'''
extracting an ONLV to xml should generate an extra file with door locklights ready for the CJBO particle file
----
Neo could update OniSplit so that it is searching specific strings in object names of a dae level file.
'''Doors'''
* string "door*" (e.g. doorBlastDoorMX2000) -> DOOR + BINACJBODoor + OBAN
** but if the string is "door*clone''N''" then the DOOR and OBAN creation gets skipped (e.g. doorBlastDoorMX2000clone3), only class name, rotation and position get written into BINACJBODoor
'''Animated objects'''
* string "*_BeforeAnim": that's first static object with collision data (e.g. BlueCar1_BeforeAnim)
* string "*_InAnim": that's the animated cutscene object (e.g. BlueCar1_InAnim)
* string "*_AfterAnim": that's the second static object with collision data (e.g BlueCar1_AfterAnim)
'''Fake-destructible objects'''
* string "*_BeforeAnim": that's first static object with collision data (e.g. ConcreteWall2_BeforeAnim)
* string "*_Fragment''N''": that's the group of animated cutscene objects (fragments of the static object) (e.g. ConcreteWall2_Frag5)
* string "*_ColFrag''N''": that's the group of static objects with collision data (e.g. ConcreteWall2_ColFrag5)
* string "*_NoColFrag''N''": that's the group of static objects without character collision (e.g. ConcreteWall2_NoColFrag5)<br>NoColFrag would be useful if the fragments are quite numerous and small and hence would pose a problem to the pathfinding

Latest revision as of 10:59, 2 November 2023

Separated content about ONLV, level import and level reimport

Talks on Discord during 1st Nov. of 2023 showed that users can confuse ONLV*.xml for a master.xml (project) file. Therefore, the sections were separated. Also, notes for reimports got their own page. They have a significant different workflow. --paradox-01 (talk) 11:59, 2 November 2023 (CET)

Searching vertex shading of animated door geometry

Now with the source code, it would be easier to find where the vertex shading is stored. This is also interesting for reimports.

Pathfinding with GridIgnore flagged objects

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. EdT (talk) 18:08, 21 August 2013 (CEST)

Ok thanks, I will check this tomorrow so we are sure it's the same on pc/mac. --paradox-01 (talk) 20:33, 21 August 2013 (CEST)
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. EdT (talk) 01:00, 23 August 2013 (CEST)
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. Test files (https://dl.dropboxusercontent.com/u/139715/OniGalore/BNV_test.zip, dead link).
After more tests (https://youtu.be/vfKPzP5hiCo, dead link) 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. ^_^' --paradox-01 (talk) 10:13, 23 August 2013 (CEST)
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 adding high ghosts (https://dl.dropboxusercontent.com/u/139715/OniGalore/BNV_test_2.zip, dead link) 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). --paradox-01 (talk) 15:43, 23 August 2013 (CEST)
The tall ghosts work! Here is video from my old Outside level with updated bnvs and ghosts: https://www.youtube.com/watch?v=Yj3ptZnZtx0 EdT (talk)

Objects that are too low to pass them by sliding/crawling/sneaking

atm sliding under low objects don't seem to work

EdT (talk) The reason for this are the collision spheres, even though you slide, the collision spheres remain vertical.


Okay, thanks for the warning.

I remembered some old screenies and assumed it would be possible. Don't know where those were posted. Probably those object don't have collision at all. :(

paradox-01 (talk) 23:19, 27 February 2013 (CET)


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. The idea sort of failed because:

  • weapons fade over time (can be worked around by setting BSL variable wp_disable_fade=1)
  • 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.
  • 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.

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).

--Loser (talk) 06:46, 28 February 2013 (CET)


Textures that are not power of two

If you have textures that cause a crash because they are not power of two, please post here those *.oni files.

At the moment I fail to make the game go blam despite such texture for env/char. (500x501 px, OS 93 used) --paradox-01 (talk) 13:24, 22 September 2013 (CEST)


Sky dome - it's a fail

ONSK fixes Motoko plugin.jpg

Maybe it's possible to create a very big sphere or dome that covers the entire level (and let Oni's skybox unused). If it's doable it could avoid ugly lines of the skybox coming from OpenGL rendering.


Update: 12 June 2012

New issues appeared that need to take care about:

  • brightness:
The brightness can be somewhat influenced by BSL commands like with gl_fog_..., gs_farclipplane and must be set adequately.
  • texture size:
The dome seen in the screenshot has a texture size of 512x512 and hence looks quite pixelated.
The problem might be solved by splitting the dome into sectors and giving each sector its own texture.


gl_fog_start=.99999
Skybox4sectors a.jpg

Update: 14 June 2012

  • texture boarder and distortions:
Texture boarders have darker pixels so the UV must not reach them. Also after splitting the textures inside the editor there will be little distortions but they are still noticeable enough to make the sky look odd. Fine-tuning the UVs didn't really help.
  • The gs_farclipplane max value makes the size of the dome quite limited: I think that the max radius here is somewhere between 2500 and 5000 world units.

I consider this as a fail. Oni would need bigger view range and a texture support of 2096x2096.


Ideas for OniSplit

bugfixes

CJBOs and the shared folder

You should be able to use the original OBJC files with the master xml file. But at the moment (v0.9.90.0, Win7 64-bit), BINACJBODoor.xml wants for example:

<Class>doors/TCdouble.oni</Class>

it should be

<Class>TCdouble</Class>

Works:

  • Turret

Works not:

  • Door
  • Console
  • Trigger

Not tested:

  • Funiture



improvements

better support for script objects

               <Import Path="../level19_Final/compound_script_405.dae">
                   <Node>
                       <ScriptId>405</ScriptId>
                   </Node>
               </Import>

it should be just one line because of the keyword script

               <Import Path="../level19_Final/compound_script_405.dae"/>


door locklight

extracting an ONLV to xml should generate an extra file with door locklights ready for the CJBO particle file



Neo could update OniSplit so that it is searching specific strings in object names of a dae level file.


Doors

  • string "door*" (e.g. doorBlastDoorMX2000) -> DOOR + BINACJBODoor + OBAN
    • but if the string is "door*cloneN" then the DOOR and OBAN creation gets skipped (e.g. doorBlastDoorMX2000clone3), only class name, rotation and position get written into BINACJBODoor


Animated objects

  • string "*_BeforeAnim": that's first static object with collision data (e.g. BlueCar1_BeforeAnim)
  • string "*_InAnim": that's the animated cutscene object (e.g. BlueCar1_InAnim)
  • string "*_AfterAnim": that's the second static object with collision data (e.g BlueCar1_AfterAnim)


Fake-destructible objects

  • string "*_BeforeAnim": that's first static object with collision data (e.g. ConcreteWall2_BeforeAnim)
  • string "*_FragmentN": that's the group of animated cutscene objects (fragments of the static object) (e.g. ConcreteWall2_Frag5)
  • string "*_ColFragN": that's the group of static objects with collision data (e.g. ConcreteWall2_ColFrag5)
  • string "*_NoColFragN": that's the group of static objects without character collision (e.g. ConcreteWall2_NoColFrag5)
    NoColFrag would be useful if the fragments are quite numerous and small and hence would pose a problem to the pathfinding