#ddnet #teeworlds #snapshot #serialization #format #tw-game #tw-gpu

bin+lib twsnap

TwGpu 和 TwGame 之间的常用快照格式

4 个版本

新版本 0.2.1 2024年8月24日
0.2.0 2024年8月14日
0.1.1 2024年6月5日
0.1.0 2024年5月18日

#6 in #ddnet

Download history 160/week @ 2024-05-13 29/week @ 2024-05-20 129/week @ 2024-06-03 3/week @ 2024-07-15 121/week @ 2024-08-12

每月121次下载
用于 5 个crate (4 直接使用)

AGPL-3.0-only

88KB
2.5K SLoC

快照表示

目标

  • 可用于渲染

  • 可由游戏实现生成

  • 可序列化为 DDNet 演示

  • 可从 DDNet 演示反序列化

  • 可作为游戏实现输入

  • 有效的 UTF-8

  • 无分配

  • 首先考虑可用性

目标,如果它不影响表示,则可能需要另一个快照

  • 可从 Teehistorian 反序列化

非目标

  • 使用 repr(C) 进行序列化
  • 在 snap 对象上实现诸如轨迹之类的函数。
  • no_std
  • 序列化可以被旧的 DDNet 客户端或 Teeworlds 客户端播放
  • Teeworlds 通过 [i32; k] 字符串的相似性
  • 写入非 DDNet 快照(其他模组)

架构

  • 使用 fixed 来表示所有与距离相关的变量的统一比例:每个瓦片一个
  • vek 用于点
  • arrayvec 用于栈字符串/数组
  • rust 枚举用于协议枚举
  • bitflags
  • bools
  • 每个团队一个快照

依赖项

~7.5MB
~140K SLoC