|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.
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 |
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.