changedInput schema / properties / description / description
Previous value: -"What it is, what is weird about it, where it is going (60-4000 chars)"New value: +"What the game is, its audience and what creators can show (60-4000 chars)"
changedInput schema / properties / files / description
Previous value: -"Multi-file build instead of html; must include index.html at the root"New value: +"Optional multi-file playable version instead of html; must include index.html at the root"
changedInput schema / properties / html / description
Previous value: -"The whole game as one self-contained index.html (preferred). Max 8 MB."New value: +"Optional playable version hosted on FanZero, self-contained index.html, max 8 MB. Omit for an online game; list its existing platforms instead"
addedInput schema / properties / media
Added value: +{
+ "description": "Screenshots, gameplay and trailers. At least one when no optional playable version is supplied",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "alt": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "image",
+ "video"
+ ],
+ "type": "string"
+ },
+ "url": {
+ "description": "Public HTTPS screenshot, gameplay or trailer URL; validated without fetching it",
+ "maxLength": 1000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "url"
+ ],
+ "type": "object"
+ },
+ "maxItems": 12,
+ "type": "array"
+}
addedInput schema / properties / monetization
Added value: +{
+ "description": "Explain how the game earns revenue across platforms; do not guess an unknown price",
+ "maxLength": 600,
+ "type": "string"
+}
addedInput schema / properties / platforms
Added value: +{
+ "description": "Where to access/buy the actual game, each with its own price/model. At least one without a build",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "currency": {
+ "description": "Uppercase currency code, e.g. EUR or USD; required for a positive price",
+ "pattern": "^[A-Z]{3}$",
+ "type": "string"
+ },
+ "monetization": {
+ "enum": [
+ "paid",
+ "free",
+ "free_to_play",
+ "subscription",
+ "other"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 60,
+ "minLength": 1,
+ "type": "string"
+ },
+ "note": {
+ "description": "Price conditions, subscription period or optional purchase details",
+ "maxLength": 400,
+ "type": "string"
+ },
+ "price": {
+ "description": "This platform's purchase price. Omit an unknown price; zero means explicitly zero, never an assumed free game",
+ "minimum": 0,
+ "type": "number"
+ },
+ "url": {
+ "description": "Public HTTPS game/store URL",
+ "maxLength": 1000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "url"
+ ],
+ "type": "object"
+ },
+ "maxItems": 12,
+ "type": "array"
+}
changedInput schema / properties / stage / description
Previous value: -"Left out: prototype"New value: +"Optional. Omitted means not specified on a metadata-only listing; legacy playable submissions default to prototype"
changedInput schema / properties / stage / enum
Previous value: -[
- "napkin",
- "prototype",
- "vertical-slice",
- "alpha"
-]New value: +[
+ "napkin",
+ "prototype",
+ "vertical-slice",
+ "alpha",
+ "beta",
+ "released"
+]
addedOutput schema / properties / has_playable
Added value: +{
+ "type": "boolean"
+}
changedOutput schema / required
Previous value: -[
- "pass",
- "next_step",
- "blocking",
- "notes",
- "unchecked",
- "critic_preview",
- "bytes",
- "max_bytes",
- "warnings"
-]New value: +[
+ "pass",
+ "next_step",
+ "blocking",
+ "notes",
+ "unchecked",
+ "critic_preview",
+ "bytes",
+ "max_bytes",
+ "warnings",
+ "has_playable"
+]