After building the APK, android/build.sh now picks the attached device (ANDROID_SERIAL for several), installs the APK (reinstalling on a signature mismatch), syncs the zh client into files/Client and, with --launch, wakes the phone and starts the app. Without a device it only builds. push-client.sh is now incremental (android/sync_client.py): the device keeps files/Client/.mt_sync (size, mtime, path of what the last sync wrote), so later syncs send only new and changed files as one tar streamed through `adb shell -T run-as` (no copy in /data/local/tmp) and delete the ones gone locally. Only game resources are synced; settings and logs the app writes there are kept. --locale zh rebuilds build/zh-locale/Client first when its inputs changed. android/adb_env.sh picks adb and falls back to server port 5038 when :5037 cannot bind. Verified against a fake adb device: first sync (1.4 GB, byte-identical), no-op resync, changed files, deletions, locale switch, --full, the install/launch path and the no-device path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
Metin2 原生客户端
40250 客户端的 macOS / Android 移植。SDL3 负责窗口与输入,Vulkan 负责 3D 和 UI 渲染;macOS 上通过 MoltenVK 使用 Metal。40250 的 C++ 逻辑、Python 2.7 脚本和 EPK 资源由 src/port 与 src/platform 提供。运行时不依赖 Godot。
macOS
需要 CMake、SDL3、Vulkan loader、MoltenVK、glslc(第三方库均已随仓库提供源码,无需子模块):
cmake -S . -B build/release -DCMAKE_BUILD_TYPE=Release \
-DMT_BUILD_NATIVE_RENDER=ON -DCMAKE_PREFIX_PATH=/opt/homebrew
cmake --build build/release --target mt_native_render -j8
./build/release/src/host/mt_native_render \
--live-client "/path/to/40250/Client" --login-screen --width 1024 --height 768
Android
./android/build.sh # 构建 APK;连着手机时自动安装并增量推送中文资源
./android/build.sh --launch # 同上,完成后唤醒手机并启动
APK 由 SDLActivity、libSDL3.so 和 Vulkan 原生 libmain.so 组成。40250 Client 资源单独同步到应用数据目录(android/push-client.sh,只传有变化的文件);--live-server HOST:AUTH_PORT:GAME_PORT --login-screen 可连接服务器。构建与启动细节见 src/host/README.md。
测试
./script/port_gate.sh macos
port_gate.sh 构建并运行 40250 移植层的 C++ 测试。原生渲染验收入口是 scripts/native_mac_acceptance.mjs。历史迁移记录保留在 docs/PORT-PLAN.md;其中旧 Godot 路径已经退役。