com.gamethesky.make.game
Schema Diff
+18 -0
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
}