该教程以Minecrafto 1.19.2 Forg和 Simple Voice Chat 2.25.29 为准.

不同的版本号下设置可能会有所差异.


svc连接流程

首先用一张流程图来简单解释一下客户端的svc是如何跟服务端的svc服务进行连接的.

Simple Voice Chat 配置教程-第1张图片
该流程由日志文件, 该段源码和测试推断出来的, 具体实现细节可能会有所差异.
从流程图中可以看出主要有以下步骤:

  1.  当玩家进入服务器后本地svc会向服务器请求配置文件.

  2.  获得配置文件之后根据情况进行对应的连接操作.

    2.1 服主没有指定svc服务地址, 则使用玩家登录服务器时使用的地址+配置端口进行连接.

    2.2 发现指定svc服务地址, 使用指定地址进行连接.

上文中的配置端口对应的是 voicechat-server.properties 配置文件中 <port> 所设置的值.

指定地址则对应的是配置文件中 <voice_host>.


接下来举两个对应的例子


1. 服主没有设置<voice_host>

假设服主svc的配置文件<port>的设为默认值24454, 且服务器地址为 example.com.

那么当玩家连接服务器后, 客户端的svc则会使用 example.com:24454 来尝试连接, 这点可以在客户端的日志文件中以 Received secret 为关键词搜索得到.

Simple Voice Chat 配置教程-第2张图片

*实际上日志文件中会显示ip地址而非域名, 因为svc会解析域名对应的ip地址后再尝试连接.


2. 服主有设置<voice_host>

假设服主svc的配置文件<port>的设为默认值24454, 且服务器地址为 example.com. 此处的配置和案例1相同.

但不同的是服主将<voice_host>的值设为 svc.com:23333

那么当玩家连接服务器后, 客户端的svc则会使用 svc.com:23333 来尝试连接而非案例一中的 example.com:24454

Simple Voice Chat 配置教程-第3张图片


从两个例子中可以得出以下几点:

  1.  客户端的一方是无需进行任何连接配置的, 开箱即用. 因为服务器会首先把连接配置传送给客户端.

  2.  客户端也并非一定要用服务端配置端口来进行连接(案例2), 只要你的端口转发设置正确能把数据传回配置端口.


配置教程

接下来根据各种情况来说明对应的配置步骤

下文所有图中的TCP指代mc服务器会用到的TCP端口, UDP则是指代svc服务会用到的udp端口.


拥有公网ip

Simple Voice Chat 配置教程-第4张图片

最简单的网络结构, 只需要在光猫或者路由器上使用端口转发把对应的端口转发出去即可

具体端口转发教程请在B站等网站搜索


使用内网穿透

然而大部分人没有公网ip, 需要使用第三方内网穿透服务, 这些第三方服务都有一个共同点就是在端口上的通常都无法自由选择. 

Simple Voice Chat 配置教程-第5张图片这种情况下根据你偏好案例1还是案例2都有对应的解决方法.


不设置voice_host

通过案例1我们可以知道在没设置voice_host的情况下svc会直接使用配置端口来进行连接. 那么我们只要反过来让配置端口的数值和穿透服务提供的udp端口一样就行.

Simple Voice Chat 配置教程-第6张图片假设我们在穿透服务上获得了端口号为45578的udp端口. 

这时候我们需要把配置文件的<port>设置为相同的45578, 那么svc则会在服务器本地使用这个端口. 

随后我们在穿透服务里把本地的45578 UDP端口穿透出去到对应的45578端口.

Simple Voice Chat 配置教程-第7张图片

那么当玩家登录后客户端的svc会直接试图访问服务器地址的45578 UDP端口, 这个端口也通过内网穿透和服务器本地的45578 端口对接了.


设置voice_host

你也可以通过案例2, 手动指定客户端的svc连接地址来访问服务器的svc服务.

Simple Voice Chat 配置教程-第8张图片

使用案例2的情况下不论是本地端口还是穿透的外网端口都可以随意设置, 这里使用svc默认的24454端口, 和穿透的外网端口45578.

Simple Voice Chat 配置教程-第9张图片在启动穿透之后通常会告诉你使用什么网址进行连接. Simple Voice Chat 配置教程-第10张图片

接下来只要把配置文件中voice_host的值设置为这个网址即可, 当玩家登录后便会尝试使用这个网址来连接svc服务.


多路线配置

有时候会出现同时开启多个路线的的情况, 并且大概率你也无法在每个路线获得相同的端口.

Simple Voice Chat 配置教程-第11张图片

这种情况下, 我们只需要使用案例2把voice_host都指向到一个统一的地址即可.

Simple Voice Chat 配置教程-第12张图片



如有任何疏漏与错误, 欢迎在评论区指出.