[{"data":1,"prerenderedAt":1371},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction":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":11,"_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,"","Live Ops Calendar: Retention Engineering с снижением Churn на 18%","Data-driven стратегия live ops для оптимизации event cadence, content depth и баланса monetization-retention через Markov cohort модель, снижающая churn на 18%.","2026-07-24",[21,22,23,24,25],"live-ops","retention-engineering","churn-optimization","mobile-gaming","f2p-monetization",9,"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","В мобильных F2P играх предположение, что live ops — это \"постоянно выпускать новое\" уже в 2026 году неактуально. Большинство студий рассматривают события как наполнение календаря — тогда как правильная event cadence, глубина контента и баланс monetization-retention, оптимизированные через Markov cohort модель, снижают churn на 18%. Live ops — это уже не календарь, а система retention engineering.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"event-cadence-стоимость-случайного-подхода",[44],{"type":37,"value":45},"Event Cadence: Стоимость Случайного Подхода",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Большинство студий строят еженедельную ротацию событий по логике \"в каждую неделю что-то новое\". У этого подхода две проблемы: во-первых, частота событий не калибруется по динамике когорт, во-вторых, баланс между monetization событием и engagement событием строится на предположениях.",{"type":32,"tag":33,"props":52,"children":53},{},[54,56,63],{"type":37,"value":55},"В Markov cohort модели каждый тип события (seasonal, monetization, progression) определяется как состояние. Вероятность перехода игрока от одного события к другому рассчитывается по формуле ",{"type":32,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":37,"value":62},"P(event_j | event_i, session_gap)",{"type":37,"value":64},". Эта матрица переходов показывает риск события усталости (event fatigue) и оптимальное окно возврата. Например, если студия запустит progression событие в течение 72 часов после gacha события, churn вырастает на 12% — потому что инвентарь игрока еще не обработан. При промежутке в 120 часов churn снижается на 8%.",{"type":32,"tag":33,"props":66,"children":67},{},[68],{"type":37,"value":69},"Для оптимизации event cadence нужно отдельно моделировать D1\u002FD3\u002FD7 когорты. Для D1 когорты event exposure должна быть 0% — открытие event UI до завершения onboarding'а снижает retention на 22% (бенчмарк Deconstructor of Fun 2025). Для D3 когорты первое событие должно быть mini-progression событием (+9% retention), для D7+ можно открыть monetization событие. Event календарь должен быть разработан не как единый цикл, а как cohort-state матрица.",{"type":32,"tag":71,"props":72,"children":74},"h3",{"id":73},"как-найти-порог-event-fatigue",[75],{"type":37,"value":76},"Как Найти Порог Event Fatigue",{"type":32,"tag":33,"props":78,"children":79},{},[80,82,88],{"type":37,"value":81},"Event fatigue измеряется через ratio ",{"type":32,"tag":57,"props":83,"children":85},{"className":84},[],[86],{"type":37,"value":87},"session_gap \u002F event_duration",{"type":37,"value":89},". Когда ratio падает ниже 2 (например, 3-дневное событие, новое событие через 5 дней), ARPU игрока падает на 14%. Оптимальный ratio 3.5-4.5 — то есть оставить промежуток в 3.5-4.5 раза больше длительности события после его завершения. Этот промежуток должен заполняться progression системой, иначе churn растет.",{"type":32,"tag":40,"props":91,"children":93},{"id":92},"content-depth-конфликт-между-длительностью-и-engagement",[94],{"type":37,"value":95},"Content Depth: Конфликт между Длительностью и Engagement",{"type":32,"tag":33,"props":97,"children":98},{},[99],{"type":37,"value":100},"Длительные события не дают больше engagement — они дают измеримую глубину. 7-дневное событие не на 40% длиннее 3-дневного, оно увеличивает ежедневное обязательство игрока. Но если глубина спроектирована неправильно, в последние 2 дня события engagement падает на 60%.",{"type":32,"tag":33,"props":102,"children":103},{},[104],{"type":37,"value":105},"Для определения content depth нужно разбить событие на атомарные задачи и измерить время выполнения каждой. Например, в battlepass с 50 уровнями, если игрок в среднем завершает 4 уровня в день, событие минимум должно длиться 12.5 дней — но это \"минимум завершения\", не глубина. Для глубины нужно добавить буфер в 20% (15 дней). Если событие короче 15 дней, 35% игроков будут кликать по tier'ам в последние 2 дня механически, и восприятие ценности упадет.",{"type":32,"tag":33,"props":107,"children":108},{},[109],{"type":37,"value":110},"Второе измерение content depth — это \"branching\". Вместо единой linear прогрессии параллельные треки (PvE + PvP + crafting) увеличивают ежедневное время игры на 18%. Но если треков больше 4, игрок теряется в UI и churn растет на 11%. Оптимальная архитектура: 3 параллельных трека + 1 общий финальный milestone.",{"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},"Event Тип",{"type":32,"tag":124,"props":130,"children":131},{},[132],{"type":37,"value":133},"Кол-во Треков",{"type":32,"tag":124,"props":135,"children":136},{},[137],{"type":37,"value":138},"Avg Daily Playtime (мин)",{"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},"Linear (1 трек)",{"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},"Dual track",{"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},"Triple track",{"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},"Quad track",{"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},"Таблица — cohort data из 8 mid-core игр Q4 2025 (источник: GameRefinery Retention Toolkit). Triple track показывает оптимальное соотношение completion и retention — quad track падает из-за UI complexity.",{"type":32,"tag":40,"props":272,"children":274},{"id":273},"баланс-monetization-retention-стоимость-iap-события",[275],{"type":37,"value":276},"Баланс Monetization-Retention: Стоимость IAP события",{"type":32,"tag":33,"props":278,"children":279},{},[280],{"type":37,"value":281},"Monetization событие (limited offer, gacha banner, discount bundle) короткосрочно растит ARPU, но имеет асимметричный эффект на retention. IAP событие может снизить D7 retention на 3-5% — потому что игрок ускоряет потребление контента после покупки и раньше достигает плато.",{"type":32,"tag":33,"props":283,"children":284},{},[285],{"type":37,"value":286},"Для баланса нужно в calendar держать ratio \"monetization window\" к \"progression window\" как 1:2.5. То есть в месяце из 4 недель — 1.5 недели monetization событий, 2.5 недели progression\u002Fengagement событий. Когда ratio нарушается (например, monetization событие каждую неделю), perceived \"pay-to-win pressure\" скор игрока растет и органическая retention падает на 16%.",{"type":32,"tag":33,"props":288,"children":289},{},[290,292,298,300,305],{"type":37,"value":291},"Чтобы monetization событие было безопасным для retention, два механика критичны: ",{"type":32,"tag":293,"props":294,"children":295},"strong",{},[296],{"type":37,"value":297},"во-первых",{"type":37,"value":299},", не открывать новый контент сразу после IAP — дать игроку время на интеграцию купленного (72-96 часов промежутка). ",{"type":32,"tag":293,"props":301,"children":302},{},[303],{"type":37,"value":304},"Во-вторых",{"type":37,"value":306},", связать ревард monetization события с progression событием. Например, если игрок после gacha баннера может левелировать нового персонажа только через progression событие, IAP + engagement взаимно блокируются, и churn снижается.",{"type":32,"tag":71,"props":308,"children":310},{"id":309},"timing-hard-currency-sink",[311],{"type":37,"value":312},"Timing Hard Currency Sink",{"type":32,"tag":33,"props":314,"children":315},{},[316],{"type":37,"value":317},"Hard currency событие (алмазы, gem) нужно синхронизировать с количеством валюты в инвентаре. Когда баланс игрока превышает медиану на 120%, запуск spend события растит ARPU на 31%. Если баланс ниже 60% медианы, spend событие растит churn на 9% — игрок чувствует себя отстранённо (\"я себе это позволить не могу\"). Еженедельно снимать histogram валютного распределения и по нему синхронизировать события — это позвоночник monetization-retention баланса.",{"type":32,"tag":40,"props":319,"children":321},{"id":320},"построение-live-ops-calendar-через-sql",[322],{"type":37,"value":323},"Построение Live Ops Calendar через SQL",{"type":32,"tag":33,"props":325,"children":326},{},[327,329,335,337,343,344,350,351,357,358,364],{"type":37,"value":328},"Вместо Excel'я для live ops календаря нужно моделировать события как state machine в SQL. Каждое событие задается через ",{"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},". Скрипт ежедневно читает cohort distribution и выбирает оптимальное событие.",{"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,549,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":518},{"class":379,"line":517},8,[519,524,529,534,539,544],{"type":32,"tag":377,"props":520,"children":521},{"style":384},[522],{"type":37,"value":523},"  WHERE",{"type":32,"tag":377,"props":525,"children":526},{"style":390},[527],{"type":37,"value":528}," last_session ",{"type":32,"tag":377,"props":530,"children":531},{"style":384},[532],{"type":37,"value":533},">=",{"type":32,"tag":377,"props":535,"children":536},{"style":390},[537],{"type":37,"value":538}," CURRENT_DATE ",{"type":32,"tag":377,"props":540,"children":541},{"style":384},[542],{"type":37,"value":543},"-",{"type":32,"tag":377,"props":545,"children":546},{"style":428},[547],{"type":37,"value":548}," 7\n",{"type":32,"tag":377,"props":550,"children":551},{"class":379,"line":26},[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":543},{"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":533},{"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},"Этот query выбирает каждый день оптимальное событие: cooldown прошёл, cohort range совпадает, если monetization событие — валюта игроков выше threshold'а. Output идет прямо в event scheduler.",{"type":32,"tag":40,"props":1211,"children":1213},{"id":1212},"retention-engineering-связь-churn-model-с-event-loop",[1214],{"type":37,"value":1215},"Retention Engineering: Связь Churn Model с Event Loop",{"type":32,"tag":33,"props":1217,"children":1218},{},[1219,1221,1227],{"type":37,"value":1220},"Чтобы live ops calendar превратить в систему retention engineering, нужно интегрировать churn prediction модель в event selection loop. Для каждого игрока рассчитывается 7-дневный риск churn (",{"type":32,"tag":57,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":37,"value":1226},"P(churn_D7)",{"type":37,"value":1228},"), для рискованной когорты открывается специальное событие.",{"type":32,"tag":33,"props":1230,"children":1231},{},[1232,1234,1240],{"type":37,"value":1233},"Например, если у игрока ",{"type":32,"tag":57,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":37,"value":1239},"P(churn_D7) > 0.35",{"type":37,"value":1241}," и за последние 3 дня нет session'ов, срабатывает \"win-back event\" — это лёгкое событие (15 минут на завершение), гарантированный ревард, без монетизации. Такие события снижают churn на 18% (вот откуда цифра в заголовке). Churn prediction модель может быть logistic regression, gradient boosting или LSTM — главное, чтобы output была condition для trigger события.",{"type":32,"tag":33,"props":1243,"children":1244},{},[1245,1247,1252,1254,1259],{"type":37,"value":1246},"При связи churn модели с event loop нужно мониторить две метрики: ",{"type":32,"tag":293,"props":1248,"children":1249},{},[1250],{"type":37,"value":1251},"lift",{"type":37,"value":1253}," (снижение риска churn после события) и ",{"type":32,"tag":293,"props":1255,"children":1256},{},[1257],{"type":37,"value":1258},"CAC-equivalent",{"type":37,"value":1260}," (стоимость win-back события к стоимости UA). Если lift ниже 15%, дизайн события нужно менять, если CAC-equivalent выше 0.3 (win-back дороже 30% от UA), событие нужно убрать.",{"type":32,"tag":71,"props":1262,"children":1264},{"id":1263},"модель-прогноза-event-participation-rate",[1265],{"type":37,"value":1266},"Модель Прогноза Event Participation Rate",{"type":32,"tag":33,"props":1268,"children":1269},{},[1270],{"type":37,"value":1271},"Когда событие запускается, нужно предсказать, сколько игроков в нём участвуют — это критично для планирования ресурсов. Простая модель:",{"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},"Например, base participation 32%, ревард увеличен на 20% (",{"type":32,"tag":57,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":37,"value":1290},"reward_multiplier = 0.2",{"type":37,"value":1292},"), оптимальный gap 10 дней, а событие открыто через 6 дней, то ",{"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: ",{"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},". Этот прогноз определяет server load и content budget события.",{"type":32,"tag":40,"props":1310,"children":1312},{"id":1311},"связь-роста-вне-игры-с-live-ops",[1313],{"type":37,"value":1314},"Связь Роста вне Игры с Live Ops",{"type":32,"tag":33,"props":1316,"children":1317},{},[1318,1320,1329],{"type":37,"value":1319},"Live ops — это не только in-game retention механика, но и часть ",{"type":32,"tag":1321,"props":1322,"children":1326},"a",{"href":1323,"rel":1324},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Faso",[1325],"nofollow",[1327],{"type":37,"value":1328},"App Store Optimization",{"type":37,"value":1330}," и UA стратегии. Seasonal события тестируются на custom product page (CPP) и используются в креативах Apple Search Ads. Например, если Ramadan событие на CPP дает конверсию на 42% выше, 30% UA бюджета должно быть перенесено на это окно события.",{"type":32,"tag":33,"props":1332,"children":1333},{},[1334],{"type":37,"value":1335},"Event календарь должен синхронизироваться с UA календарём: за 2 недели до большого события нужно начать промо с messaging'ом \"идёт новый контент\". Когда событие стартует, установка должна конвертироваться в retention — если D7 retention не растет на +5% от уровня до события, event-UA alignment нарушен. В этом случае нужно пересмотреть интеграцию события в onboarding — новый юзер должен видеть событие в течение 24 часов после установки, иначе UA spend теряется впустую.",{"type":32,"tag":1337,"props":1338,"children":1339},"hr",{},[],{"type":32,"tag":33,"props":1341,"children":1342},{},[1343],{"type":37,"value":1344},"Чтобы превратить live ops calendar в систему retention engineering, нужно оптимизировать event cadence через Markov модель, content depth через branching архитектуру, monetization баланс через cohort wealth distribution. Churn prediction модель должна быть trigger'ом для событий и интегрирована в SQL-based scheduler — при таком подходе churn падает на 18%. Live ops — это уже не \"наполнить календарь\", а постоянный loop, который читает state когорты и выбирает оптимальное событие. Если студия этого не делает, она упирается в LTV ceiling.",{"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:ru:gaming:live-ops-calendar-retention-engineering-churn-reduction.md","content","ru\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction.md","ru\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction","md",1785189899373]