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环境编译)

安装完成后,先打开一次,等待 GMS 创建配置目录,随后即可关闭,开始安装破解补丁

2. 安装破解补丁

接下来,你需要使用补丁工具对主程序进行修补,开启导出功能

下载后运行 UGP.exe,选择最右边的”Studio 1.x”选项,然后点绿色”GO!”,等待修补完成后按ESC关闭,此时 GMS 应该会自己启动并开始下载资源文件

UGP "Studio 1.x"菜单

3. 工具准备

为了后续接管编译流程,还需要 Process Hacker 或者类似的进程管理工具

下载后解压即可,一般使用x64文件夹内的版本

下载源码

  1. 克隆仓库(或从这里直接下载zip压缩包),约132MB,目录中不得包含中文及空格:
    1
    git clone https://git.s3.fan/Steve3184/undertale
  2. 进入目录,找到 UNDERTALE.project.gmx双击打开,等待 GMS 加载项目,中途会卡死约30s,是正常现象

注意:在加载项目时,如果想要根据下文的HTML5版本编译方式编译,建议先启动Process Hacker并定位到GMS主进程以便等会挂起GM编译器

编译源码

1. 桌面端 (Windows) 编译

打开项目后,无需其他修改,选择目标平台后直接点击左上角Create Executable for Target按钮编译即可

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输出示例

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

用Process Hacker挂起编译器

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

新建两个文件夹

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

1
"刚才复制的路径\GMAssetCompiler.exe" /c /m=html5 /nodnd /wt /html5folder="data" /nocache_html5 /HTMLRunner="刚才复制的路径\scripts.html5.zip" /config="Default" /tgt=32 /obob=False /obpp=False /obru=True /obes=False /i=3 /j=4 /cvm /tp=2048 /mv=1 /iv=0 /rv=0 /bv=9999 /gn="UNDERTALE" /td="h5cache" /cd="h5cache" /sh=True /dbgp="0" /hip="0.0.0.0" /hprt="0" /optionsini="h5config.ini" /o="h5out" "UNDERTALE.project.gmx"

编译命令示例

这样就是编译好了

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

重命名gmRunner.js

最后,你可以将这个目录内的内容上传到Github Pages或者启动一个本地HTTP Server即可游玩

结语

综上,你将了解整个Undertale项目的编译方式,不过HTML5编译过程比较繁琐,核心在于利用 Process Hacker 阻断 IDE 的自动化流程,从而获得手动介入编译链的机会

不过由于DMCA限制,请勿从任何渠道分发该源码,否则将会违反DMCA法则 (虽然现在已经违反了)


Undertale v1.08源码编译教程
https://s3.fan/2025/11/27/Undertale-v1-08源码编译教程/
作者
Steve3184
发布于
2025年11月27日
许可协议