Przejdź do treści
Blog

Retencja graczy FiveM: kto wraca, a kto przestał przychodzić

Zmierz retencję graczy na FiveM: nowi i powracający, powroty po 1, 7 i 30 dniach, tygodniowe grupy i godziny szczytu. Z SQL albo w zakładce Wzrost.

Autor: Termi

3 min czytania
  • Players
  • Retention
  • Analytics
Na tej stronie

Serwer FiveM z 80 graczami w szczycie może wyglądać zdrowo, a jednocześnie tracić większość nowych graczy po jednym wieczorze. Licznik graczy pokazuje tylko, kto jest online. Retencja pokazuje, czy ludzie, którzy trafili do ciebie w zeszłym tygodniu, nadal grają, i zwykle zdradza problem na kilka tygodni przed tym, jak zacznie spadać wieczorny szczyt.

Co mierzyć

  • Nowi i powracający gracze dziennie. Stała liczba złożona codziennie z nowych twarzy znaczy, że serwer nikogo nie zatrzymuje.
  • Powroty po 1, 7 i 30 dniach. Ilu graczy, którzy weszli po raz pierwszy, zagrało znowu po tylu dniach albo później.
  • Grupy tygodniowe. Gracze pogrupowani według tygodnia pierwszego wejścia i odsetek każdej grupy, który grał w kolejnych tygodniach. Grupa, która odpada szybciej od innych, wskazuje na coś, co zmieniło się w tamtym tygodniu.
  • Długość pierwszego dnia. Nowi gracze, którzy wychodzą po 10 minutach i nie wracają, zwykle utknęli w kolejce, kreatorze postaci albo na whiteliście.
  • Godziny szczytu. Kiedy twoi gracze naprawdę są online, żeby restarty i eventy trafiały w dobrą porę.
  • Stali gracze, którzy przestali przychodzić. Ktoś, kto grał cztery dni w tygodniu przez miesiąc, a potem zniknął, zasługuje na wiadomość.

Licz to sam

Wszystko to wynika z jednej informacji: który gracz grał którego dnia. Wystarczy tabela z jednym wierszem na gracza na dzień:

player_days.sql
CREATE TABLE player_days (
  license VARCHAR(64) NOT NULL,
  day DATE NOT NULL,
  PRIMARY KEY (license, day)
);

Wypełniaj ją skryptem serwera, gdy gracz wchodzi. Ten przykład używa oxmysql i licencji Rockstara jako ID:

server.lua
AddEventHandler('playerJoining', function()
  local license = GetPlayerIdentifierByType(source, 'license')
  if not license then return end
  MySQL.insert('INSERT IGNORE INTO player_days (license, day) VALUES (?, UTC_DATE())', { license })
end)

Gracz, który zostaje online po północy UTC, liczy się tylko w dniu wejścia, co do retencji w zupełności wystarcza. Retencja po 7 dniach dla nowych graczy z ostatnich 90 dni to wtedy jedno zapytanie na MySQL albo MariaDB:

retention.sql
SELECT
  COUNT(*) AS new_players,
  SUM(last_day >= first_day + INTERVAL 7 DAY) AS back_after_7_days
FROM (
  SELECT license, MIN(day) AS first_day, MAX(day) AS last_day
  FROM player_days
  GROUP BY license
) AS players
WHERE first_day BETWEEN UTC_DATE() - INTERVAL 90 DAY
                    AND UTC_DATE() - INTERVAL 7 DAY;

Zamień 7 na 1 albo 30, żeby dostać pozostałe dwie liczby. Podziel back_after_7_days przez new_players i masz odsetek.

Pomiń nowych graczy z ostatnich 7 dni. Ktoś, kto wszedł wczoraj, nie mógł jeszcze wrócić po tygodniu, a liczenie go zaniża retencję.

Zakładka Wzrost w FiveDocku

FiveDock buduje taką samą tabelę z wejść i wyjść, które jego agent i tak zapisuje do Black Boxa, i trzyma ją przez 400 dni, dłużej niż logi. Otwórz serwer i wybierz zakładkę Wzrost obok Gracze i Konsola.

  • Free pokazuje nowych i powracających graczy dziennie z ostatnich 30 dni.
  • City dodaje powroty po 1, 7 i 30 dniach, grupy tygodniowe, długość pierwszego dnia nowych graczy razem z tym, ilu wróciło, i wykres godzin szczytu w twojej strefie czasowej.
  • Metro i Enterprise podają z nazwy stałych graczy, którzy przestali przychodzić (co najmniej cztery dni w pięć tygodni, a potem nic przez 7 do 30 dni), i dodają ich do cotygodniowego podsumowania, obok zasobów, które zmieniły się na serwerze tuż przed ich odejściem.

Ta ostatnia lista przydaje się najbardziej wtedy, gdy nowy skrypt coś zepsuł grupie graczy, którzy nigdy nie założyli zgłoszenia. Szczegóły są na stronie z cennikiem.

Najczęstsze pytania

Jaka retencja jest dobra dla serwera FiveM?

Nie ma wspólnego punktu odniesienia dla FiveM. Porównuj serwer z nim samym: z tym samym tygodniem miesiąc temu albo z grupą sprzed dużej aktualizacji. Sygnałem do sprawdzenia jest grupa, która odpada szybciej niż poprzednie.

Czy to działa na serwerze z whitelistą?

Tak, a liczby z pierwszego dnia znaczą tam jeszcze więcej. Gracz, który przeszedł whitelistę i wyszedł po 10 minutach, zwykle trafił na problem w kreatorze postaci albo w strefie startowej.

Po jakim identyfikatorze liczyć graczy?

Licencja Rockstara (license) jest u każdego gracza i nie zmienia się razem z nowym kontem Discord czy Steam. Postacie to nie gracze: jedna licencja z trzema postaciami to nadal jedna osoba.

Wszystkie artykuły