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