[其一] 简单的介绍
在了解Folia服务端之前,需要读者对各种服务端有大致上的了解。
在基于Bukkit的Minecraft服务器中,常用的核心有Spigot、Paper、以及各种混合端核心(Forge+Bukkit)。混合端核心不在本文的考虑内容之中,让我们先了解Spigot、Paper、Folia之间的关系。
Folia是什么?
我们知道,Spigot是由SpigotMC发布,一款基于BukkitAPI的服务端。 Paper服务端则是PaperMC社区对Spigot服务端进行优化了,并添加了PaperAPI。
那么Folia服务端呢? Folia服务端是Paper的分支,像Paper一样,Folia服务端适合的场景是纯插件服务器,它集成了Paper对Spigot的优化,同样也拥有自己的特点:多线程。
如果你有开过服务器,或者你有所耳闻: 当你开设的服务器在线人数变多、各种机器变多的时候,你的服务器TPS可能会越来越低,甚至到达个位数。这种情况下玩家几乎不能正常的游玩,也许挖掘完一个方块后需要等待两秒才会掉落。你也许会在论坛或者其他地方了解到,由于Minecraft服务器是运行在单线程上的,这种情况要么去提升你服务器核心性能的上限,要么开设群组服。 然而提升硬件性能需要较高的经济代价,开设群组服又会有一些玩家体验和技术上的不便。于是一些服主会使用各种限制”优化“,例如减少区块加载、限制实体数量等导致玩家体验变差的插件,最终导致部分玩家的流失。
而如今,对于高版本的插件服,Folia核心也许会成为你的另一种选择。简单来讲,Folia服务端的运行不再依赖于单线程,在这个服务端中,大约9个区块会被合并为一个区域让一个单独的线程来管理。而原版的单线程就像所有的区块都归它一个线程管理。Folia的这个特性就像另一种群组服,把不同的区域和区域之间以一种独特的"群组"方式来组合起来。这种服务端的实现会大大提高处理器的性能利用效率,基本不会出现"一核有难,多核围观"的场面。这种情况下,对于低频多线程的处理器是较为友好的(E5神教!)。在官方给出的测试数据里,使用双路AMD EPYC 7713(128c/256t @2.0GHz)处理器的服务器,在线玩家330+的情况下单端TPS仍旧保持在较高水平(19.00+)。
下载Folia服务端
由于Folia服务端暂时并没有任何的Releases,因此你需要自行构建: PaperMC/Folia 。
或许你会在不久的将来可以在Folia | PaperMC 处直接下载服务端。
注意,请不要通过下载压缩包的方式来尝试构建,你需要安装Git 在项目地址使用GitBash来克隆仓库。
git clone https://github.com/PaperMC/Folia.git
然后使用./gradlew build
或者gradlew.bat build
来构建 。
你需要使用jdk 17,否则会报错:
bad class file (错误的类文件) org.bukkit.XXX
class file has wrong version 61.0, should be 52.0 (类文件具有错误的版本 61.0, 应为 52.0)
如果你实在想偷懒...
Forks · PaperMC/Folia (github.com) 找一下看看有没有好心人最近更新然后上传了Releases, 比如它?
但没人能不保证这些Forks是没有经过修改的、始终是最新的,所以最好自行构建。