GRAF:UnrealArchive: Difference between revisions
imported>David |
imported>Ikskoks |
||
| (16 intermediate revisions by 5 users not shown) | |||
| Line 21: | Line 21: | ||
:<font color="blue"> // for each generation </font> <br> | :<font color="blue"> // for each generation </font> <br> | ||
:uint32 {4} - Export Count | :uint32 {4} - Export Count | ||
:uint32 {4} - | :uint32 {4} - Import Count | ||
<br> | <br> | ||
<font color="blue"> ''' // Name Table ''' </font> <br> | <font color="blue"> ''' // Name Table ''' </font> <br> | ||
| Line 28: | Line 28: | ||
:: char {X} - Filename <br> | :: char {X} - Filename <br> | ||
:: byte {1} - null Filename Terminator <br> | :: byte {1} - null Filename Terminator <br> | ||
:: uint32 {4} - Flags<br> | |||
:::<font color="blue"> ''' // Flags ''' </font> <br> | |||
::: * RF_LoadForClient (0x00010000): Must be loaded for game client. | |||
::: * RF_LoadForServer (0x00020000): Must be loaded for game server. | |||
::: * RF_LoadForEdit (0x00040000): Must be loaded for editor. | |||
::: * RF_Public (0x00000004): Object may be imported by other package files. | |||
::: * RF_Standalone (0x00080000): Keep object around (don't garbage collect) for editor even if unreferenced. | |||
::: * RF_Intrinsic (0x04000000): Class or name is defined in C++ code and must be bound at load-time. | |||
::: * RF_SourceModified (0x00000020): The external data source corresponding to this object has been modified. | |||
::: * RF_Transactional (0x00000001): Object must be tracked in the editor by the Undo/Redo tracking system. | |||
::: * RF_HasStack (0x02000000): This object has an execution stack allocated and is ready to execute UnrealScript code. | |||
<br> | <br> | ||
<font color="blue"> ''' // Export Table ''' </font> <br> | <font color="blue"> ''' // Export Table ''' </font> <br> | ||
| Line 56: | Line 69: | ||
=== Notes and Comments === | === Notes and Comments === | ||
* This file format is used by games made with '''Unreal 2''' engine. | |||
* The fields with size 1-5 use a special technique for reading the values, called Compact Indexes. It involves reading each byte 1 at a time, and checking the bits of the byte to see whether more bytes need to be read. | * The fields with size 1-5 use a special technique for reading the values, called Compact Indexes. It involves reading each byte 1 at a time, and checking the bits of the byte to see whether more bytes need to be read. | ||
<br> | <br> | ||
| Line 66: | Line 80: | ||
This is a very rough overview - you should search on the net for more detailed information on this (there is a lot of it)<br> | This is a very rough overview - you should search on the net for more detailed information on this (there is a lot of it)<br> | ||
<br><br> | <br><br> | ||
=== Compatible Programs === | === Compatible Programs === | ||
See [[List of Unreal Engine Tools]] article on this wiki. | |||
=== Other Games === | === Other Games === | ||
| Line 113: | Line 128: | ||
* Thief 3: Deadly Shadows *.u* | * Thief 3: Deadly Shadows *.u* | ||
* TNN Outdoors Pro Hunter *.u* | * TNN Outdoors Pro Hunter *.u* | ||
* Tom Clancy’s Splinter Cell *.u* | |||
* Tribes Vengeance *.u* | * Tribes Vengeance *.u* | ||
* Twin Caliber *.u* | * Twin Caliber *.u* | ||
| Line 127: | Line 143: | ||
* X-Com Enforcer *.u* | * X-Com Enforcer *.u* | ||
* XIII *.u* | * XIII *.u* | ||
[[Category:File Format]] | |||
Latest revision as of 21:06, 3 February 2023
U, UAX, UKX, UMX, USX, UTX, UVX
- Format Type : Archive
- Endian Order : Little Endian
Format Specifications
byte {4} - Header (0x9E2A84C1)
uint32 {4} - Version (Low order word is the file version, hight order word is the Licensee Mode
uint32 {4} - Package Flags
uint32 {4} - Number Of Names
uint32 {4} - Name Table Offset
uint32 {4} - Number Of Objects In The Export Table
uint32 {4} - Export Table Offset
uint32 {4} - Number Of Objects In The Import Table
uint32 {4} - Import Table Offset
byte {16} - Package ID
uint32 {4} - Generation Count
- // for each generation
- uint32 {4} - Export Count
- uint32 {4} - Import Count
// Name Table
- // repeatable section
- byte {1} - Filename Length (including null byte)
- char {X} - Filename
- byte {1} - null Filename Terminator
- uint32 {4} - Flags
- byte {1} - Filename Length (including null byte)
- // Flags
- * RF_LoadForClient (0x00010000): Must be loaded for game client.
- * RF_LoadForServer (0x00020000): Must be loaded for game server.
- * RF_LoadForEdit (0x00040000): Must be loaded for editor.
- * RF_Public (0x00000004): Object may be imported by other package files.
- * RF_Standalone (0x00080000): Keep object around (don't garbage collect) for editor even if unreferenced.
- * RF_Intrinsic (0x04000000): Class or name is defined in C++ code and must be bound at load-time.
- * RF_SourceModified (0x00000020): The external data source corresponding to this object has been modified.
- * RF_Transactional (0x00000001): Object must be tracked in the editor by the Undo/Redo tracking system.
- * RF_HasStack (0x02000000): This object has an execution stack allocated and is ready to execute UnrealScript code.
- // Flags
// Export Table
- // for each object
- byte {1-5} - Object Class
- byte {1-5} - Parent Object Class
- uint32 {4} - Package (Package the object resides in)
- byte {1-5} - Object Name (Index to the Nametable)
- uint32 {4} - Flags
- byte {1-5} - Serial Length (Size of the object in this file)
- byte {1-5} - Serial Offset (This field only exists if Serial Length > 0)
- byte {1-5} - Object Class
// Import Table
- // for each object
- byte {1-5} - Class Package (Package of the Class. Index to the Nametable)
- byte {1-5} - Class Name (Index to the Nametable)
- uint32 {4} - Package (Package the object resides in)
- byte {1-5} - Object Name
- byte {1-5} - Class Package (Package of the Class. Index to the Nametable)
byte {X} - File Data
MultiEx BMS Script
Not written yet
Notes and Comments
- This file format is used by games made with Unreal 2 engine.
- The fields with size 1-5 use a special technique for reading the values, called Compact Indexes. It involves reading each byte 1 at a time, and checking the bits of the byte to see whether more bytes need to be read.
The structure of the 5 bytes are as follows...
sDxxxxxx Dxxxxxxx Dxxxxxxx Dxxxxxxx xxxxxxxx
The most significant bit (bit 7) of the first byte indicates whether the value is positive or negative
Bit 6 of the first byte tells you whether you will need to read an additional byte. If the value is 1, you would then read the second byte. Similarly, if any of the D values are 1, you read the next byte.
All the x values form part of the number being stored in the field.
This is a very rough overview - you should search on the net for more detailed information on this (there is a lot of it)
Compatible Programs
See List of Unreal Engine Tools article on this wiki.
Other Games
These games use this file format
- Adventure Pinball: Forgotten Island *.u*
- Advent Rising *.u*
- Americas Army Operations *.u*
- Brothers In Arms *.u*
- Clive Barker's Undying *.u*
- Dead Mans Hand *.u*
- Desert Thunder *.u*
- Deus Ex *.u*
- Devastation *.u*
- Dr Brain's Thinking Games: Action Reaction *.u*
- Duke Nukem Forever *.u*
- Ghost Recon *.u*
- Harry Potter And The Chamber Of Secrets *.u*
- Harry Potter And The Sorcerers Stone *.u*
- Heavy Gunner *.u*
- Hoopworld *.u*
- Land Of The Dead: Road To Fiddlers Green *.u*
- Lineage 2 *.u*
- Magic The Gathering: Battlegrounds *.u*
- Men of Valor: Vietnam *.u*
- Mobile Forces *.u*
- Nerf Arena Blast *.u*
- New Legends *.u*
- Pariah *.u*
- Postal 2 *.u*
- Rainbow Six 3: Athena Sword *.u*
- Rainbow Six: Raven Shield *.u*
- Rune *.u*
- Sephiroth: 3rd Episode Of The Crusade *.u*
- Shadow Ops: Red Mercury *.u*
- Splinter Cell *.u*
- Splinter Cell: Chaos Theory *.u*
- Splinter Cell: Pandora Tomorrow *.u*
- Star Trek: Deep Space Nine - The Fallen *.u*
- Star Trek: The Next Generation: Klingon Honor Guard *.u*
- Star Wars: Republic Commando *.u*
- SWAT 4 *.u*
- Tactical Ops: Assault On Terror *.u*
- Thief 3: Deadly Shadows *.u*
- TNN Outdoors Pro Hunter *.u*
- Tom Clancy’s Splinter Cell *.u*
- Tribes Vengeance *.u*
- Twin Caliber *.u*
- Unreal *.u*
- Unreal 2 *.u*
- Unreal Championship *.u*
- Unreal Championship 2 *.u*
- Unreality *.u*
- Unreal Tournament *.u*
- Unreal Tournament 2003 *.u*
- Unreal Tournament 2004 *.u*
- Virtual Reality Notre Dame *.u*
- Wheel Of Time *.u*
- X-Com Enforcer *.u*
- XIII *.u*