Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

data_cn.zip 在哪里? #117

Open
neoedmund opened this issue Oct 17, 2023 · 6 comments
Open

data_cn.zip 在哪里? #117

neoedmund opened this issue Oct 17, 2023 · 6 comments

Comments

@neoedmund
Copy link

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

@shabbywu
Copy link
Owner

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

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

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

@neoedmund
Copy link
Author

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

@shabbywu
Copy link
Owner

shabbywu commented Oct 18, 2023

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

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

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


其他关于这个汉化的实现和其他已有汉化的差异可以参考 ref: #18

@neoedmund
Copy link
Author

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

@neoedmund
Copy link
Author

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

@shabbywu
Copy link
Owner

shabbywu commented Dec 6, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants