秋蝉鸣泣之时吧 关注:71,855贴子:1,115,634
  • 30回复贴,共1

以祭囃篇为例讲一下汉化的基础流程

只看楼主收藏回复

授人以鱼不如授人以渔,在我的经验中汉化的程序方面一般不是一件比较困难的事情。先讲一下写这个帖子的初衷,二楼开始讲一下结构和思路(这部分是主要内容),具体操作请参考后面附上的祭囃篇的流程。
顺便再提一次,官汉第一章和07-th mod 不兼容我怀疑是unity版本问题,如果是,估计他们很快就能解决。或者你参考这个帖子的思路,自己去缝,大概···应该其实花不了太久,就是如果没有大学的程序语言基础的话得花一点时间理解一下"程序语言",和中译英类似,而且要学的不多,此处就不赘述了。
当然遇到具体问题也欢迎大家一起讨论,尝试解决,不过我确实上贴吧的时间越来越少了,十天半个月甚至是半年才参与也请见谅,不只是这个帖子,请不要给我发私信,我是电脑上的贴吧,只会有多少条私信的提示,看不到内容和谁发的。
我不参与翻译,只在这讲一下翻译以外的部分。过去没有实操过,第一次参与具体流程做一些极度基础的程序工作,因为各种意外我拖更,发现我找教程交给别人去做的时候多少会出点问题,所以在这讲一下设计思路,当然其实做mod也是类似的流程,个人认为关键的是思路,具体操作大多是较为成熟的流程。感谢一下苦力ZSY,刚at错人了,我决定楼中楼at他。实际操作麻烦他做的比较多,我的Python环境一直有点问题加上个人杂务半夜才有几个小时的空闲时间,自己搞了三四天都没弄好,太拖了。


