Powrót do Bloga

Exploit Algorytmu Discovery w UEFN: Jak projektować odporne na spam Sophistication Scores

Opublikowano 7 kwietnia 2026
Exploit Algorytmu Discovery w UEFN: Jak projektować odporne na spam Sophistication Scores

Każdy twórca UGC zna to dojmujące uczucie frustracji: spędzasz tygodnie nad potężną aktualizacją, tylko po to, by zobaczyć, jak Twoja mapa zostaje pogrzebana w zakładce discovery przez niskiej jakości klon "Red vs Blue", który po prostu zaspamował 500 pustych urządzeń. Na forach Unreal Engine aż wrze w temacie "Sophistication Score" w UEFN (Unreal Editor for Fortnite) — wskaźnika, który teoretycznie miał promować złożone, wymagające dużego nakładu pracy projekty. Zamiast tego, aktywnie nagradza on spamowanie mapami. Gdy platforma polega na naiwnym zliczaniu metryk zamiast na weryfikowalnej egzekucji logiki, ekosystem nieuchronnie upada w stronę przeciętności.

Deweloperzy donoszą, że ich skrupulatnie dopracowane, oparte na zaawansowanej logice aktualizacje są ignorowane przez silnik widoczności platformy. W międzyczasie nieuczciwi twórcy zdali sobie sprawę, że mogą po prostu przeciągnąć i upuścić setki niefunkcjonalnych urządzeń do sceny, aby sztucznie zawyżyć swój ranking złożoności w Backendzie. To dokładnie ta sama pętla exploitu, którą widzieliśmy we wczesnych latach 2000 przy keyword stuffingu w SEO, tylko zastosowana do spatial computingu i metadanych silnika gier.

Ale jak właściwie to naprawić? Jeśli jesteś deweloperem indie budującym własną platformę User Generated Content (UGC) lub architektem platformy odpowiedzialnym za promowanie gier wysokiej jakości, jak matematycznie udowodnić, że mapa jest "sophisticated"? Odpowiedź leży w porzuceniu statycznego liczenia assetów na rzecz analizy głębokości egzekucji i walidacji Telemetry.

Anatomia wadliwej metryki Discovery

Aby zrozumieć, dlaczego obecny algorytm discovery w UEFN zawodzi, musimy przyjrzeć się temu, jak platformy tradycyjnie oceniają przesyłane treści. Gdy użytkownik publikuje mapę, serwer przeprowadza analizę statyczną w celu wygenerowania metadanych. Te metadane decydują o tym, gdzie mapa znajdzie się w kolejce discovery.

Naiwny Backend mógłby obliczać "Sophistication Score" za pomocą wzoru wyglądającego mniej więcej tak: Score = (StaticMeshCount * 0.01) + (DeviceCount * 0.5) + (VerseLineCount * 0.1)

Dlaczego liczenie statyczne zawsze zawodzi

Fundamentalną wadą tej architektury jest to, że mierzy ona obecność obiektów, a nie ich wykorzystanie. Deweloper może umieścić 1000 urządzeń wyzwalających na mapie, które są całkowicie odłączone od jakiegokolwiek Event Graphu. Dla analizatora statycznego wygląda to na wysoce złożone, interaktywne środowisko. Dla gracza to pusty pokój.

Tworzy to szkodliwy system motywacyjny. Twórcy są karani za pisanie czystej, wydajnej i zoptymalizowanej logiki. Jeśli znajdziesz sposób na obsłużenie całego trybu gry za pomocą jednego, wysoce zoptymalizowanego skryptu Verse i trzech urządzeń, Twój Backend uzna mapę za "mało wyrafinowaną".

Kiedy deweloperzy i tak już walczą z ograniczeniami platformy — jak choćby szukając obejść opisanych w naszym tutorialu Cracking The 32 Character Uefn Analytics Device Event Name Limit Verse Tutorial — świadomość, że silnik discovery platformy ocenia ich na podstawie wadliwej krzywej, jest niezwykle demotywująca.

Projektowanie weryfikowalnej metryki wyrafinowania

Jeśli chcemy zbudować sprawiedliwy algorytm discovery, musimy mierzyć głębię logiczną i gęstość zdarzeń, a nie surową liczbę aktorów. Musimy przeanalizować rzeczywisty graf egzekucji.

