Jak ominąć limit 32 znaków EventName w UEFN Analytics Device (Tutorial Verse)
Każdy deweloper techniczny wie, kiedy jego pipeline telemetryczny zawodzi: gdy trzeba śledzić złożony stan gracza, a silnik ogranicza ilość przesyłanych danych. Jeśli tworzysz w Unreal Editor for Fortnite, prawdopodobnie zderzyłeś się z limitem znaków EventName w UEFN analytics device.
Ponieważ natywne analytics_device nie obsługuje JSON, deweloperzy tworzą nieczytelne ciągi znaków jak Player_Left_During_G1_F_Active_M. Problem w tym, że nazwa zdarzenia nie może przekraczać 32 znaków.
W tym tutorialu zaprojektujemy system kodowania telemetrii w Verse. Nauczymy się kompresować stany gry do ciągów poniżej 32 znaków i dekodować je na backendzie.
Anatomia wąskiego gardła telemetrii
Standardowe platformy jak Mixpanel używają obiektów JSON. UEFN zmusza do spłaszczenia danych do jednego klucza: EventName. Przy 32 znakach każdy bajt jest na wagę złota. Profesjonalne podejście to schema-driven telemetry encoder.
Krok 1: Architektura encodera w Verse
Zcentralizuj analitykę w jednym skrypcie Verse. Używaj skrótów: PQ zamiast "Player_Quit", M zamiast "Medic".
# Format: E:Typ|C:Kod|Z:ID|T:Czas
Payload := "E:{EventType}|C:{ClassCode}|Z:{ZoneStr}|T:{TimeStr}"
if (Payload.Length <= 32):
AnalyticsDevice.RecordEvent(Payload)
Krok 2: Bit-Packing dla danych o wysokiej gęstości
Do śledzenia współrzędnych X/Y użyj spatial hashing lub systemu siatki (grid). Podziel mapę na komórki z krótkimi ID (np. A01), oszczędzając miejsce w payloadzie.
Krok 3: Dekodowanie na backendzie
Eksportuj dane CSV z Creator Portal i użyj skryptu Python (Pandas), aby rozbić ciągi znaków na czytelne kolumny do analizy lejka (funnel analysis).
Kiedy opuścić Sandbox?
Jeśli spędzasz tygodnie na pisaniu kompresorów stringów, walczysz z silnikiem. W standardowym Unreal Engine 5 te limity znikają. Możesz użyć HttpModule lub WebSockets. Sprawdź nasz poradnik Ditch Http Polling An Unreal Engine Websockets Tutorial For Real Time Backends.
Dzięki horizOn te usługi backendowe są prekonfigurowane. Wysyłasz JSON przez API i natychmiast wizualizujesz dane.
5 dobrych praktyk
- Standaryzuj separatory: Używaj jednego znaku (np.
|). - Unikaj ciągłego śledzenia: Nie używaj
Tick, wysyłaj zdarzenia tylko przy zmianie stanu. - Dokumentuj schemat: Trzymaj listę skrótów w arkuszu.
- Oddziel telemetrię techniczną od analityki biznesowej.
- Waliduj przed wysyłką: Sprawdzaj długość ciągu w Verse.