• 【MineBBS社区发展意见征集】

    欢迎参与MineBBS社区调查,助力打造更好Minecraft社区!完成问卷可获赠200金粒,优质回答可额外获得200金粒(限5名),快来参与吧!【点击参与】

教程 [服务端] Nemisys —— 搭建一个无缝跨服的基岩版群组服吧!

从不咕咕的鸽纸

琉璃酱可爱w

开发者
正式会员
注册
2019/10/27
消息
308
金粒
4,474金粒

Nemisys搭建群组服教程
—— by一只鸽纸
未经允许,严禁转载!​
一、前言​
在此之前已经有人发表过一篇Nemisys教程:https://www.mcbbs.net/thread-900430-1-1.html。但发现该教程并不完善,很多东西没有介绍到,尤其是子服间的跨服。所以本教程作为一个补充和拓展,但绝没有抄袭。​
群组服可以干什么用?
目前大多数服务器普遍为单端,即仅运行一个服务端,也许有些服务器会分为生存服和创造服或是生存服和小游戏服等双端形式,但也不属于群组服的范畴。
群组是一种分布式部署服务端从而提高服务器资源利用率的技术。比如说当你玩家很多时,单端以至于双端已经无法容纳这么多玩家,这时你就可以考虑搭建群组服来将玩家分散到一个个子服来减轻服务器压力。俗话说得好,不是伞就别硬撑着,如果你没有很迫切的需求(比如没有那么多玩家),或是你的服务器主机配置不是那么好,就不要去作死搭建群组服。

line2.png



二、什么是Nemisys​
Nemisys(中文名内米西斯,来自谷歌生草机翻译)是一个使用RakNet和SPP协议的代理。它仅仅是一个代理端,起到一个转发的作用,这意味着当你仅开启一个Nemisys时,玩家是不可能进入服务器的。
Nemisys相关链接:
①Nemisys本体下载链接:https://ci.nukkitx.com/job/NukkitX/job/Nemisys/
②SynapseAPI下载链接:
(Nukkit版):https://ci.nukkitx.com/job/NukkitX/job/SynapseAPI
(PM版):https://poggit.pmmp.io/ci/NukkitX/SynapsePM/SynapsePM
③Nemisys官方WIKI:https://cloudburstmc.org/wiki/nemisys
它的工作原理:
首先,玩家用客户端登录Nemisys代理服,然后Nemisys代理服务端会把你的数据转发到子服务器上面,子服务器可以为Nukkit或PM服务器。假设你现在有一个Nemisys服务端,一个普通的Nukkit大厅服和一个小游戏服,并且将大厅服设置为默认服务器,那么当玩家输入你服务器的IP进入游戏时,他实际上会进入这个大厅服。​




line2.png



三、准备工作​
①Java8或以上版本
②一台性能足以支持群组服运行的服务器主机,官方WIKI并没有给出标准配置。在这里我的服务器主机配置为12H、24G、30M并且可以流畅带动Nemisys代理端及下游服务端,大家可以用作参考。
③熟悉Nukkit或PM服务器的操作。Nukkit服务器搭设教程见此:https://www.mcbbs.net/thread-1076111-1-1.html
④一个聪慧的大脑以至于你不会犯下如把jar形式的插件放入BDS服务端文件夹的这种迷惑操作​

line2.png



四、让我们开始吧!​
确保你的准备工作已经做得充足。首先,我们当然要下载Nemisys的文件。注意,这里你需要下载两个东西,一个是Nemisys:https://ci.nukkitx.com/job/NukkitX/job/Nemisys/,它是一个单独的代理端;一个是SynapseAPI,它是插件形式,需要放入你想连接的下游服务器(子服)中:https://ci.nukkitx.com/job/NukkitX/job/SynapseAPI/
没有特殊情况,我们就选择master主分支即可。
下载好Nemisys后,将其放在一个单独的文件夹;下载好SynapseAPI后,将其放入子服的plugins插件文件夹。
首先运行Nemisys
(以下内容来自NemisysWIKI)
Windows:
将以下文本粘贴到文本文档中,将其另存为与nemisys-1.0-SNAPSHOT.jar相同的目录中的start.bat:
Code:
@echo[/url] off

