Undertale v1.08源码编译教程
最近因移植一些项目需要反编译 GameMaker 项目,于是顺便反编译了一下经典 GM: Studio 游戏 Undertale
这个源码基于 v1.08,相较于其他的泄露版本,还原度很高,但仍然有些小bug
编译过程中,为了实现执行自定义编译命令,我们还需要配合 Process Hacker 挂起进程来“偷梁换柱”完成编译,这里提供一个详尽的编译教程
仓库地址:https://git.s3.fan/Steve3184/undertale
环境准备
编译这个源码必须使用 GameMaker: Studio 1.4.9999 版本,其他版本是无法成功编译的,或者会有奇怪的bug
1. 下载与安装 GMS 1.4.9999
如果你的电脑上没有 GMS 1.4.9999,需要先安装下,这里提供一个下载地址(建议使用win10环境编译)
- GameMaker: Studio 1.4.9999: 点此下载
安装完成后,先打开一次,等待 GMS 创建配置目录,随后即可关闭,开始安装破解补丁
2. 安装破解补丁
接下来,你需要使用补丁工具对主程序进行修补,开启导出功能
- UGP工具: 点此下载
下载后运行 UGP.exe,选择最右边的”Studio 1.x”选项,然后点绿色”GO!”,等待修补完成后按ESC关闭,此时 GMS 应该会自己启动并开始下载资源文件

3. 工具准备
为了后续接管编译流程,还需要 Process Hacker 或者类似的进程管理工具
- Process Hacker: 点此下载
下载后解压即可,一般使用x64文件夹内的版本
下载源码
- 克隆仓库(或从这里直接下载zip压缩包),约132MB,目录中不得包含中文及空格:
1
git clone https://git.s3.fan/Steve3184/undertale - 进入目录,找到
UNDERTALE.project.gmx双击打开,等待 GMS 加载项目,中途会卡死约30s,是正常现象
注意:在加载项目时,如果想要根据下文的HTML5版本编译方式编译,建议先启动Process Hacker并定位到GMS主进程以便等会挂起GM编译器
编译源码
1. 桌面端 (Windows) 编译
打开项目后,无需其他修改,选择目标平台后直接点击左上角Create Executable for Target按钮编译即可

随后,会弹出一个输出位置及格式选择框:

这里推荐选择zip压缩包输出,选好后点”Save”按钮将会开始编译,中途 GMS 将卡死 30s ~ 1min,属于正常现象,请不要在此时使用任务管理器强行终止
稍后你将在桌面看到生成的zip包,解压即可游玩
2. HTML5版编译
为了成功编译H5版,我们不能直接使用 GMS 里默认的编译命令,需要手动干预编译链
首先,确保你已打开 Process Hacker,在右上角搜索框输入 GMAssetCompiler,准备随时定位进程
然后,在GMS中选择 “HTML5” 编译目标,并点击左上角橙色或绿色运行按钮

当你在 IDE 下方的 Compile Messages 窗口看到 GMAssetCompiler.exe开始输出(出现”Saving HTML5 file…”时),迅速切换到 Process Hacker,找到 GMAssetCompiler.exe 进程,右键选择 Suspend挂起进程

此时GMAssetCompiler.exe处于假死状态,临时的编译许可证已被释放到内存,现在还需点击下面的 “Open file location”打开其所在位置,并复制其所在文件夹路径(例如C:\Users\user\AppData\Roaming\GameMaker-Studio),下面会用到

接下来我们需要用自定义的命令工具来编译,先打开你存放源码的目录,新建文件夹h5cache和h5out

随后,按下Win+R按键,打开”运行”,输入cmd并回车,并使用cd /d "路径"切换到你存放源码的路径,并输入下面的命令进行编译,开始编译后,可用任务管理器终止 GMS 进程以防止冲突
1 | |


由于默认编译的版本有些bug,接下来重命名h5out\scripts\gmRunner.js 到 runner.js,就编译好了

最后,你可以将这个目录内的内容上传到Github Pages或者启动一个本地HTTP Server即可游玩
结语
综上,你将了解整个Undertale项目的编译方式,不过HTML5编译过程比较繁琐,核心在于利用 Process Hacker 阻断 IDE 的自动化流程,从而获得手动介入编译链的机会
不过由于DMCA限制,请勿从任何渠道分发该源码,否则将会违反DMCA法则 (虽然现在已经违反了)