XML:AKEV: Difference between revisions

From OniGalore
Jump to navigation Jump to search
mNo edit summary
m (link fix)
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{XML_File_Header | type=AKVA | prev=AISA | next=BINA | name=Oni Game Level}}
{{XML_File_Header | prev=AISA | type=AKEV | next=BINA/OBJC/CHAR | next_display=BINA | name=Oni Game Level}}
{{finish}} {{XML}}
{{finish}} {{XML}}
There is no reason for regular modders to extract AKEV as xml.
: Extractions are only done for research.


__TOC__
__TOC__


===AKEV===
===AKEV===
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AKEV id="...">
| <AKEV id="...">
Line 104: Line 107:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <PNTA id="...">
| <PNTA id="...">
Line 148: Line 151:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <PLEA id="...">
| <PLEA id="...">
Line 168: Line 171:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <TXCA id="...">
| <TXCA id="...">
Line 188: Line 191:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AGQG id="...">
| <AGQG id="...">
Line 225: Line 228:
|valign="top"| <Color>
|valign="top"| <Color>
|valign="top"| color
|valign="top"| color
| Colors are stored as four value arrays: R G B [A], which means Red Green Blue and the optional Alpha channel value. Min value: 0. Max value: 255.
| Colors are stored as four-element arrays: R G B [A], which means Red, Green, Blue, and the optional Alpha channel value. Min value: 0. Max value: 255.
: This belongs to [[XML:ONLV#Vertex_coloring|vertex coloring]].
: This is used for [[Creating a level#Vertex coloring|vertex coloring]].
|-
|-
|valign="top"| <Flags>
|valign="top"| <Flags>
Line 232: Line 235:
|
|
: DoorFrame (invisible quad that uses the _DOOR_FRAME texture, however, this flag has no effect on the game)  
: DoorFrame (invisible quad that uses the _DOOR_FRAME texture, however, this flag has no effect on the game)  
: Ghost (pathfinding volume separator, see AKVA etc)
: Ghost (pathfinding volume separator, see AKVA, etc.)
: StairsUp
: StairsUp
: StairsDown
: StairsDown
Line 240: Line 243:
: TwoSided (make polygons visible from both sides)
: TwoSided (make polygons visible from both sides)
: NoCollision (no character collision, no particle collision)
: NoCollision (no character collision, no particle collision)
: Invisible (makes polygons visible; tip: use two-faced wall for no transition, use one-faced wall for one-way transition)  
: Invisible (makes polygons invisible; tip: use two-faced wall for no transition, use one-faced wall for one-way transition)  
: NoObjectCollision (no particle collision)
: NoObjectCollision (no particle collision)
: NoCharacterCollision (characters can go through polygons)
: NoCharacterCollision (characters can go through polygons)
Line 247: Line 250:
: Horizontal (slope > 70°, automatic creation)  
: Horizontal (slope > 70°, automatic creation)  
: Vertical (slope < 70°, automatic creation)  
: Vertical (slope < 70°, automatic creation)  
: GridIgnore (onisplit will ignore the object when it calculate the pathfinding grids, so the grids will be white)
: GridIgnore (OniSplit will ignore the object when it calculates the pathfinding grids, so the grids will be white)
: NoDecals (decals can't be applied to object, doors use this)
: NoDecals (decals can't be applied to object; doors use this)
: Furniture (Cntl + Shift + s: makes furniture textures red)
: Furniture
: ProjectionBit0 (automatic creation)
: ProjectionBit0 (automatic creation)
: ProjectionBit1 (automatic creation)  
: ProjectionBit1 (automatic creation)  
Line 257: Line 260:
|valign="top"| <ObjectId>
|valign="top"| <ObjectId>
|valign="top"| int32
|valign="top"| int32
| [[OBD:ONOA|Object type and object id]] are merged here to one number. The value is -1 if the quad doesn't belong to an object.
| [[OBD:ONOA|Object type and object id]] are merged here into one number. The value is -1 if the quad doesn't belong to an object.
:Example 1: If <ObjectId> is 251658333 the converted hex value is (0)f 00 00 5d. With that you get the type 0f = console and the id 5d = 93.
:Example 1: If <ObjectId> is 251658333, the converted hex value is (0)f 00 00 5d. With that you get the type 0f = console and the id 5d = 93.
:Example 2: If <ObjectId> is 50331739 the converted hex value is (0)3 00 00 5b. With that you get the type 03 = door and the id 5b = 91.
:Example 2: If <ObjectId> is 50331739, the converted hex value is (0)3 00 00 5b. With that you get the type 03 = door and the id 5b = 91.
Types:
Types:
: 01 - character  
: 01 - character  
Line 285: Line 288:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AGQR id="...">
| <AGQR id="...">
Line 309: Line 312:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AGQC id="...">
| <AGQC id="...">
Line 345: Line 348:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
|valign="top"| <TXMA id="...">
|valign="top"| <TXMA id="...">
Line 366: Line 369:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AKVA id="...">
| <AKVA id="...">
Line 466: Line 469:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AKBA id="...">
| <AKBA id="...">
Line 498: Line 501:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <IDXA id="...">
| <IDXA id="...">
Line 518: Line 521:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <IDXA id="...">
| <IDXA id="...">
| integer
| integer
| Instance Id. Should be 12.
| Instance ID. Should be 12.
|-
|-
| <Indices>
| <Indices>
Line 531: Line 534:
|valign="top"| <Int32>
|valign="top"| <Int32>
|valign="top"| int32
|valign="top"| int32
| Stores an object Id used by BSL commands env_broken, env_shade, env_show and env_texswap. Ergo this IDXA should belong to [[OBD:IDXA_AKEV_2|AKEV 2]].
| Stores an object ID used by BSL commands "env_broken", "env_shade", "env_show" and "env_texswap". Ergo this IDXA should belong to [[OBD:IDXA_AKEV_2|AKEV 2]].
: ''Why can Ids appear here multiple times?'' Most objects are made of multiple triangles/quads. Probably there are as many equal Ids as an object has triangle/quads. So when you want show/hide/etc. an object, all triangles/quads will be targeted by this way.
: ''Why can IDs appear here multiple times?'' Most objects are made of multiple triangles/quads. There are as many identical IDs as an object has triangles/quads. When a level gets build, all terrain, buildings and most objects (CJBO) a.k.a. "shared classes" such as furniture and consoles are merged. Through the IDs "individual" objects are still addressable by BSL commands.
:: "Shared classes" are resources used in OniSplit's level creation workflow. They exist only as links in object collections. While building level linked resources manifest into actual (AKEV) 3D data inside an ONLV*.oni file.
|}
|}


===AKBP===
===AKBP===
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AKBP id="...">
| <AKBP id="...">
Line 571: Line 574:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <ABNA id="...">
| <ABNA id="...">
Line 603: Line 606:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AKOT id="...">
| <AKOT id="...">
Line 635: Line 638:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <AKAA id="...">
| <AKAA id="...">
Line 667: Line 670:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <OTIT id="...">
| <OTIT id="...">
Line 695: Line 698:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <OTLF id="...">
| <OTLF id="...">
Line 735: Line 738:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <QTNA id="...">
| <QTNA id="...">
Line 763: Line 766:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <IDXA id="...">
| <IDXA id="...">
Line 783: Line 786:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=150px| XML tag
!width=120px| content type
!width=120px| Content type
! description
! Description
|-
|-
| <IDXA id="...">
| <IDXA id="...">

Latest revision as of 01:17, 20 November 2023

AKEV : Oni Game Level
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

AISA << Other file types >> BINA

switch to OBD page

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.


There is no reason for regular modders to extract AKEV as xml.

Extractions are only done for research.


AKEV

XML tag Content type Description
<AKEV id="...">
<Points>
<Planes>
<TextureCoordinates>
<Quads>
<QuadTextures>
<QuadCollision>
<Debug>
<Textures>
<BnvNodes>
<BnvSides>
<QuadGroupList>
<QuadGroupId>
<BnvBspTree>
<TransparencyBspTree>
<Octtree>
<BnvAdjacency>
<DoorFrames>
<BoundingBox>
<Min>
<Max>
<Offset_007C>


PNTA

XML tag Content type Description
<PNTA id="...">
<BoundingBox>
<Min>
<Max>
<BoundingSphere>
<Center>
<Radius>
<Positions>
<Vector3>


PLEA

XML tag Content type Description
<PLEA id="...">
<Planes>
<Plane>


TXCA

XML tag Content type Description
<TXCA id="...">
<TexCoords>
<Vector2>


AGQG

XML tag Content type Description
<AGQG id="..."> integer Instance id. Should be 4.
<Quads>
<AGQGQuad>
<Points>
<Int32>
<TextureCoordinates>
<Int32>
<Colors>
<Color> color Colors are stored as four-element arrays: R G B [A], which means Red, Green, Blue, and the optional Alpha channel value. Min value: 0. Max value: 255.
This is used for vertex coloring.
<Flags> flag
DoorFrame (invisible quad that uses the _DOOR_FRAME texture, however, this flag has no effect on the game)
Ghost (pathfinding volume separator, see AKVA, etc.)
StairsUp
StairsDown
Stairs
Triangle
Transparent
TwoSided (make polygons visible from both sides)
NoCollision (no character collision, no particle collision)
Invisible (makes polygons invisible; tip: use two-faced wall for no transition, use one-faced wall for one-way transition)
NoObjectCollision (no particle collision)
NoCharacterCollision (characters can go through polygons)
NoOcclusion
Danger (automatic creation via _marker_danger texture)
Horizontal (slope > 70°, automatic creation)
Vertical (slope < 70°, automatic creation)
GridIgnore (OniSplit will ignore the object when it calculates the pathfinding grids, so the grids will be white)
NoDecals (decals can't be applied to object; doors use this)
Furniture
ProjectionBit0 (automatic creation)
ProjectionBit1 (automatic creation)
SoundTransparent
Impassable
<ObjectId> int32 Object type and object id are merged here into one number. The value is -1 if the quad doesn't belong to an object.
Example 1: If <ObjectId> is 251658333, the converted hex value is (0)f 00 00 5d. With that you get the type 0f = console and the id 5d = 93.
Example 2: If <ObjectId> is 50331739, the converted hex value is (0)3 00 00 5b. With that you get the type 03 = door and the id 5b = 91.

Types:

01 - character
02 - patrol path
03 - door
04 - flag
05 - furniture
08 - particle
09 - powerup
0A - sound
0B - trigger volume
0C - weapon
0D - trigger
0E - turret
0F - console
10 - combat
11 - melee
12 - neutral

Obviously not all object types have corresponding gunk quads. The only object types that are used in ONOA by the original levels are door, furniture, turret, trigger and console. In addition it appears that the engine only searches for door type.


AGQR

XML tag Content type Description
<AGQR id="...">
<Elements>
<AGQRElement>
<Texture>


AGQC

XML tag Content type Description
<AGQC id="...">
<Elements>
<AGQCElement>
<Plane>
<BoundingBox>
<Min>
<Max>


TXMA

XML tag Content type Description
<TXMA id="..."> integer Instance Id. Should be 8.
The TXMA instance stores all textures used by level geometry.
<Textures> - This is an int32 array for <Link> tags.
<Link> link TXMPname


AKVA

XML tag Content type Description
<AKVA id="...">
<Nodes>
<AKVANode>
<BspTree>
<Id>
<FirstSide>
<LastSide>
<ChildBnv>
<SiblingBnv>
<GridXTiles>
<GridZTiles>
<DataOffset>
<DataSize>
<TileSize>
<BoundingBox>
<Min>
<Max>
<GridXOffset>
<GridZOffset>
<NodeId>
<Flags>
<Floor>
<Height>


AKBA

XML tag Content type Description
<AKBA id="...">
<Sides>
<AKBASide>
<Plane>
<FirstAdjacency>
<LastAdjacency>


IDXA (quad group list)

XML tag Content type Description
<IDXA id="...">
<Indices>
<Int32>


IDXA (quad group id)

XML tag Content type Description
<IDXA id="..."> integer Instance ID. Should be 12.
<Indices> - This is an int32 array for the <Int32> tags.
<Int32> int32 Stores an object ID used by BSL commands "env_broken", "env_shade", "env_show" and "env_texswap". Ergo this IDXA should belong to AKEV 2.
Why can IDs appear here multiple times? Most objects are made of multiple triangles/quads. There are as many identical IDs as an object has triangles/quads. When a level gets build, all terrain, buildings and most objects (CJBO) a.k.a. "shared classes" such as furniture and consoles are merged. Through the IDs "individual" objects are still addressable by BSL commands.
"Shared classes" are resources used in OniSplit's level creation workflow. They exist only as links in object collections. While building level linked resources manifest into actual (AKEV) 3D data inside an ONLV*.oni file.

AKBP

XML tag Content type Description
<AKBP id="...">
<Nodes>
<AKBPNode>
<Plane>
<Back>
<Front>


ABNA

XML tag Content type Description
<ABNA id="...">
<Elements>
<ABNAElement>
<Plane>
<Front>
<Back>


AKOT

XML tag Content type Description
<AKOT id="...">
<Nodes>
<Leafs>
<QuadTree>
<GunkQuad>
<Bnv>


AKAA

XML tag Content type Description
<AKAA id="...">
<Elements>
<AKAAElement>
<Bnv>
<Quad>


AKDA

<AKDA id="17" />


OTIT

XML tag Content type Description
<OTIT id="...">
<Nodes>
<OTITNode>
<Children>
<Int32>


OTLF

XML tag Content type Description
<OTLF id="...">
<Nodes>
<OTLFNode>
<PackedGunkQuadList>
<Neighbours>
<Int32>
<PackedPositionAndSize>
<PackedBnvList>


QTNA

XML tag Content type Description
<QTNA id="...">
<Nodes>
<QTNANode>
<Children>
<Int32>


IDXA (gunk quad)

XML tag Content type Description
<IDXA id="...">
<Indices>
<Int32>


IDXA (BNV)

XML tag Content type Description
<IDXA id="...">
<Indices>
<Int32>