You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GameMaker Studio 2跨Windows与Mac协作的.yyp文件问题求助

解决GameMaker .yyp文件Git协作的两难问题

我之前和团队协作开发GameMaker项目时也踩过一模一样的坑!先给你理清楚问题根源,再给你一套能落地的解决方案:

问题本质

.yyp文件是GameMaker的项目元数据文件,它同时承担了两个完全不同的角色:

  • 核心共享角色:记录项目里所有资源(Objects、Rooms、Scripts等)的索引,这部分是团队协作必须同步的内容
  • 本地配置角色:存储操作系统专属的个性化设置(比如绝对路径、编辑器窗口布局、本地调试参数),这部分每个人的环境都不一样,同步后直接导致项目无法运行

所以你之前的两种极端做法都有问题:

  • 直接提交整个文件:本地配置冲突导致拉取后游戏崩溃
  • 直接忽略整个文件:资源索引不同步,新增的Objects等资源对方完全看不到

可行解决方案

第一步:先让GameMaker生成相对路径配置

先打开GameMaker,进入File > Preferences > General,找到「Use Relative Paths」选项并勾选。这样.yyp里的路径会自动变成相对项目根目录的格式,从根源减少跨系统的路径冲突问题。

第二步:用Git过滤只提交核心资源部分

我们需要让Git自动剔除.yyp里的本地配置内容,只保留必须同步的资源索引。具体操作:

  1. 在项目根目录创建一个.gitattributes文件,添加一行规则:
    *.yyp filter=gameyyp
    
  2. 配置Git的过滤器,实现提交时清理本地配置:
    git config filter.gameyyp.clean 'sed -e "/<includedPaths>/,/<\/includedPaths>/d" -e "/<local>/,/<\/local>/d"'
    git config filter.gameyyp.smudge cat
    
    这个命令的作用很明确:
    • 提交文件时(clean阶段):自动删除<includedPaths>和<local>标签之间的所有本地配置内容
    • 拉取文件时(smudge阶段):直接保留仓库里的纯净版本,不做额外修改

第三步:修复现有仓库的历史(可选)

如果之前已经提交过带本地配置的.yyp文件,可以用git filter-repo清理历史记录,避免旧的配置干扰后续协作:

git filter-repo --path *.yyp --filter 'sed -e "/<includedPaths>/,/<\/includedPaths>/d" -e "/<local>/,/<\/local>/d"'

⚠️ 注意:这个操作会改写仓库历史,需要团队所有人同步执行,或者先做好仓库备份。

替代方案:手动拆分资源(适合小团队)

如果觉得Git过滤配置太复杂,可以手动维护一个.yyp.template文件,里面只保留资源索引部分,然后每个人本地复制成.yyp,再把.yyp加入.gitignore。每次新增资源后,更新.yyp.template并提交,其他人拉取后合并到自己的.yyp里。不过这个方法比较繁琐,更适合成员少的小团队。

最后验证

做完以上设置后,你可以新增一个Object并提交,让团队成员拉取后检查:

  • 新增的Object能正常同步到对方的开发环境
  • 拉取后项目能正常运行,不会出现系统配置冲突

内容的提问来源于stack exchange,提问作者Sparkmasterflex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:04:40