A game somebody made in Make the Sky, published into their own repo: a title, a line about it, its look, and one to eight chapters, each one of Game the Sky's engines (a module) on one of its levels (a preset) with its knobs set. Play is decided by the chapters alone (and, in a game whose story branches, where its choices and jumps go). A game is edited in place (the same record, a new version): its board belongs to its way of playing (the chapters' modules, versions, presets and settings, and its paths), so renaming or restyling it keeps the board, and changing a chapter starts a fresh one. A run pins the version it was played on; a verifier replays it on the game as it stands and takes it only if it replays the same.
tid
Timestamp-based ID
Properties
builds
boolean
Optional
Players build their own for the chapter types that take one (Fight the Sky's fighter: points over its stats and a special), chosen before a run; each run carries its build (`builds` on the run). Part of play.
campaign
boolean
Optional
With daily: a week's campaign. Today's run is one chapter, tonight's (the last chapter, the finale, on Saturdays and Sundays; the others in turn through the week), and the week's board adds up each account's nights Monday to Sunday (UTC). Part of play.
carryLives
boolean
Optional
Lives carry over: each chapter with lives after the first starts with the lives the player had left (at most 9), not its own lives setting; chapters without lives pass them along. Part of play: a game with it has its own board.
cast
array
of
ref
#member
Optional
The maker's own cast, by slot (Heroes 1–3: the player and their allies; Foes 1–6: the regular enemies; Villains 1–3: the bosses; Extras 1–4: the rescued, faces on portraits, a host, a crowd), each once, with both of a person's pictures (a face and a cut-out figure). Each chapter type says which of its parts each slot plays (a chapter's castMap can change it). Optional: a game published without one is played with each player's own. Looks only.
maxLength: 16 itemschapters
array
of
ref
#chapter
Required
Played in order, unless the game branches: clearing one goes on to the next (or where its next says, and a scene's choice can send the player ahead); losing one ends the run.
maxLength: 60 itemsminLength: 1 itemscover
blob
Optional
The game's picture: its page, its share card, its tile in the gallery. 1200×630, cropped by the maker. Public once published. Looks only: play, boards and the verifier never read it.
maxSize: 614.4 KBcreatedAt
string
datetime
Required
An RFC 3339 formatted timestamp.
credits
ref
#credits
Optional
The game's end credits, rolled after the ending and before the results, skippable. Present means they're on. Looks only: not part of play.
daily
boolean
Optional
The game offers today's run: its chapters on seeds of the day (a run names its `day`, a board a day), besides the run that's the same every time. Part of play.
description
string
Optional
No description available.
maxLength: 800 bytesmaxGraphemes: 200 graphemesghost
boolean
Optional
Race your best: where a chapter type can show one (the rolling ball), the player's best run of that chapter rolls alongside them, see-through. Looks only.
ghostFights
boolean
Optional
Players can save their fighter (a com.gamethesky.make.fighter record) and anyone can fight it as a ghost: one bout on the game's first chapter whose type takes a ghost, the chapter's CPU driving the saved build and style at a skill the challenger picks. A run against a ghost pins the fighter's version (`vs` on the run), verifies and never ranks. Part of play.
gift
ref
#gift
Optional
A game made for someone: who it's for, a message to them, and who it's from. Its link opens on a gift card ("A game for Ray", the message, their photo, a big Play button) and its share card says so. Words only: not part of play.
granny
boolean
Optional
With levels: a fourth level, Granny, easier than Easy (a board of its own). Part of play.
levels
boolean
Optional
The game offers Easy, Normal and Hard: each chapter's settings moved toward the easy or the hard end of their ranges (a run names its `difficulty`, a board each). Part of play.
logo
blob
Optional
The game's title as a picture (a PNG with a clear background, at most 1200×400), shown in place of the typed title on its page, its chapter cards and its share card; the typed title stays for readers. Public once published. Looks only.
maxSize: 409.6 KBremixOf
ref
com.atproto.repo.strongRef
Optional
The game this one was remixed from, pinned to the version remixed: credit, shown on the game's page. Absent for an original.
rivals
string
Optional
Who the enemies and rivals wear: 'cast', the game's cast (the default); 'follows', the faces of the people the player follows on Bluesky, on every foe part (the cast keeps you, the one you came for and the builder's own members); 'both', the cast where it has a photo and follows in the parts left uncast. Looks only: play, boards and the verifier never read it.
maxLength: 16 bytescast, follows, bothscenes
array
of
ref
#scene
Optional
The story told between chapters: cut-scenes, one at most before each chapter (the first is the opening) and one each for winning and losing at the end (and, in a game whose story branches, an ending of a way's own: see the scene's chapter). A scene a reader can't use is skipped, never the game. Words and looks only (not part of play, so adding or editing scenes keeps the game's board, and a verifier never reads them), except a scene's choices: where each goes is part of play.
maxLength: 62 itemssounds
array
of
ref
#sound
Optional
The builder's own sounds, recorded or uploaded in the maker: at most eight, five seconds each. Used by id where the game makes a noise: a scene's sting and a message's sound (as "sound:<id>"), a chapter's sounds (the walk-through's jump-outs and sound pieces, First person's alerts), the title card's and the credits' sound. Only the ones the game uses are published. Public once published; looks only: play, boards and the verifier never read them. A hidden game's are withheld.
maxLength: 8 itemstheme
ref
#theme
Required
No description available.
title
string
Required
No description available.
maxLength: 240 bytesmaxGraphemes: 60 graphemestitleCard
ref
#titleCard
Optional
The game's own title card, shown before the opening scene or the first chapter's card, with a short fade. Present means it's on. Looks only: not part of play.
video
boolean
Optional
The page records each chapter as it's played, so a player can save a video of their run (it never leaves their device unless they share it). Looks only.
weapons
array
of
ref
#weapon
Optional
The builder's own weapons, for First person chapters: a chapter carries the ones its `custom` setting ticks (a bit each, the first weapon bit 0), and a drawn level places them as pickups (① to ⑧). Their numbers are part of play (changing one gives the game a fresh board); their names, looks and pictures are words and looks. A reader takes eight at most and clamps each number to its range.
maxLength: 8 itemsworldLife
boolean
Optional
With carryLives: each chapter that starts a new world (after the first chapter) gives a life back, up to 5 (never fewer than carried). Part of play, with where the worlds start: a game with it has its own board.
View raw schema
{
"description": "A game somebody made in Make the Sky, published into their own repo: a title, a line about it, its look, and one to eight chapters, each one of Game the Sky's engines (a module) on one of its levels (a preset) with its knobs set. Play is decided by the chapters alone (and, in a game whose story branches, where its choices and jumps go). A game is edited in place (the same record, a new version): its board belongs to its way of playing (the chapters' modules, versions, presets and settings, and its paths), so renaming or restyling it keeps the board, and changing a chapter starts a fresh one. A run pins the version it was played on; a verifier replays it on the game as it stands and takes it only if it replays the same.",
"key": "tid",
"record": {
"properties": {
"builds": {
"description": "Players build their own for the chapter types that take one (Fight the Sky's fighter: points over its stats and a special), chosen before a run; each run carries its build (`builds` on the run). Part of play.",
"type": "boolean"
},
"campaign": {
"description": "With daily: a week's campaign. Today's run is one chapter, tonight's (the last chapter, the finale, on Saturdays and Sundays; the others in turn through the week), and the week's board adds up each account's nights Monday to Sunday (UTC). Part of play.",
"type": "boolean"
},
"carryLives": {
"description": "Lives carry over: each chapter with lives after the first starts with the lives the player had left (at most 9), not its own lives setting; chapters without lives pass them along. Part of play: a game with it has its own board.",
"type": "boolean"
},
"cast": {
"description": "The maker's own cast, by slot (Heroes 1–3: the player and their allies; Foes 1–6: the regular enemies; Villains 1–3: the bosses; Extras 1–4: the rescued, faces on portraits, a host, a crowd), each once, with both of a person's pictures (a face and a cut-out figure). Each chapter type says which of its parts each slot plays (a chapter's castMap can change it). Optional: a game published without one is played with each player's own. Looks only.",
"items": {
"ref": "#member",
"type": "ref"
},
"maxLength": 16,
"type": "array"
},
"chapters": {
"description": "Played in order, unless the game branches: clearing one goes on to the next (or where its next says, and a scene's choice can send the player ahead); losing one ends the run.",
"items": {
"ref": "#chapter",
"type": "ref"
},
"maxLength": 60,
"minLength": 1,
"type": "array"
},
"cover": {
"accept": [
"image/jpeg",
"image/png"
],
"description": "The game's picture: its page, its share card, its tile in the gallery. 1200×630, cropped by the maker. Public once published. Looks only: play, boards and the verifier never read it.",
"maxSize": 614400,
"type": "blob"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"credits": {
"description": "The game's end credits, rolled after the ending and before the results, skippable. Present means they're on. Looks only: not part of play.",
"ref": "#credits",
"type": "ref"
},
"daily": {
"description": "The game offers today's run: its chapters on seeds of the day (a run names its `day`, a board a day), besides the run that's the same every time. Part of play.",
"type": "boolean"
},
"description": {
"maxGraphemes": 200,
"maxLength": 800,
"type": "string"
},
"ghost": {
"description": "Race your best: where a chapter type can show one (the rolling ball), the player's best run of that chapter rolls alongside them, see-through. Looks only.",
"type": "boolean"
},
"ghostFights": {
"description": "Players can save their fighter (a com.gamethesky.make.fighter record) and anyone can fight it as a ghost: one bout on the game's first chapter whose type takes a ghost, the chapter's CPU driving the saved build and style at a skill the challenger picks. A run against a ghost pins the fighter's version (`vs` on the run), verifies and never ranks. Part of play.",
"type": "boolean"
},
"gift": {
"description": "A game made for someone: who it's for, a message to them, and who it's from. Its link opens on a gift card (\"A game for Ray\", the message, their photo, a big Play button) and its share card says so. Words only: not part of play.",
"ref": "#gift",
"type": "ref"
},
"granny": {
"description": "With levels: a fourth level, Granny, easier than Easy (a board of its own). Part of play.",
"type": "boolean"
},
"levels": {
"description": "The game offers Easy, Normal and Hard: each chapter's settings moved toward the easy or the hard end of their ranges (a run names its `difficulty`, a board each). Part of play.",
"type": "boolean"
},
"logo": {
"accept": [
"image/png",
"image/jpeg"
],
"description": "The game's title as a picture (a PNG with a clear background, at most 1200×400), shown in place of the typed title on its page, its chapter cards and its share card; the typed title stays for readers. Public once published. Looks only.",
"maxSize": 409600,
"type": "blob"
},
"remixOf": {
"description": "The game this one was remixed from, pinned to the version remixed: credit, shown on the game's page. Absent for an original.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"rivals": {
"description": "Who the enemies and rivals wear: 'cast', the game's cast (the default); 'follows', the faces of the people the player follows on Bluesky, on every foe part (the cast keeps you, the one you came for and the builder's own members); 'both', the cast where it has a photo and follows in the parts left uncast. Looks only: play, boards and the verifier never read it.",
"knownValues": [
"cast",
"follows",
"both"
],
"maxLength": 16,
"type": "string"
},
"scenes": {
"description": "The story told between chapters: cut-scenes, one at most before each chapter (the first is the opening) and one each for winning and losing at the end (and, in a game whose story branches, an ending of a way's own: see the scene's chapter). A scene a reader can't use is skipped, never the game. Words and looks only (not part of play, so adding or editing scenes keeps the game's board, and a verifier never reads them), except a scene's choices: where each goes is part of play.",
"items": {
"ref": "#scene",
"type": "ref"
},
"maxLength": 62,
"type": "array"
},
"sounds": {
"description": "The builder's own sounds, recorded or uploaded in the maker: at most eight, five seconds each. Used by id where the game makes a noise: a scene's sting and a message's sound (as \"sound:<id>\"), a chapter's sounds (the walk-through's jump-outs and sound pieces, First person's alerts), the title card's and the credits' sound. Only the ones the game uses are published. Public once published; looks only: play, boards and the verifier never read them. A hidden game's are withheld.",
"items": {
"ref": "#sound",
"type": "ref"
},
"maxLength": 8,
"type": "array"
},
"theme": {
"ref": "#theme",
"type": "ref"
},
"title": {
"maxGraphemes": 60,
"maxLength": 240,
"type": "string"
},
"titleCard": {
"description": "The game's own title card, shown before the opening scene or the first chapter's card, with a short fade. Present means it's on. Looks only: not part of play.",
"ref": "#titleCard",
"type": "ref"
},
"video": {
"description": "The page records each chapter as it's played, so a player can save a video of their run (it never leaves their device unless they share it). Looks only.",
"type": "boolean"
},
"weapons": {
"description": "The builder's own weapons, for First person chapters: a chapter carries the ones its `custom` setting ticks (a bit each, the first weapon bit 0), and a drawn level places them as pickups (① to ⑧). Their numbers are part of play (changing one gives the game a fresh board); their names, looks and pictures are words and looks. A reader takes eight at most and clamps each number to its range.",
"items": {
"ref": "#weapon",
"type": "ref"
},
"maxLength": 8,
"type": "array"
},
"worldLife": {
"description": "With carryLives: each chapter that starts a new world (after the first chapter) gives a life back, up to 5 (never fewer than carried). Part of play, with where the worlds start: a game with it has its own board.",
"type": "boolean"
}
},
"required": [
"title",
"theme",
"chapters",
"createdAt"
],
"type": "object"
},
"type": "record"
}