XML:ONLV: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(How to spawn geometry with collision data?)
(so OBOA is actually the physics.xml eh ?)
Line 24: Line 24:


===xml section===
===xml section===
Gosh. Already outdated. ^_^'<br>
For praxis information see: "Creating the Lair - A level tutorial" link.
Better see at "Creating the Lair - A level tutorial" link.




ONLV = Oni Level file
ONLV = Oni Level file


file structure
file structure
Line 49: Line 47:
: ...
: ...
* CRSA instance
* CRSA instance
: ...
* M3GA
: ...
* IDXA
: ...
: ...
'''flags in the <OBOAObject> section'''
: <Flags>
:: <!-- None -->
:: InUse
:: NoCollision
:: NoGravity
:: FaceCollision
: <PhysicsType>
:: <!-- None -->
:: Static
:: Linear
:: Animated
:: Newton




Line 57: Line 75:


  <?xml version="1.0" encoding="utf-8"?>
  <?xml version="1.0" encoding="utf-8"?>
  <Oni Version="0.9.56.0">
  <Oni>
     <Instance id="0" type="ONLV">
     <ONLV id="0">
         <Name>EnvWarehouse</Name>
         <Name>EnvWarehouse</Name>
         <Environment>AKEVEnvWarehouse</Environment>
         <Environment>AKEVEnvWarehouse</Environment>
Line 67: Line 85:
         <Particles>#3</Particles>
         <Particles>#3</Particles>
         <Corpses>#4</Corpses>
         <Corpses>#4</Corpses>
     </Instance>
     </ONLV>
     <Instance id="1" type="OBOA">
     <OBOA id="1">
         <Objects />
         <Objects />
     </Instance>
     </OBOA>
     <Instance id="2" type="ONOA">
     <ONOA id="2">
         <Elements />
         <Elements />
     </Instance>
     </ONOA>
     <Instance id="3" type="ENVP">
     <ENVP id="3">
         <Particles />
         <Particles />
     </Instance>
     </ENVP>
     <Instance id="4" type="CRSA">
     <CRSA id="4">
         <FixedCount>0</FixedCount>
         <FixedCount>0</FixedCount>
         <UsedCount>0</UsedCount>
         <UsedCount>0</UsedCount>
Line 111: Line 129:
           <font color="#FF0000">'''''[...]'''''</font>
           <font color="#FF0000">'''''[...]'''''</font>
         </Corpses>
         </Corpses>
     </Instance>
     </CRSA>
  </Oni>
  </Oni>


'''not empty OBOA - example from level 19'''
(exported ONLV files seem to contain 32 empty <OBOAObject> sections)
If I remember correctly this one is only an object for the cutscene. Maybe the real floor(s) (those with collision) can be tracked down with the id used by bsl.
            <OBOAObject>
                <Geometry>#347</Geometry>
                <Animation>OBANDishFloor01</Animation>
                <Particle></Particle>
                <Flags>InUse</Flags>
                <DoorGunkId>0</DoorGunkId>
                <DoorId>0</DoorId>
                <PhysicsType>Animated</PhysicsType>
                <ScriptId>204</ScriptId>
                <Position>-183 99.59154 -2501.25</Position>
                <Rotation>0.7071067 -1.545431E-08 1.545431E-08 0.7071068</Rotation>
                <Scale>1</Scale>
                <Transform>1 -4.371139E-08 -5.21253064E-16 0 1.19248806E-08 -1 4.371139E-08 1 1.19248806E-08 -183 99.5815353 -2501.25</Transform>
                <Name>object_DishFloor01</Name>
            </OBOAObject>
'''not empty ENVP - example from level 19''''
            <ENVPParticle>
                <Class>locklight</Class>
                <Tag>mainchamber_locklight01</Tag>
                <Transform>1 -4.559326E-08 1.35404189E-05 -1.354042E-05 -2.03512554E-05 1 -4.53176945E-08 -1 -2.03512554E-05 -391.790527 58.0480423 -1364.412</Transform>
                <DecalScale>1 1</DecalScale>
                <Flags></Flags>
            </ENVPParticle>
<Transform> - the last 3 values are the position (x, y, z)





Revision as of 19:23, 5 June 2012

Unfinished building-60px.jpg

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


Custom levels that has been created so far:

OCF threads about level creation:

wiki pages about levels:


xml section

For praxis information see: "Creating the Lair - A level tutorial" link.


ONLV = Oni Level file

file structure

  • ONLV instance
