下一代高性能跨平台Terraria模组加载器
📦 官方Mod仓库
- 文明用语,保持友善交流环境
- 禁止讨论任何政治敏感话题(遵循中国和国际法律法规)
- 不得传播暴力、极端或违法内容
- 技术讨论应保持专业性和建设性
| 项目名称 | 用途 | 协议 |
|---|---|---|
| Jetpack Compose | Android UI框架 | Apache 2.0 |
| EFMod | TEFModLoader的Mod设计标准 | MIT |
| BNM-Android | 在 Android 上通过类、方法、字段名称修改 il2cpp 游戏的库 | MIT |
| Dobby | 一个轻量级、多平台、多架构的漏洞利用钩子框架。 | Apache 2.0 |
| SilkCasket | TEFMod文件格式 | Apache 2.0 |
| Axml2xml | 高级和增强的 axml 编译器 | - |
| axml-parser | 将axml转换为xml格式 | - |
| xml2axml | 将xml转换为axml格式 | - |
🔧 开放架构 支持C++原生模组开发,未来将扩展多语言生态
⚡ 极致性能
- 内存占用逼近原版游戏
- 模组运行效率超越TL Pro
- 冷启动时间与原版游戏基本持平
🖥️ 跨平台覆盖 Android/Windows/Linux三端协同开发,一次开发多端部署
| 组件 | 技术选型 | 特性 |
|---|---|---|
| 核心引擎 | C++20标准 | 自动管理内存 |
| UI框架 | Jetpack Compose + MD3 | 动态主题/交互动画/多语言 |
| ABI接口 | C++20稳定接口 | 兼容NDK/Windows SDK/Linux GCC |
| 构建系统 | CMake + Gradle | 跨平台增量编译 |
| 系统平台 | arm64 | x86_64 | x86_32 | arm32 |
|---|---|---|---|---|
| Android | ✔️ | ✔️ | ||
| Windows | 🚫 | 🛠️ | 🛠️ | 🚫 |
| Linux | 🚫 | 🛠️ | 🛠️ | 🚫 |
| iOS | 🚫 | 🚫 | 🚫 | 🚫 |
| macOS | 🚫 | 🚫 | 🚫 | 🚫 |
图标说明:
- ✔️ 已验证支持
⚠️ 已适配未测试- 🛠️ 开发中
- 🚫 不支持
平台说明:
-
Android:
- x86架构完成适配但尚未测试
- arm架构已通过基础测试
-
Windows:
- x86_32架构正在开发
- x86_64架构正在开发
- 全系ARM架构暂不支持
-
Linux:
- 优先考虑Windows
- x86_32架构正在开发
- x86_64架构正在开发
- 全系ARM架构暂不支持
-
Apple生态:
- iOS/macOS因设备限制暂停开发
- 暂不提供任何架构支持
| 设备型号 | 处理器架构 | 内存配置 | 运行表现 |
|---|---|---|---|
| vivo Y33s | MT6833 | 6+2GB | 稳定60fps,零卡顿 |
| 荣耀9i | Mali-T830 MP2 | 4GB | 60fps,肉眼无差异 |
当前测试基于小型模组包(<5MB),因社区生态尚未成熟,暂未进行大型模组压力测试
TL Pro使用的就是V8引擎,理论上优于该方案 与JavaScript方案(V8引擎)的预期差异:
| 性能维度 | C++原生方案优势 | JS JIT方案局限 |
|---|---|---|
| 内存开销 | 仅增加原生库加载内存(≈3MB) | 需承载V8运行时(≈35MB) |
| 计算密集型任务 | 直接调用CPU指令集 | 存在JIT编译开销 |
| 冷启动速度 | 无运行时初始化环节 | 需预热V8引擎(≈800ms) |
-
推荐系统: Debian
-
跨平台构建工具链:
Gradle-8.11.1 # Android export ANDROID_MIN_SDK=24 export ANDROID_MAX_SDK=35 export AGP_VERSION=8.6.1 export NDK_VERSION=28.0.12916984 # Windows - Visual Studio 2022 17.8+ - CMake 3.29+ with Ninja # Linux -Clang -Cmake -Mingw
受影响版本:10.0.0 Beta3.4以下的所有Beta版本
错误表现:路径中错误地将TEFModLoader拼写为TEFModLoaLoader
自动修正方案:
/**
* 自动修正路径拼写错误
* @param path 原始路径
* @return 修正后的路径
*/
std::string FixPathTypo(const std::string& path) {
std::string corrected = path;
const std::string WRONG_STR = "TEFModLoaLoader";
const std::string CORRECT_STR = "TEFModLoader";
size_t typoPos = corrected.find(WRONG_STR);
while (typoPos != std::string::npos) {
corrected.replace(typoPos, WRONG_STR.length(), CORRECT_STR);
typoPos = corrected.find(WRONG_STR, typoPos + CORRECT_STR.length());
}
return corrected;
}