Программа лояльности для постоянных игроков сервера
Полгода растишь сообщество, а половина игроков заходит один раз и пропадает — знакомая картина. Удерживает не реклама и не ивент раз в месяц, а ощущение, что тебя здесь помнят и ценят за то, что ты возвращаешься. Ниже — рабочая схема программы лояльности: playtime rewards за ежедневный вход, звания за стаж, реферальная система за друзей, и как не скатить всё это в банальный pay2win, где решает не скилл, а количество залогиненных часов.
Содержание
- Зачем вообще нужна программа лояльности
- Playtime rewards: бонусы за онлайн-время и ежедневный вход
- Звания и роли за стаж, а не только за донат
- Реферальная программа: награда за приведённого друга
- Как не превратить лояльность в pay2win
- Экономика наград: откуда брать монеты и предметы, чтобы не сломать баланс сервера
- Настройка и мониторинг: конфиги, база данных, антифрод
Зачем вообще нужна программа лояльности
Если сервер живёт больше пары месяцев, ты уже видел этот паттерн: новички приходят волнами (обычно после рекламы или вайпа), первую неделю активны, а дальше костяк редеет до 10-20% от изначального наплыва. Программа лояльности не решает проблему притока — это отдельная задача (реклама, SEO, сарафан), но она напрямую бьёт по удержанию: чем дольше игрок в системе поощрений, тем дороже ему уйти на другой сервер и начать «прокачку репутации» заново.
Есть и обратная сторона: криво настроенная система лояльности убивает конкурентность. Если новичок физически не может догнать старожила по ресурсам за разумное время — сервер превращается в клуб по интересам для трёх кланов, а остальные молча уходят. Задача — наградить постоянство, а не создать сословную систему.
Playtime rewards: бонусы за онлайн-время и ежедневный вход
Базовый механизм — учёт наигранного времени и выдача наград за пороги. Для Minecraft самый простой и проверенный вариант — связка EssentialsX + плагин учёта времени, например PlayTimeRewards или AmethystPlaytime (Spigot/Paper, работает через события входа/выхода и хранит накопленное время в SQLite или MySQL). Логика простая: плагин суммирует секунды онлайна на аккаунт, при достижении порога выдаёт команду через консоль (выдача предмета, ранга, доступа к разделу).
Пример конфигурации на Paper-сервере (plugins/PlayTimeRewards/config.yml):
rewards:
1h:
time-seconds: 3600
commands:
- "give %player% minecraft:diamond 2"
- "tell %player% Спасибо, что заглянул! Держи алмазы."
10h:
time-seconds: 36000
commands:
- "lp user %player% permission set essentials.kits.veteran true"
50h:
time-seconds: 180000
commands:
- "lp user %player% parent add veteran"
- "eco give %player% 5000"
Отдельно стоит настроить ежедневный вход (daily login streak) — это отличается от playtime тем, что важен факт захода, а не часы онлайна. Для этого подходит DailyRewards или связка с Vault для экономики: игрок заходит раз в сутки — получает нарастающий бонус (день 1 — 100 монет, день 7 — сундук с редкими ресурсами, дальше цикл сбрасывается). Это удерживает даже тех, кто заходит на 10 минут проверить базу — привычка «зайти и получить» работает лучше, чем чистый грайнд часов.
Для Rust аналогичную роль играет Economics + Rewards из экосистемы Oxide/uMod: очки лояльности начисляются за время на сервере и меняются на предметы через /rewards claim. Если тема экономики Rust вообще не знакома — разберись сначала с базовой настройкой в статье про экономику сервера Rust через плагины, программа лояльности логично встраивается поверх неё.
Нужен игровой сервер?
MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.
Создать серверЗвания и роли за стаж, а не только за донат
Ранговая система за время на сервере (а не только за донат) — то, что реально формирует статус и мотивирует оставаться. Стандартный стек — LuckPerms для управления группами прав, привязанный к тем же триггерам playtime-плагина.
Примерная лестница для выживание/RP-сервера:
| Ранг | Условие | Что даёт |
|---|---|---|
| Новичок | вход на сервер | базовые команды, /spawn, /tpa |
| Знакомый | 5 часов онлайна | доступ к /kit starter второй раз в неделю |
| Старожил | 30 часов ИЛИ 14 дней подряд захода | цветной ник, /hat, доп. слот дома |
| Ветеран | 100 часов | приоритет в очереди на вход, доступ к приватному чату ветеранов |
| Легенда сервера | 300 часов + минимум 6 месяцев с регистрации | публичное упоминание на доске почёта, кастомный титул |
Важный нюанс: комбинируй условие по часам с условием по календарному времени (не меньше N дней с первого захода). Иначе находится способ фармить чистый онлайн афк-фермой или бустом через несколько клиентов, и ранг «Ветеран» получает не живой игрок, а бот. Настройка через LuckPerms делает это командой:
lp user Steve parent addtemp veteran 90d
lp user Steve permission set essentials.chat.color true
Права привязывай не только к косметике, но и к реальным удобствам — доп. слот /sethome, увеличенный лимит клеймов территории, приоритетный вход при полном сервере. Это то, что игрок физически ощущает, а не просто цветной текст в чате. Если система прав на сервере вообще ещё не настроена — начни с базовой статьи про настройку групп и прав через permissions-плагины, звания за лояльность — это надстройка над готовой иерархией групп.
Реферальная программа: награда за приведённого друга
Рефералка работает по схеме: приглашённый вводит код или ник пригласившего при первом входе, оба получают бонус после того, как приглашённый продержался на сервере оговоренный срок (это критично — без задержки в награде люди будут генерить фейковых «друзей» через мультиаккаунты и сразу же выходить).
Для Minecraft чаще всего собирают это на PlaceholderAPI + командный плагин-обвязку типа AdvancedReferral или самописный скрипт на Skript. Логика:
on first join:
send player "&aВведи /ref <ник друга> в течение 24 часов, чтобы получить бонус"
command /ref <player>:
trigger:
set {referral::%player%} to arg-1
add 1 to {pending_referrals}
every 1 hour:
loop all players:
if {referral_time::%loop-player%} is set:
if difference between now and {referral_time::%loop-player%} > 3 days:
if {loop-player}'s playtime > 3 hours:
give 1000 coins to {referral::%loop-player%}
give 500 coins to loop-player
Для FiveM/RP-серверов рефералку удобнее вести через Discord-бота — приглашённый привязывает Discord-аккаунт к игровому через бота, бот проверяет через RCON, что игрок реально заходил и провёл на сервере минимум N часов, и только потом начисляет награду через базу. Если у тебя уже есть Discord-бот для управления сервером — логика начисления рефералок отлично встраивается в существующую интеграцию Discord-бота с RCON-командами, не нужно городить отдельную систему.
Обязательно ставь лимит на количество рефералов в день/неделю на аккаунт (3-5 достаточно) — иначе находится желающий зарегистрировать 20 пустых аккаунтов и обнулить экономику сервера за вечер.
Как не превратить лояльность в pay2win
Это главная грабля всей темы. Награды за время делятся на три категории — и от того, в какую категорию попадает конкретный бонус, зависит, ломает он баланс или нет:
- Косметика (безопасно всегда): цветные ники, титулы, частицы, кастомные питомцы-компаньоны без статов, эксклюзивные скины построек. Не влияет на PvP или экономику, чистый статус.
- Удобство (безопасно в разумных пределах): доп. слоты телепортов, приоритет входа при заполненном сервере, увеличенный радиус клейма territoria, доступ к отдельным зонам без буста статов. Здесь важно не переборщить — если у ветерана впятеро больше складов, чем у новичка, это уже экономическое преимущество.
- Прямая сила (опасная зона): бесплатное снаряжение, боевые бафы, редкие ресурсы без крафта, деньги/валюта в промышленных объёмах. Именно это превращает лояльность в pay2win — только вместо доната платят временем, что для конкурентного PvP-сервера ничем не лучше.
Практическое правило, которое стоит держать в голове при проектировании каждой награды: если бонус даёт прямое преимущество в бою или экономике — либо делай его временным/расходуемым (не накопительным навсегда), либо ограничивай масштаб так, чтобы разрыв с новичком закрывался за разумные 1-2 недели активной игры. На survival/PvE-сервере планка мягче — там грайнд-эффект в целом ожидаем игроками жанра. На конкурентном PvP или RP с балансом факций — жёстче, там любой перекос быстро замечают и обсуждают в чате.
Хороший тест перед запуском системы: распиши на бумаге, сколько объективных игровых часов новичку нужно, чтобы закрыть разрыв со «Старожилом». Если ответ больше месяца плотной игры — награды слишком щедрые для ранних тиров, стоит их урезать.
Экономика наград: откуда брать монеты и предметы, чтобы не сломать баланс сервера
Тут завязка на общую экономику сервера — если у тебя уже настроен Vault как прослойка между плагинами экономики, добавление наград лояльности не требует отдельной валюты, используешь существующую. Ключевое правило — эмиссия наград не должна быть больше эмиссии из обычного геймплея (крафт, торговля, квесты), иначе инфляция монет за пару недель обесценит внутреннюю экономику полностью.
Практический ориентир (именно ориентир, не точная цифра — подгоняй под свою экономику): суммарная выдача за playtime-награды и рефералку не должна превышать 10-15% от объёма монет, которые игрок в среднем зарабатывает обычной игрой за тот же период. Нет метрик по обычному заработку — временно выдавай предметы вместо валюты, это проще откатить, чем деньги, уже разошедшиеся по рынку.
Для отслеживания перекоса после запуска программы хватит простого лога через RCON раз в сутки (общий баланс валюты на сервере, топ-10 держателей). Если масса валюты растёт линейно без остановки — где-то награды переливают больше, чем экономика поглощает.
Настройка и мониторинг: конфиги, база данных, антифрод
Все перечисленные плагины (PlayTimeRewards, LuckPerms, Economics, реферальные скрипты) хранят данные либо в SQLite (для маленьких серверов до ~50 онлайна), либо в MySQL (рекомендуется от среднего размера сообщества — параллельная запись стабильнее, плюс проще делать бэкапы отдельно от игрового мира). Пример config.yml для подключения к MySQL в PlayTimeRewards:
storage:
type: MYSQL
host: 127.0.0.1
port: 3306
database: playtime_rewards
username: mc_rewards
password: "укажи_свой_пароль"
table-prefix: pr_
Регулярно чисти базу от «мёртвых» записей — аккаунтов, не заходивших полгода, чтобы таблицы не разрастались бесконечно и запросы плагина не тормозили при рестарте сервера. Бэкап базы наград делай отдельно от бэкапа мира — если откатишь мир из-за грифа или бага, обидно откатывать заодно и накопленные месяцами часы игроков.
Антифрод-меры, которые стоит включить сразу, а не после первого инцидента:
- лимит на количество аккаунтов с одного IP для получения playtime-наград (плагины типа AntiAFK или встроенные модули против афк-ферм);
- минимальный порог активности (клики/движение) для засчёта онлайна, а не просто факт подключения;
- задержка выдачи реферальной награды на 3-7 дней с проверкой реальной активности приглашённого, а не мгновенная выдача при первом входе.
Нужен игровой сервер?
MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.
Создать серверЧастые вопросы
Нужна ли отдельная валюта для программы лояльности или использовать основную экономику сервера?
Проще и надёжнее использовать основную экономику через Vault — отдельная валюта усложняет учёт и требует дополнительного UI/команд, оправдана только на крупных серверах с развитой экономической моделью.
Как быстро сбрасывать daily-стрик, если игрок пропустил день?
Обычно сброс через 24-48 часов простоя — жёсткие 24 часа наказывают за один пропущенный вечер, поэтому многие сервера дают 36-48 часов на «прощение» без потери стрика.
Стоит ли давать награды лояльности донатерам вдвойне?
Разумнее не смешивать системы — донат идёт за реальные деньги на развитие проекта, лояльность за время в игре. Смешение обычно вызывает недовольство у бесплатных игроков, которые чувствуют себя вторым сортом.
Что делать с игроками, которые фармят playtime через афк-фермы?
Ставь проверку активности (движение, взаимодействие с миром) вместо простого факта подключения, плюс кик по AFK-таймеру для тех, кто не двигается дольше 10-15 минут.
Можно ли перенести накопленный прогресс лояльности при вайпе сервера?
Технически да, если хранить прогресс отдельно от игрового мира (в MySQL, не привязано к сохранению карты) — многие сервера специально сохраняют звания и рефералку через вайпы, чтобы не терять комьюнити.