[{"data":1,"prerenderedAt":1371},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fit\u002Fgaming\u002Fcalendario-live-ops-retention-engineering-churn-18":13},{"i18nKey":4,"paths":5},"gaming-003-2026-07",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fgaming\u002Flive-ops-kalender-retention-engineering-churn-reduktion","\u002Fen\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-18-percent","\u002Fes\u002Fgaming\u002Fcalendario-live-ops-retention-engineering-churn","\u002Ffr\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-18","\u002Fit\u002Fgaming\u002Fcalendario-live-ops-retention-engineering-churn-18","\u002Fru\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction","\u002Ftr\u002Fgaming\u002Flive-ops-calendar-retention-engineering-ile-churn-18",{"_path":10,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1365,"_id":1366,"_source":1367,"_file":1368,"_stem":1369,"_extension":1370},"gaming",false,"","Calendario Live Ops: Retention Engineering e Churn -%18","Strategia live ops basata su dati per ottimizzare cadence di eventi, profondità contenuti e equilibrio monetizzazione-retention con modello di coorte Markov, riducendo churn del 18%.","2026-07-24",[21,22,23,24,25],"live-ops","retention-engineering","churn-optimization","mobile-gaming","f2p-monetization",8,"Roibase",{"type":29,"children":30,"toc":1351},"root",[31,39,46,51,65,70,77,90,96,101,106,111,266,271,277,282,287,307,313,318,324,366,1205,1210,1216,1229,1242,1261,1267,1272,1280,1309,1315,1331,1336,1340,1345],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Nei giochi mobile F2P del 2026, l'assunto che live ops significhi \"produrre continuamente novità\" è obsoleto. La maggior parte degli studi vede gli eventi come uno strumento per riempire il calendario — mentre invece una cadence di eventi corretta, profondità di contenuti e equilibrio monetizzazione-retention, optimizzati con un modello di coorte Markov, riducono il churn del 18%. Live ops non è più un calendario, è un sistema di retention engineering.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"abbandonare-la-cadence-di-evento-casuale-costa-caro",[44],{"type":37,"value":45},"Abbandonare la Cadence di Evento Casuale Costa Caro",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Molti studi costruiscono la rotazione di eventi settimanali con la logica \"qualcosa ogni settimana\". Questo approccio ha due problemi: primo, non calibra la frequenza degli eventi secondo le dinamiche di coorte; secondo, costruisce l'equilibrio tra evento di monetizzazione ed evento di engagement per assunzione, non su dati.",{"type":32,"tag":33,"props":52,"children":53},{},[54,56,63],{"type":37,"value":55},"Nel modello di coorte Markov, ogni tipo di evento (stagionale, monetizzazione, progressione) è definito come uno stato. La probabilità di transizione di un giocatore da un evento all'altro si calcola con la formula ",{"type":32,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":37,"value":62},"P(evento_j | evento_i, session_gap)",{"type":37,"value":64},". Questa matrice di transizione rivela il rischio di esaurimento degli eventi (event fatigue) e la finestra di ritorno ottimale. Ad esempio, se uno studio avvia un evento di progressione 72 ore dopo un evento di gacha, il churn aumenta del 12% — perché l'inventario del giocatore non ha ancora elaborato i nuovi contenuti. Con uno spazio di 120 ore, il churn scende a -%8.",{"type":32,"tag":33,"props":66,"children":67},{},[68],{"type":37,"value":69},"Per ottimizzare la cadence degli eventi, è necessario modellare separatamente le coorti D1\u002FD3\u002FD7. Per la coorte D1, l'esposizione all'evento deve essere %0 — aprire l'interfaccia dell'evento prima del completamento dell'onboarding riduce la retention del 22% (benchmark Deconstructor of Fun 2025). Per la coorte D3, il primo evento dovrebbe essere un mini-evento di progressione (retention +%9), per la coorte D7+ è possibile aprire un evento di monetizzazione. Il calendario degli eventi non deve essere un ciclo singolo, bensì un design basato su una matrice di stato di coorte.",{"type":32,"tag":71,"props":72,"children":74},"h3",{"id":73},"come-trovare-la-soglia-di-event-fatigue",[75],{"type":37,"value":76},"Come Trovare la Soglia di Event Fatigue",{"type":32,"tag":33,"props":78,"children":79},{},[80,82,88],{"type":37,"value":81},"Per misurare l'event fatigue, si usa il rapporto ",{"type":32,"tag":57,"props":83,"children":85},{"className":84},[],[86],{"type":37,"value":87},"session_gap \u002F event_duration",{"type":37,"value":89},". Quando il rapporto scende sotto 2 (ad esempio, evento di 3 giorni, nuovo evento dopo 5 giorni), l'ARPU del giocatore scende del 14%. Il rapporto ottimale è tra 3.5-4.5 — cioè lasciare uno spazio di 3.5 volte la durata dell'evento dopo il suo completamento. Questo spazio deve essere riempito dal sistema di progressione; altrimenti, il churn aumenta.",{"type":32,"tag":40,"props":91,"children":93},{"id":92},"profondità-di-contenuto-il-conflitto-tra-durata-dellevento-e-engagement",[94],{"type":37,"value":95},"Profondità di Contenuto: il Conflitto tra Durata dell'Evento e Engagement",{"type":32,"tag":33,"props":97,"children":98},{},[99],{"type":37,"value":100},"Eventi lunghi non generano più engagement — generano profondità misurabile. Un evento di 7 giorni non è semplicemente il 40% più lungo di un evento di 3 giorni, aumenta l'impegno giornaliero del giocatore. Tuttavia, se la profondità non è strutturata correttamente, l'engagement dell'ultimo paio di giorni dell'evento cala del 60%.",{"type":32,"tag":33,"props":102,"children":103},{},[104],{"type":37,"value":105},"Per definire la profondità del contenuto, è necessario dividere l'evento in compiti atomici e misurare il tempo di completamento di ogni compito. Ad esempio, in un battlepass con 50 tier, se il giocatore completa in media 4 tier al giorno, l'evento dovrebbe durare almeno 12.5 giorni — ma questo non è il valore \"minimo\", è la \"garanzia di completamento\". Per aggiungere profondità, si aggiunge un buffer del 20% (15 giorni). Se l'evento dura meno di 15 giorni, il 35% dei giocatori farà clic sui tier rapidamente negli ultimi 2 giorni, riducendo la percezione di valore.",{"type":32,"tag":33,"props":107,"children":108},{},[109],{"type":37,"value":110},"La seconda dimensione della profondità di contenuto è il \"branching\". Offrire tracce parallele (PvE + PvP + crafting) al posto di un percorso lineare singolo aumenta la sessione giornaliera del giocatore del 18%. Tuttavia, se il numero di tracce supera 4, il giocatore si perde nell'interfaccia e il churn aumenta dell'11%. L'architettura di contenuto ottimale è 3 tracce parallele + 1 milestone finale comune.",{"type":32,"tag":112,"props":113,"children":114},"table",{},[115,149],{"type":32,"tag":116,"props":117,"children":118},"thead",{},[119],{"type":32,"tag":120,"props":121,"children":122},"tr",{},[123,129,134,139,144],{"type":32,"tag":124,"props":125,"children":126},"th",{},[127],{"type":37,"value":128},"Tipo di Evento",{"type":32,"tag":124,"props":130,"children":131},{},[132],{"type":37,"value":133},"Numero Tracce",{"type":32,"tag":124,"props":135,"children":136},{},[137],{"type":37,"value":138},"Tempo Gioco Medio Giornaliero (min)",{"type":32,"tag":124,"props":140,"children":141},{},[142],{"type":37,"value":143},"Completion %",{"type":32,"tag":124,"props":145,"children":146},{},[147],{"type":37,"value":148},"Churn D7",{"type":32,"tag":150,"props":151,"children":152},"tbody",{},[153,182,210,238],{"type":32,"tag":120,"props":154,"children":155},{},[156,162,167,172,177],{"type":32,"tag":157,"props":158,"children":159},"td",{},[160],{"type":37,"value":161},"Lineare (1 traccia)",{"type":32,"tag":157,"props":163,"children":164},{},[165],{"type":37,"value":166},"1",{"type":32,"tag":157,"props":168,"children":169},{},[170],{"type":37,"value":171},"22",{"type":32,"tag":157,"props":173,"children":174},{},[175],{"type":37,"value":176},"%48",{"type":32,"tag":157,"props":178,"children":179},{},[180],{"type":37,"value":181},"%19",{"type":32,"tag":120,"props":183,"children":184},{},[185,190,195,200,205],{"type":32,"tag":157,"props":186,"children":187},{},[188],{"type":37,"value":189},"Doppia traccia",{"type":32,"tag":157,"props":191,"children":192},{},[193],{"type":37,"value":194},"2",{"type":32,"tag":157,"props":196,"children":197},{},[198],{"type":37,"value":199},"28",{"type":32,"tag":157,"props":201,"children":202},{},[203],{"type":37,"value":204},"%56",{"type":32,"tag":157,"props":206,"children":207},{},[208],{"type":37,"value":209},"%14",{"type":32,"tag":120,"props":211,"children":212},{},[213,218,223,228,233],{"type":32,"tag":157,"props":214,"children":215},{},[216],{"type":37,"value":217},"Tripla traccia",{"type":32,"tag":157,"props":219,"children":220},{},[221],{"type":37,"value":222},"3",{"type":32,"tag":157,"props":224,"children":225},{},[226],{"type":37,"value":227},"34",{"type":32,"tag":157,"props":229,"children":230},{},[231],{"type":37,"value":232},"%61",{"type":32,"tag":157,"props":234,"children":235},{},[236],{"type":37,"value":237},"%11",{"type":32,"tag":120,"props":239,"children":240},{},[241,246,251,256,261],{"type":32,"tag":157,"props":242,"children":243},{},[244],{"type":37,"value":245},"Quadrupla traccia",{"type":32,"tag":157,"props":247,"children":248},{},[249],{"type":37,"value":250},"4+",{"type":32,"tag":157,"props":252,"children":253},{},[254],{"type":37,"value":255},"29",{"type":32,"tag":157,"props":257,"children":258},{},[259],{"type":37,"value":260},"%43",{"type":32,"tag":157,"props":262,"children":263},{},[264],{"type":37,"value":265},"%20",{"type":32,"tag":33,"props":267,"children":268},{},[269],{"type":37,"value":270},"La tabella contiene dati di coorte raccolti nel Q4 2025 da 8 giochi mid-core differenti (fonte: GameRefinery Retention Toolkit). La tripla traccia è ottimale per completion e retention — la quadrupla traccia scende a causa della complessità dell'interfaccia.",{"type":32,"tag":40,"props":272,"children":274},{"id":273},"equilibrio-monetizzazione-retention-il-costo-dellevento-iap",[275],{"type":37,"value":276},"Equilibrio Monetizzazione-Retention: il Costo dell'Evento IAP",{"type":32,"tag":33,"props":278,"children":279},{},[280],{"type":37,"value":281},"Un evento di monetizzazione (offerta limitata, banner gacha, sconto bundle) aumenta l'ARPU a breve termine ma ha un effetto asimmetrico sulla retention. Un evento IAP può ridurre la retention D7 del 3-5% — perché il giocatore accelera il consumo di contenuti dopo l'acquisto e raggiunge il plateau più velocemente.",{"type":32,"tag":33,"props":283,"children":284},{},[285],{"type":37,"value":286},"Per costruire questo equilibrio, il rapporto tra \"finestra di monetizzazione\" e \"finestra di progressione\" nel calendario degli eventi deve essere 1:2.5. Cioè, in un mese di 4 settimane, 1.5 settimane dovrebbero essere eventi di monetizzazione e 2.5 settimane dovrebbero essere eventi di progressione\u002Fengagement. Quando questo rapporto si rompe (ad esempio, un evento di monetizzazione ogni settimana), il punteggio percepito di \"pay-to-win pressure\" del giocatore aumenta e la retention organica cala del 16%.",{"type":32,"tag":33,"props":288,"children":289},{},[290,292,298,300,305],{"type":37,"value":291},"Per rendere un evento di monetizzazione sicuro dal punto di vista della retention, due meccaniche sono critiche: ",{"type":32,"tag":293,"props":294,"children":295},"strong",{},[296],{"type":37,"value":297},"primo",{"type":37,"value":299},", non sbloccare immediatamente nuovo contenuto dopo un IAP — dare al giocatore il tempo di assimilare ciò che ha acquistato (spazio di 72-96 ore). ",{"type":32,"tag":293,"props":301,"children":302},{},[303],{"type":37,"value":304},"Secondo",{"type":37,"value":306},", legare il premio dell'evento di monetizzazione a un evento di progressione. Ad esempio, se il tiro del banner gacha richiede che il giocatore completi i compiti dell'evento di progressione per potenziare il nuovo personaggio, allora IAP ed engagement si bloccano a vicenda, e il churn scende.",{"type":32,"tag":71,"props":308,"children":310},{"id":309},"timing-del-hard-currency-sink",[311],{"type":37,"value":312},"Timing del Hard Currency Sink",{"type":32,"tag":33,"props":314,"children":315},{},[316],{"type":37,"value":317},"Un evento di spesa di hard currency (diamanti, gemme) dovrebbe essere temporizzato in base all'importo di valuta nell'inventario del giocatore. Quando la valuta del giocatore supera il 120% del valore mediano (cioè la coorte ricca), aprire un evento di spesa aumenta l'ARPU del 31%. Se la valuta del giocatore è sotto il 60% della mediana, aprire un evento di spesa aumenta il churn del 9% — perché il giocatore si sente \"non posso permettermi questo\". Estrarre l'istogramma di distribuzione della valuta settimanalmente e temporizzare gli eventi di conseguenza è la spina dorsale dell'equilibrio monetizzazione-retention.",{"type":32,"tag":40,"props":319,"children":321},{"id":320},"costruire-il-calendario-live-ops-con-sql",[322],{"type":37,"value":323},"Costruire il Calendario Live Ops con SQL",{"type":32,"tag":33,"props":325,"children":326},{},[327,329,335,337,343,344,350,351,357,358,364],{"type":37,"value":328},"Invece di mantenere il calendario live ops in Excel, modellare gli eventi come una state machine in SQL optimize automaticamente sia la cadence che la profondità del contenuto che l'equilibrio di monetizzazione. Ogni evento è definito con ",{"type":32,"tag":57,"props":330,"children":332},{"className":331},[],[333],{"type":37,"value":334},"event_type",{"type":37,"value":336},", ",{"type":32,"tag":57,"props":338,"children":340},{"className":339},[],[341],{"type":37,"value":342},"duration",{"type":37,"value":336},{"type":32,"tag":57,"props":345,"children":347},{"className":346},[],[348],{"type":37,"value":349},"cooldown_min",{"type":37,"value":336},{"type":32,"tag":57,"props":352,"children":354},{"className":353},[],[355],{"type":37,"value":356},"target_cohort",{"type":37,"value":336},{"type":32,"tag":57,"props":359,"children":361},{"className":360},[],[362],{"type":37,"value":363},"monetization_flag",{"type":37,"value":365},". Uno script legge quotidianamente la distribuzione di coorte e seleziona l'evento successivo.",{"type":32,"tag":367,"props":368,"children":372},"pre",{"code":369,"language":370,"meta":16,"className":371,"style":16},"WITH cohort_state AS (\n  SELECT\n    cohort_day,\n    COUNT(DISTINCT user_id) AS users,\n    AVG(session_count_7d) AS avg_sessions,\n    AVG(hard_currency) AS avg_currency\n  FROM user_metrics\n  WHERE last_session >= CURRENT_DATE - 7\n  GROUP BY cohort_day\n),\nevent_candidates AS (\n  SELECT\n    event_id,\n    event_type,\n    duration,\n    cooldown_min,\n    target_cohort_min,\n    target_cohort_max,\n    monetization_flag,\n    COALESCE(last_run_date, '2020-01-01') AS last_run\n  FROM live_ops_events\n  WHERE\n    CURRENT_DATE - COALESCE(last_run_date, '2020-01-01') >= cooldown_min\n)\nSELECT\n  ec.event_id,\n  ec.event_type,\n  ec.duration,\n  SUM(cs.users) AS eligible_users,\n  AVG(cs.avg_sessions) AS cohort_engagement,\n  AVG(cs.avg_currency) AS cohort_wealth\nFROM event_candidates ec\nJOIN cohort_state cs\n  ON cs.cohort_day BETWEEN ec.target_cohort_min AND ec.target_cohort_max\nWHERE\n  (ec.monetization_flag = 0 OR cs.avg_currency > 500)\nGROUP BY ec.event_id, ec.event_type, ec.duration\nORDER BY cohort_engagement DESC\nLIMIT 1;\n","sql","language-sql shiki shiki-themes github-dark",[373],{"type":32,"tag":57,"props":374,"children":375},{"__ignoreMap":16},[376,404,413,422,456,479,501,515,548,562,571,588,596,605,614,623,632,641,650,659,693,706,715,754,763,772,796,816,836,876,915,953,967,981,1041,1050,1113,1167,1186],{"type":32,"tag":377,"props":378,"children":381},"span",{"class":379,"line":380},"line",1,[382,388,394,399],{"type":32,"tag":377,"props":383,"children":385},{"style":384},"--shiki-default:#F97583",[386],{"type":37,"value":387},"WITH",{"type":32,"tag":377,"props":389,"children":391},{"style":390},"--shiki-default:#E1E4E8",[392],{"type":37,"value":393}," cohort_state ",{"type":32,"tag":377,"props":395,"children":396},{"style":384},[397],{"type":37,"value":398},"AS",{"type":32,"tag":377,"props":400,"children":401},{"style":390},[402],{"type":37,"value":403}," (\n",{"type":32,"tag":377,"props":405,"children":407},{"class":379,"line":406},2,[408],{"type":32,"tag":377,"props":409,"children":410},{"style":384},[411],{"type":37,"value":412},"  SELECT\n",{"type":32,"tag":377,"props":414,"children":416},{"class":379,"line":415},3,[417],{"type":32,"tag":377,"props":418,"children":419},{"style":390},[420],{"type":37,"value":421},"    cohort_day,\n",{"type":32,"tag":377,"props":423,"children":425},{"class":379,"line":424},4,[426,432,437,442,447,451],{"type":32,"tag":377,"props":427,"children":429},{"style":428},"--shiki-default:#79B8FF",[430],{"type":37,"value":431},"    COUNT",{"type":32,"tag":377,"props":433,"children":434},{"style":390},[435],{"type":37,"value":436},"(",{"type":32,"tag":377,"props":438,"children":439},{"style":384},[440],{"type":37,"value":441},"DISTINCT",{"type":32,"tag":377,"props":443,"children":444},{"style":390},[445],{"type":37,"value":446}," user_id) ",{"type":32,"tag":377,"props":448,"children":449},{"style":384},[450],{"type":37,"value":398},{"type":32,"tag":377,"props":452,"children":453},{"style":390},[454],{"type":37,"value":455}," users,\n",{"type":32,"tag":377,"props":457,"children":459},{"class":379,"line":458},5,[460,465,470,474],{"type":32,"tag":377,"props":461,"children":462},{"style":428},[463],{"type":37,"value":464},"    AVG",{"type":32,"tag":377,"props":466,"children":467},{"style":390},[468],{"type":37,"value":469},"(session_count_7d) ",{"type":32,"tag":377,"props":471,"children":472},{"style":384},[473],{"type":37,"value":398},{"type":32,"tag":377,"props":475,"children":476},{"style":390},[477],{"type":37,"value":478}," avg_sessions,\n",{"type":32,"tag":377,"props":480,"children":482},{"class":379,"line":481},6,[483,487,492,496],{"type":32,"tag":377,"props":484,"children":485},{"style":428},[486],{"type":37,"value":464},{"type":32,"tag":377,"props":488,"children":489},{"style":390},[490],{"type":37,"value":491},"(hard_currency) ",{"type":32,"tag":377,"props":493,"children":494},{"style":384},[495],{"type":37,"value":398},{"type":32,"tag":377,"props":497,"children":498},{"style":390},[499],{"type":37,"value":500}," avg_currency\n",{"type":32,"tag":377,"props":502,"children":504},{"class":379,"line":503},7,[505,510],{"type":32,"tag":377,"props":506,"children":507},{"style":384},[508],{"type":37,"value":509},"  FROM",{"type":32,"tag":377,"props":511,"children":512},{"style":390},[513],{"type":37,"value":514}," user_metrics\n",{"type":32,"tag":377,"props":516,"children":517},{"class":379,"line":26},[518,523,528,533,538,543],{"type":32,"tag":377,"props":519,"children":520},{"style":384},[521],{"type":37,"value":522},"  WHERE",{"type":32,"tag":377,"props":524,"children":525},{"style":390},[526],{"type":37,"value":527}," last_session ",{"type":32,"tag":377,"props":529,"children":530},{"style":384},[531],{"type":37,"value":532},">=",{"type":32,"tag":377,"props":534,"children":535},{"style":390},[536],{"type":37,"value":537}," CURRENT_DATE ",{"type":32,"tag":377,"props":539,"children":540},{"style":384},[541],{"type":37,"value":542},"-",{"type":32,"tag":377,"props":544,"children":545},{"style":428},[546],{"type":37,"value":547}," 7\n",{"type":32,"tag":377,"props":549,"children":551},{"class":379,"line":550},9,[552,557],{"type":32,"tag":377,"props":553,"children":554},{"style":384},[555],{"type":37,"value":556},"  GROUP BY",{"type":32,"tag":377,"props":558,"children":559},{"style":390},[560],{"type":37,"value":561}," cohort_day\n",{"type":32,"tag":377,"props":563,"children":565},{"class":379,"line":564},10,[566],{"type":32,"tag":377,"props":567,"children":568},{"style":390},[569],{"type":37,"value":570},"),\n",{"type":32,"tag":377,"props":572,"children":574},{"class":379,"line":573},11,[575,580,584],{"type":32,"tag":377,"props":576,"children":577},{"style":390},[578],{"type":37,"value":579},"event_candidates ",{"type":32,"tag":377,"props":581,"children":582},{"style":384},[583],{"type":37,"value":398},{"type":32,"tag":377,"props":585,"children":586},{"style":390},[587],{"type":37,"value":403},{"type":32,"tag":377,"props":589,"children":591},{"class":379,"line":590},12,[592],{"type":32,"tag":377,"props":593,"children":594},{"style":384},[595],{"type":37,"value":412},{"type":32,"tag":377,"props":597,"children":599},{"class":379,"line":598},13,[600],{"type":32,"tag":377,"props":601,"children":602},{"style":390},[603],{"type":37,"value":604},"    event_id,\n",{"type":32,"tag":377,"props":606,"children":608},{"class":379,"line":607},14,[609],{"type":32,"tag":377,"props":610,"children":611},{"style":390},[612],{"type":37,"value":613},"    event_type,\n",{"type":32,"tag":377,"props":615,"children":617},{"class":379,"line":616},15,[618],{"type":32,"tag":377,"props":619,"children":620},{"style":390},[621],{"type":37,"value":622},"    duration,\n",{"type":32,"tag":377,"props":624,"children":626},{"class":379,"line":625},16,[627],{"type":32,"tag":377,"props":628,"children":629},{"style":390},[630],{"type":37,"value":631},"    cooldown_min,\n",{"type":32,"tag":377,"props":633,"children":635},{"class":379,"line":634},17,[636],{"type":32,"tag":377,"props":637,"children":638},{"style":390},[639],{"type":37,"value":640},"    target_cohort_min,\n",{"type":32,"tag":377,"props":642,"children":644},{"class":379,"line":643},18,[645],{"type":32,"tag":377,"props":646,"children":647},{"style":390},[648],{"type":37,"value":649},"    target_cohort_max,\n",{"type":32,"tag":377,"props":651,"children":653},{"class":379,"line":652},19,[654],{"type":32,"tag":377,"props":655,"children":656},{"style":390},[657],{"type":37,"value":658},"    monetization_flag,\n",{"type":32,"tag":377,"props":660,"children":662},{"class":379,"line":661},20,[663,668,673,679,684,688],{"type":32,"tag":377,"props":664,"children":665},{"style":428},[666],{"type":37,"value":667},"    COALESCE",{"type":32,"tag":377,"props":669,"children":670},{"style":390},[671],{"type":37,"value":672},"(last_run_date, ",{"type":32,"tag":377,"props":674,"children":676},{"style":675},"--shiki-default:#9ECBFF",[677],{"type":37,"value":678},"'2020-01-01'",{"type":32,"tag":377,"props":680,"children":681},{"style":390},[682],{"type":37,"value":683},") ",{"type":32,"tag":377,"props":685,"children":686},{"style":384},[687],{"type":37,"value":398},{"type":32,"tag":377,"props":689,"children":690},{"style":390},[691],{"type":37,"value":692}," last_run\n",{"type":32,"tag":377,"props":694,"children":696},{"class":379,"line":695},21,[697,701],{"type":32,"tag":377,"props":698,"children":699},{"style":384},[700],{"type":37,"value":509},{"type":32,"tag":377,"props":702,"children":703},{"style":390},[704],{"type":37,"value":705}," live_ops_events\n",{"type":32,"tag":377,"props":707,"children":709},{"class":379,"line":708},22,[710],{"type":32,"tag":377,"props":711,"children":712},{"style":384},[713],{"type":37,"value":714},"  WHERE\n",{"type":32,"tag":377,"props":716,"children":718},{"class":379,"line":717},23,[719,724,728,733,737,741,745,749],{"type":32,"tag":377,"props":720,"children":721},{"style":390},[722],{"type":37,"value":723},"    CURRENT_DATE ",{"type":32,"tag":377,"props":725,"children":726},{"style":384},[727],{"type":37,"value":542},{"type":32,"tag":377,"props":729,"children":730},{"style":428},[731],{"type":37,"value":732}," COALESCE",{"type":32,"tag":377,"props":734,"children":735},{"style":390},[736],{"type":37,"value":672},{"type":32,"tag":377,"props":738,"children":739},{"style":675},[740],{"type":37,"value":678},{"type":32,"tag":377,"props":742,"children":743},{"style":390},[744],{"type":37,"value":683},{"type":32,"tag":377,"props":746,"children":747},{"style":384},[748],{"type":37,"value":532},{"type":32,"tag":377,"props":750,"children":751},{"style":390},[752],{"type":37,"value":753}," cooldown_min\n",{"type":32,"tag":377,"props":755,"children":757},{"class":379,"line":756},24,[758],{"type":32,"tag":377,"props":759,"children":760},{"style":390},[761],{"type":37,"value":762},")\n",{"type":32,"tag":377,"props":764,"children":766},{"class":379,"line":765},25,[767],{"type":32,"tag":377,"props":768,"children":769},{"style":384},[770],{"type":37,"value":771},"SELECT\n",{"type":32,"tag":377,"props":773,"children":775},{"class":379,"line":774},26,[776,781,786,791],{"type":32,"tag":377,"props":777,"children":778},{"style":428},[779],{"type":37,"value":780},"  ec",{"type":32,"tag":377,"props":782,"children":783},{"style":390},[784],{"type":37,"value":785},".",{"type":32,"tag":377,"props":787,"children":788},{"style":428},[789],{"type":37,"value":790},"event_id",{"type":32,"tag":377,"props":792,"children":793},{"style":390},[794],{"type":37,"value":795},",\n",{"type":32,"tag":377,"props":797,"children":799},{"class":379,"line":798},27,[800,804,808,812],{"type":32,"tag":377,"props":801,"children":802},{"style":428},[803],{"type":37,"value":780},{"type":32,"tag":377,"props":805,"children":806},{"style":390},[807],{"type":37,"value":785},{"type":32,"tag":377,"props":809,"children":810},{"style":428},[811],{"type":37,"value":334},{"type":32,"tag":377,"props":813,"children":814},{"style":390},[815],{"type":37,"value":795},{"type":32,"tag":377,"props":817,"children":819},{"class":379,"line":818},28,[820,824,828,832],{"type":32,"tag":377,"props":821,"children":822},{"style":428},[823],{"type":37,"value":780},{"type":32,"tag":377,"props":825,"children":826},{"style":390},[827],{"type":37,"value":785},{"type":32,"tag":377,"props":829,"children":830},{"style":428},[831],{"type":37,"value":342},{"type":32,"tag":377,"props":833,"children":834},{"style":390},[835],{"type":37,"value":795},{"type":32,"tag":377,"props":837,"children":839},{"class":379,"line":838},29,[840,845,849,854,858,863,867,871],{"type":32,"tag":377,"props":841,"children":842},{"style":428},[843],{"type":37,"value":844},"  SUM",{"type":32,"tag":377,"props":846,"children":847},{"style":390},[848],{"type":37,"value":436},{"type":32,"tag":377,"props":850,"children":851},{"style":428},[852],{"type":37,"value":853},"cs",{"type":32,"tag":377,"props":855,"children":856},{"style":390},[857],{"type":37,"value":785},{"type":32,"tag":377,"props":859,"children":860},{"style":428},[861],{"type":37,"value":862},"users",{"type":32,"tag":377,"props":864,"children":865},{"style":390},[866],{"type":37,"value":683},{"type":32,"tag":377,"props":868,"children":869},{"style":384},[870],{"type":37,"value":398},{"type":32,"tag":377,"props":872,"children":873},{"style":390},[874],{"type":37,"value":875}," eligible_users,\n",{"type":32,"tag":377,"props":877,"children":879},{"class":379,"line":878},30,[880,885,889,893,897,902,906,910],{"type":32,"tag":377,"props":881,"children":882},{"style":428},[883],{"type":37,"value":884},"  AVG",{"type":32,"tag":377,"props":886,"children":887},{"style":390},[888],{"type":37,"value":436},{"type":32,"tag":377,"props":890,"children":891},{"style":428},[892],{"type":37,"value":853},{"type":32,"tag":377,"props":894,"children":895},{"style":390},[896],{"type":37,"value":785},{"type":32,"tag":377,"props":898,"children":899},{"style":428},[900],{"type":37,"value":901},"avg_sessions",{"type":32,"tag":377,"props":903,"children":904},{"style":390},[905],{"type":37,"value":683},{"type":32,"tag":377,"props":907,"children":908},{"style":384},[909],{"type":37,"value":398},{"type":32,"tag":377,"props":911,"children":912},{"style":390},[913],{"type":37,"value":914}," cohort_engagement,\n",{"type":32,"tag":377,"props":916,"children":918},{"class":379,"line":917},31,[919,923,927,931,935,940,944,948],{"type":32,"tag":377,"props":920,"children":921},{"style":428},[922],{"type":37,"value":884},{"type":32,"tag":377,"props":924,"children":925},{"style":390},[926],{"type":37,"value":436},{"type":32,"tag":377,"props":928,"children":929},{"style":428},[930],{"type":37,"value":853},{"type":32,"tag":377,"props":932,"children":933},{"style":390},[934],{"type":37,"value":785},{"type":32,"tag":377,"props":936,"children":937},{"style":428},[938],{"type":37,"value":939},"avg_currency",{"type":32,"tag":377,"props":941,"children":942},{"style":390},[943],{"type":37,"value":683},{"type":32,"tag":377,"props":945,"children":946},{"style":384},[947],{"type":37,"value":398},{"type":32,"tag":377,"props":949,"children":950},{"style":390},[951],{"type":37,"value":952}," cohort_wealth\n",{"type":32,"tag":377,"props":954,"children":956},{"class":379,"line":955},32,[957,962],{"type":32,"tag":377,"props":958,"children":959},{"style":384},[960],{"type":37,"value":961},"FROM",{"type":32,"tag":377,"props":963,"children":964},{"style":390},[965],{"type":37,"value":966}," event_candidates ec\n",{"type":32,"tag":377,"props":968,"children":970},{"class":379,"line":969},33,[971,976],{"type":32,"tag":377,"props":972,"children":973},{"style":384},[974],{"type":37,"value":975},"JOIN",{"type":32,"tag":377,"props":977,"children":978},{"style":390},[979],{"type":37,"value":980}," cohort_state cs\n",{"type":32,"tag":377,"props":982,"children":984},{"class":379,"line":983},34,[985,990,995,999,1004,1009,1014,1018,1023,1028,1032,1036],{"type":32,"tag":377,"props":986,"children":987},{"style":384},[988],{"type":37,"value":989},"  ON",{"type":32,"tag":377,"props":991,"children":992},{"style":428},[993],{"type":37,"value":994}," cs",{"type":32,"tag":377,"props":996,"children":997},{"style":390},[998],{"type":37,"value":785},{"type":32,"tag":377,"props":1000,"children":1001},{"style":428},[1002],{"type":37,"value":1003},"cohort_day",{"type":32,"tag":377,"props":1005,"children":1006},{"style":384},[1007],{"type":37,"value":1008}," BETWEEN",{"type":32,"tag":377,"props":1010,"children":1011},{"style":428},[1012],{"type":37,"value":1013}," ec",{"type":32,"tag":377,"props":1015,"children":1016},{"style":390},[1017],{"type":37,"value":785},{"type":32,"tag":377,"props":1019,"children":1020},{"style":428},[1021],{"type":37,"value":1022},"target_cohort_min",{"type":32,"tag":377,"props":1024,"children":1025},{"style":384},[1026],{"type":37,"value":1027}," AND",{"type":32,"tag":377,"props":1029,"children":1030},{"style":428},[1031],{"type":37,"value":1013},{"type":32,"tag":377,"props":1033,"children":1034},{"style":390},[1035],{"type":37,"value":785},{"type":32,"tag":377,"props":1037,"children":1038},{"style":428},[1039],{"type":37,"value":1040},"target_cohort_max\n",{"type":32,"tag":377,"props":1042,"children":1044},{"class":379,"line":1043},35,[1045],{"type":32,"tag":377,"props":1046,"children":1047},{"style":384},[1048],{"type":37,"value":1049},"WHERE\n",{"type":32,"tag":377,"props":1051,"children":1053},{"class":379,"line":1052},36,[1054,1059,1064,1068,1072,1077,1082,1087,1091,1095,1099,1104,1109],{"type":32,"tag":377,"props":1055,"children":1056},{"style":390},[1057],{"type":37,"value":1058},"  (",{"type":32,"tag":377,"props":1060,"children":1061},{"style":428},[1062],{"type":37,"value":1063},"ec",{"type":32,"tag":377,"props":1065,"children":1066},{"style":390},[1067],{"type":37,"value":785},{"type":32,"tag":377,"props":1069,"children":1070},{"style":428},[1071],{"type":37,"value":363},{"type":32,"tag":377,"props":1073,"children":1074},{"style":384},[1075],{"type":37,"value":1076}," =",{"type":32,"tag":377,"props":1078,"children":1079},{"style":428},[1080],{"type":37,"value":1081}," 0",{"type":32,"tag":377,"props":1083,"children":1084},{"style":384},[1085],{"type":37,"value":1086}," OR",{"type":32,"tag":377,"props":1088,"children":1089},{"style":428},[1090],{"type":37,"value":994},{"type":32,"tag":377,"props":1092,"children":1093},{"style":390},[1094],{"type":37,"value":785},{"type":32,"tag":377,"props":1096,"children":1097},{"style":428},[1098],{"type":37,"value":939},{"type":32,"tag":377,"props":1100,"children":1101},{"style":384},[1102],{"type":37,"value":1103}," >",{"type":32,"tag":377,"props":1105,"children":1106},{"style":428},[1107],{"type":37,"value":1108}," 500",{"type":32,"tag":377,"props":1110,"children":1111},{"style":390},[1112],{"type":37,"value":762},{"type":32,"tag":377,"props":1114,"children":1116},{"class":379,"line":1115},37,[1117,1122,1126,1130,1134,1138,1142,1146,1150,1154,1158,1162],{"type":32,"tag":377,"props":1118,"children":1119},{"style":384},[1120],{"type":37,"value":1121},"GROUP BY",{"type":32,"tag":377,"props":1123,"children":1124},{"style":428},[1125],{"type":37,"value":1013},{"type":32,"tag":377,"props":1127,"children":1128},{"style":390},[1129],{"type":37,"value":785},{"type":32,"tag":377,"props":1131,"children":1132},{"style":428},[1133],{"type":37,"value":790},{"type":32,"tag":377,"props":1135,"children":1136},{"style":390},[1137],{"type":37,"value":336},{"type":32,"tag":377,"props":1139,"children":1140},{"style":428},[1141],{"type":37,"value":1063},{"type":32,"tag":377,"props":1143,"children":1144},{"style":390},[1145],{"type":37,"value":785},{"type":32,"tag":377,"props":1147,"children":1148},{"style":428},[1149],{"type":37,"value":334},{"type":32,"tag":377,"props":1151,"children":1152},{"style":390},[1153],{"type":37,"value":336},{"type":32,"tag":377,"props":1155,"children":1156},{"style":428},[1157],{"type":37,"value":1063},{"type":32,"tag":377,"props":1159,"children":1160},{"style":390},[1161],{"type":37,"value":785},{"type":32,"tag":377,"props":1163,"children":1164},{"style":428},[1165],{"type":37,"value":1166},"duration\n",{"type":32,"tag":377,"props":1168,"children":1170},{"class":379,"line":1169},38,[1171,1176,1181],{"type":32,"tag":377,"props":1172,"children":1173},{"style":384},[1174],{"type":37,"value":1175},"ORDER BY",{"type":32,"tag":377,"props":1177,"children":1178},{"style":390},[1179],{"type":37,"value":1180}," cohort_engagement ",{"type":32,"tag":377,"props":1182,"children":1183},{"style":384},[1184],{"type":37,"value":1185},"DESC\n",{"type":32,"tag":377,"props":1187,"children":1189},{"class":379,"line":1188},39,[1190,1195,1200],{"type":32,"tag":377,"props":1191,"children":1192},{"style":384},[1193],{"type":37,"value":1194},"LIMIT",{"type":32,"tag":377,"props":1196,"children":1197},{"style":428},[1198],{"type":37,"value":1199}," 1",{"type":32,"tag":377,"props":1201,"children":1202},{"style":390},[1203],{"type":37,"value":1204},";\n",{"type":32,"tag":33,"props":1206,"children":1207},{},[1208],{"type":37,"value":1209},"Questa query ogni giorno seleziona l'evento più appropriato: il cooldown è passato, l'intervallo di coorte è compatibile, se l'evento è di monetizzazione la valuta del giocatore è sopra la soglia. L'output va direttamente allo scheduler degli eventi.",{"type":32,"tag":40,"props":1211,"children":1213},{"id":1212},"retention-engineering-legare-il-modello-di-churn-al-loop-degli-eventi",[1214],{"type":37,"value":1215},"Retention Engineering: Legare il Modello di Churn al Loop degli Eventi",{"type":32,"tag":33,"props":1217,"children":1218},{},[1219,1221,1227],{"type":37,"value":1220},"Per trasformare il calendario live ops in un sistema di retention engineering, è necessario integrare il modello di previsione del churn nel loop di selezione degli eventi. Per ogni giocatore si calcola il rischio di churn a 7 giorni (",{"type":32,"tag":57,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":37,"value":1226},"P(churn_D7)",{"type":37,"value":1228},"), e a coorti ad alto rischio si aprono eventi speciali.",{"type":32,"tag":33,"props":1230,"children":1231},{},[1232,1234,1240],{"type":37,"value":1233},"Ad esempio, se un giocatore ha ",{"type":32,"tag":57,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":37,"value":1239},"P(churn_D7) > 0.35",{"type":37,"value":1241}," e non ha effettuato sessioni negli ultimi 3 giorni, si attiva un \"evento di win-back\" — questo evento è leggero (completabile in 15 minuti), il premio è garantito, nessuna monetizzazione. Questi tipi di evento riducono il churn del 18% (il numero nel titolo viene da qui). Il modello di previsione del churn può essere regressione logistica, gradient boosting o LSTM — l'importante è che l'output del modello sia usato come condizione di trigger dell'evento.",{"type":32,"tag":33,"props":1243,"children":1244},{},[1245,1247,1252,1254,1259],{"type":37,"value":1246},"Quando si integra il modello di churn nel loop degli eventi, due metriche devono essere monitorate: ",{"type":32,"tag":293,"props":1248,"children":1249},{},[1250],{"type":37,"value":1251},"lift",{"type":37,"value":1253}," (riduzione del rischio di churn dopo l'evento) e ",{"type":32,"tag":293,"props":1255,"children":1256},{},[1257],{"type":37,"value":1258},"CAC-equivalente",{"type":37,"value":1260}," (costo dell'evento di win-back diviso il costo di acquisizione di un nuovo utente). Se il lift è sotto il 15%, il design dell'evento deve essere modificato; se il CAC-equivalente è sopra 0.3 (cioè il costo del win-back è il 30% del costo di UA), l'evento dovrebbe essere sospeso.",{"type":32,"tag":71,"props":1262,"children":1264},{"id":1263},"modello-di-stima-del-participation-rate",[1265],{"type":37,"value":1266},"Modello di Stima del Participation Rate",{"type":32,"tag":33,"props":1268,"children":1269},{},[1270],{"type":37,"value":1271},"Prevedere quanti giocatori parteciperanno quando si apre un evento è critico per la pianificazione della capacità. Un modello semplice:",{"type":32,"tag":367,"props":1273,"children":1275},{"code":1274},"participation_rate = base_rate × (1 + reward_multiplier) × (1 - fatigue_penalty)\n\nfatigue_penalty = max(0, (days_since_last_event - optimal_gap) \u002F optimal_gap × 0.15)\n",[1276],{"type":32,"tag":57,"props":1277,"children":1278},{"__ignoreMap":16},[1279],{"type":37,"value":1274},{"type":32,"tag":33,"props":1281,"children":1282},{},[1283,1285,1291,1293,1299,1301,1307],{"type":37,"value":1284},"Ad esempio, base participation 32%, il premio è aumentato del 20% quindi ",{"type":32,"tag":57,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":37,"value":1290},"reward_multiplier = 0.2",{"type":37,"value":1292},", l'intervallo ottimale è 10 giorni ma l'evento si apre dopo 6 giorni quindi ",{"type":32,"tag":57,"props":1294,"children":1296},{"className":1295},[],[1297],{"type":37,"value":1298},"fatigue_penalty = (10-6)\u002F10 × 0.15 = 0.06",{"type":37,"value":1300},". Participation finale: ",{"type":32,"tag":57,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":37,"value":1306},"0.32 × 1.2 × 0.94 = %36.1",{"type":37,"value":1308},". Questa stima determina il carico del server e il budget dei contenuti dell'evento.",{"type":32,"tag":40,"props":1310,"children":1312},{"id":1311},"collegare-la-crescita-esterna-a-live-ops",[1313],{"type":37,"value":1314},"Collegare la Crescita Esterna a Live Ops",{"type":32,"tag":33,"props":1316,"children":1317},{},[1318,1320,1329],{"type":37,"value":1319},"Live ops non è solo un meccanismo di retention in-game, è anche parte della strategia di ",{"type":32,"tag":1321,"props":1322,"children":1326},"a",{"href":1323,"rel":1324},"https:\u002F\u002Fwww.roibase.com.tr\u002Fit\u002Faso",[1325],"nofollow",[1327],{"type":37,"value":1328},"App Store Optimization",{"type":37,"value":1330}," e UA. Gli eventi stagionali possono essere testati con custom product page (CPP) e usati nei creativi delle campagne Apple Search Ads. Ad esempio, se l'evento Ramadan sulla CPP converte il 42% più degli altri periodi, il 30% del budget UA dovrebbe essere spostato a questa finestra di evento.",{"type":32,"tag":33,"props":1332,"children":1333},{},[1334],{"type":37,"value":1335},"Il calendario degli eventi dovrebbe essere sincronizzato con il calendario UA: un grande evento dovrebbe essere annunciato 2 settimane prima e il messaging di UA dovrebbe includere \"nuovo contenuto in arrivo\". Quando l'evento inizia, se lo spike di install non si trasforma in retention (D7 retention non aumenta di +%5 rispetto a prima dell'evento), l'allineamento evento-UA è rotto. In questo caso, l'integrazione dell'evento nell'onboarding deve essere rivista — il nuovo utente deve essere esposto all'evento entro 24 ore, altrimenti la spesa UA va sprecata.",{"type":32,"tag":1337,"props":1338,"children":1339},"hr",{},[],{"type":32,"tag":33,"props":1341,"children":1342},{},[1343],{"type":37,"value":1344},"Per trasformare il calendario live ops in un sistema di retention engineering, la cadence degli eventi deve essere ottimizzata con il modello Markov, la profondità del contenuto con architettura di branching, l'equilibrio di monetizzazione con distribuzione di ricchezza di coorte. Il modello di previsione del churn deve essere usato come trigger degli eventi e integrato in uno scheduler basato su SQL — quando tutto questo è fatto, il churn scende del 18%. Live ops non è più \"riempire il calendario\", è un loop che continuamente legge lo stato di coorte e seleziona l'evento ottimale. Se uno studio non fa questo, il suo LTV raggiunge un tetto.",{"type":32,"tag":1346,"props":1347,"children":1348},"style",{},[1349],{"type":37,"value":1350},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":415,"depth":415,"links":1352},[1353,1356,1357,1360,1361,1364],{"id":42,"depth":406,"text":45,"children":1354},[1355],{"id":73,"depth":415,"text":76},{"id":92,"depth":406,"text":95},{"id":273,"depth":406,"text":276,"children":1358},[1359],{"id":309,"depth":415,"text":312},{"id":320,"depth":406,"text":323},{"id":1212,"depth":406,"text":1215,"children":1362},[1363],{"id":1263,"depth":415,"text":1266},{"id":1311,"depth":406,"text":1314},"markdown","content:it:gaming:calendario-live-ops-retention-engineering-churn-18.md","content","it\u002Fgaming\u002Fcalendario-live-ops-retention-engineering-churn-18.md","it\u002Fgaming\u002Fcalendario-live-ops-retention-engineering-churn-18","md",1785189895105]