给windowframe添加音量调节功能
一次偶然, 我成功得到了基于GameMaker:Studio
的创意游戏windowframe
的源文件, 并发现它原来还有bgm
!
我带起耳机打开了windowframe
, 发现果真如此.
于是, 为了修改bgm
的音量. 我开始魔改它.
事情的开始, 我试着寻找这个游戏的官网
https://managore.itch.io/windowframe
windowframe
是个创意游戏, 游戏总体围绕”窗口”的伸缩, 角色的跑酷与射击, 非常好玩以至于班里同学不停找我要游戏. 如果你不了解这个游戏, 可以看看官网, 非常的有意思.
当我往下查看后, 发现了这一条:
原来这个游戏是用GameMaker:Studio
制作的.
不过, 基于GameMaker:Studio
的Windows
游戏目录下, 除了程序的.exe
, 应该还有一个名为data.win
的文件, 这是GameMaker:Studio
游戏的主体, 在生成可执行文件后会自动生成. 按道理GameMaker:Studio
是不会生成独立的.exe
. 我猜它应该是被通过某种手段给”打包”了.
我没有太多拆包经验. 一次偶然, 我在运行时查看文件目录, 结果有了意想不到的收获:
原来这个打包原理是把游戏源文件放到temp
, 然后再运行游戏源文件, 等到游戏关闭后再次删除游戏源文件.
这就好办了, 可以直接把游戏源文件复制出来.
上图中的mus_main.ogg
就是bgm文件了, 有点阴森.
接下来开始魔改, 直接用UndertaleModTool
反编译, 把脚本全部扒拉出来. UndertaleModTool
是一个用于修改, 反编译和解压Undertale
以及其他GameMaker:Studio
引擎游戏的开源工具, Github仓库地址:https://github.com/krzys-h/UndertaleModTool.
然后通过Visual Studio Code
搜索设置背景音乐的函数:
找到了!
1 | audio_sound_gain(mus_main, 0.07, 0) |
只有原音频音量的7%, 难怪我不带耳机玩时没听到.
之后我返回UndertaleModTool
, 插入了个利用ini
文件调音量的脚本.
1 | //首先, 声明个用来设置音量的变量. 因为其他地方没有修改bgm的脚本, 不需要设置全局变量 |
接下来手动在游戏目录创建setting.ini
:
1 | [Sound] |
大功告成! 以后只需要调整setting.ini
内Vol
键名的键值, 就可以调整bgm
的音量.