酸橙熊熊(Limekuma)是迪拉熊Bot的绘图后端服务,负责为玩家的游玩成绩(如B50、成绩列表等)生成精美的图片。它通过纯托管图形库ImageSharp实现了脱离原生环境依赖的图形渲染,并内置了基于XML的灵活布局引擎。
- 核心框架:.NET
- 通信协议:gRPC
- 图像处理:ImageSharp
- 表达式引擎:NCalc
- 模板引擎:SmartFormat
- 配置管理:Hocon
- 高性能渲染:基于ImageSharp,无需依赖本地系统GDI或libgdiplus,跨平台支持好
- 多数据源支持:原生支持落雪(Lxns)与水鱼(Diving-Fish)查分器API
- 丰富的图像生成接口:支持生成玩家B50成绩图、成绩列表图、成绩记录图、谱面信息图、达成率信息图等
- 自定义布局引擎:渲染逻辑与布局分离,基于XML节点定义的灵活布局系统
- 流式gRPC通信:基于Protobuf定义,提供流式的图片字节序列返回,降低大图片传输的内存占用
酸橙熊熊使用基于XML的DSL(领域特定语言)来定义图像布局。该DSL支持:
- 声明式XML编写图像排版与渲染逻辑
- 内嵌NCalc表达式引擎实现动态数据绑定
- SmartFormat模板系统实现运行时条件渲染
# 克隆项目仓库git clone <your-repo-url>/limekuma-printer.gitcd limekuma-printer
# 安装依赖dotnet restore
# 运行项目dotnet run --project src/Limekuma.csproj项目启动后,将通过配置中指定的端口提供gRPC服务。
API接口均定义在src/Protos/kumabot.proto文件中。