XML:AKEV
| AKEV : Oni Game Level |
| |
|---|---|---|
| XML
AISA << Other file types >> BINA |
|
This page is unfinished. Can you fill in any missing information? |
Current situation: As AKEV cannot be round-tripped (re-imported) through XML, there is no need to extract it unless it is 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.
Moving door parts do not store independent per-vertex colors.
At level initialization:
1. Door OBOA geometry contains M3GM meshes with positions, normals, UVs, and textures—but no color array (BFW_Object_Templates.h:75, BFW_Motoko.h:1024).
2. ONrLevel_ObjectGunk_GetShade() averages the ARGB corner colors from associated static AGQGs (Oni_Level.c:1152-1216).
3. That single color is stored at runtime in OBJtOSD_Door.shade, then copied to OBtObject.flat_lighting_shade (OT_Door.c:2702-2716, 2570-2596).
4. During rendering, this RGB value becomes the sole ambient light; point and directional lights are disabled (BFW_Object.c:359-376, Oni_GameState.c:4659-4669).
Thus the apparent shading in the proof image (screenshot) is a uniform texture-modulating color derived from nearby AGQG vertex shades, not varying colors stored on the door’s vertices.
Object type: Shading source
Static AGQG: Four serialized ARGB corner shades
Moving door leaf: One runtime average of associated AGQG shades
Ordinary dynamic M3GM: Draw-time Gouraud lighting from vertex normals
So the closest “storage location” is the runtime fields OBJtOSD_Door.shade and OBtObject.flat_lighting_shade; it is not serialized as door vertex-color data.
How can we re-enable vertex shading for static (class-imported) objects and moving objects (or at least for doors)?
| |||
| <Flags> | flag |
| |||
| <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.
Types:
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.
|
| <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.
|
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> |

