Unreal Engine SoundNodeWave: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(12 intermediate revisions by the same user not shown)
Line 93: Line 93:
</div>
</div>


=== Other Structures ===  
=== Other Structures ===


Some structures inside SoundNodeWave files may be different for other games. <br>
Below is example of LocalizedSubtitles structure which contains text strings and other text-related data.<br>
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<pre>
// Killer is Dead (PC Steam)
// LocalizedSubtitles Type file format
4 bytes (uint32) - ID
num_of_properties *
{
  8 bytes (uint64) - nested name ID // 25 - LanguageExt Type
                                    // 40 - Subtitles Type
                                    // 2 - bMature Type
                                    // 1 - bManualWordWrap Type
                                    // 4 - bSingleLine Type
                                    // 27 - None Type
  8 bytes (uint64) - nested type ID
  8 bytes (uint64) - property size
  x bytes - property data
    // for LanguageExt Type:
    //  4 bytes (uint32) - size of the language code
    //  x bytes (string) - language code  // e.g. INT, DEU, ESN etc.
    //
    // for Subtitles Type:
    //  4 bytes (uint32) - number of subtitles
    //  num_of_subtitles *
    //  {
    //      8 bytes (uint64) - nested name ID // 41 - Text Type
    //                                        // 42 - Time Type
    //                                        // 27 - None Type
    //      8 bytes (uint64) - nested type ID
    //      8 bytes (uint64) - property size
    //      x bytes - property data
    //            for Text Type:
    //              4 bytes (uint32) - subtitle length
    //              x bytes (string) - subtitle
    //            for Time Type:
    //              4 bytes (float) - time in seconds
    //            for None Type:
    //              x bytes - nested Text Type
    //              x bytes - nested Time Type
    //              x bytes - nested empty None Type
    //    }
    //
    // for bMature Type:
    //  1 byte (bool) - mature type flag
    // for bManualWordWrap Type:
    //  1 byte (bool) - word wrap flag
    // for bSingleLine Type:
    //  1 byte (bool) - single line flag
    // for None Type:
    //  x bytes - nested entries
}
</pre>
</div>


=== MultiEx BMS Script ===  
=== MultiEx BMS Script ===  
Line 102: Line 159:
=== Notes and Comments ===  
=== Notes and Comments ===  


* This file format is commonly used in '''Unreal Engine''' games.
* This file format is commonly used in games built using '''Unreal Engine 3'''.


=== Games ===  
=== Games ===  
Line 112: Line 169:
=== Compatible Programs ===  
=== Compatible Programs ===  


