浅谈Undertale修改

您所在的位置:网站首页 undertale改名字 浅谈Undertale修改

浅谈Undertale修改

2024-07-16 16:52| 来源: 网络整理| 查看: 265

一、反编译是什么

    什么是反编译?代码经过编译变成可执行文件,反编译是编译的逆过程。简单来说,就像将食材制作成食物,而反编译则能通过食物的最终形态得到食材的数量以及种类,甚至烹饪前的一切信息

    我们已知Undertale这款游戏是由Gamemaker这个游戏引擎制作的,游戏的不同版本也使用了不同的Gamemaker版本(以下简称gm),例如:demo版使用gm8,正式发布的第一个版本使用gamemaker studio 1.4(以下简称gms),switch版使用gamemaker studio 2(以下简称gms2)。不同版本的gm使用了不同构成程序的方式,因此反编译的方式也是不同的,以下将会粗略介绍

二、Gamemaker8反编译

    gm8已经是一个有13年历史老游戏引擎,其简单的构成方式以及编译程序的原理,使得我们能够反编译程序一窥程序的工程全貌

    在gm8编译程序得到的可执行文件中,包括两部分的数据:一部分是游戏工程文件的完整储存,包括一切游戏数据(代码中的注释也会被囊括在内);另一部分是一个能够解析游戏数据,执行并解释代码的运行器(Runner)

    利用GM8Decompiler可以将前一部分的数据转化为gm8的标准工程文件.gmk

反编译得到的工程和源工程理论上是等效的,包括注释等都会得到保留

利用该程序,我们同样可以得到undertale demo版的gmk文件

三、Gamemaker Studio 数据格式、编译

    GMS是对老gm8的完全重置,其编译原理与gm8没什么共同点。下面将简要介绍gms的编译过程、游戏程序运行、data格式等(以普通编译方式为例)。

    1.Data.win与Runner

        gms编译程序主要会得到两个文件:

        ①游戏可运行程序:一个根据Runtime(gms编译套件)中的runner.exe,结合游戏工程设置等生成的一个被替换图标后的程序文件,利用它可以启动游戏。Runner是一个解析&运行程序,它会解析data.win中的数据并运行其中的代码。这也是为什么ut的各种手机版存在的原因,这些手机端的作者(以安卓为例),用gms生成了一个适合ut运行的.apk,之后把ut的data.win改个名扔进.apk文件内,再放进音乐等,安装到手机上即可运行。gms在各个平台生成的游戏文件本质上都是runner配同样的数据文件xxxx.win/droid/......的组合(html5是转为js语言,原理是不同的)

        ②data.win,gms游戏的标准数据文件,包括所有的游戏逻辑部分以及非逻辑部分的数据,理论上,只要你有了游戏的这个文件,就有了整个游戏,只需一个runner即可运行。data的内部结构包括一些数据块(Chunk)和标记性数据。Chunk有LANG, EXTN, SOND, AGRP, SPRT, PATH, SCPT, FONT, OBJT, ROOM, FUNC, STRG, TXTR, VARI, CODE等

    2.bytecode

        是一种执行的中间码,runner能够读取这些中间编码并执行,它是由工程中的Gamemaker Language(以下简称gml)转化而来,失去了缩进等格式特征,注释也会在转化过程中被直接跳过,因此我们无法根据bytecode完全反推原来的代码形态。同时,不同的gms版本有着不同的bytecode版本

UTMT得到的bytecode(注:这不是原貌,是经过工具解析的)

    3.编译

        第一步是保存游戏工程,随后GMAssetCompiler会解析数据,编译游戏内Asset。结束后,gms会将编译结果,对应到各个Chunk内,将Chunk写入data.win。编译完成,生成可执行程序,进程结束。临时运行的游戏会在C:\Users\用户名\AppData\Local文件夹内储存临时数据(包括data等文件)

四、Gamemaker Studio 反编译

    1. Altar.NET

        很老的一个工具,有批量提取功能,也支持新版本的ut。太老了,不推荐使用

        https://gitlab.com/PoroCYon/Altar.NET

    2. UndertaleTools

        同样很老的工具,对字体的支持比较好,适合做游戏翻译

        https://github.com/fjay69/UndertaleTools

    3. GMdsam

        一个比较完善的反编译工具,只支持老版本ut,能得到游戏的各种数据,也提供比较准确的bytecode反编译功能

    4.UndertaleMod Tool

        很好用的反编译工具,目前是功能最强大的工具,有各种Script增强其功能,能修改游戏的各项数据,包括增添删除代码,增加贴图房间等

    这些反编译工具的核心功能都是解析data.win文件,虽然data.win在gms生成的不同运行平台的程序里名字不同,但是他们的核心数据都是一样的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3