Skip to main content

Module unpack

Module unpack 

Source
Expand description

Декодер бинарного кадра v5 — порт unpackFrame из src/lib/snapshotCodec.js (срез 2.6). Раскладка зеркальна упаковке core/src/snapshot.rs (big-endian); float снапшота восстанавливаются повторным округлением до 2 знаков (round2), player-блок читается без округления (точность нужна предикту).

Structs§

DecodedBlock
Блок снапшота с ключом реестра opcodes.js.
DecodedCamera
Камера кадра: [x, y, forceReset?, shake?] из JS-формы.
DecodedFrame
Распакованный кадр v3.
DecodedPlayer
Player-блок предикшена играющего (без округления).
DecodedSnapshot
Тело снапшота: блоки в порядке следования в кадре.

Enums§

BlockData
Данные блока по kind — форма (см. BlockKind), не игровая сущность; поля строки — generic Vec<FieldValue> в порядке schema.fields (зеркало BLOCK_READERS snapshotCodec.js).
UnpackError

Functions§

camera_to_json
Камера в JS-форму: 0 | [x, y] | [x, y, true] | [x, y, …, shake].
frame_to_json
Полный кадр в JSON-форму unpackFrame — для тестов и харнесса (ClientCore.decode_frame): { port, seq, serverTime, camera, player, snapshot }.
round2_f64
round2-значение f32 → точный двухзначный f64 для JSON (JS readFloat возвращал round(f32·100)/100 в f64).
snapshot_to_json
Тело снапшота в JS-форму { ключ: данные } для parse-конвейера клиента. Форма контейнера по kind — не по игровой сущности: Indexed8/Indexed32 дают объект id → строка|null, List16 — массив строк, IndexedNoNull8 — объект d{index} → строка (сохраняет исторический формат ключей динамических элементов карты).
to_base36
u32 → base36 (ключи бомб; JS id.toString(36)).
unpack_frame
Распаковывает бинарный кадр (порт unpackFrame).