Обход лимита в 32 символа для EventName в UEFN Analytics Device (Verse Tutorial)
Каждый технический разработчик игр знает момент, когда ломается пайплайн телеметрии: вам нужно отследить сложное состояние игрока, но движок ограничивает объем передаваемых данных. В Unreal Editor for Fortnite вы наверняка сталкивались с лимитом длины EventName в UEFN analytics device.
Поскольку нативное analytics_device не поддерживает JSON, разработчики создают нечитаемые строки вроде Player_Left_During_G1_F_Active_M. Но лимит в 32 символа — это жесткое ограничение.
В этом туториале мы спроектируем систему кодирования телеметрии на Verse. Мы научимся сжимать состояния игры в строки до 32 символов и декодировать их на бэкенде.
Анатомия узкого места телеметрии
Стандартные платформы (Mixpanel, Amplitude) используют JSON. UEFN заставляет упаковывать всё в один ключ: EventName. При лимите в 32 байта ASCII каждый символ бесценен. Профессиональный подход — создание schema-driven telemetry encoder.
Шаг 1: Архитектура энкодера на Verse
Централизуйте аналитику в одном Verse-скрипте. Используйте сокращения: PQ вместо "Player_Quit", M вместо "Medic".
# Формат: E:Тип|C:Код|Z:ID|T:Время
Payload := "E:{EventType}|C:{ClassCode}|Z:{ZoneStr}|T:{TimeStr}"
if (Payload.Length <= 32):
AnalyticsDevice.RecordEvent(Payload)
Шаг 2: Продвинутая упаковка данных
Для отслеживания координат X/Y используйте spatial hashing или сетку (grid). Разделите карту на ячейки с короткими ID (например, A01), чтобы сэкономить место в payload.
Шаг 3: Декодирование на бэкенде
Экспортируйте CSV из Creator Portal и используйте Python (Pandas) для парсинга строк и восстановления структуры данных для воронки аналитики.
Когда пора покинуть Sandbox
Если вы неделями пишете компрессоры строк, вы боретесь с движком. В стандартном Unreal Engine 5 этих лимитов нет. Вы можете использовать HttpModule или WebSockets. Читайте наш гайд Ditch Http Polling An Unreal Engine Websockets Tutorial For Real Time Backends.
С horizOn эти бэкенд-сервисы уже настроены. Вы просто отправляете JSON через API, а horizOn индексирует данные.
5 проверенных советов
- Стандартизируйте разделители: Используйте один символ (например,
|). - Никакого непрерывного трекинга: Не привязывайте события к
Tick. - Внешняя документация схемы: Ведите таблицу сокращений.
- Разделяйте техническую телеметрию и бизнес-аналитику.
- Валидация перед отправкой: Проверяйте длину строки в Verse.