com.gamethesky.make.game

gamethesky.com

Schema Diff

+13 -0

From

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

To

CID
bafyreifarq5qdor...
Indexed At
2026-10-22 01:24 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.textures" }
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.make.game:body.logo" }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game#chapter", tgt: "com.gamethesky.make.game#chapter.textures", kind: "prop", name: Some("textures") }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game:body", tgt: "com.gamethesky.make.game:body.logo", kind: "prop", name: Some("logo") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.gamethesky.make.game#chapter.textures" }
  • AddedVertex { vertex_id: "com.gamethesky.make.game:body.logo" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.gamethesky.make.game#chapter", tgt: "com.gamethesky.make.game#chapter.textures", kind: "prop", name: Some("textures") }
  • Non-breaking: AddedEdge { src: "com.gamethesky.make.game:body", tgt: "com.gamethesky.make.game:body.logo", kind: "prop", name: Some("logo") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "chapter": {
5 5
      "properties": {
6 6
        "backdrop": {
7 7
          "accept": [
8 8
            "image/jpeg",
9 9
            "image/png"
10 10
          ],
11 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 12
          "maxSize": 716800,
13 13
          "type": "blob"
14 14
        },
15 15
        "level": {
16 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.",
17 17
          "ref": "#level",
18 18
          "type": "ref"
19 19
        },
20 20
        "module": {
21 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.",
22 22
          "knownValues": [
23 23
            "platformer",
24 24
            "house",
25 25
            "tanks",
26 26
            "vortex",
27 27
            "roll",
28 28
            "fight",
29 29
            "golf",
30 30
            "cycles",
31 31
            "discs",
32 32
            "uplink",
33 33
            "canyon",
34 34
            "belts",
35 35
            "race",
36 36
            "gunner",
37 37
            "drones",
38 38
            "landing",
39 39
            "deckgun",
40 40
            "minefield",
41 41
            "pipes",
42 42
            "catch",
43 43
            "fence",
44 44
            "airdrop",
45 45
            "invaders",
46 46
            "crossing"
47 47
          ],
48 48
          "maxLength": 32,
49 49
          "type": "string"
50 50
        },
51 51
        "preset": {
52 52
          "description": "The module's own level to start from (or, with a drawn level, the look it's drawn in).",
53 53
          "maxLength": 32,
54 54
          "type": "string"
55 55
        },
56 56
        "settings": {
57 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.",
58 58
          "type": "unknown"
59 59
        },
60 +
        "textures": {
61 +
          "description": "The builder's own art for the pieces of the chapter's level, by piece (the module's own names: the platformer's ground, bricks and ledge; the house's and the tank maze's wall and floor), each a blob: a square JPEG (256×256, at most 120 KB) drawn tiled, one a square of the level. Public once published. Looks only.",
62 +
          "type": "unknown"
63 +
        },
60 64
        "title": {
61 65
          "maxGraphemes": 40,
62 66
          "maxLength": 160,
63 67
          "type": "string"
64 68
        },
65 69
        "version": {
66 70
          "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.",
67 71
          "minimum": 1,
68 72
          "type": "integer"
69 73
        }
70 74
      },
71 75
      "required": [
72 76
        "module",
73 77
        "version",
74 78
        "title",
75 79
        "preset",
76 80
        "settings"
77 81
      ],
78 82
      "type": "object"
79 83
    },
80 84
    "level": {
81 85
      "properties": {
82 86
        "rows": {
83 87
          "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.",
84 88
          "items": {
85 89
            "maxLength": 160,
86 90
            "type": "string"
87 91
          },
88 92
          "maxLength": 24,
89 93
          "minLength": 8,
90 94
          "type": "array"
91 95
        }
92 96
      },
93 97
      "required": [
94 98
        "rows"
95 99
      ],
96 100
      "type": "object"
97 101
    },
98 102
    "main": {
99 103
      "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.",
100 104
      "key": "tid",
101 105
      "record": {
102 106
        "properties": {
103 107
          "carryLives": {
104 108
            "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.",
105 109
            "type": "boolean"
106 110
          },
107 111
          "cast": {
108 112
            "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.",
109 113
            "items": {
110 114
              "ref": "#member",
111 115
              "type": "ref"
112 116
            },
113 117
            "maxLength": 7,
114 118
            "type": "array"
115 119
          },
116 120
          "chapters": {
117 121
            "description": "Played in order. Clearing one goes on to the next; losing one ends the run.",
118 122
            "items": {
119 123
              "ref": "#chapter",
120 124
              "type": "ref"
121 125
            },
122 126
            "maxLength": 8,
123 127
            "minLength": 1,
124 128
            "type": "array"
125 129
          },
126 130
          "cover": {
127 131
            "accept": [
128 132
              "image/jpeg",
129 133
              "image/png"
130 134
            ],
131 135
            "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 136
            "maxSize": 614400,
133 137
            "type": "blob"
134 138
          },
135 139
          "createdAt": {
136 140
            "format": "datetime",
137 141
            "type": "string"
138 142
          },
139 143
          "description": {
140 144
            "maxGraphemes": 200,
141 145
            "maxLength": 800,
142 146
            "type": "string"
143 147
          },
148 +
          "logo": {
149 +
            "accept": [
150 +
              "image/png",
151 +
              "image/jpeg"
152 +
            ],
153 +
            "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.",
154 +
            "maxSize": 409600,
155 +
            "type": "blob"
156 +
          },
144 157
          "remixOf": {
145 158
            "description": "The game this one was remixed from, pinned to the version remixed: credit, shown on the game's page. Absent for an original.",
146 159
            "ref": "com.atproto.repo.strongRef",
147 160
            "type": "ref"
148 161
          },
149 162
          "theme": {
150 163
            "ref": "#theme",
151 164
            "type": "ref"
152 165
          },
153 166
          "title": {
154 167
            "maxGraphemes": 60,
155 168
            "maxLength": 240,
156 169
            "type": "string"
157 170
          }
158 171
        },
159 172
        "required": [
160 173
          "title",
161 174
          "theme",
162 175
          "chapters",
163 176
          "createdAt"
164 177
        ],
165 178
        "type": "object"
166 179
      },
167 180
      "type": "record"
168 181
    },
169 182
    "member": {
170 183
      "description": "One of the cast: the part they play, the name they're billed under, and their photo.",
171 184
      "properties": {
172 185
        "image": {
173 186
          "accept": [
174 187
            "image/png",
175 188
            "image/jpeg"
176 189
          ],
177 190
          "description": "A cutout PNG for a body part, a 256×256 JPEG for a face. 192 KB at most.",
178 191
          "maxSize": 196608,
179 192
          "type": "blob"
180 193
        },
181 194
        "name": {
182 195
          "maxGraphemes": 40,
183 196
          "maxLength": 160,
184 197
          "type": "string"
185 198
        },
186 199
        "role": {
187 200
          "knownValues": [
188 201
            "ghoul",
189 202
            "hound",
190 203
            "thing",
191 204
            "scream",
192 205
            "victim",
193 206
            "portrait",
194 207
            "you"
195 208
          ],
196 209
          "type": "string"
197 210
        }
198 211
      },
199 212
      "required": [
200 213
        "role",
201 214
        "name",
202 215
        "image"
203 216
      ],
204 217
      "type": "object"
205 218
    },
206 219
    "theme": {
207 220
      "properties": {
208 221
        "mood": {
209 222
          "description": "How the chapters light their worlds.",
210 223
          "knownValues": [
211 224
            "bright",
212 225
            "dusk",
213 226
            "cold",
214 227
            "neon",
215 228
            "space",
216 229
            "horror",
217 230
            "retro"
218 231
          ],
219 232
          "type": "string"
220 233
        },
221 234
        "palette": {
222 235
          "description": "Five #rrggbb colors: the page, its panels, the accent, danger, and the words.",
223 236
          "items": {
224 237
            "maxLength": 7,
225 238
            "type": "string"
226 239
          },
227 240
          "maxLength": 5,
228 241
          "minLength": 5,
229 242
          "type": "array"
230 243
        },
231 244
        "pattern": {
232 245
          "knownValues": [
233 246
            "none",
234 247
            "grid",
235 248
            "stripes",
236 249
            "dots",
237 250
            "checks",
238 251
            "waves",
239 252
            "stars"
240 253
          ],
241 254
          "type": "string"
242 255
        },
243 256
        "preset": {
244 257
          "description": "The look it started from (haunted, neon, storybook, space, retro, frozen, sunset), or custom.",
245 258
          "maxLength": 20,
246 259
          "type": "string"
247 260
        },
248 261
        "type": {
249 262
          "description": "The typeface for titles.",
250 263
          "knownValues": [
251 264
            "anton",
252 265
            "creepster",
253 266
            "inter"
254 267
          ],
255 268
          "type": "string"
256 269
        }
257 270
      },
258 271
      "required": [
259 272
        "palette",
260 273
        "pattern",
261 274
        "mood",
262 275
        "type"
263 276
      ],
264 277
      "type": "object"
265 278
    }
266 279
  },
267 280
  "id": "com.gamethesky.make.game",
268 281
  "lexicon": 1
269 282
}

Compare Other Versions

Lexicon Garden

@