lección 4
Día 2 (tarde) — ¿Vuelven los jugadores?
Con las tablas limpias, el análisis se hace en SQL, como el resto del equipo. Retención D1/D7/D30 con un self-join, DAU/MAU y stickiness, y el embudo de niveles. La curva global tiene buena pinta: todo parece normal.
⏱ 55 min
### Cambio de herramienta: del cuaderno de exploración al SQL del equipo
Toda la mañana has vivido en Pandas: cargar, mirar, limpiar. Era lo correcto para explorar y sanear ficheros crudos. Pero a partir de ahora cambias de herramienta, y no por capricho: el equipo de datos de PlayLoop calcula sus métricas en SQL, contra las tablas ya limpias. Es el lenguaje común, el que produce los números que acaban en los paneles y en las reuniones, y el que cualquiera del equipo puede leer y reproducir. La exploración se hace en Pandas; el análisis —los números que se defienden delante de otros— se produce en SQL. Es un reparto habitual en cualquier equipo de datos: cada herramienta en su fase.
A partir de aquí trabajas sobre las tablas limpias: usuarios (con el canal ya canónico y sin duplicados), sesiones (deduplicadas), partidas, compras (solo ventas reales en euros), ingresos_ads y gasto_ua. La limpieza de esta mañana no la repites en cada consulta: ya está hecha, y SQL parte de datos en los que se puede confiar. Ya sabes agrupar y contar; hoy toca algo nuevo: comparar un grupo consigo mismo en el tiempo. Eso es la retención.
### Retención: ¿cuántos vuelven?
La retención es la métrica más importante de un F2P después del dinero, y en realidad es la que decide el dinero. Mide qué porcentaje de los jugadores que instalaron un día vuelven a jugar N días después. La retención D1 es cuántos vuelven al día siguiente de instalar; la D7, cuántos siguen ahí una semana después; la D30, al mes. Se lee siempre pegada a su día: un 40% a D1 es normal; ese mismo 40% a D30 sería extraordinario. Por eso Lucía insiste tanto en decir «a qué día».
La forma de pensarla es por cohortes, como una promoción del colegio. Coges a todos los que «entraron» (instalaron) y miras cuántos «siguen viniendo a clase» al día 1, al 7, al 30. Una curva de retención sana baja rápido al principio (mucha gente prueba el juego y no vuelve) y luego se aplana (los que quedan son los enganchados). En un puzzle casual, lo típico es algo así como D1 en torno al 40%, D7 al 15% y D30 al 7-8%. Míralo:
Quizá te preguntes por qué justo D1, D7 y D30 y no D2, D5 o D14. No son números mágicos: son los tres puntos de control que más dicen. La D1 mide si la primera impresión enganchó: volviste al día siguiente de instalar, o el juego no te dejó ganas. La D7 es el examen de verdad, el «make or break»: haber sobrevivido una semana significa que el juego se ha ganado un hueco en tu rutina, y por eso predice tan bien el futuro. Y la D30 mide si te has asentado en un hábito, ya en el ciclo del mes. Cada género elige sus hitos —un juego que se juega una vez al día mira otros días que uno de partidas largas—, pero D1/D7/D30 es la convención de los casuales, y comparar contra la convención es lo que te deja decir «esto es normal» o «esto no lo es».
### Por qué la curva tiene esa forma: turistas y residentes
Fíjate en la forma de la curva —cae en picado al principio y luego se aplana— porque no es casualidad ni una simple «pérdida constante». La curva tiene esa forma porque en realidad hay dos poblaciones muy distintas mezcladas en cada cohorte. La mayoría son turistas: probaron el juego una vez por curiosidad, quizá volvieron un día más, y no pensaban quedarse. Son los que provocan la caída brutal de los primeros días. La minoría son residentes: les gustó, lo metieron en su rutina, y se quedan meses. Son la cola plana de la derecha. La curva no es un grupo que se desvanece poco a poco; son los turistas marchándose en tromba mientras los residentes se quedan.
Esta forma de verla lo cambia todo, porque te dice qué mide de verdad la retención temprana. La retención D1 y D7 no es un termómetro difuso de «cómo de bueno es el juego»: es, básicamente, qué fracción de una cohorte se convirtió en residente. Y aquí está la trampa que hace a la retención tan traicionera y tan útil a la vez: el primer día casi todo el mundo abre el juego, turistas y residentes por igual, así que la D1 puede tener buena pinta aunque la cohorte sea casi toda de turistas. Es una semana después, en la D7, cuando los turistas ya se han ido y solo queda medir a los residentes, cuando se ve la verdad de una cohorte. Retén esta distinción entre el primer día y la semana: el jueves será el eje de todo, aunque hoy todavía no sepas por qué.
Consejo de senior: aprende a leer una curva de retención de un vistazo en tres golpes. La altura de la D1 te dice si el juego engancha al principio (el gancho). La pendiente entre D1 y D7 te dice si ese enganche era de verdad o de curiosidad (la profundidad). Y la altura de la cola en D30 te dice cuánta base fiel te queda (los residentes). Dos curvas con la misma D1 pueden ser negocios opuestos según cómo caigan después; por eso una retención sin decir a qué día no significa nada.
### Cómo se calcula: el self-join
Para calcular la retención D1 necesitas cruzar la tabla de sesiones consigo misma, o más exactamente con la fecha de instalación de cada jugador. La idea: por cada jugador tienes su fecha de instalación (en usuarios) y todas sus sesiones (en sesiones). La retención D1 es la proporción de jugadores que tienen alguna sesión exactamente el día «instalación + 1». Cruzas sesiones con usuarios por user_id y te quedas con las sesiones cuya fecha está a N días de la instalación. A ese cruce de una tabla con la fecha de otra (o consigo misma) se le llama self-join cuando ambas salen de la actividad del mismo jugador.
1SELECT2 ROUND(100.0 * COUNT(DISTINCT s.user_id)3 / COUNT(DISTINCT u.user_id), 1) AS retencion_d1_pct4FROM usuarios u5LEFT JOIN sesiones s6 ON s.user_id = u.user_id7 AND date_diff('day', u.fecha_instalacion, s.fecha) = 1 -- sesion el dia 18WHERE date_diff('day', u.fecha_instalacion, DATE '2024-07-22') >= 1; -- cohorte madura
La retención D1 en SQL, leída como una frase: de los que ya cumplieron un día, cuántos jugaron ese día.
### El detalle que hace defendible el número: la cohorte madura
Aquí hay una sutileza que separa una retención bien calculada de una que engaña, y es justo el tipo de cosa que Lucía te preguntará. Para medir la retención D30 solo puedes contar a los jugadores que ya han tenido la oportunidad de cumplir 30 días. Alguien que instaló hace tres días no puede estar «retenido a D30»: todavía no ha llegado. Si lo metes en el denominador, tu retención D30 saldrá artificialmente baja, porque estarás dividiendo entre gente que aún no ha podido volver.
La solución es medir cada retención DN solo sobre la cohorte «madura»: los que instalaron hace al menos N días respecto a la fecha de extracción de los datos (aquí, el 22 de julio de 2024). Para D1, jugadores que instalaron hace ≥1 día; para D30, los que instalaron hace ≥30 días. En SQL eso es una condición date_diff('day', fecha_instalacion, DATE '2024-07-22') >= N en el denominador. Sin ese filtro, la retención larga miente. Retén esta idea: volverá el jueves, y no como un tecnicismo, sino como la clave de que el hallazgo aguante.
Consejo de senior: la retención es la métrica que más predice el dinero futuro de un F2P, mucho antes de que ese dinero aparezca en las compras. Un jugador que sigue ahí a D7 tendrá tiempo de convertirse en pagador; uno que se fue en D2 no comprará nunca. Por eso, cuando quieras adivinar si una cohorte va a ser rentable sin esperar meses a que madure, mira su retención temprana: es la bola de cristal más fiable que tienes.
Nunca calcules la retención D30 dividiendo entre TODOS los jugadores. Los que instalaron hace menos de 30 días aún no han podido llegar a D30, y meterlos en el denominador hunde la cifra sin motivo. La cohorte de una retención DN son solo los que ya han tenido N días de vida. Esto no es un adorno estadístico: es la diferencia entre un número que se sostiene y uno que Lucía te devolverá con una pregunta.
### Indicadores que se adelantan y indicadores que llegan tarde
Hay una idea de gestión que explica por qué la retención vale tanto, y que te conviene tener nombrada: la diferencia entre un indicador adelantado y uno atrasado. Un indicador atrasado mide un resultado que ya ha ocurrido: el ingreso del mes, el beneficio del trimestre. Es fiable pero llega tarde, cuando ya no puedes hacer nada. Un indicador adelantado mide una señal temprana de lo que va a pasar: si sube o baja, te avisa del resultado antes de que llegue. En un F2P, el dinero es el indicador atrasado por excelencia —una cohorte tarda meses en dejar todo lo que va a dejar— y la retención es el indicador adelantado: se ve en días, y predice el dinero de esa cohorte mucho antes de que aparezca.
Por eso el equipo mira la retención con lupa y no se limita a esperar a que llegue el ingreso. Esperar al indicador atrasado sería como conducir mirando solo por el retrovisor: sabes perfectamente por dónde has pasado, pero te enteras de la curva cuando ya la has tomado. La retención es mirar por el parabrisas. Y esto conecta directamente con algo que verás el jueves: cuando quieras juzgar un canal cuyas cohortes son recientes y aún no han dejado casi dinero, no esperas meses al indicador atrasado; miras el adelantado, la retención temprana, que ya te dice hacia dónde va ese dinero. Aprende a distinguir los dos y sabrás siempre cuál mirar según tengas que reaccionar rápido o confirmar un resultado.
Consejo de senior: cuando te pidan «medir el éxito» de algo nuevo (un canal, una función, una promoción), pregunta cuándo se necesita la respuesta. Si es para reaccionar pronto, busca un indicador adelantado (retención, uso, primeras señales); si es para cerrar cuentas, usa el atrasado (ingreso, beneficio). El error clásico es juzgar algo nuevo por su indicador atrasado antes de que haya tenido tiempo de producirlo, y concluir «no funciona» cuando lo que pasa es que aún no ha madurado.
### DAU, MAU y el embudo de onboarding
Dos métricas más para la foto general. DAU y MAU son los jugadores activos únicos por día y por mes: cuánta gente distinta abre el juego cada día (DAU) y cuánta a lo largo de 30 días (MAU). Su cociente, DAU/MAU, se llama stickiness («pegajosidad»): de los que juegan en el mes, qué fracción vuelve cada día. Un stickiness alto significa que la gente vuelve a diario; uno bajo, que entra de vez en cuando. Y el embudo de onboarding mira los primeros niveles: cuántos jugadores llegan al nivel 1, al 3, al 6, al 10. Sirve para ver dónde se atasca y abandona la gente en los primeros compases del juego, que es donde más se pierde.
El stickiness se entiende mejor con el gimnasio. Un gimnasio tiene, pongamos, mil abonados al mes (su «MAU»). Pero un martes cualquiera solo van cien (su «DAU»). El stickiness es ese cociente, 100 entre 1.000, un 10%: de toda la gente que paga la cuota, solo una de cada diez pisa el gimnasio en un día dado. Un gimnasio con stickiness alto tiene socios que van casi a diario; uno con stickiness bajo vive de gente que pagó en enero, fue tres días y no ha vuelto (pero sigue pagando). En un juego es igual: un stickiness del 8% quiere decir que, de los jugadores del mes, uno de cada doce abre el juego en un día concreto. Ni bueno ni malo en abstracto; es tu punto de partida para ver si sube o baja.
Conviene no confundir dos cosas que suenan parecidas pero miden mundos distintos: la retención y el engagement. La retención responde «¿vuelven?»; el engagement responde «cuando están dentro, ¿cuánto juegan?». Son independientes. Dos jugadores pueden volver exactamente igual de a menudo (misma retención) y sin embargo uno abrir el juego veinte segundos y otro echar media hora de partidas (engagement muy distinto). La retención es la puerta —si el jugador vuelve a entrar—; el engagement es lo que hace una vez dentro. Un juego puede tener buena retención y engagement bajo (lo abren a diario pero un momento) o al revés. Para un F2P los dos importan, pero es la retención la que predice el dinero de forma más directa, porque el que no vuelve no llega a jugar ni a pagar por mucho que le hubiera gustado.
Y el embudo de onboarding es algo más que una métrica: es la conversación entre tú y los que diseñan el juego. Cuando ves que casi la mitad de los que llegan al nivel 6 no pasan al 7, estás viendo una decisión de diseño hecha número. Puede ser intencionada —un pico de dificultad puesto ahí a propósito para que la gente se atasque y compre monedas o vidas extra— o puede ser un error —un nivel demasiado difícil que frustra y hace que la gente abandone sin más—. Tú, con el dato, no sabes cuál de las dos es; tu trabajo es señalar con precisión dónde se cae la gente. Quien diseña los niveles decide si ese escalón es una función o un fallo. El analista que solo dice «se cae en el 6» hace media faena; el que añade «y de los que se caen, cuántos habían intentado el nivel varias veces» le da a Producto lo que necesita para decidir.
Consejo de senior: cuando calcules DAU y MAU, ten clarísimo que ambos cuentan jugadores ÚNICOS (COUNT DISTINCT user_id), no sesiones. Es el error de granularidad de ayer con otro disfraz. Y el stickiness solo tiene sentido comparándolo contigo mismo en el tiempo o con juegos parecidos: un 8% no es «bueno» ni «malo» en abstracto, es el punto de partida para ver si sube o baja.
Una nota para leer el embudo sin asustarte: en un embudo, lo normal es que baje: es un embudo, no un tubo. La gente se cae en cada paso y eso es la vida misma de cualquier juego. Lo que hay que buscar no es «que no caiga nadie», sino los escalones donde cae mucha más gente que en los de al lado, porque ahí hay algo (un nivel demasiado difícil, un momento aburrido). Por eso el embudo se lee comparando cada paso con el anterior, no mirando la altura absoluta: una caída suave y constante es sana; un desplome brusco entre dos niveles contiguos es la señal que buscas.
Con la curva de retención global, el DAU/MAU y el embudo tendrás la foto de salud del juego. Y te adelanto lo que vas a ver: todo tiene buena pinta. La retención global es la normal de un casual, el embudo tiene una caída esperable en un nivel difícil, y nada llama la atención. Es exactamente por eso que nadie ha sospechado nada de CoinRush: mirando el conjunto, PlayLoop parece un juego sano. La grieta no está en la foto global. Está escondida en el promedio, esperando a que alguien desagregue por canal. Pero eso es el jueves. Hoy, disfruta de que todo cuadra.
Regístrate para guardar tu progreso.