com.gamethesky.make.game

gamethesky.com

Schema Diff

+18 -0

From

CID
bafyreih67jpxhiv...
Indexed At
2026-10-22 00:33 UTC
View this version

To

CID
bafyreicvr7hpcto...
Indexed At
2026-10-22 01:14 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 4 non-breaking changes.

Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.make.game#chapter.backdrop" }
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.make.game:body.cover" }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game#chapter", tgt: "com.gamethesky.make.game#chapter.backdrop", kind: "prop", name: Some("backdrop") }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game:body", tgt: "com.gamethesky.make.game:body.cover", kind: "prop", name: Some("cover") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.gamethesky.make.game#chapter.backdrop" }
  • AddedVertex { vertex_id: "com.gamethesky.make.game:body.cover" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.gamethesky.make.game#chapter", tgt: "com.gamethesky.make.game#chapter.backdrop", kind: "prop", name: Some("backdrop") }
  • Non-breaking: AddedEdge { src: "com.gamethesky.make.game:body", tgt: "com.gamethesky.make.game:body.cover", kind: "prop", name: Some("cover") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "chapter": {
5 5
      "properties": {
6 +
        "backdrop": {
7 +
          "accept": [
8 +
            "image/jpeg",
9 +
            "image/png"
10 +
          ],
11 +
          "description": "A picture for this chapter's sky or backdrop, drawn behind the play where the chapter type can (at most 1600×900). Public once published. Looks only: play, boards and the verifier never read it.",
12 +
          "maxSize": 716800,
13 +
          "type": "blob"
14 +
        },
6 15
        "level": {
7 16
          "description": "A level the builder drew in the maker, in place of the preset's own map, for modules whose levels can be drawn (platformer, house, tank maze, vortex). A reader runs the module's own checker on it and refuses the game if it fails.",
8 17
          "ref": "#level",
9 18
          "type": "ref"
10 19
        },
11 20
        "module": {
12 21
          "description": "The engine, one of Game the Sky's games made a chapter: platformer, house (a haunted floor), tanks (a tank maze), vortex (a tube of lanes), roll (a tilting course), fight (a bout), golf (a hole), cycles, discs, uplink and canyon (the grid), belts (the counter), race (a sling race), gunner (the door gunner), and the arcade classics. The list grows as games are added; a reader refuses a module it doesn't have.",
13 22
          "knownValues": [
14 23
            "platformer",
15 24
            "house",
16 25
            "tanks",
17 26
            "vortex",
18 27
            "roll",
19 28
            "fight",
20 29
            "golf",
21 30
            "cycles",
22 31
            "discs",
23 32
            "uplink",
24 33
            "canyon",
25 34
            "belts",
26 35
            "race",
27 36
            "gunner",
28 37
            "drones",
29 38
            "landing",
30 39
            "deckgun",
31 40
            "minefield",
32 41
            "pipes",
33 42
            "catch",
34 43
            "fence",
35 44
            "airdrop",
36 45
            "invaders",
37 46
            "crossing"
38 47
          ],
39 48
          "maxLength": 32,
40 49
          "type": "string"
41 50
        },
42 51
        "preset": {
43 52
          "description": "The module's own level to start from (or, with a drawn level, the look it's drawn in).",
44 53
          "maxLength": 32,
45 54
          "type": "string"
46 55
        },
47 56
        "settings": {
48 57
          "description": "The module's knobs as an object of whole numbers by key (for example {\"lives\": 3, \"speed\": 120}). Each module declares its keys and ranges; readers clamp to them, and a missing key takes its default.",
49 58
          "type": "unknown"
50 59
        },
51 60
        "title": {
52 61
          "maxGraphemes": 40,
53 62
          "maxLength": 160,
54 63
          "type": "string"
55 64
        },
56 65
        "version": {
57 66
          "description": "The module's rules this chapter was built on. A reader that doesn't have that version refuses the game rather than playing it differently.",
58 67
          "minimum": 1,
59 68
          "type": "integer"
60 69
        }
61 70
      },
62 71
      "required": [
63 72
        "module",
64 73
        "version",
65 74
        "title",
66 75
        "preset",
67 76
        "settings"
68 77
      ],
69 78
      "type": "object"
70 79
    },
71 80
    "level": {
72 81
      "properties": {
73 82
        "rows": {
74 83
          "description": "The grid, top row first, one character a square, every row the same length. The characters are the module's own. The platformer: . air, # ground, = bricks, - ledge, o coin, ^ spikes, w walker, h hopper, B boss, + extra life, S start, D door. The house: Make a House's tiles. The tank maze: a square, # block, . floor, S you, r a rival. The vortex: o the rim, one square a lane, a loop for a closed tube or a line for an open one.",
75 84
          "items": {
76 85
            "maxLength": 160,
77 86
            "type": "string"
78 87
          },
79 88
          "maxLength": 24,
80 89
          "minLength": 8,
81 90
          "type": "array"
82 91
        }
83 92
      },
84 93
      "required": [
85 94
        "rows"
86 95
      ],
87 96
      "type": "object"
88 97
    },
89 98
    "main": {
90 99
      "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. 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), 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.",
91 100
      "key": "tid",
92 101
      "record": {
93 102
        "properties": {
94 103
          "carryLives": {
95 104
            "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.",
96 105
            "type": "boolean"
97 106
          },
98 107
          "cast": {
99 108
            "description": "The maker's own Foe Booth cast, included on purpose (off by default): each photo is a public blob in the maker's repo. Looks only: a verifier ignores it. Absent, players see their own cast or the engines' own monsters.",
100 109
            "items": {
101 110
              "ref": "#member",
102 111
              "type": "ref"
103 112
            },
104 113
            "maxLength": 7,
105 114
            "type": "array"
106 115
          },
107 116
          "chapters": {
108 117
            "description": "Played in order. Clearing one goes on to the next; losing one ends the run.",
109 118
            "items": {
110 119
              "ref": "#chapter",
111 120
              "type": "ref"
112 121
            },
113 122
            "maxLength": 8,
114 123
            "minLength": 1,
115 124
            "type": "array"
116 125
          },
126 +
          "cover": {
127 +
            "accept": [
128 +
              "image/jpeg",
129 +
              "image/png"
130 +
            ],
131 +
            "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.",
132 +
            "maxSize": 614400,
133 +
            "type": "blob"
134 +
          },
117 135
          "createdAt": {
118 136
            "format": "datetime",
119 137
            "type": "string"
120 138
          },
121 139
          "description": {
122 140
            "maxGraphemes": 200,
123 141
            "maxLength": 800,
124 142
            "type": "string"
125 143
          },
126 144
          "remixOf": {
127 145
            "description": "The game this one was remixed from, pinned to the version remixed: credit, shown on the game's page. Absent for an original.",
128 146
            "ref": "com.atproto.repo.strongRef",
129 147
            "type": "ref"
130 148
          },
131 149
          "theme": {
132 150
            "ref": "#theme",
133 151
            "type": "ref"
134 152
          },
135 153
          "title": {
136 154
            "maxGraphemes": 60,
137 155
            "maxLength": 240,
138 156
            "type": "string"
139 157
          }
140 158
        },
141 159
        "required": [
142 160
          "title",
143 161
          "theme",
144 162
          "chapters",
145 163
          "createdAt"
146 164
        ],
147 165
        "type": "object"
148 166
      },
149 167
      "type": "record"
150 168
    },
151 169
    "member": {
152 170
      "description": "One of the cast: the part they play, the name they're billed under, and their photo.",
153 171
      "properties": {
154 172
        "image": {
155 173
          "accept": [
156 174
            "image/png",
157 175
            "image/jpeg"
158 176
          ],
159 177
          "description": "A cutout PNG for a body part, a 256×256 JPEG for a face. 192 KB at most.",
160 178
          "maxSize": 196608,
161 179
          "type": "blob"
162 180
        },
163 181
        "name": {
164 182
          "maxGraphemes": 40,
165 183
          "maxLength": 160,
166 184
          "type": "string"
167 185
        },
168 186
        "role": {
169 187
          "knownValues": [
170 188
            "ghoul",
171 189
            "hound",
172 190
            "thing",
173 191
            "scream",
174 192
            "victim",
175 193
            "portrait",
176 194
            "you"
177 195
          ],
178 196
          "type": "string"
179 197
        }
180 198
      },
181 199
      "required": [
182 200
        "role",
183 201
        "name",
184 202
        "image"
185 203
      ],
186 204
      "type": "object"
187 205
    },
188 206
    "theme": {
189 207
      "properties": {
190 208
        "mood": {
191 209
          "description": "How the chapters light their worlds.",
192 210
          "knownValues": [
193 211
            "bright",
194 212
            "dusk",
195 213
            "cold",
196 214
            "neon",
197 215
            "space",
198 216
            "horror",
199 217
            "retro"
200 218
          ],
201 219
          "type": "string"
202 220
        },
203 221
        "palette": {
204 222
          "description": "Five #rrggbb colors: the page, its panels, the accent, danger, and the words.",
205 223
          "items": {
206 224
            "maxLength": 7,
207 225
            "type": "string"
208 226
          },
209 227
          "maxLength": 5,
210 228
          "minLength": 5,
211 229
          "type": "array"
212 230
        },
213 231
        "pattern": {
214 232
          "knownValues": [
215 233
            "none",
216 234
            "grid",
217 235
            "stripes",
218 236
            "dots",
219 237
            "checks",
220 238
            "waves",
221 239
            "stars"
222 240
          ],
223 241
          "type": "string"
224 242
        },
225 243
        "preset": {
226 244
          "description": "The look it started from (haunted, neon, storybook, space, retro, frozen, sunset), or custom.",
227 245
          "maxLength": 20,
228 246
          "type": "string"
229 247
        },
230 248
        "type": {
231 249
          "description": "The typeface for titles.",
232 250
          "knownValues": [
233 251
            "anton",
234 252
            "creepster",
235 253
            "inter"
236 254
          ],
237 255
          "type": "string"
238 256
        }
239 257
      },
240 258
      "required": [
241 259
        "palette",
242 260
        "pattern",
243 261
        "mood",
244 262
        "type"
245 263
      ],
246 264
      "type": "object"
247 265
    }
248 266
  },
249 267
  "id": "com.gamethesky.make.game",
250 268
  "lexicon": 1
251 269
}

Compare Other Versions

Lexicon Garden

@