Expand description
Декодер бинарного кадра v5 — порт unpackFrame из src/lib/snapshotCodec.js (срез 2.6). Раскладка зеркальна упаковке core/src/snapshot.rs (big-endian); float снапшота восстанавливаются повторным округлением до 2 знаков (round2), player-блок читается без округления (точность нужна предикту).
Structs§
- Decoded
Block - Блок снапшота с ключом реестра opcodes.js.
- Decoded
Camera - Камера кадра: [x, y, forceReset?, shake?] из JS-формы.
- Decoded
Frame - Распакованный кадр v3.
- Decoded
Player - Player-блок предикшена играющего (без округления).
- Decoded
Snapshot - Тело снапшота: блоки в порядке следования в кадре.
Enums§
- Block
Data - Данные блока по kind — форма (см.
BlockKind), не игровая сущность; поля строки — genericVec<FieldValue>в порядкеschema.fields(зеркало BLOCK_READERS snapshotCodec.js). - Unpack
Error
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).