games.krow.advertising

SDK para Unity

Publicidad integrada al mundo del juego —gigantografías, pantallas, corpóreos y locuciones— con medición verificable.

El gameplay nunca depende del servicio. Si no hay red, si el manifiesto está expirado o si la firma no valida, cada espacio aplica su reserva y el juego sigue. Ninguna excepción del SDK sale hacia tu código.

Unity 2022.3 LTS o superior · Built-in, URP y HDRPVersión publicada: 0.6.0

Instalación

El paquete no está en el registro público de Unity: se sirve desde el registro de Krow, así que hay que declararlo una vez en el proyecto. Elige una de las dos formas; hacen lo mismo.

Desde la interfaz de Unity recomendada

1 · Declarar el registro

Edit ▸ Project Settings… ▸ Package Manager, y en Scoped Registries pulsa el botón +. Rellena los tres campos exactamente así:

NameKrow Games
URLhttps://ads.krow.games/api/registry
Scope(s)games.krow

El scope es un prefijo: solo los paquetes que empiezan por games.krow se buscan aquí, y todo lo demás sigue viniendo del registro de Unity.

2 · Instalar el paquete

Window ▸ Package Manager. En el desplegable de arriba a la izquierda —el que suele decir Packages: In Project— elige My Registries. Aparecerá Krow Ads Studio. Selecciónalo y pulsa Install.

Editando el manifiesto a mano

Abre Packages/manifest.json en la raíz del proyecto (no está dentro de Assets/) y añade el bloque scopedRegistries junto a tus dependencies. Deja las dependencias que ya tuvieras.

json
{
  "scopedRegistries": [
    {
      "name": "Krow Games",
      "url": "https://ads.krow.games/api/registry",
      "scopes": ["games.krow"]
    }
  ],
  "dependencies": {
    "games.krow.advertising": "0.6.0"
  }
}

Comprobar que quedó instalado

En Window ▸ Package Manager ▸ In Project debe aparecer Krow Ads Studio. Si no aparece:

«Package not found» o el registro no responde
Comprueba la URL. Es ads.krow.games, no studio.krow.games: la consola y el registro son dos hosts distintos a propósito.
Un cortafuegos o un bloqueador de anuncios
Puede cortar cualquier dominio que empiece por ads. Prueba el comando de abajo desde una terminal: si devuelve JSON y Unity no lo ve, el problema está en la red de tu máquina, no en el registro.
El scope mal escrito
Es el fallo más común: es games.krow, sin el .advertising del final.
bash
curl -s https://ads.krow.games/api/registry/games.krow.advertising

Actualizar

Cambia la versión en Packages/manifest.json, o usa el botón Update del Package Manager. Las versiones publicadas son inmutables: una versión ya publicada nunca cambia de contenido, así que actualizar es siempre un cambio explícito de número.

Credenciales

Necesitas dos credenciales distintas, las dos en la consola ▸ Juegos ▸ tu juego ▸ Entornos y credenciales:

  1. Window ▸ Krow Ads ▸ Configuración y pulsa Crear configuración. Se crea Assets/Resources/KrowAdvertisingSettings.asset, que es donde el SDK lo busca en tiempo de ejecución.
  2. Pega la clave de tu juego y las dos credenciales.
  3. Pulsa Sincronizar catálogo de espacios. A partir de ahí los componentes de la escena ofrecen un desplegable con los espacios que existen de verdad, en vez de pedirte la clave escrita a mano.
  4. Pulsa Probar la credencial del juego: pide un manifiesto real y verifica su firma. Conviene hacer esta comprobación antes de compilar, no después de publicar.

Deja el entorno en development mientras integras. En production las impresiones que genere el editor se cobran a campañas reales.

Puesta en marcha

Una llamada, una vez, al arrancar. El SDK se encarga del refresco del manifiesto, de la caché en disco y del envío de telemetría.

csharp
using Krow.Advertising;

public class Arranque : MonoBehaviour
{
    void Start()
    {
        KrowAdvertising.Instance.Initialize();
    }
}

Espacios

Añade a cada objeto que hará de soporte el componente que corresponda a su tipo de espacio, y elige el espacio en el desplegable.

ComponentePara espacios de tipo
AdImagePlacementvalla estática, banner de interfaz, calcomanía, textura de objeto, evento patrocinado
AdVideoPlacementpantalla con vídeo
AdAudioPlacementzona de audio

No hace falta más: la escena declara identidad y capacidades, y el manifiesto decide qué campaña y qué creatividad van en cada sitio. Tus componentes nunca contienen lógica comercial.

Comportamiento de reserva

Si no hay nada que mostrar, cada espacio aplica su comportamiento de reserva. Por defecto usa el del proyecto; para decidirlo tú, hereda el componente:

csharp
public class MiValla : AdImagePlacement
{
    protected override void OnCustomFallback(string motivo)
    {
        // Tu textura propia, un cartel del juego, lo que sea.
        // Se llama también cuando no hay red: es un camino
        // normal, no un error.
    }
}

No veo ningún anuncio

Activa EnableDebugOverlay en la configuración y añade el componente Krow Ads ▸ Debug Overlay a cualquier objeto de la escena. El panel —F9 para mostrarlo y ocultarlo— dice en una frase dónde se rompió la cadena:

Sin manifiesto
es la credencial o la red.
Manifiesto sin asignaciones
es la consola: no hay campañas asignadas a los espacios de este juego. Revisa Asignaciones.
Asignaciones que no coinciden con los espacios de la escena
casi siempre es una clave mal escrita. Sincroniza el catálogo y usa el desplegable.

El overlay no existe en una build de release: se compila solo bajo UNITY_EDITOR o DEVELOPMENT_BUILD, porque mostrar identificadores de creatividades sobre el juego de un jugador es filtrar información comercial. Si dejas el componente puesto por descuido, en release se destruye solo.

Verificación

Cada manifiesto viaja firmado con ECDSA P-256, y el SDK comprueba dos cosas distintas:

  1. que la firma corresponde al contentHash, y
  2. que el contenido recibido es el de ese hash.

Las dos hacen falta. Con solo la primera, alterar las asignaciones dejando intactos el hash y su firma pasaría la verificación con la firma legítima del servidor.

Cada asset se verifica además por su sha256, que viaja dentro del manifiesto firmado. Un intermediario no puede sustituir una imagen sin que el cliente lo detecte.

Si prefieres no verificar —por ejemplo contra un servidor de pruebas propio—, desactiva RequireValidSignature. En producción déjalo activado.

Privacidad

La v1 opera con selección contextual: no hay perfilado del jugador ni uso de identificadores publicitarios del dispositivo. Lo que viaja es un identificador de instalación propio del juego, generado localmente, y el país deducido en el servidor a partir de la conexión.

Términos · Política de privacidad

Soporte

Al escribir, incluye lo que dice el overlay de diagnóstico: el estado, la revisión del manifiesto y el recuento de espacios. Con eso se localiza el problema sin ida y vuelta.

contact@krow.games

Documentación del SDK · Krow Ads Studio