java -Xms1G -Xmx1G -jar nemisys-1.0-SNAPSHOT.jar

pause
双击这个批处理文件以运行。

Linux:
在服务器目录中创建一个新的启动脚本(start.sh)以启动JAR:
Bash:
#!/bin/sh



java -Xms1G -Xmx1G -jar nemisys-1.0-SNAPSHOT.jar

打开终端并在目录执行以下操作:

Bash:
chmod +x start.sh
运行你的启动脚本:
Bash:
./start.sh

Mac OS X:
创建一个新的启动脚本(start.command)以在服务器目录中启动JAR:
Bash:
#!/bin/sh



cd "$( dirname "$0" )"

java -Xms512M -Xmx1G -jar nemisys-1.0-SNAPSHOT.jar

打开终端并输入:(不要按回车!)
Bash:
chmod a+x

将启动脚本文件拖到“终端”窗口中。(确保在chmod a + x和启动脚本之间留一个空格!)
双击你的启动脚本。
在这里我使用比较常用的Windows平台和Nukkit服务端在本地进行演示。
启动成功后你会看到Nemisys文件夹中出现这些东西:
145554h48rxnna1m8ro488.png

logs和plugins文件夹懂得都懂,不作过多解释。
我们需要更改的是server.properties这个文件,这里只对常用的更改项进行说明,其他的通常不需要多作更改:

#Properties Config file
#2020-07-22 08:48:16
motd=BlockCityNetwork(服务器动态显示条内容)
server-ip=127.0.0.1(代理端IP)
server-port=19132(代理端端口,玩家将通过这个端口进服)
synapse-ip=127.0.0.1(子服IP)
synapse-port=19133(子服端口,玩家不可通过此端口进服。注意子服端口可不用开放至公网,且子服端口不可被占用)
password=12345678909LBWNB(密码,记住它,稍后会用,必须为16位。)
lang=chs(语言,chs为中文,eng为英文)
async-workers=auto
enable-profiling=off
profile-report-trigger=20
max-players=2333(最大玩家数。这里指的是整个群组服的最大玩家)
plus-one-max-count=on
dynamic-player-count=on
players-per-thread=50
enable-query=on
enable-rcon=off
rcon.password=iYjk1NjI5N
debug=1
enable-synapse-client=off(是否允许玩家不通过代理直接进入子服,建议填off)
display-stats-in-title=on
ansi=on
send-start-message=off
现在你已经基本配置好Nemisys了,下一步去配置SynapseAPI。
现在启动或重启你的子服,然后将它关闭以生成SynapseAPI的配置文件。打开你子服的plugins文件夹,找到SynapseAPI这个文件夹,打开config文件:
#Synapse API for Nukkit: config
disable-rak: false
enable: true