Zamiast liczyć, ile urządzeń istnieje, narzędzie do analizy Backendowej powinno śledzić połączenia między nimi. Wyzwalacz, który uruchamia zlokalizowaną sekwencję zdarzeń zmieniającą stan gracza, ma wysoką wagę logiczną. Wyzwalacz umieszczony w świecie, ale niepowiązany z niczym, ma wagę logiczną równą dokładnie zero.

Deep Dive w kod: Obliczanie prawdziwej głębi logiki

Gdybyśmy projektowali ten krok walidacji w niestandardowym Backendzie Unreal Engine, napisalibyśmy commandlet lub skrypt automatyzacji, który parsuje ULevel i ocenia rzeczywiste powiązania delegatów.

Oto uproszczony przykład w C++, jak narzędzie do walidacji Backendowej mogłoby oceniać prawdziwe "wyrafinowanie" mapy poprzez analizę powiązań zdarzeń, a nie tylko liczenie aktorów:

// [Code block unchanged]

To podejście natychmiast niweluje exploit polegający na "wrzucaniu 500 pustych urządzeń na mapę". Algorytm sprawdza, czy te urządzenia są faktycznie powiązane z multicast delegate lub czy mają włączoną niestandardową logikę ticku. Jeśli nie, nie wnoszą nic do Sophistication Score. W rzeczywistości, śledząc LogicRatio, możemy aktywnie karać nieuczciwych twórców, którzy próbują sztucznie rozdmuchiwać swoje poziomy.

Przejście na Discovery oparte na Telemetry

Choć walidacja poprzez analizę statyczną jest ogromnym krokiem naprzód, to wciąż tylko połowa sukcesu. Każdą statyczną metrykę można w końcu oszukać. Ostatecznym źródłem prawdy dla algorytmów discovery musi być Telemetry graczy w czasie rzeczywistym.

Mapa może wyglądać na Backendzie niesamowicie wyrafinowanie, posiadając tysiące złożonych, połączonych skryptów Verse. Ale jeśli średnia sesja gracza trwa dokładnie 14 sekund przed rozłączeniem klienta, mapa jest albo zepsuta, albo skrajnie niezoptymalizowana, albo po prostu nudna.

Wyjście poza naiwne zliczanie uruchomień

Tak jak musimy przestać liczyć surowe urządzenia, tak samo musimy przestać rankingować mapy wyłącznie na podstawie "Całkowitej liczby gier" czy "Liczby graczy online (CCU)". Te metryki silnie faworyzują ugruntowane mapy i uniemożliwiają nowym, dopracowanym aktualizacjom przebicie się do zakładki discovery.

Zamiast tego, algorytm discovery w UEFN (i każdy Backend budowany dla własnych gier) musi obliczać Bayesowską średnią zaangażowania.

Oceniając mapę, należy śledzić różnicę między oczekiwaną długością sesji dla konkretnego gatunku (np. mapa typu Tycoon oczekuje 45-minutowej sesji) a rzeczywistą długością sesji. Jeśli mapa konsekwentnie przekracza bazowy wskaźnik retencji dla danego gatunku, jej Sophistication Score powinien dynamicznie rosnąć w czasie rzeczywistym.

Samodzielne zbudowanie tego wymaga skonfigurowania rozproszonych Load Balancerów, Database Sharding dla milionów rekordów i zarządzania certyfikatami SSL — to łatwo 4-6 tygodni pracy nad samą infrastrukturą. Dzięki horizOn te bezserwerowe potoki danych i punkty końcowe analityki graczy są wstępnie skonfigurowane, co pozwala skupić się na wydaniu gry, a nie na infrastrukturze.

Ochrona Backendu przed spoofingiem Telemetry

Gdy przejdziesz na algorytm discovery oparty na Telemetry, nieuczciwi gracze zmienią taktykę. Zamiast spamować urządzeniami w edytorze, będą próbowali sfabrykować zdarzenia Telemetry z poziomu klienta, aby sztucznie zawyżyć statystyki retencji.

