< Scratch File Format (1.4)(Redirected from .sb)
|This article or section documents something not included in the current version of Scratch (3.0). It is only useful from a historical perspective.|
- This article is about a technical description of the file format. For projects in general, see Project.
Project files are used by Scratch to save all the information (stage, sprites, scripts, sound, images) in a Scratch project to a single file.
They have the extension
The basic structure of a project file is as follows:
header: A 10-byte header encoding the ASCII string
infoSize: 32-bit (unsigned?) integer — length of the infoObjects table in bytes.
infoObjects: A dictionary serialised to an Object Table. Contains information like the author, notes, and thumbnail/preview image.
contents: (Remaining bytes) the actual project media, including scripts and sounds.
The header is simply the 10-byte string
ScratchV02 encoded as ASCII.
|Note:||Versions 1.2 and earlier use the string |
Files saved by mods may have different headers; thus it is useful to know which modification created the project. For example, BYOB stores
infoSize encodes the length of the given file's infoObjects (see below). The infoSize is four bytes long, and is a 32-bit big-Endian integer.
|Note:||In high-level languages like C (and variants), a 32-bit big-Endian integer is constructed with bitwise operations in the following manner:
int big = a << 24 | b << 16 | c << 8 | d;Here, a, b, c, and d are the given bytes.
This is a set of vital pieces of information about a file. It is used for:
- Validating projects
- Creating quick thumbnails and descriptions
It uses a simple Dictionary format: it consists of alternating pieces of ASCII keys and values. The keys currently in use are:
- thumbnail: small image of project when saved
- author: author of the project (usually username)
- comment: the Project Notes
- history: save/upload history
- scratch-version: the version of Scratch which saved the file
This is a second Object Table, with the Stage as the root object. All media, sprites, scripts, etc. are encoded as References from the main stage object.
Object Table • Inline Values • Objects • Fixed-format Objects • User-class Objects