GameMaker 内置支持 git 版本管理,可以用于版本控制和多人协作,但在多人协作合并不同的分支时往往会遇到报错,进而导致项目文件出错。
据我分析主要是因为 GameMaker 中所有项目资源编号都是固定的递增数值,假设你的项目中已经存在了 10 个资源,那内建的编号就是从 0-9,当你增加第 11 个资源时编号就应该是 10 ,而假设你在本地的项目中添加了一个音频资源,那这个音频就是 10 号,如果此时你的搭挡在他的本地项目中添加了一个图片,那在他那这个精灵就是 10,当这两个分支试图合并时就会遇到冲突,两个文件本身不会出现合并错误,但是所有资源的索引都保存在项目的 YYP 文件中,这里面的索引会因为同一个编号指向了两个不一样的文件而出现错误,可以说非常低级,而且不知道为啥 YOYO 迟迟不改这个机制,于是用户们只好自己动手解决这个问题,目前有两个工具可以处理这个问题,最初是 YellowAfterlife 制作了 “YY-Reunion” ,但这个工具只支持 2.2 及以下版本的工程文件,不过他开源了所有代码,然后 Sohom Sahaun 基于他的代码制作了支持 2.3 及以上版本的 “YYP MAKER”。

两者的功能基本一致
- 修复损坏的 yyp 文件
- 删除项目中冗余的资源文件(文件存在但是缺失索引)
- 给未被索引的资源文件建立新的索引
以下图的 YYP MAKER 为例,使用非常简单,打开以后直接把工程文件夹整个拖到右侧的窗口,然后点击“Start”按钮即可,显示“Done!” 即表示完成。

冗余文件会被移至项目文件夹中名为___yyp_maker_trash
的文件夹中。务必仔细检查其中的资源是否可以删除。
另有部分信息无法自动检索修复,但可以在 ___yyp_maker_trash
中找到的旧 yyp 文件,然后将这些内容复制粘贴到新的 yyp 中。主要包括:
- 房间顺序
- 资源树中的资源排序(包括分组)
- 纹理组
- 音频组