帝国3吧 关注:76,835贴子:2,212,937
  • 11回复贴,共1

[改派相关]分享一个aoe3决定版的自动打包工具

取消只看楼主收藏回复

先贴上项目地址 https://github.com/sophronia-del/aoe3-auto-packager
因为游戏数据的xml文件需要编码成xmb后再打包成bar才能被读取的, 所以改一个文件的时候需要用工具手动给修改过的文件做转码, 再手动把转码后的文件替换到数据目录里, 再手动把替换后的数据目录打包成bar文件, 整个流程非常繁琐, 开发这个工具就是为了自动完成三个步骤
楼下放具体的使用说明


IP属地:浙江1楼2024-03-24 12:14回复
    首先需要准备两个目录, 分别成为数据目录和源码目录, 前者直接通过工具解包原始bar文件得到, 后者是把数据目录里的xmb文件解码成xml文件, 并按照原目录结构整理得到
    下面两张图分别是数据目录和源码目录, 源码目录使用git管理版本, 没有解码子目录下的xmb文件



    IP属地:浙江2楼2024-03-24 12:21
    回复
      使用方式就很简单了, cmd进入到应用程序所在目录, 执行命令 .\aoe3-auto-packager.exe source=<源码目录> data=<数据目录>, 就会在数据目录的上一级目录下生成打包后的bar文件 Data_generated.bar, 用这个文件替换掉游戏文件的Data.bar


      IP属地:浙江3楼2024-03-24 12:26
      回复
        如果熟悉git, 那么还有一个进阶使用方法. 在源码目录建立git仓库, 然后进入到.git/hooks目录下, 新建两个文件post-commit 和 post-merge, 注意这两个文件是没有后缀名的, 把下面一行代码贴到两个文件里
        <应用程序完整路径> source=. data=<数据目录> suffix=recent
        效果是在git提交后和拉取后分别执行一次自动打包, 生成的文件名是Data_recent.bar


        IP属地:浙江4楼2024-03-24 12:32
        回复
          纠正一下第四楼, 前面还要加一行 #!/bin/sh, 否则钩子没法执行, 文件的完整内容是这样的
          #!/bin/sh
          <应用程序完整路径> source=. data=<数据目录> suffix=recent


          IP属地:浙江6楼2024-03-24 12:38
          回复
            如图, 对源码目录仓库执行git-pull后会自动执行一次打包, 如果需要多人联机共享一份数据的话, 就可以采用这样的方式同步文件, 省的把整个压缩包传来传去


            IP属地:浙江7楼2024-03-24 12:40
            回复
              如果还想简化掉替换文件的步骤, 可以进入到steam游戏数据目录steamapps\common\AoE3DE\Game\Data, 使用如下命令
              mklink Data.bar <程序生成的bar文件全路径>
              生成一个始终指向最新生成的bar文件的链接, 这样打包后的bar文件无需替换也可以立即生效


              IP属地:浙江8楼2024-03-24 12:46
              回复
                随便展示一个修改效果, 所有国家的卡片上限调整为35张


                IP属地:浙江9楼2024-03-24 12:50
                回复
                  @长弓不拉墙😇 请求加精


                  IP属地:浙江来自Android客户端10楼2024-03-24 12:56
                  回复
                    2024/04/15更新: 打包时会跳过源码目录里以.开头的目录, 类似于.git .idea之类, 这样在使用idea等功能强大的工具维护源码目录时, 也不会因为项目配置文件里包含xml文件而引起报错


                    IP属地:浙江17楼2024-04-15 22:41
                    回复
                      2024/04/16更新
                      - 针对昨日更新, 修复文件夹名称判定的问题
                      - 源码目录中以下四种后缀的文件会被编码为XMB: blueprint, physics, tactics, xml, 囊括了目前所有的xmb原始文件后缀名


                      IP属地:浙江18楼2024-04-16 21:42
                      回复
                        2024/04/22更新
                        - 支持通过程序入参限定xml文件的转码范围, 参数名filter, 参数值为逗号分割的文件相对路径. 结合git-hook脚本一起使用, 可以实现只转码两次commit之间发生过改动的文件, 从而提高文件生成速度
                        - 大幅度优化xml文件的转码速度. 如果使用resource-manager将strings/<语言>/stringtabley.xml转码为xmb, 实测单个文件需要三分钟左右的时间, 期间cpu占用基本在10%到20%之间, 楼主的cpu是i7-12700k. 本次优化的最终效果是, 对包含15个语言的stringtabley.xml在内的整个目录进行转码+打包, 总耗时可以压缩到5秒以内, 单文件的处理性能提升两个数量级
                        https://github.com/sophronia-del/aoe3-auto-packager/releases/tag/1.0.4


                        IP属地:浙江19楼2024-04-23 19:44
                        收起回复