IP属地:江苏1楼2026-01-19 12:35回复
    汉化或者是说本地化/翻译具体的游戏,两个常用思路,内嵌汉化流程是 提取文本-翻译-封装 外置汉化比如mtools或者gal过去的喵翻之类的是不用封装的,但无一例外都是提取文本和翻译。
    程序的部分主要是提取和封装,问题通常有以下几类:
    1,文本如何提取出来,是否是明文的.
    2,程序是否支持翻译的目标语言.
    3,封装是否有格式要求.
    而提取文本和封装的一般是要针对游戏引擎/厂商来看的,比如寒蝉的steam版就是没有加密的,而且文本直接明文储存的,旧版是NScripter引擎需要提取,现在基于跨平台的要求绝大多数文本都是明文或者通过某种固定的途径处理的,各位可以根据引擎和产商去检索解包/封包软件,以及文本位置,一般都是有人分享的,自己找的话就要根据你的经验了,我的经验就是认英文或者全部导出检索特定字段类似于charater或者主人公名。如今这个时代一般已经不需要你自己找了,要做的很可能只是添加个字体支持。


    IP属地:江苏2楼2026-01-19 12:37
    收起回复
      2026-03-28 20:21:54
      广告
      不感兴趣
      开通SVIP免广告
      既然是汉化补丁,讲点碎碎念,在我刚冲浪的时候,汉化组很多事介意自己的文本被盗用的所以他们会加密自己的文本,基于我的个人理解不问自取是为窃,所以我个人不会在这个层面提供任何协助。至于为什么只针对汉化补丁,可以理解为我双标,个人标准就是对方如果无偿,我就反对任何情况的未授权自取,对方盈利(包括但不限于收费),那我支持干碎他们。如果遇到exe的封装,方法各式各样但是通常不是很难拆。因为厂家很少干这个事,一般是后续的mod或者补丁作者基于自身意愿做的这个封装,通常自己做改动也不需要拆,这同样的不详述流程了,可以自行学习(毕竟封装有时候就是不希望别人提取)。


      IP属地:江苏3楼2026-01-19 12:39
      回复
        改动别人的作品,找不到原作者交流,那就自己从头去做。当然自己凭借自身的努力去获取内容,甚至于手工照抄下来,我也并无意见。但我个人希望大家在做事的时候,以人们能注意到的方式说明自己的工作到底是哪一部分,无论什么时候都来得及告诉大家。请不要进行一些类似于“我用二元一次方程解出了你的手机密码”这样的发言,哪怕高端一点说“我根据弦理论和脑科学从你的表情动作中破解了你的手机密码”,即使你有信心说其他人看到一堆代码就觉得是高手,也很招笑。大学生要自信,但请不要盲目自信。
        下面是我这次的流程,针对其他引擎和游戏需要有一定的改动,有的可能这样不够。


        IP属地:江苏4楼2026-01-19 12:41
        回复
          祭囃篇的文本是txt里面存储的,没封装,07th-mod也还是这样,里面的CompiledScripts是运行的时候自己编译的,基于更新维护的考虑update中的文件会覆盖前面的同名文件,所以只需要针对update中的去翻译就可以,提取和封装不需要任何操作。编程的人很多也记不住自己之前干了什么,所以大多人命名都是直接反映它的作用。
          请大家养成一个习惯,在操作前备份一下自己要改动的文件,这样你还原起来也容易。
          寒蝉的steam版本中都有游戏名_data这种文件夹,里面sharedassets0.assets这种文件,这是比较明显的unity3d引擎的特征,而他游戏原本不支持中文(新汉化支持了,辛苦汉化组了),所以估计是要添加中文字体的。
          第一步,Unity拆包软件很多,我用的是UABEA,拆包后发现没有ttf文件但是存在几个sdf文件,这是典型的TMP字体,分别是MS Gothic 0和2,考虑到是英文和日文两个版本,那猜测就是日文和英文字体。字库通常可以简单理解为有一张很大图片,把你可能用到的字符都放在上面,具体使用的时候根据你文字对应的指针/坐标(通常是ASCII码)去提取出某一小块图片进行缩放。MS Gothic 微软哥特体,日文系统常用,那估计是会缺省很多汉字了(日文有汉字所以可以部分显示)。
          这时候导出同名的三个文件,举例来说msgothic_0 SDF-sharedassets0.assets-1109.json 这种命名方式看起来是sharedassets0.assets包中序号是1109的msgothic_0 SDF. 附带Atlas的文件最大,估计是图片了, material 看起来是材质应该是影响纹理和色彩之类的,可以暂不处理,没特殊需求应该不需要动。msgothic_2 SDF比较小应该是英文字体,提供本次汉化文本的兄弟是替换的英文,那就动英文字体吧。我不知道他的贴吧ID,不过估计他自己会发,就不去问他然后at了.
          导出为json文件(js语言作为伪代码比较容易看懂,其他支持的格式也无所谓)看一下内容,大致上就是文件结构和字体的具体参数,注意到msgothic 2中的m_glyphInfoList和CharacterCount,嗯看起来这就是包含字符数和字符数的坐标了,ID似乎是ASCII码,再看Atlas中有个很多项的Image data,但是image data只有一大堆数字没有具体的结构,那应该涉及到具体的调用方式,TMP字体毕竟是别人的插件不看源代码是不太能知道如何作用的,先不去分析。
          测试第一步:把Image data数据全部删掉(也可填0试试)重新封装试试,字都不显示了,但是存在占位符,删掉m_glyphInfoList,占位符也没了,把对应汉字项的除ID外的其他数据复制成另一个汉字的,启动游戏发现变成同一个字了,符合预测,文字可能是通过ASCII码调用Atlas中的数据。
          接下来就是我的踩坑时间了,那么只要我生成TMP字体导入进去就好了,Unity Hub启动,建项,生成字体,提取,导入,乱码。嗯,可能版本不对。用软件查一下unity版本,2017,哦,对游戏出的时候还没更新,重新按对应版本生成!导入!又失败。兜兜转转才想起来去看,发现对应的json数据结构不一样。多了一些空项目,变量名都不一样,嗯,Unity版本跨版本可能不支持。抄抄别人的作业,看了一眼07-th mod的网页,寒蝉steam版Unity 是5.5,那时候TMP(text mesh pro)甚至不是官方集成的插件,不愧是日本人,因为太古早了甚至没检测出来,我怎么就没有好好核实版本,无语。
          确认了Unity版本和插件版本之后,重新生成字体导入还是没有字只有占位符(甚至出现了一次占位符都没有)。再次检查文件发现我导入的Altas和msgothic_2 SDF的image data和m_glyphInfoList空了,那大致确认了就是这个问题,个人现实原因没有时间操作(会拖更),抓了苦力quteZSY001来。
          他的解决方式是用07th mod提供的TMPconvert生成msgothic_2 SDF和Atlas,这个好像生成的是.dat(?)所以先导入sharedassets0.assets之后,导出json发现只缺Atlas的Image data,用字体文件的Image data复制过去就可以了。
          具体生成msgothic_2 SDF和Atlas的方式没有要求,你只要生成符合版本的两个文件就可以,无论你是新建个项目生成还是用07-th mod的工具。
          所有的steam版本都是这个操作,注意祭囃篇之后unity好像是2019,毕竟只是添加字体支持,但是请注意不同版本的字体文件path id不一样,所以你替换的时候要稍微改一下内部的调用ID(path id),换字体的话可能还有几个文件hash, 这个hash为了识别你的具体文件,但是你如果用07-th mod那个组提供的工具,那我猜测都有(?)可以自己核实一下。


          IP属地:江苏5楼2026-01-19 12:48
          回复
            (此建议只适用于01-08章)给后来者的建议:起码在我汉化祭雜篇的过程中,07mod提供的TMPConver.py文件是没用的,还得用UABE导出json手动修改。在用unity导出字体的assest文件后,把altas和monobehavir导出json文件,重复操作,把原版的msgothic两个文件的也导出,将原版的两个json文件前面的部分替换你导出的字体的部分,并相应修改前面的内容,比如分辨率(通常是4096x4096),字重(如果和原版一样都是26则不用修改)等。


            应用达人
            应用吧活动,去领取
            活动截止:2100-01-01
            去徽章馆》
            IP属地:广东来自Android客户端6楼2026-02-13 13:22
            收起回复
              (此建议只适用于礼及之后的内容)修改后面几代的字库和前面版本相似,不同的是得用unity2019.4的版本,以及最新的UABE3.0。用Unity的TextMashPro的过程中,必须保证第一行的Custom里的Size是40,而padding是4(其实只要padding/size=10%就好了),然后正常创建,后面则需要你新建一个字体,然后选择你的sdf文件,然后Build项目。
              用UABE打开你Build后的shareassest.assest导出MonoBehavir(原版则需要打开那个文件夹里的所有文件,),MonoBehavir和操作方法和上面类似,Altas则需要在UABE的Plugin导出png,在原版的Altas Plugin Edit选择你导出的png,然后保存(我下载的软件有bug没法保存,只能导出raw再另一个导入raw)


              应用达人
              应用吧活动,去领取
              活动截止:2100-01-01
              去徽章馆》
              IP属地:广东来自Android客户端7楼2026-02-13 13:38
              收起回复
                具体的内容在https://wiki.07th-mod.com/developer/sharedassets/ui-editing-scripts/可以查阅


                应用达人
                应用吧活动,去领取
                活动截止:2100-01-01
                去徽章馆》
                IP属地:广东来自Android客户端8楼2026-02-13 13:39
                回复
                  2026-03-28 20:15:54
                  广告
                  不感兴趣
                  开通SVIP免广告


                  IP属地:江苏通过百度相册上传9楼2026-02-13 14:11
                  回复