轻量级 RGSS 运行时 · Lightweight RGSS Runtime
使用 C++20 编写、以 CRuby(Ruby 1.9.3) 为脚本引擎的 RPG Maker 游戏运行时。 兼容 RGSS1 / RGSS2 / RGSS3(RPG Maker XP / VX / VX Ace)脚本与数据结构, 开箱即用地运行现成的 RPG Maker 工程。
- 完整 RGSS 运行时:实现
Graphics、Input、Audio、Bitmap、Sprite、Viewport、Plane、Window/WindowXP、Tilemap/TilemapXP、Font、Table、Color、Rect、Tone、Palette、Effect等核心 API。 - 三大版本兼容:根据脚本文件(
.rxdata/.rvdata/.rvdata2)自动识别 RGSS1/2/3,并加载对应版本的RPG数据结构。 - CRuby 脚本引擎:内嵌官方 Ruby 1.9.3 解释器(
3rdparty/ruby-193),原生支持 Marshal 序列化,直接运行解密的Data/Scripts.rvdata*脚本。 - Marshal 互通:CRuby 原生
load_data/save_data/_dump/_load,与官方 RGSS 的 Marshal 数据格式完全互通。 - 动态 Unicode 字体系统:基于 FreeType + HarfBuzz 的按需字形图集与字体回退链,支持 CJK / 日文 / 韩文 / 阿拉伯文(RTL)/ 彩色 Emoji,以及粗体、斜体、描边、阴影。
- 视口与绘制系统:Z 排序绘制列表、多级视口、色调 / 颜色 / 透明度滤镜、闪烁与转场特效。
- 音效系统:BGM / BGS / ME / SE 播放,支持音量、音高、淡入淡出与定位,并通过 TinySoundFont 原生支持 MIDI(SoundFont) 播放。
- 虚拟文件系统:基于 PhysicsFS 的多路径挂载、读取 / 写入分离,支持 Windows RTP(Runtime Package)自动定位(RTP / RTP1 / RTP2 / RTP3)。
- 硬件加速渲染:基于 raylib 的 OpenGL 渲染管线,内置精灵着色器、转场着色器与视口缓存。
- 自定义着色器:
Effect支持 GLSL 顶点 / 片元着色器、uniform 赋值与自定义混合状态。 - 2D 图元绘制:
Bitmap内置大量 raylib 风格图元(线段、贝塞尔、三角形、矩形、圆角矩形、多边形、圆 / 椭圆等)。
- CMake ≥ 3.30
- 支持 C++20 的编译器(本项目主要在 MSVC / Visual Studio 下开发)
- 大部分第三方依赖通过 git submodule 管理;
ruby-193与tinysf直接随仓库内置
# 1. 克隆仓库(含全部子模块)
git clone --recursive https://github.com/Admenri/rgssx.git
cd rgssx
# 2. 配置
cmake -S . -B build
# 3. 构建
cmake --build build --config Release构建完成后,在 build/Release/(或 build/Debug/)下得到 lime.exe。
将 lime.exe 放到 RPG Maker 工程目录中(与 Game.exe 同级),运行即可加载并执行该工程的脚本。
可通过与可执行文件同名的 .ini 配置文件调整运行参数:
[Game]
RGSS=3 ; RGSS 版本:1 / 2 / 3(留空或为 0 时按脚本扩展名自动识别)
Scripts=Data/Scripts.rvdata2
Title=lime
RTP=
RTP1= ; 分别指定各版本的 RTP 路径(Windows 下可自动定位)
RTP2=
RTP3=
[Audio]
Soundfont=font.sf2 ; MIDI 播放用的 SoundFont
[Window]
Width=544 ; XP 默认 640x480,VX / VX Ace 默认 544x416
Height=416
VSync=false
Fullscreen=false┌─────────────────────────────────────────────────────┐
│ app / main.cc │ 进程入口:加载配置、初始化各子系统
├─────────────────────────────────────────────────────┤
│ binding/ (CRuby 绑定层) │ RGSS API 绑定 + RPG 数据结构
│ core/ -> Graphics/Input/Audio/Sprite/... │ Ruby 1.9.3 脚本解释器
│ rpg/ -> RPG::* 数据结构 (RGSS1/2/3, 内嵌 Ruby) │
├─────────────────────────────────────────────────────┤
│ src/ (lime_core) │ 核心引擎(C++20)
│ graphics drawable viewport sprite window(_xp) │ 渲染与绘制系统
│ tilemap(_xp) plane bitmap palette effect │ 图元 / 调色板 / 自定义着色器
│ font/ audio input filesystem profile │ 字体 / 音频 / 输入 / 虚拟文件系统 / 配置
├─────────────────────────────────────────────────────┤
│ 3rdparty/ │ 第三方依赖
│ raylib freetype harfbuzz physfs zlib │ (git submodule)
│ ruby-193 tinysf magic_enum raygui │ (内置 / submodule)
└─────────────────────────────────────────────────────┘
| 模块 | 职责 |
|---|---|
app/ |
可执行入口,解析 ini 配置并初始化各全局单例 |
binding/ |
将 C++ 核心以 Ruby 形式暴露给 CRuby,并加载内嵌的 RPG::* 数据结构 |
src/ |
核心引擎 lime_core:渲染、绘制、字体、音频、输入、文件系统 |
3rdparty/ |
第三方依赖(git submodule + 仓库内置) |
| 组件 | 用途 |
|---|---|
| raylib | OpenGL 硬件加速渲染、窗口与输入 |
| CRuby 1.9.3 | 内嵌 Ruby 脚本引擎(3rdparty/ruby-193) |
| FreeType + HarfBuzz | 动态字形渲染与文字整形 |
| PhysicsFS | 跨平台虚拟文件系统 |
| zlib | 脚本解压与数据压缩 |
| TinySoundFont | MIDI SoundFont 合成播放(3rdparty/tinysf) |
| magic_enum | 编译期枚举反射(键盘键值映射等) |
| raygui | 内置调试 UI(开发用) |
rgssx/
├── CMakeLists.txt
├── app/ # 可执行入口
│ ├── main.cc
│ └── resource.rc # 图标与版本资源
├── binding/ # CRuby 绑定层(binding_cruby)
│ ├── core/ # RGSS API 绑定
│ ├── rpg/ # RPG 数据结构(RGSS1/2/3,内嵌 Ruby 源码)
│ ├── cruby_main.cc # 脚本加载与执行
│ └── cruby_utils.cc # CRuby 兼容层(参数解析、异常等)
├── src/ # 核心引擎(lime_core)
│ ├── graphics.cc # 渲染主循环、转场、截屏、视频
│ ├── drawable.cc # Z 排序绘制列表
│ ├── viewport.cc # 视口与缓存
│ ├── sprite.cc / plane.cc / effect.cc
│ ├── window.cc # VX / VX Ace 窗口(九宫格皮肤)
│ ├── window_xp.cc # XP 窗口
│ ├── tilemap.cc # VX / VX Ace 地图瓦片
│ ├── tilemap_xp.cc # XP 地图瓦片(含调色板)
│ ├── bitmap.cc / palette.cc / table.cc / geometry.cc
│ ├── font/ # 动态字体系统(FreeType + HarfBuzz)
│ ├── audio.cc # 音频(含 MIDI / tinysf)
│ ├── input.cc # 输入
│ ├── filesystem.cc # 虚拟文件系统(PhysicsFS)
│ ├── profile.cc # 配置(ini)
│ └── platform/ # 平台相关(Windows RTP)
└── 3rdparty/ # 第三方依赖
├── ruby-193/ # CRuby 1.9.3(仓库内置)
├── tinysf/ # TinySoundFont + TinyMidiLoader(仓库内置)
└── (submodule) # raylib / raygui / physfs / freetype / harfbuzz / magic_enum / zlib
- RGSS1(RPG Maker XP)—
.rxdata - RGSS2(RPG Maker VX)—
.rvdata - RGSS3(RPG Maker VX Ace)—
.rvdata2
说明:本项目为学习与兼容性目的开发,用于运行个人拥有的游戏工程。 RPG Maker 及 RGSS 均为 © Enterbrain / KADOKAWA 的商标,其版权归原作者所有。
本项目基于 MIT License 开源,详见 LICENCE。
以上内容均为 Deepseek V4 生成,如有雷同纯属巧合。
Copyright 2026 (C) Admenri Adev