shabbywu / Battle-Brothers-CN

Battle Brothers(战场兄弟)中文翻译项目
https://battle-brothers-cn.shabbywu.cn/
GNU General Public License v3.0
498 stars 6 forks source link

data_cn.zip 在哪里? #117

Open neoedmund opened 11 months ago

neoedmund commented 11 months ago

data_cn.zip 在 release 下找不到。 另外能介绍一下这个汉化的过程和原理吗? 还有 bb-translator的源码有吗? 谢谢。

shabbywu commented 11 months ago

由于是内核汉化(虚拟机字节码级别的汉化), 为了支持各式各样的 Mod, data_cn.zip 需要由 bb-translator 生成

如上所述, 这个汉化的原理是修改 squirrel-lang 编译生成的字节码,大致过程就是扩展了 squirrel 闭包的上下文(闭包中的上下文包含了这个闭包用到的所有字符串, 用术语来说就是常量池) 然后大地图中文字符展示又是另一个领域的内容, 大致过程就是实现了使用 OpenGL 渲染 TrueTypeFont 字体,并通过技术手段修改了游戏原来的大地图渲染逻辑

目前汉化项目分成了 bb-translator/bb-launcher/UI 3个部分, 个人有代码洁癖,在整理好源码前没有开源的计划。

neoedmund commented 11 months ago

追问两个问题 我看到了adammil的mod工具可以反编译.cnut 字节码比源码对于汉化在技术上有什么优势吗? 大地图渲染逻辑是改squirrel程序还是反汇编exe做的呢?

shabbywu commented 11 months ago

从字节码入手汉化的优势:

  1. 避免反编译工具有 bug
  2. 处理字节码比处理源代码(纯文本)更容易实现工业化/自动化 2.1 文本提取 2.2 文本汉化
  3. 更容易实现测试覆盖(是的, 在没有开源的代码里, 汉化工具是有单元测试覆盖的)
  4. 关注点分离, 我始终认为汉化组不应该过分关心游戏源码,这是团队协助必然的结果,没有人可以精通所有事项

大地图渲染逻辑是反编译 exe 后注入 hook 实现的,所以容易报毒


其他关于这个汉化的实现和其他已有汉化的差异可以参考 ref: https://github.com/shabbywu/Battle-Brothers-CN/issues/18

neoedmund commented 11 months ago

竟然做了这么多的努力,给你一个赞!

neoedmund commented 11 months ago

建议提供一个不是bb_translator.exe的方案。 和别的Mod一样的方案。 这样对Linux和steamdeck的用户更友好一些。

shabbywu commented 10 months ago

launcher 上个月完全重新实现,顺便把代码梳理了下,近期有空的话可以开源部分代码。 translator 因为被我改到在 github action 构建不了了,近期没有空调试,所以先搁置一段时间吧。我本地是 Mac 开发,理论上 Linux 跑完全没问题,就是有些东西是 c++ 编译的,支持不同环境的 CMakefile 不好写。