Misiones y checkpoints
Las misiones son objetivos que los estudiantes completan para ganar XP adicional dentro de Ecotic. Tu juego puede alimentar esas misiones enviando checkpoints con datos de progreso.
¿Qué es un checkpoint?
Un checkpoint es un evento intermedio que envías durante la partida. Contiene datos sobre el estado actual del juego — racha de aciertos, nivel alcanzado, movimientos realizados, etc.
El GameCenter usa esos datos para actualizar en tiempo real los indicadores de misiones activas del jugador.
// Después de que el jugador responde correctamente:sdk.checkpoint({ streak: 5, // racha actual de aciertos question_idx: 3, // pregunta en la que va correct: true, // si la respuesta fue correcta});Tipos de misiones que tu juego puede alimentar
| Tipo de misión | Campo que debes enviar en checkpoint | Ejemplo |
|---|---|---|
| Racha de aciertos | streak (número) | { streak: 5 } |
| Puntaje acumulado | score (número) | { score: 1500 } |
| Nivel alcanzado | level (número) | { level: 3 } |
| Partidas completadas | Se cuenta en complete() automáticamente | — |
| Precisión mínima | accuracy (porcentaje 0–100) | { accuracy: 80 } |
Ejemplo: quiz con misiones de racha
let streak = 0;let maxStreak = 0;let score = 0;let correctas = 0;
function responder(esCorrecta) { if (esCorrecta) { score += 200; streak += 1; correctas += 1; if (streak > maxStreak) maxStreak = streak; } else { streak = 0; // la racha se rompe }
// Enviar checkpoint para actualizar misiones de racha sdk.checkpoint({ streak: streak, score: score, correct: esCorrecta, });}
async function terminar() { const accuracy = Math.round((correctas / totalPreguntas) * 100);
const resultado = await sdk.complete(score, { accuracy: accuracy, max_streak: maxStreak, correct: correctas, total: totalPreguntas, });
mostrarBanner(resultado.reward);}¿Cuándo llamar a checkpoint()?
Llama a checkpoint() cada vez que ocurra algo significativo en tu juego:
- Al responder una pregunta (quiz).
- Al completar un nivel o etapa.
- Al alcanzar una racha determinada (cada 3 aciertos, por ejemplo).
- Al destruir una cantidad de enemigos (juego de acción).
No hay un límite estricto, pero evita llamarlo en bucles muy rápidos (más de una vez por segundo) para no saturar la red.
Checkpoint vs. complete
checkpoint() | complete() | |
|---|---|---|
| ¿Cuántas veces? | Muchas veces | Solo una vez por sesión |
| ¿Otorga recompensa? | No directamente | Sí — XP y monedas |
| ¿Para qué sirve? | Actualizar misiones en tiempo real | Finalizar la sesión |
Misiones especiales: mission_completed
Si el servidor detecta que el jugador completó una misión durante una partida, enviará un evento mission_completed de vuelta. El SDK lo recibe y el GameCenter muestra una animación de celebración al jugador.
No necesitas hacer nada especial para esto — ocurre automáticamente cuando el jugador alcanza el objetivo de una misión.