首页 > 其他分享 >记一次视觉小说机翻历程

记一次视觉小说机翻历程

时间:2023-09-26 22:14:27浏览次数:40  
标签:翻译 历程 日文 机翻 字体 长度 视觉 byte 文本

0. 前言

最近想看点故事书,上网搜了一个盗版,但是只有日文。之前黄队搞了一个汉化教程,我也来试看看。

1. 解包

游戏文件夹里有一个 data.unity3d,很巨大。这说明游戏使用了 Unity 引擎。可以下载一个 Unity 解包器 (UABE)。解包后,Export Raw sharedassets0.assets 并打开,可以看到很多关键文件 (特效、文本、字体、图标等)。

2. 找文本

里面有很多 txt,大概是字母后面跟一个数字。

就改了 A1 的一句话。之后,用 UABE 的 Import Raw,把新文件塞回 sharedassets0.assets,再把这个塞回 data.unity3d

(结果,游戏没变化)

稍作观察,游戏里的第一句话和 A1 里第一句话不尽相同!经过寻找,X 才是第一章,我们对 X1 进行同样的操作。

(还是一点变化都没有)

试错后,我终究把这种 txt 都删了,游戏照样运行。原来每个章还有一个 book 文件。但是想问开发者:有什么把文本写 2 遍的必要么?

3. 格式分析

这种文件如果随便打开,很乱码。用 Notepad2 把编码改成 UTF-8,可以看到这些日文,中间有神秘指令,旁边是一些游戏中的结构,还有很多黑色块。

我们选用 010 Editor,可以看到文件的每个 byte。原来黑色块的 ASCII 比可见字符小,且大多是 0。并且,非文本非 0 的某些地方也存在规律:对于一段文本的前面 1~2 个 byte,存了一个整数,表示这段文本占用的 byte 个数 (第 \(i+1\) 个 byte 的值是 \(2^i\)) (后面才意识到,是至多 4 个 byte)。

于是,我更改了第一句话及其长度,但是程序直接无法运行。经过多次试错,心态有点崩。最后,我钦定长度不变,把一个平假名改成汉字 (都是 3 个 byte),总算让程序跑起来了。

(此时,我还以为是程序对长度序列进行了 Hash,于是想找到这段代码在哪里。我下了很多逆向工程软件,有静态调试、动态调试,还有同步它们的插件。实力不佳,很长的代码/汇编不知道看哪里,浪费了很多时间。)

(此时还没把文本长度看作 32 位整数。)

4. 机翻

考虑到中文通常比日文短,可以不更改文本长度,翻译后在后面补空格。

申请了百度翻译 API,免费翻译 \(10^6\) 字符/月。上网抄了一份能调用它的 Python 代码,预编译成 pyc。

C++,启动!对于每行,正文前面有一些关键日文,不能动。我们可以选取每行最后一个有日文字符的连续段 (要理解 UTF-8 规则) 翻译。

(但是,文件中有很多 int,所以经常出现 0A byte 被误判为换行,导致误翻关键内容。幸好,正文以“「”或“ ”开头,加一道验证即可。)

X 章翻了 2 个小时。中文长于日文的地方很少,直接不管。塞回去,又是报错。我每次将一个已翻译的前缀和一个未翻译的后缀拼起来塞回去,略显二分地找出了错误地点。

原来是一段文本和后面的一个文本长度搞到同一个连续段里了。于是根据文本前的字串长度,又写了一个程序修了一下。

(此时我才发现,每个文本长度总是以文件种第 \(4k+1\) 个 byte 开头。)

原来,程序其实根本就没有对长度序列进行加密。之前改文本长度导致文件失效,只是因为没把一个 int 放在 4 的倍数的位置啊!但是懒得改了。

5. 改字体

翻译好了!字体感觉不如... 实际上,有 2 种字体混在一起,估计是其中 1 种字体不完全支持中文。

sharedassets0.assets 里找到了很多字体。根据这篇文章操作,反复试错后,终于找到了最关键的字体。

大功告成。

6. 尾声

这次历程,聚降智,罗趣味。不过现在我可以看中文故事了,很值得。

