{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Juego (ampliado)",
  "schema_version": "2.0",
  "description": "Schema ampliado para enviar datos de un juego a importar en la base de datos de DeVuego. Es una versión más completa de basic_game_import_schema.json, que cubre más aspectos del modelo de datos que un proveedor (estudio, editora, desarrollador) puede conocer razonablemente. Los campos internos como id, slug o los nombres de archivo de las imágenes los genera nuestro propio sistema y no deben solicitarse aquí.",
  "type": "object",
  "properties": {
    "titulo": {
      "type": "string",
      "description": "Título del juego"
    },
    "titulo_original": {
      "type": "string",
      "description": "Título original, si es distinto del título principal (ej. título japonés original)"
    },
    "titulo_localizado": {
      "type": "string",
      "description": "Título en otro idioma relevante, si difiere del título principal (opcional)"
    },
    "ano_lanzamiento": {
      "type": "integer",
      "description": "Año en que el juego se lanzó por primera vez"
    },
    "nombre_serie": {
      "type": "string",
      "description": "Nombre de la serie a la que pertenece este juego, si aplica (opcional)"
    },
    "juego_padre": {
      "type": "string",
      "description": "Título del juego padre, si esta entrada es una edición, remake o DLC de otro juego"
    },
    "numero_episodio": {
      "type": "string",
      "description": "Número de episodio/capítulo, si esta entrada forma parte de una serie episódica (opcional)"
    },
    "estudio": {
      "type": "string",
      "description": "Nombre del estudio de desarrollo"
    },
    "coestudio": {
      "type": "string",
      "description": "Nombre de un segundo estudio en coproducción, si lo hay (opcional)"
    },
    "desarrollador": {
      "type": "string",
      "description": "Nombre del desarrollador principal (persona individual), si no se trata de un estudio"
    },
    "editora": {
      "type": "string",
      "description": "Nombre de la editora (opcional)"
    },
    "motor": {
      "type": "string",
      "description": "Nombre del motor gráfico utilizado (opcional, ej. Unreal Engine, Unity, motor propio)"
    },
    "descripcion": {
      "type": "string",
      "description": "Sinopsis / descripción corta del juego"
    },
    "estilo_grafico": {
      "type": "string",
      "description": "Estilo gráfico (opcional, ej. 2D, 3D, Pixel art)"
    },
    "perspectiva": {
      "type": "string",
      "description": "Perspectiva de cámara (opcional, ej. Primera persona, Tercera persona, Isométrica, Vista superior)"
    },
    "vista": {
      "type": "string",
      "description": "Tipo de vista, como complemento de la perspectiva (opcional, ej. Scroll lateral, Mundo abierto)"
    },
    "plataformas": {
      "type": "array",
      "description": "Lista de lanzamientos por plataforma. Cada lanzamiento se guarda como un registro propio (tabla plataformajuegos), con su propia fecha, formato y estado, no solo el nombre de la plataforma.",
      "items": {
        "type": "object",
        "properties": {
          "plataforma": {
            "type": "string",
            "description": "Nombre de la plataforma (ej. PC, PlayStation 5, Nintendo Switch)"
          },
          "fecha_lanzamiento": {
            "type": "string",
            "format": "date",
            "description": "Fecha de lanzamiento en esta plataforma (AAAA-MM-DD). Usa solo el año si no se conoce la fecha exacta."
          },
          "digital": {
            "type": "boolean",
            "description": "True si se lanzó digitalmente en esta plataforma"
          },
          "fisico": {
            "type": "boolean",
            "description": "True si se lanzó físicamente en esta plataforma"
          },
          "estado_desarrollo": {
            "type": "string",
            "enum": ["lanzado", "en_desarrollo", "cancelado", "en_pausa"],
            "description": "Estado actual de este lanzamiento (opcional, por defecto \"lanzado\" si se indica fecha_lanzamiento)"
          },
          "acceso_anticipado": {
            "type": "boolean",
            "description": "True si este lanzamiento es/fue una versión de acceso anticipado (opcional)"
          },
          "modelo_negocio": {
            "type": "string",
            "description": "Modelo de negocio de este lanzamiento (opcional, ej. Pago único, Free-to-play, Suscripción)"
          }
        },
        "required": ["plataforma"]
      }
    },
    "generos": {
      "type": "array",
      "description": "Lista de géneros/subgéneros del juego (tablas generos / generos2, relacionadas vía genero2juegos). Pertenecen a nuestra propia taxonomía interna, así que indica los géneros en texto plano — los mapearemos a categorías existentes al importar, o crearemos nuevas si es necesario.",
      "items": {
        "type": "object",
        "properties": {
          "genero": {
            "type": "string",
            "description": "Género principal (ej. Acción, RPG, Estrategia)"
          },
          "subgenero": {
            "type": "string",
            "description": "Subgénero más específico dentro del género principal, si se conoce (ej. Plataformas, RPG táctico)"
          }
        },
        "required": ["genero"]
      }
    },
    "pegi": {
      "type": "object",
      "description": "Clasificación PEGI por edad y descriptores de contenido, si se conoce (opcional, tabla pegi). Se indican como strings legibles; los IDs internos de PEGI se resuelven al importar, no se solicitan aquí.",
      "properties": {
        "clasificacion": {
          "type": "string",
          "enum": ["3", "7", "12", "16", "18"],
          "description": "Clasificación PEGI por edad"
        },
        "descriptores_contenido": {
          "type": "array",
          "description": "Descriptores de contenido PEGI aplicables",
          "items": {
            "type": "string",
            "enum": ["lenguaje", "discriminacion", "drogas", "miedo", "juego_de_azar", "sexo", "violencia", "online", "compras_dentro_del_juego"]
          }
        }
      },
      "required": ["clasificacion"]
    },
    "esrb": {
      "type": "object",
      "description": "Clasificación ESRB por edad y descriptores de contenido, si se conoce (opcional, tabla esrb), como equivalente estadounidense del PEGI. Se indican como strings legibles; los IDs internos de ESRB se resuelven al importar.",
      "properties": {
        "clasificacion": {
          "type": "string",
          "enum": ["EC", "E", "E10+", "T", "M", "AO", "RP"],
          "description": "Clasificación ESRB por edad"
        },
        "descriptores_contenido": {
          "type": "array",
          "description": "Descriptores de contenido ESRB aplicables, en texto plano (ej. Violencia, Sangre, Lenguaje fuerte)",
          "items": { "type": "string" }
        }
      },
      "required": ["clasificacion"]
    },
    "idiomas": {
      "type": "array",
      "description": "Idiomas soportados por el juego, con el tipo de soporte para cada uno (tabla idiomas_juegos)",
      "items": {
        "type": "object",
        "properties": {
          "idioma": {
            "type": "string",
            "description": "Nombre del idioma (ej. Español, Inglés, Portugués)"
          },
          "audio": {
            "type": "boolean",
            "description": "True si este idioma está soportado en audio/voces"
          },
          "subtitulos": {
            "type": "boolean",
            "description": "True si este idioma está soportado en subtítulos"
          },
          "interfaz": {
            "type": "boolean",
            "description": "True si este idioma está soportado en la interfaz/textos"
          }
        },
        "required": ["idioma"]
      }
    },
    "precio_lanzamiento": {
      "type": "string",
      "description": "Precio de lanzamiento recomendado, con su moneda (opcional, ej. \"59,99 EUR\")"
    },
    "sitio_web_oficial": {
      "type": "string",
      "format": "uri",
      "description": "Sitio web oficial del juego (opcional)"
    },
    "enlaces_tiendas": {
      "type": "array",
      "description": "Enlaces a las páginas del juego en tiendas digitales (opcional)",
      "items": {
        "type": "object",
        "properties": {
          "tienda": {
            "type": "string",
            "description": "Nombre de la tienda (ej. Steam, GOG, itch.io, App Store, Google Play, PlayStation Store, eShop)"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": ["tienda", "url"]
      }
    },
    "financiacion_colectiva": {
      "type": "object",
      "description": "Datos de la campaña de financiación colectiva, si el juego se financió así (opcional, tabla financiacion_plataformas)",
      "properties": {
        "plataforma": {
          "type": "string",
          "description": "Nombre de la plataforma de crowdfunding (ej. Kickstarter, Verkami, Indiegogo)"
        },
        "url_campana": {
          "type": "string",
          "format": "uri"
        },
        "objetivo": {
          "type": "number",
          "description": "Objetivo de financiación"
        },
        "recaudado": {
          "type": "number",
          "description": "Cantidad realmente recaudada"
        },
        "moneda": {
          "type": "string",
          "description": "Código de moneda (ej. EUR, USD)"
        },
        "fecha_fin_campana": {
          "type": "string",
          "format": "date",
          "description": "Fecha en la que terminó la campaña (AAAA-MM-DD)"
        },
        "estado": {
          "type": "string",
          "enum": ["en_curso", "financiado", "fallido", "cancelado", "entregado"],
          "description": "Estado actual de la campaña de financiación colectiva — importante para campañas que se financiaron pero nunca se entregaron, o que se cancelaron"
        }
      },
      "required": ["plataforma"]
    },
    "banda_sonora": {
      "type": "object",
      "description": "Información de la banda sonora, si es relevante (opcional, tabla bso)",
      "properties": {
        "compositor": {
          "type": "string",
          "description": "Nombre del/de la compositor/a"
        },
        "digital": {
          "type": "boolean",
          "description": "True si la banda sonora está disponible digitalmente"
        },
        "fisico": {
          "type": "boolean",
          "description": "True si la banda sonora se lanzó físicamente"
        },
        "edicion_coleccionista": {
          "type": "boolean",
          "description": "True si existe una edición coleccionista de la banda sonora"
        }
      }
    },
    "premios": {
      "type": "array",
      "description": "Premios recibidos por el juego, si los hay (opcional, tabla premiosjuegos)",
      "items": {
        "type": "object",
        "properties": {
          "nombre_premio": {
            "type": "string",
            "description": "Nombre del premio (ej. The Game Awards, Independent Games Festival)"
          },
          "categoria": {
            "type": "string",
            "description": "Categoría o edición del premio, si es relevante"
          },
          "ano": {
            "type": "integer",
            "description": "Año en que se recibió el premio"
          }
        },
        "required": ["nombre_premio", "ano"]
      }
    },
    "etiquetas": {
      "type": "array",
      "description": "Etiquetas descriptivas libres sobre el juego (opcional, tabla tagjuegos)",
      "items": { "type": "string" }
    },
    "contenido_adicional": {
      "type": "array",
      "description": "Títulos de contenido descargable asociado a este juego, si lo hay (opcional). Complementa juego_padre/numero_episodio para la relación inversa.",
      "items": { "type": "string" }
    }
  },
  "required": ["titulo", "ano_lanzamiento"],
  "examples": [
    {
      "titulo": "Nombre del Juego",
      "titulo_original": "",
      "titulo_localizado": "",
      "ano_lanzamiento": 2024,
      "nombre_serie": "",
      "juego_padre": "",
      "numero_episodio": "",
      "estudio": "Nombre del Estudio",
      "coestudio": "",
      "desarrollador": "",
      "editora": "Nombre de la Editora",
      "motor": "Unreal Engine 5",
      "descripcion": "Descripción corta del juego.",
      "estilo_grafico": "3D",
      "perspectiva": "Tercera persona",
      "vista": "Mundo abierto",
      "plataformas": [
        { "plataforma": "PC", "fecha_lanzamiento": "2024-03-15", "digital": true, "fisico": false, "estado_desarrollo": "lanzado", "acceso_anticipado": false, "modelo_negocio": "Pago único" },
        { "plataforma": "PlayStation 5", "fecha_lanzamiento": "2024-03-15", "digital": true, "fisico": true, "estado_desarrollo": "lanzado", "acceso_anticipado": false, "modelo_negocio": "Pago único" }
      ],
      "generos": [
        { "genero": "Acción", "subgenero": "Plataformas" },
        { "genero": "Aventura" }
      ],
      "pegi": {
        "clasificacion": "16",
        "descriptores_contenido": ["violencia", "lenguaje"]
      },
      "esrb": {
        "clasificacion": "M",
        "descriptores_contenido": ["Violencia", "Lenguaje fuerte"]
      },
      "idiomas": [
        { "idioma": "Español", "audio": true, "subtitulos": true, "interfaz": true },
        { "idioma": "Inglés", "audio": false, "subtitulos": true, "interfaz": true }
      ],
      "precio_lanzamiento": "59,99 EUR",
      "sitio_web_oficial": "https://example.com",
      "enlaces_tiendas": [
        { "tienda": "Steam", "url": "https://store.steampowered.com/app/000000" }
      ],
      "financiacion_colectiva": {
        "plataforma": "Kickstarter",
        "url_campana": "https://www.kickstarter.com/projects/example/nombre-del-juego",
        "objetivo": 50000,
        "recaudado": 75000,
        "moneda": "EUR",
        "fecha_fin_campana": "2022-06-01",
        "estado": "entregado"
      },
      "banda_sonora": {
        "compositor": "Nombre del Compositor",
        "digital": true,
        "fisico": false,
        "edicion_coleccionista": false
      },
      "premios": [
        { "nombre_premio": "Independent Games Festival", "categoria": "Excelencia en Diseño", "ano": 2024 }
      ],
      "etiquetas": ["un_jugador", "narrativo", "indie"],
      "contenido_adicional": ["Nombre del Juego: Expansión"]
    }
  ]
}
