Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 435|回复: 2

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

[复制链接]
一只鸽纸 当前离线
积分
2534
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2018-9-15
查看详细资料
发表于 2020-10-17 12:53:13 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 一只鸽纸 于 2020-10-24 18:27 编辑


Nemisys搭建群组服教程
—— by一只鸽纸
未经允许,严禁转载!
一、前言

在此之前惊鸿已经发表过一篇Nemisys教程:https://www.mcbbs.net/thread-900430-1-1.html。但发现该教程并不完善,很多东西没有介绍到,尤其是子服见的跨服。所以本教程作为一个补充和拓展,但绝没有抄袭。

   群组服可以干什么用?
目前大多数服务器普遍为单端,即仅运行一个服务端,也许有些服务器会分为生存服和创造服或是生存服和小游戏服等双端形式,但也不属于群组服的范畴。
  群组是一种分布式部署服务端从而提高服务器资源利用率的技术。比如说当你玩家很多时,单端以至于双端已经无法容纳这么多玩家,这时你就可以考虑搭建群组服来将玩家分散到一个个子服来减轻服务器压力。俗话说得好,不是伞就别硬撑着,如果你没有很迫切的需求(比如没有那么多玩家),或是你的服务器主机配置不是那么好,就不要去作死搭建群组服。



二、什么是Nemisys

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




三、准备工作

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




四、让我们开始吧!

确保你的准备工作已经做得充足。首先,我们当然要下载Nemisys的文件。注意,这里你需要下载两个东西,一个是Nemisyshttps://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:
  1. Code:
  2. @echo[/url] off

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

  4. pause
复制代码

双击这个批处理文件以运行。
Linux:
在服务器目录中创建一个新的启动脚本(start.sh)以启动JAR:
  1. Bash:
  2. #!/bin/sh



  3. java -Xms1G -Xmx1G -jar nemisys-1.0-SNAPSHOT.jar
复制代码


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

  1. Bash:
  2. chmod +x start.sh
复制代码

运行你的启动脚本:
  1. Bash:
  2. ./start.sh
复制代码


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



  3. cd "$( dirname "$0" )"

  4. java -Xms512M -Xmx1G -jar nemisys-1.0-SNAPSHOT.jar
复制代码


打开终端并输入:(不要按回车!)
  1. Bash:
  2. chmod a+x
复制代码


将启动脚本文件拖到“终端”窗口中。(确保在chmod a + x和启动脚本之间留一个空格!)
双击你的启动脚本。

在这里我使用比较常用的Windows平台和Nukkit服务端在本地进行演示。
启动成功后你会看到Nemisys文件夹中出现这些东西:

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

  1. #Properties Config file
  2. #2020-07-22 08:48:16
  3. motd=BlockCityNetwork(服务器动态显示条内容)
  4. server-ip=127.0.0.1(代理端IP)
  5. server-port=19132(代理端端口,玩家将通过这个端口进服)
  6. synapse-ip=127.0.0.1(子服IP)
  7. synapse-port=19133(子服端口,玩家不可通过此端口进服。注意子服端口可不用开放至公网,且子服端口不可被占用)
  8. password=12345678909LBWNB(密码,记住它,稍后会用,必须为16位。)
  9. lang=chs(语言,chs为中文,eng为英文)
  10. async-workers=auto
  11. enable-profiling=off
  12. profile-report-trigger=20
  13. max-players=2333(最大玩家数。这里指的是整个群组服的最大玩家)
  14. plus-one-max-count=on
  15. dynamic-player-count=on
  16. players-per-thread=50
  17. enable-query=on
  18. enable-rcon=off
  19. rcon.password=iYjk1NjI5N
  20. debug=1
  21. enable-synapse-client=off(是否允许玩家不通过代理直接进入子服,建议填off)
  22. display-stats-in-title=on
  23. ansi=on
  24. send-start-message=off
复制代码

现在你已经基本配置好Nemisys了,下一步去配置SynapseAPI。
现在启动或重启你的子服,然后将它关闭以生成SynapseAPI的配置文件。打开你子服的plugins文件夹,找到SynapseAPI这个文件夹,打开config文件:
  1. #Synapse API for Nukkit: config
  2. disable-rak: false
  3. enable: true

  4. entries:
  5.   - server-ip: 127.0.0.1(这里填刚刚在Nemisys的配置文件里写的子服IP)
  6.     server-port: 19133(这里填刚刚在Nemisys配置文件里写的子服端口)
  7.     isMainServer: true(是否作为默认服务器,即玩家加入后的默认服务器。若多个服务器设置为默认服务器,则玩家加入时会随机分配到这些服务器中。你可以用这个功能大展身手。)
  8.     isLobbyServer: true(是否作为大厅服务器,即玩家返回大厅时进入的服务器。不一定是默认服务器才能作为大厅服)
  9.     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>中的回复)
  10.     password: 12345678909LBWNB(刚刚你在Nemisys配置文件里填写的密码)
  11.     description: NukkitIsTheBest(描述,稍后会用到,请保证所有子服的描述不一致且描述不带空格)
  12.     autoConnect: true
复制代码


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

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





五、跨服

按照上述步骤搭建完成群组服后,你仅能加入默认服务器。尽管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插件或菜单插件使用。





六、注意事项
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




作者的话:百忙之中得以抽出时间完成本教程,势必会有所疏漏,欢迎指出错误。如果本教程帮到了您,请给个评分吧!

评分

参与人数 1人气 +3 金粒 +25 收起 理由
wjwrh + 3 + 25 MCBBS有你更精彩~

查看全部评分

振翮高飞 当前离线
积分
116
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2018-4-30
查看详细资料
发表于 2020-10-18 19:16:01 来自手机 | 显示全部楼层
夹吃灰……密码LBWNB可还行…感谢楼主
回复

使用道具 举报

xx_80111 当前离线
积分
51
帖子
主题
精华
贡献
爱心
钻石
人气
下界之星
最后登录
1970-1-1
注册时间
2020-10-16
查看详细资料
发表于 2020-10-22 07:09:37 来自手机 | 显示全部楼层
学习了,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2020-12-4 22:56 , Processed in 0.050829 second(s), Total 14, Slave 13 queries, Release: Build.2020.11.13 1521, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表