entries:
- server-ip: 127.0.0.1(这里填刚刚在Nemisys的配置文件里写的子服IP)
server-port: 19133(这里填刚刚在Nemisys配置文件里写的子服端口)
isMainServer: true(是否作为默认服务器,即玩家加入后的默认服务器。若多个服务器设置为默认服务器,则玩家加入时会随机分配到这些服务器中。你可以用这个功能大展身手。)
isLobbyServer: true(是否作为大厅服务器,即玩家返回大厅时进入的服务器。不一定是默认服务器才能作为大厅服)
transferOnShutdown: true(在子服关闭后返回默认服务器。该功能已失效,详见:<a href="https://cloudburstmc.org/threads/transfer-on-shut-down-in-nemisys-didnt-work.933/">https://cloudburstmc.org/threads/transfer-on-shut-down-in-nemisys-didnt-work.933/</a>中的回复)
password: 12345678909LBWNB(刚刚你在Nemisys配置文件里填写的密码)
description: NukkitIsTheBest(描述,稍后会用到,请保证所有子服的描述不一致且描述不带空格)
autoConnect: true

配置全部完成。现在启动Nemisys,然后再启动子服,(请注意以后的群组服开启顺序都是首先开启Nemisys端然后再启动子服,否则会导致子服连接不上代理)如果Nemisys的控制台出现如下提示则表示群组服已搭建成功,现在已经具备基础的功能了。
155749wgx51ha0g0u1anea.png

请忽略下面的报错,那是因为我直接强制关闭子服导致的。
仿照以上方法,你可以添加更多子服。同一个群组服中的子服SynapseAPI配置中的IP和端口要保持与Nemisys中的配置一致。​

line2.png



五、跨服​
按照上述步骤搭建完成群组服后,你仅能加入默认服务器。尽管Nemisys有一个/server命令,但它似乎是无效的(详见:https://cloudburstmc.org/threads/how-to-use-nemisys-for-transfer.929/中的回复)。因此这里我们需要使用一个插件来达成跨服操作:
https://cloudburstmc.org/resources/synapsetools.225/(尊重作者,请在原贴下载)
将此插件下载后,放入子服的plugins文件夹,重启服务器生成配置文件。一般情况下无需更改其配置文件,用默认的即可。
如何跨服?
①子服间跨服:输入/transfer 子服的描述(对,就是上面SynapseAPI配置文件里写的那个description) 即可跨服。
②返回默认服务器:输入/hub
以上命令均可搭配NPC插件或菜单插件使用。​

line2.png


六、注意事项
1.群组服无需将全部端口开放到公网,通常情况下只需要玩家加入的端口开放到公网即可。
2.不建议子服使用PowerNukkit核心。PN核心的玩家加入事件似乎与原版NK不同,这会导致玩家无法通过transfer加入使用PN核心的子服。
3.注意,群组服不代表玩家数据可以在各个子服互通,Nemisys本身没有互通数据的功能。若想使玩家经济、背包物品等在各子服间同步,你需要使用一些插件或有能力可以独自开发。这里推荐几个数据互通插件:
经济(EconomyAPI)数据互通:https://cloudburstmc.org/resources/economyapi-mysql-provider-add-on.316/
背包物品互通:https://cloudburstmc.org/resources/playersync.367/
聊天信息同步:https://cloudburstmc.org/resources/nemisyschatmodule.199/
4.Nemisys开发缓慢,请谨慎使用。你可以选择使用PetteriM1大佬开发的的Nemisys,支持多版本:https://github.com/PetteriM1/NemisysProxy

4.gif



作者的话:百忙之中得以抽出时间完成本教程,势必会有所疏漏,欢迎指出错误。如果本教程帮到了您,请打赏一点吧!
 
最后编辑:
支持一下,非常有用...顺便吐槽下这祖传排版 :evil:
 
请问跨版本的话nemisys能做到吗?
 
玩家进入提示Please choose another name and try again!是什么意思啊
 
玩家进入提示Please choose another name and try again!是什么意思啊
你看看玩家名字有没有什么异常,没有的话也有可能是网不好,挂个加速器试试
 
配置文件有些看不懂,有点听糊涂了
代理IP应该写什么?子服IP是不是写大厅服的IP?
 
[36m21:08:19[m [[31mWARN [m] Trying to re-connect to Synapse Server
[36m21:08:19[m [[31mWARN [m] Synapse Client can't connect to server: 127.0.0.1:10305
[36m21:08:19[m [[31mWARN [m] Reason: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /127.0.0.1:10305
[36m21:08:19[m [[31mWARN [m] We will reconnect in 3 seconds
 

在线会员

  • magic diaodeng
  • linkkkkkkkkkk
  • hkyyds4763
  • 启明12
  • 孤星泪
  • BZMD-YM
  • The_small_GOD
  • FlowerDance
  • EthanAxe
  • Liou_Yang
  • MHserver
  • Dillan
  • NetK
  • Yshine
  • yangyang8002
  • 安亦
  • hhhhGG
  • TheDababa
  • 嘻嘻69
  • sssjiu
...和 81 更多。
后退
顶部 底部