标签:翻译,历程,日文,机翻,字体,长度,视觉,byte,文本
From: https://www.cnblogs.com/alfalfa-w/p/17731168.html

相关文章

  • 梵赛优视觉科技:建设舒适的浏览体验,设计可以做什么?
     在这内容为王的时代,海量的图文资讯信息充斥在我们的碎片化时间中,有驾作为百度生态体系内的汽车信息服务平台,内容建设尤为重要。那么设计有哪些手段为内容建设助力呢?接下来,我们依据阅读体验升级的设计经验,从目标拆解、痛点分析、设计打法等维度来分享设计思路。  设计目......
  • 计算机初级选手的成长历程——汉诺塔问题详解
    大家好,很高兴又和各位见面啦!在上一篇我们通过3道习题复习了一下函数的相关知识点,今天我们将讨论一个非常经典的问题——汉诺塔问题。编写函数来解决汉诺塔问题:(1)什么是汉诺塔?简单的理解就是有三根柱子,其中一根柱子上有n个由上到下逐渐增大的圆盘,我们需要在保证圆盘始终是大圆盘在下,......
  • 计算机视觉:从图像识别到深度学习
    ......
  • 计算机小白的成长历程——数组(3)
    大家好,很高兴又和大家见面啦!经过前面两篇的学习,我们已经知道了一维数组及二维数组,今天我们将继续介绍数组的相关内容。数组越界数组的下标是由范围限制的。规定:数组的下标从0开始,如果有n个元素,最后一个元素的下标就是n-1。所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超......
  • 计算机小白的成长历程——数组(2)
    大家好,很高兴又和大家见面啦!在上一篇我们介绍了一维数组的相关内容,今天咱们要介绍的是二维数组的相关内容。二维数组的创建和初始化1.二维数组的创建(1)什么是二维数组个人理解对于二维数组,我是这样理解的:一维就是一条线,二维就是一个面,那一维数组就是只有一行或者一列的数组,而二维数......
  • 基于飞桨打造智能工业视觉平台,象点科技助推先进制造业缺陷检测智能化升级
    先进制造是制造业中的关键领域,其综合运用新技术、新设备、新材料、新工艺、新流程、新生产组织方式,集现代科学技术之大成,是一国工业实力和现代化水平的重要体现。随着人工智能时代的到来,人工智能技术与制造业融合日益加深,智能化成为当前先进制造业的典型特质之一。在视觉技术方面,视......
  • 银牛视觉AI处理器采用芯原创新的ISP IP
    芯原股份今日宣布3D视觉与人工智能(AI)解决方案提供商银牛微电子(简称“银牛”)在其量产的NU4100视觉AI处理器中采用了芯原低延迟、低功耗的双通道图像信号处理器(ISP)IP,为机器人、增强现实(AR)/虚拟现实(VR)/混合现实(MR)、无人机等多种应用领域带来了优秀的图像和视觉体验。银牛NU4100是一款......
  • Lnton羚通机器视觉算法平台禁区闯入识别系统 危险区域AI智能分析预警系统
    Lnton羚通的算法算力云平台是一款出色的解决方案,具备突出的特点。该平台提供高性能、高可靠性、高可扩展性和低成本的功能,使用户能够高效地执行各种复杂的计算任务。此外,平台还提供了丰富的算法库和工具,支持用户上传和部署自定义算法,提高了平台的灵活性和个性化能力。禁区闯入识别......
  • 探秘移动端BI:发展历程与应用前景解析
    什么是移动端BI维基百科上对于移动端商业智能的定义是这样的>MobileBIisasystemthatpresentshistoricalandreal-timeinformationonmobiledevicesforeffectivedecision-makingandmanagementsupport.Itenablesanalysisonsmartphonesandtablets,lead......
  • Lnton羚通机器视觉算法平台人员入侵检测 重点区域人员徘徊算法检测
    Lnton羚通的算法算力云平台是一款出色的解决方案,具备突出的特点。该平台提供高性能、高可靠性、高可扩展性和低成本的功能,使用户能够高效地执行各种复杂的计算任务。此外,平台还提供了丰富的算法库和工具,支持用户上传和部署自定义算法,提高了平台的灵活性和个性化能力。人员闯入识别......