Noeiov0.3.0
最佳实践

Minecraft 联机

和朋友异地联机玩 Minecraft,不租服务器、不走内网穿透中转,两台电脑 P2P 直连

和朋友异地联机玩 Minecraft,不租服务器、不走内网穿透中转。把两台电脑连进同一个虚拟子网后 P2P 直连,延迟就是两台机器之间真实的网络延迟,配置一次之后每次直接用。

想和朋友异地联机玩 Minecraft,常见的方案有三种:买一台游戏服务器、用内网穿透工具、或者走 P2P 直连。Noeio 属于第三种。

内网穿透的链路是「玩家 A → 公网穿透服务器 → 玩家 B」,来回都要多绕一跳。多模组场景下每次区块同步、实体更新都在跑网络,这一层中转积累下来体感很明显。

游戏服务器对原版 Minecraft 是个好选择,资源需求低,十几块钱一个月就够。但加了大量模组后内存和 CPU 占用成倍增长,配置要上去,月费也就不那么划算了。

Noeio 的 P2P 方案少了那一层转发,延迟就是你们两台机器之间真实的网络延迟。配置一次,之后每次联机直接用。

考量维度P2P(Noeio)内网穿透游戏服务器
原版游戏可用可用可用
多模组流畅延迟明显配置成本高
成本低低高
延迟低中中

联机步骤

1. 准备 derper

derper 是 Noeio 用来协助节点打洞的中继服务,两种方式选一种。

  • 方式一:公开试用服务器。 在试用 Derper页面选一台服务器生成 token,页面会同时给出配对的 network ID 和下面几步要用的启动命令,两位玩家使用同一份。
  • 方式二:自行部署。 如果你有公网服务器,可以自己部署一台 derper,更稳定、延迟也更可控。部署和生成 token 的步骤见快速开始。

2. 安装 noeio

两位玩家都要在自己的电脑上安装。脚本会识别系统与架构,下载对应的二进制并放入 PATH。也可以去下载页手动下载。

macOS / Linux:

curl --proto '=https' --tlsv1.2 -sSf https://noeio.net/install.sh | sh

Windows(PowerShell):

irm https://noeio.net/install.ps1 | iex

3. 启动 daemon

两位玩家都要执行。把 --derper-server 换成 derper 地址,--derper-token 换成第一步拿到的 token。也可以写进配置文件后直接 noeio boot,见配置文件。

Windows 用户请以管理员身份打开终端(右键开始菜单,选 Windows 终端(管理员));macOS / Linux 用户请在命令前加 sudo,如 sudo noeio boot。

noeio boot \
  --stun stun.chat.bilibili.com:3478 \
  --derper-server <derper-address> \
  --derper-token <token>

4. 创建虚拟网卡并开始联机

玩家 A 负责开房间,玩家 B 加入。更多玩家参照玩家 B 的步骤。

玩家 A

创建虚拟网卡。 为自己分配一个虚拟 IP,推荐 100.64.0.x 网段,--network 填入第一步拿到的 network ID。创建完成后把这个 IP 告诉玩家 B。

noeio create vnic --ip 100.64.0.1 --network <network-id>

在 Minecraft 里开放局域网。 进入存档后按 Esc,选「对局域网开放」,然后「开启联机」。把虚拟 IP(100.64.0.1)发给玩家 B,让他在「直接连接」里填入。

在 Minecraft 里对局域网开放

玩家 B

创建虚拟网卡。 向玩家 A 要到 network ID,为自己分配另一个虚拟 IP。每个玩家的 IP 不能重复,最后一段在玩家 A 的基础上依次加 1(100.64.0.3、100.64.0.4……),最大不超过 255。

noeio create vnic --ip 100.64.0.2 --network <network-id>

连接到玩家 A 的游戏。 打开 Minecraft,进入「多人游戏」,选「直接连接」,输入玩家 A 的虚拟 IP(100.64.0.1)即可加入。

设置地址为玩家 A 的 noeio IP 和端口

连接成功,服务可达

延伸阅读

On this page