Roblox 64 Bits

0 views
Skip to first unread message

Bette Keesee

unread,
Aug 5, 2024, 3:57:39 AM8/5/24
to ferbuipouross
IfCompressed Length is nonzero, Chunk Data will either contain an LZ4 or ZSTD compressed block. This compressed body is Compressed Length bytes long and will expand to Uncompressed Length bytes when decompressed.

When a chunk is compressed using ZSTD, there is also a ZSTD frame present following the magic number that must be read by a decompressor. When it is compressed using LZ4, there is no frame and the compressed data begins immediately after the header.


If the Object Format is service, the service markers section contains 1 repeated for the number of instances of that type in the file. If this field is not set, Roblox may create duplicate copies of services, like in rojo-rbx/rbx-dom#11.


Because of the shape of this chunk, every instance of a given class must have the same properties specified with the same times. Put another way, if an instance in the file defines a property, all other instances of the same class must also specify that property!


Property Name defines the serializable name of the property. Note that this is not necessarily the same as the name reflected to Lua, which is sometimes referred to as the canonical name.


A null parent referent (-1) indicates that the object is a root instance. In a place, that means the object is a child of DataModel. In a model, that means the object should be placed directly under the object the model is being inserted into.


The first 8 bytes (7f 80 00 80 00 00 00 00) represent the Scale values of the UDim values. The latter 8 bytes (00 00 00 00 00 00 04 08) represent the Offset values. From there, the values are paired off, so that the first value in each array make up the components of the first UDim, and so on.


The Faces type is a single byte used as a bit field. The low 6 bits represent the Front, Bottom, Left, Back, Top, and Right faces, in that order. The remaining two bits have no meaning. Faces is stored as an array of bytes with no transformations or interleaving.


The Axes type is a single byte used as a bit field. The low three bits represent the X, Y, and Z axes, in that order. The remaining five bits have no meaning. Axes is stored as an array of bytes with no transformations or interleaving.


The BrickColor type is a single untransformed big-endian u32 that represents the Number of a BrickColor. When an array of BrickColor values is present, the Numbers are byte interleaved but otherwise are unchanged.


If there is no CustomPhysicalProperties value, a PhysicalProperties is stored as a single byte of value 0. Otherwise, it is stored as a byte of value 1 immediately followed by a CustomPhysicalProperties stored as little-endian floats (in the same order as the above table). When there are multiple PhysicalProperties present, they are stored in sequence with no transformations or interleaving.


This data type is disregarded by Roblox Studio and is only loaded by Roblox clients when cryptographically signed. Given that by design it is impossible to generate these signatures, the signing method is not documented in this spec file. For posterity however, the chunk used by Roblox is named SIGN. It is disregarded when loaded by Roblox Studio.


Implementors should be aware that running unsigned Bytecode is incredibly unsafe and should not be done unless the source can be validated somehow. Doing so is the equivalent to giving the author of the Bytecode unrestricted access to the system it is ran on.


When interacting with the XML format, care must be taken because UniqueId is stored in a different order and the Random field is modified slightly. For more information, see the relevant documentation in the XML file spec.


The Weight and Style fields are stored as little-endian unsigned integers. These are usually treated like enums, and to assign them in Roblox Studio an Enum is used. Interestingly, the Weight is always stored as a number in binary and XML, but Style is stored as a number in binary and as text in XML.


The CachedFaceId field is always present, but is allowed to be an empty string (a string of length 0). When represented in XML, this property will be omitted if it is an empty string. This property is not visible via any user APIs in Roblox Studio.

3a8082e126
Reply all
Reply to author
Forward
0 new messages