什么是 RST?
RST(Riot String Table) 是英雄联盟用来存储游戏内本地化字符串数据的二进制文件格式。英雄名称、技能描述、皮肤名称等文本,都存储其中。
例如:
"Riven" → "锐雯"
"Championship Riven 2016" → "冠军之刃 锐雯 2016"
"<mainText><stats>%i:scaleAP% 25 Ability Power</stats></mainText>" → 装备描述NuGet:
Noisrev.League.IO.RST| ⭐ 4 | MIT 协议
GitHub: Noisrev/Noisrev.League.IO.RST
版本演进
v3 → v4:性能飞跃
从 v3 到 v4,核心读写逻辑经历了完全重写:
| 方法 | 运行时 | v3 耗时 | v4 耗时 | 内存分配(v4) |
|---|---|---|---|---|
| Read | .NET 6.0/8.0 | 74.13 ms | 56.04 ms | 24 MB |
| Write | .NET 6.0/8.0 | 52.20 ms | 38.48 ms | 28 MB |
使用方式
通过 NuGet 安装:
dotnet add package Noisrev.League.IO.RST简单示例:
using Noisrev.League.IO.RST;
var rst = RSTFile.Load("your_rst_file_path");
// 遍历所有条目
foreach (var entry in rst.Entries)
{
Console.WriteLine($"{entry.Key} = {entry.Value}");
}RST 文件结构
┌──────────────────────────┐
│ Magic(0x52, 0x53) │ 2 bytes — "RS"
├──────────────────────────┤
│ Version │ 2 bytes
├──────────────────────────┤
│ Entry Count │ 4 bytes
├──────────────────────────┤
│ String Data Offset │ 4 bytes
├──────────────────────────┤
│ String Data Length │ 4 bytes
├──────────────────────────┤
│ Entry Metadata[] │ 每项含 Hash + Offset + Length
├──────────────────────────┤
│ UTF-16LE String Data │ 实际字符串数据
└──────────────────────────┘为什么选择 .NET Standard 2.0
选择 .NET Standard 2.0 确保了最大兼容性:
- .NET Framework 4.6.2+
- .NET Core 2.0+
- .NET 5/6/7/8/9
- Unity、Mono 等运行时
写在最后
Noisrev.League.IO.RST 是为 GZSkinsX 的模组功能而生的底层依赖。随着对 RST 格式理解的深入,这个项目后来催生了全新的 Rion —— 基于 .NET 9.0 的高性能重写版本。
Noisrev.League.IO.RST 以 MIT 协议开源,NuGet 可安装。