跳至内容
Noisrev.League.IO.RST — 解析 LoL RST 文件的 .NET 库

Noisrev.League.IO.RST — 解析 LoL RST 文件的 .NET 库

什么是 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 可安装。