RowingLink:用真实的划船机来开 Minecraft 里的船

2026-04-21, 星期二, 23:23

MAKE

目前已发布到 rowinglink - GitHub

书接上回 花了半个下午看看有没有办法从我的划船机导出实时运动数据 鸽了快一年后。眼瞅着 Kayak VR Mirage 的划船机议程实在是没有什么进展,我决定借助 Claude Opus 4.6 + GLM 5.1 + Godot 做点什么东西出来,不过在消耗了可观的 token 后发现自己欠缺的好像是审美。

就在这时候,Arnis 给了我灵感 —— 这个项目能用 OpenStreetMap 的数据生成 Minecraft 地图。与其从零开始搭一个过得去的 3D 世界,Minecraft 显然是个更好上手、更好折腾的框架。

上回玩 Minecraft 好像还是 1.17 版本。研究了一阵子 Fabric Mod 框架后,我捣鼓出了这个叫 RowingLink 的 Fabric 模组。

原理很简单:通过 UDP 协议接收划船机的数据,把功率和桨频转化成游戏里小船的推进。我还加了个自动转向功能,默认是开着的,这样你就不用担心撞到岸上,只要埋头划桨就行了。当然,如果你觉得方向不对,随时可以手动拨回来。

首先,你得有一台划船机,而且你得有办法把它的运动数据弄出来。如果你的机器支持 FTMS 协议,那事情就简单多了。我家里这台 Mok Fitness K10 是个私有协议,所以我逆向分析了它的蓝牙数据包,写了一个解析逻辑,用的就是上一篇文章的方法,不过多划了一会以找出进位的方法。如果你用的是别的牌子,可能得自己动手。如果你的划船机没有数字化的交互手段,那我推荐 Open Rowing Monitor(布豪,This repository was archived by the owner on Apr 5, 2026. It is now read-only)。

我得承认自己不是什么 Minecraft 模组专家,因此只在下面这个环境里跑通过:

  • JDK 21
  • Minecraft 1.21.11
  • Fabric API [0.141.3+1.21.11]
  • 单人游戏模式

为了让划船的感觉更真实,我还装了一堆非常棒的视觉增强模组:

  • Iris [1.10.7+mc1.21.11]
  • Lithostitched [1.6.1]
  • Sodium [0.8.7+mc1.21.11]
  • Tectonic [3.0.19]
  • Voxy [0.2.13-alpha]
  • Voxy World Gen V2 [2.2.4]

顺便提一下,Prism Launcher 真的很好用,管理版本和模组省了我不少事

  1. 先把 Fabric API 装上
  2. 运行 ./gradlew build 来构建项目,生成的 jar 文件就在 build/libs/ 下面
  3. 把这个 jar 文件扔进你的 ${MINECRAFT_DIR}/mods/ 文件夹
  4. 启动你的数据桥接工具,让它往 UDP 端口发数据
  5. 进游戏,坐上船,输入 /rowing connect
  6. 开始划吧
    • 如果你想练个二十分钟,就用 /rowing train 20
    • 如果你想要一点魔鬼训练,就开生存模式

老实说,它们在我的 Ryzen 9700X 上运行似乎有些吃力(最后发现是不知道什么主板配置导致超线程没开启),暂时也不清楚如何优化 Mod 的配置,不过换成 Apple Silicon M5 就顺畅了,这下成了「我有个叔叔用 x86 Windows 11 打游戏.jpg」了

我还在 modrinth 上找到了一些自行车模组,所以动感单车什么的也不是不行。

什么,你说有 EXR 这样的服务?那可要花老多钱了。