* [https://eliotvu.com/portfolio/view/21/ue-explorer UE Explorer]
See [[List of Unreal Engine Tools]] article on this wiki.
* [https://github.com/arkeet/oggextract oggextract]
* [https://zenhax.com/download/file.php?id=1307&sid=6ac49a9304d0bf78f5224f52d484c306 Killer is Dead Toolset]
* [https://forum.xentax.com/download/file.php?id=13464 SoundNodeWave Export Import by Swuforce]


=== See Also ===  
=== See Also ===  

Latest revision as of 11:14, 24 June 2022

Back to index | Edit this page

SoundNodeWave

  • Format Type : Audio / Text / Misc
  • Endian Order : Little Endian


Format Specifications

// A Story About My Uncle (PC Steam)
// SoundNodeWave file format (Unreal Engine 3)
// Version: 868
// Engine version: 12097
// Cooker version: 136 


4 bytes (uint32) - file ID number


// UE3 properties
num_of_properties *
{
   // Note: name ID mapping can be found in "NameTable.log"
   // after using "UPKunpack.exe" tool
   // Mapping can be different for each game

   // Note: "None" property should be the last one

   8 bytes (uint64) - property name ID   // 2 - bLoopingSound
                                         // 3 - bManualWordWrap
                                         // 14 - Duration
                                         // 19 - LocalizedSubtitles
                                         // 45 - None
                                         // 46 - NumChannels
                                         // 49 - RawPCMDataSize
                                         // 51 - SampleRate
                                         // 54 - SourceFilePath
                                         // 55 - SourceFileTimestamp
                                         // 58 - Subtitles
   8 bytes (uint64) - property type ID   
   8 bytes (uint64) - property length
   x bytes - property data
       // Data type depends on property name ID, for example:
       // for bLoopingSound = 1 byte (bool), e.g. false
       // for bManualWordWrap = 1 byte (bool) e.g. true
       // for Duration = 4 bytes (float) e.g. 15.69950
       // for NumChannels = 4 bytes (uint32) e.g. 2
       // for SampleRate = 4 bytes (uint32) e.g. 48000
       // for RawPCMDataSize = 4 bytes (uint32)
       // for LocalizedSubtitles = x bytes
       // for SourceFilePath = x bytes (string + null)
       //
       // for SourceFileTimestamp = x bytes
       //       4 bytes (uint32) - timestamp length
       //       x bytes (string) - timestamp e.g. "2014-04-14 12:01:51"
       //       1 byte - null
       //
       // for None = x bytes
       //       8 bytes (uint64) - nulls
       //       4 bytes (uint32) - nulls
       //       4 bytes (uint32) - pointer1?
       //       4 bytes (uint32) - nulls
       //       4 bytes (uint32) - audio compressed size
       //       4 bytes (uint32) - audio uncompressed size
       //       4 bytes (uint32) - pointer2?
       //       x bytes - OGG audio data
       //       x bytes - unknown
       //
       // for Subtitles = x bytes
       //       4 bytes (uint32) - number of subtitle properties
       //
       //       // subtitle properties
       //       num_of_sub_properties *
       //       {
       //           8 bytes (uint64) - nested property name ID  // 59 - Text Type
       //                                                       // 60 - Time Type
       //                                                       // 45 - None
       //           8 bytes (uint64) - nested property type ID
       //           x bytes - subtitle property data
       //              // for Text Type:
       //              //   4 bytes (uint32) - string size
       //              //   x bytes (string) - string entry
       //              // for Time Type:
       //              //   4 bytes (float) - timestamp (can be empty)
       //              // for None:
       //                   x bytes - nested subtitle entries (Text Type + Time Type)
       //       }

}

Other Structures

Some structures inside SoundNodeWave files may be different for other games.
Below is example of LocalizedSubtitles structure which contains text strings and other text-related data.

// Killer is Dead (PC Steam)
// LocalizedSubtitles Type file format

4 bytes (uint32) - ID

num_of_properties *
{
   8 bytes (uint64) - nested name ID // 25 - LanguageExt Type
                                     // 40 - Subtitles Type
                                     // 2 - bMature Type
                                     // 1 - bManualWordWrap Type
                                     // 4 - bSingleLine Type
                                     // 27 - None Type
   8 bytes (uint64) - nested type ID
   8 bytes (uint64) - property size
   x bytes - property data
     // for LanguageExt Type:
     //   4 bytes (uint32) - size of the language code
     //   x bytes (string) - language code  // e.g. INT, DEU, ESN etc.
     //
     // for Subtitles Type:
     //   4 bytes (uint32) - number of subtitles
     //   num_of_subtitles *
     //   {
     //      8 bytes (uint64) - nested name ID // 41 - Text Type
     //                                        // 42 - Time Type
     //                                        // 27 - None Type
     //      8 bytes (uint64) - nested type ID
     //      8 bytes (uint64) - property size
     //      x bytes - property data
     //            for Text Type:
     //               4 bytes (uint32) - subtitle length
     //               x bytes (string) - subtitle
     //            for Time Type:
     //               4 bytes (float) - time in seconds
     //            for None Type:
     //               x bytes - nested Text Type
     //               x bytes - nested Time Type
     //               x bytes - nested empty None Type
     //    }
     //
     // for bMature Type:
     //   1 byte (bool) - mature type flag
     // for bManualWordWrap Type:
     //   1 byte (bool) - word wrap flag
     // for bSingleLine Type:
     //   1 byte (bool) - single line flag
     // for None Type:
     //   x bytes - nested entries
}

MultiEx BMS Script

Not written yet.

Notes and Comments

  • This file format is commonly used in games built using Unreal Engine 3.

Games

List of games using this file format:

  • A Story About My Uncle
  • Killer is Dead
  • Many more...

Compatible Programs

See List of Unreal Engine Tools article on this wiki.

See Also