<Name> - this is your BSL folder (save game slot and level number are defined inside ONLD)
<Environment> - link to AKEV file (solid level geometry)
<Objects> - link to OBOA instance (animated level geometry, sometimes particles)
<SkyBox> - link to skybox file
<Characters> - link to AISA file (pendant of BINACJBOCharacter file), holds character spawn collection
<ObjectQuadMap> - link to ONOA instance (maybe spawnable / function holding objects ?)
<Particles> - link to ENVP instance (pendant of BINACJBOParticle), holds particle spawn collection, door lock lights are typically stored inside ENVP
<Corpses> - link to CRSA instance (corpses consist of 19 body parts)
  • OBOA instance
...
  • ONOA instance
...
  • ENVP instance
...
  • CRSA instance
...
  • M3GA
...
  • IDXA
...


flags in the <OBOAObject> section

<Flags>
InUse
NoCollision
NoGravity
FaceCollision
<PhysicsType>
Static
Linear
Animated
Newton


Sample code from a trimmed warehouse level.

[...] mean another Corpse code block. There are usually 20 in total. They are somehow needed to prevent bugs.

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <ONLV id="0">
       <Name>EnvWarehouse</Name>
       <Environment>AKEVEnvWarehouse</Environment>
       <Objects>#1</Objects>
       <SkyBox>ONSKafternoon</SkyBox>
       <Characters>AISAlevel1_scripts</Characters>
       <ObjectQuadMap>#2</ObjectQuadMap>
       <Particles>#3</Particles>
       <Corpses>#4</Corpses>
   </ONLV>
   <OBOA id="1">
       <Objects />
   </OBOA>
   <ONOA id="2">
       <Elements />
   </ONOA>
   <ENVP id="3">
       <Particles />
   </ENVP>
   <CRSA id="4">
       <FixedCount>0</FixedCount>
       <UsedCount>0</UsedCount>
       <Corpses>
           <CRSACorpse>
               <CharacterClass></CharacterClass>
               <Transforms>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                   <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
               </Transforms>
               <BoundingBox>
                   <Min>0 0 0</Min>
                   <Max>0 0 0</Max>
               </BoundingBox>
           </CRSACorpse>
          [...]
       </Corpses>
   </CRSA>
</Oni>

not empty OBOA - example from level 19

(exported ONLV files seem to contain 32 empty <OBOAObject> sections)

If I remember correctly this one is only an object for the cutscene. Maybe the real floor(s) (those with collision) can be tracked down with the id used by bsl.


           <OBOAObject>
               <Geometry>#347</Geometry>
               <Animation>OBANDishFloor01</Animation>
               <Particle></Particle>
               <Flags>InUse</Flags>
               <DoorGunkId>0</DoorGunkId>
               <DoorId>0</DoorId>
               <PhysicsType>Animated</PhysicsType>
               <ScriptId>204</ScriptId>
               <Position>-183 99.59154 -2501.25</Position>
               <Rotation>0.7071067 -1.545431E-08 1.545431E-08 0.7071068</Rotation>
               <Scale>1</Scale>
               <Transform>1 -4.371139E-08 -5.21253064E-16 0 1.19248806E-08 -1 4.371139E-08 1 1.19248806E-08 -183 99.5815353 -2501.25</Transform>
               <Name>object_DishFloor01</Name>
           </OBOAObject>


not empty ENVP - example from level 19'

           <ENVPParticle>
               <Class>locklight</Class>
               <Tag>mainchamber_locklight01</Tag>
               <Transform>1 -4.559326E-08 1.35404189E-05 -1.354042E-05 -2.03512554E-05 1 -4.53176945E-08 -1 -2.03512554E-05 -391.790527 58.0480423 -1364.412</Transform>
               <DecalScale>1 1</DecalScale>
               <Flags></Flags>
           </ENVPParticle>

<Transform> - the last 3 values are the position (x, y, z)


spawnable geometry

In Oni's last level, the platform of the big satellite dish can be spawned/deleted from BSL. Characters on it will fall down when the platform becomes deleted.

I tested that long time ago, I think OBOA used for it (at least in the original data).

If OBOA import is not allowed maybe we can add more such things with the physics.xml and then use the <ScriptId> for BSL? What options exist for <Flags> and <Physics> ?


Possible applications:

  • grids in front of ventilation shafts
  • ground/ceiling/objects for cutscenes that become partially destroyed
  • destrucable walls like in Deus Ex 3 (trigger volume, replacing punch anim with punch-through-wall anim)