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?
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.