Nigdy nie ufaj klientowi. Jeśli Twój klient wysyła zdarzenie mówiące, że SessionLength = 3600_seconds, Twój Backend musi zweryfikować to twierdzenie z rzeczywistymi logami połączeń serwera.

Projektowanie weryfikacji po stronie serwera

Architektura Twojej gry musi wymuszać autorytatywne sprawdzenia. Gdy gracz się łączy, Backend rejestruje dokładny znacznik czasu UTC. Gdy gracz się rozłącza, Backend oblicza różnicę. Klient powinien być odpowiedzialny jedynie za wysyłanie granularnych zdarzeń behawioralnych (np. "Gracz osiągnął cel X"), które są następnie krzyżowo sprawdzane z niezmiennymi danymi sesji na serwerze.

Ten poziom ścisłej walidacji wiąże się z zarządzaniem ogólnym obciążeniem serwera. Zapobieganie fałszywym sesjom jest kluczowe dla wydajności, podobnie jak techniki opisane w Architecting Zero Waste Servers The Fortnite Server Optimization Hibernation Proposal Analyzed. Jeśli Twój Backend przetwarza miliony fałszywych zdarzeń z podrobionego klienta, płacisz za infrastrukturę, która pomaga oszustom niszczyć Twoją zakładkę discovery.

Najlepsze praktyki projektowania systemów Discovery

Jeśli budujesz własny hub multiplayer, portal z modami lub analizujesz, jak poruszać się po istniejących platformach UGC, musisz projektować algorytmy discovery tak, by były odporne na ludzką naturę.

Oto główne zasady budowania systemu, który nagradza autentyczny wysiłek dewelopera:

  1. Wyżej ceń aktywną logikę niż pasywne assety: Jak pokazano w przykładzie C++, Twój Backend musi analizować relacje między obiektami. Sto modeli static mesh połączonych w jeden blueprint z zaawansowaną logiką interakcji jest nieskończenie bardziej "wyrafinowane" niż tysiąc niepołączonych triggerów. Nagradzaj gęstość, nie rozpiętość.
  2. Wprowadź spadek (decay) wyniku statycznego: Sophistication Score obliczony w momencie publikacji nie powinien być stały. Początkowy wynik statyczny powinien służyć jedynie jako "ziarno" dające mapie początkową widoczność. Przez kolejne 48 godzin wynik ten musi wygasać, całkowicie oddając wagę rankingu rzeczywistej Telemetry graczy.
  3. Użyj walidacji długości sesji jako mnożnika: Śledź długość sesji P50 i P90 na całej platformie. Jeśli nowo zaktualizowana mapa zatrzymuje graczy o 20% dłużej niż średnia platformy, jej ranking discovery powinien rosnąć wykładniczo.
  4. Surowo karz za duplikowanie: Jeśli Backend wykryje, że deweloper przesyła 14 wariantów tego samego grafu logicznego z różnymi miniaturami, nałóż kwarantannę na ID twórcy.
  5. Testuj kohorty Discovery metodą A/B: Nie wdrażaj zmian w algorytmie globalnie. Przetestuj nową matematykę wyrafinowania na 5% graczy.

Odzyskiwanie zakładki Discovery

Frustracja pobrzmiewająca na forach deweloperów jest w pełni uzasadniona. Spędzanie tygodni na balansowaniu mechaniki, optymalizacji Netcode i dopracowywaniu level designu, tylko po to by przegrać z algorytmem liczącym postawione urządzenia, to wielka porażka architektoniczna.

Rzeczywistość jest taka, że każda statyczna metryka będzie oszukiwana przez deweloperów szukających drogi na skróty. Jedyną zrównoważoną drogą dla platform UGC jest połączenie głębokiej, świadomej logiki analizy statycznej z bezwzględną, autorytatywną Telemetry graczy. Dopóki algorytm discovery w UEFN będzie liczył cegły zamiast analizować architekturę, spam będzie wygrywał.

Dla studiów indie budujących własne ekosystemy przewagą jest zwinność. Możecie zaprojektować potoki danych poprawnie od pierwszego dnia. Gotowy na skalowanie sprawiedliwego, opartego na Telemetry Backendu multiplayer bez walki z infrastrukturą? Wypróbuj horizOn za darmo i skup się na tworzeniu świetnych gier.