aixgame员工 发表于 2020-1-26 17:58:56

【COM3D移植】 YATranslator 翻译插件(优化载入速度)

dalao ED_Dimon17 做一份超多文本的机翻。然而由于YATranslator设计的时候没有考虑极大量文本的情况,于是每次开COM3D2都要额外浪费蛮多时间(也就1分钟)。

闲得无聊就去改了下YATranslator的源码。

现在可以直接吃ZIP,直接把整个ZIP文件载入到内存然后在内存里面载入。这样机械硬盘的载入速度会很快,但是载入的时候需要额外耗费些内存(取决于ZIP文件的大小,不过那机翻文本大概就300MB不到)。

其次就是改了一下内部数据结构,理论上是会减少内存使用,但是实际上加载速度能加快很多。原本58秒的加载现在变成了10.5秒,加密的ZIP文件会额外多亿点时间,大概30秒。

但是这些改动和原版的功能可能有些冲突,不过主要是ZIP文件的问题。不能重载 (reload)和延迟加载(lazy load)翻译文本;但是YATranslator延迟加载是需要手动指定什么时候加载,机翻看上去是没有设置。看上去其实影响也不算特别严重?

其他的副作用目前来看并不是很清楚,不过顶多就游戏崩溃罢了。不过YATranslator本身给COM3D2用就很多bug,其实也无所谓?(反正我已经修了一些)

新增加了个`DictCapacity`选项来预分配内存加快读取速度,机翻一共有85万条翻译,于是我凑个整填了一个1048576。整体内存占用大概在1.8G,解压时算上COM3D2大约2G内存。

本质上通过空间和增加计算量换取载入速度。不过游戏本体的载入速度依然占大头。


[*]
[*]EnableStringReload=False
[*]Dump=None
[*]DumpLevels=-1
[*]Load=All
[*]MemoryOptimizations=None
[*]TextureNameTemplate={NAME}
[*]Verbosity=None
[*]EnableTranslationReload=False
[*]ReloadTranslationsKey=F12
[*]ZipPassword=<这里设置密码>
[*]DictCapacity=1048576

复制代码


然后我只测试了 ED_Dimon17 dalao做的机翻,用的是上面的设置(密码记得替换)。

顺带吐槽下这翻译,例如:“他のクラブに斡旋できないかな?”翻译成了 “不能介绍到其他俱乐部吗?”

然后是修了几个YAT的BUG,我自己发现的是红框的地方是原版YAT不能正确显示;现在就能正常显示了(逃



还有就是存档和女仆的备注原版YAT也是不能修改,貌似一并解决了。

不知道你们有没有遇到这个问题,反正我是遇到了

ZIP文件塞到 COM3D2\Sybaris\UnityInjector\Config\Strings 里面就行,至于ZIP文件里面的目录结构没有特殊要求。如果没有特殊情况尽量用英文,因为unity一般不会带全字符解码库。

需要注意的是,这个插件是适配了COM3D2,应该是不能给CM3D2 用。于是我把名字也改了,想要安装这个插件请把CM3D2开头的YATranslator删掉。

代码稍后会上传到GAYHUB,ZIP文件解压用的是一个迷一样的库: https://github.com/haf/DotNetZip.Semverd (.net Framework 4.5 之后自带ZIP文件解压)

解压密码: nideii@ZODGAME


爱斯基摩羊 发表于 2023-1-25 06:32:38

谢谢大大!
页: [1]
查看完整版本: 【COM3D移植】 YATranslator 翻译插件(优化载入速度)