com.gamethesky.make.game

gamethesky.com

Schema Diff

+52 -3

From

CID
bafyreiatexdegvo...
Indexed At
2026-10-21 21:39 UTC
View this version

To

CID
bafyreifjx6cujyl...
Indexed At
2026-10-21 22:09 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 11 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.gamethesky.make.game#level", src: "com.gamethesky.make.game#level", tgt: "com.gamethesky.make.game#level.rows", kind: "prop", name: Some("rows") }
  • ConstraintTightened ConstraintTightened { vertex_id: "com.gamethesky.make.game#chapter.module", sort: "knownValues", old_value: "[\"house\",\"tanks\",\"vortex\"]", new_value: "[\"platformer\",\"house\",\"tanks\",\"vortex\",\"roll\",\"fight\",\"golf\",\"cycles\",\"discs\",\"uplink\",\"canyon\",\"belts\",\"race\",\"gunner\",\"drones\",\"landing\",\"deckgun\",\"minefield\",\"pipes\",\"catch\",\"fence\",\"airdrop\",\"invaders\",\"crossing\"]" }
Non-Breaking Changes (11)
  • AddedVertex AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.make.game#chapter.level" }
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.make.game#level" }
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.make.game#level.rows" }
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.make.game#level.rows:items" }
  • AddedVertex AddedVertex { vertex_id: "com.gamethesky.make.game:body.remixOf" }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game#chapter", tgt: "com.gamethesky.make.game#chapter.level", kind: "prop", name: Some("level") }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game#chapter.level", tgt: "com.gamethesky.make.game#level", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game#level.rows", tgt: "com.gamethesky.make.game#level.rows:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game:body", tgt: "com.gamethesky.make.game:body.remixOf", kind: "prop", name: Some("remixOf") }
  • AddedEdge AddedEdge { src: "com.gamethesky.make.game:body.remixOf", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
  • AddedVertex { vertex_id: "com.gamethesky.make.game#chapter.level" }
  • AddedVertex { vertex_id: "com.gamethesky.make.game#level" }
  • AddedVertex { vertex_id: "com.gamethesky.make.game#level.rows" }
  • AddedVertex { vertex_id: "com.gamethesky.make.game#level.rows:items" }
  • AddedVertex { vertex_id: "com.gamethesky.make.game:body.remixOf" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "com.gamethesky.make.game#chapter.module", sort: "knownValues", old_value: "[\"house\",\"tanks\",\"vortex\"]", new_value: "[\"platformer\",\"house\",\"tanks\",\"vortex\",\"roll\",\"fight\",\"golf\",\"cycles\",\"discs\",\"uplink\",\"canyon\",\"belts\",\"race\",\"gunner\",\"drones\",\"landing\",\"deckgun\",\"minefield\",\"pipes\",\"catch\",\"fence\",\"airdrop\",\"invaders\",\"crossing\"]" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@