duskers吧 关注:1,487贴子:10,401
  • 1回复贴,共1

dusker刺刺的汉化思路、碎碎念和相关

取消只看楼主收藏回复

感谢大家一直以来的支持和赞许,你们说的每句话我都有看。楼主迫于生活压力已难以继续,等情况好转后才能重新散发光和热。看到大家重新对这个游戏有了兴趣十分感动,故把当时所记录着的一些笔记来分享给想要继续汉化的人们。

首先你想汉化它,需要很大的决心,翻译一个游戏可能比做一个新游戏难度更大。里面也有着很多挑战和问题,并不是每个问题都有答案。善用外语、善变通。
你所需的时间,可能得以百小时来计,才做出一个稍微能看的东西。但依然有着很多的翻译错误,语句不通畅,漏了标点符号,游戏跳出,和汉化漏翻,这个仍需要很多时间和精力来解决。
汉化的本质,是在逆向工程破解游戏,然后再重新做一个出来。你的外语和编程(汇编)水平,是两项非常重要的技能。

这个游戏本身由u3d构成,其汉化方法与其他u3d游戏类似。所有的u3d引擎制作的游戏,都有着类似的目录结构树和文件名,这可以帮你判断文档存在位置,也是汉化游戏思路的关键,但并不是每个u3d游戏文本的存放位置都相同,这个很大程度取决于作者本人,这点需要注意。
这种翻译方法一般成为内核汉化,是直接修改文件的,只适用于特定版本,换版本后可能会导致未知情况发生。每换一个版本,基本也得相当于重头再来重新汉化一遍游戏。在旧版这个游戏文本的存放位置十分混乱,并且每个版本的存放位置也不尽相同。可能其中的文字并不光以文本形式出现,更会以图片或其他形式,存在于各种各样的文件中。每个文件的查看方法有着相近的思路,但具体方法是不同的,照搬可能很难奏效。
界面和字体通常存放在dll中。游戏日志与帮助和组件通常存在于assets。比如Assembly-CSharp.dll,和resources.assets。要注意的是,这个并不是绝对的,需要翻译的内容可能还存在于其他文件中,比如Duskers.exe中也可能藏有一段文字,或是sharedassets0.assets中(也可能是lua或zip中)。
所以第一步就是如何找到你所需要的内容。你得需要一个能在目录中以多种编码搜索所需文字的软件来实现。比如游戏中有一个Start,你就得在文件中找到这个Start在哪,然后替换成相应翻译后的内容。不要动其他不相关的内容。有时翻译一个再进游戏就能直接显示中文,这是最理想的情况。有时再进会直接跳出或卡死,这时你需要检查标点符号偏移量或语法问题。有时翻译后文字依然是英文,这说明没有找对文本位置,它可能也会以图片或其他形式出现,并且并不单在一个文件中。有时翻译后会出现乱码或方框,这是最令人棘手的问题,这说明缺少正确的编码和字体库,这时就得改变汉化思路了(需要注意的是,并不是每个内容都能找到,你对游戏引擎的理解很大程度上决定了汉化的完成度)
理想情况下是如此,但这个游戏通常不会把内容以文本形式呈现,是加密的,你通常搜不到任何东西。所以第一步是认识各个文件,把能解包的东西尽量解包。前者dll本质是一段类似exe的程序,exe程序可以通过一行代码或参数,来调用运行dll中的内容。所以它们的内容基本是不可读的,是一堆机器码。界面字体通常存在于dll中。对待它们的方法主要是用别人现成的软件如dnspy,或类似专门修改dll的软件,最后手段是十六进制编辑器打开,搜索对应文本并谨慎的进行替换。对于游戏内,则是Assembly-CSharp.dll。
而其他剧情文本主要在resources.assets,sharedassets1.assets中。这类文件类似于加密压缩包,需要特定的软件来解压,然后重新打包。我之前使用的是unity soution预览出,UnityAssetsExplorer修改替换。它们本质都属于Unity引擎生成的数据文件,所以方法基本通用,如果你遇到了困难,可以考虑看看其他这个引擎游戏的汉化方法,说不定会豁然开朗。

时代在变化,旧版本的软件可能并不好用了。楼主水平有限,也并不是每个包每个文本都能找见。当时也没有叫dnspy的这种神器,善用新工具,新软件,google、chatgpt,new bing等新时代的编程神器。
时间太久了,我没法记清楚每个细节,我只能尽量把能想到的写出来。
感谢大家都还惦记着我,感谢你们一路上的陪伴。
未来的道路任重道远,前途坎坷。人生像是一场审判,有着无数的问题等待我们去解决,解决问题越多,你也会越发强大。
致敬每个在路上默默前行的你们,你们是真正的英雄。


IP属地:山西1楼2023-10-11 22:12回复
    放一个详细版的汉化教程,up主并不是本人,可以给你提供更多的指引,www.bilibili.com/read/cv25817569/


    IP属地:山西2楼2023-10-11 22:15
    收起回复