Pumpkin - 使用 Rust 开发的高性能 Minecraft 服务端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Q2297045667
V2EX    Rust

Pumpkin - 使用 Rust 开发的高性能 Minecraft 服务端

  Q2297045667 7 天前 1164 次点击

Pumpkin 中文社区统一宣传文档,可根据相应平台规则做相应的简化和修改。

众所周知因为 Minecraft 使用 Java 作为开发语言,这导致其他人很容易就能反编译出他的源代码,进行二次修改后扩展游戏内容,这种开放性最终也造就了这款史上最畅销的游戏传奇。

然而多年过去,随着游戏内容越来越多,Java 作为一个半解释性、半编译性的语言,性能逐渐捉襟见肘。外加 ojang 的历史遗留代码(俗称“屎山代码”),导致其性能表现越来越不尽如人意。

当然,这些年 Java 也在持续进行版本迭代,优化其 JVM 虚拟机性能,同时加入了许多新特性,例如更高效的调用方式、新的 GC 内存回收机制等。原本按照玩家设想,ojang 应该积极采用 Java 的新特性来优化游戏性能,然而 ojang 似乎并未完全朝这个方向努力,导致游戏性能越来越跟不上日益庞大和复杂的游戏内容。

随着后续出现的各种优化 Mod ,客户端的游戏性能确实得到了极大改善。同样,服务端这边也涌现出许多基于原版开发的第三方服务端,其中以 Bukkit API 为主,衍生出了众多插件类服务端。PaperMC 旗下也推出了几乎重写了整个区块系统的 Folia 服务端。

这些服务端功能各异,但都统一在性能上做了大量优化。然而,Minecraft 从最初设计上就没考虑单服务器下承载大量玩家的情况。由于其核心框架是单线程的,若不能进行大刀阔斧的重构,那么无论怎样修改,都无法脱离主要逻辑处理仍受限于单线程的瓶颈。

什么是 Pumpkin ?

Pumpkin 是由 Pumpkin-MC 社区开发的一款全新的、开源的、高性能、可扩展的 Minecraft 服务端,它使用 Rust 作为开发语言。

它旨在为玩家提供快速、高效且高度可定制的游戏体验,专注于极致的性能优化和流畅的玩家体验,同时严格遵循原版游戏的核心机制与行为。

那么 Pumpkin 的核心功能和相较于其他同样完全重写服务端到底有什么竞争优势?

遵循原版游戏机制:

优先游戏特性:

  • 与 Cuberite 、Obsidian 、Ferrumc 等服务端不同,我们完全遵守原版游戏的核心特性和机制,我们的开发团队中有相当一部分成员是资深的红石大佬,确保每个细节都符合预期。

对照原版代码开发:

  • 在开发服务端功能时,我们优先保证代码逻辑与原版特性和行为完全一致,其次才考虑性能提升。这确保了最大程度的兼容性和原汁原味的体验。

多平台&版本支持:

多平台:

  • 南瓜端同时支持 Java 版 和 基岩版 客户端登录,实现了真正的跨平台同服。当然,游戏特性的实现主要以 Java 版为基准。
    • 支持的基岩版本:1.21.30

多版本:

  • 南瓜自带多版本支持(目前只维护 Java 客户端且实际内容以最新支持版本为主),截止到本文编写时主分支已经支持 1.21.7 ~ 1.21.11 的客户端登陆。

灵活的身份验证:

  • 允许管理员配置身份验证服务器,可接入第三方验证服务器,也可允许盗版和正版账户同时登陆。
    • 注意:暂时还无法多个身份验证服务器共存。

强大的区块系统:

完全的多线程:

  • 全新开发的多线程生成和保存/读取区块系统,并提供 API 接口以实现第三方插件调用,经最新测试,使用原版 50 到 100 倍的飞行速度将区块视距拉高到最高 32 视距飞行,在更低的资源使用情况下区块加载/保存/生成的性能相较原版预计提升 20 ~ 30 倍左右。

支持更多区块格式:

  • 得益于使用 Rust 重写的底层,我们的区块系统在支持相同格式时,拥有更高的性能和更低的资源占用,未来还将支持更多区块格式。
    • Anvil (原版默认):已完全支持
    • Linear (线性区域):已完全支持
    • Slime ( Anvil 的改进版):尚在计划中
    • Schematic (结构):尚在计划中

高效的压缩算法库:

硬件加速支持:

  • 现已支持调用特定 CPU 或 SoC 的指令集(如 SIMD )来实现关键算法的硬件加速优化。未来还可能探索加入 GPU 加速地形生成 等功能,以进一步降低和平衡 CPU 负载。

更快的网络性能:

高效的数据包处理:

  • 由于重写了整个网络栈,大量采用多线程与异步 I/O 模型,相较于原版,数据处理效率更高,带宽占用更少,网络延迟也更低。

支持多种协议:

  • 原生支持主流反代理服务,且兼容稳定,数据包处理性能高效,未来还会扩展其他网络协议支持。
    • BungeeCord:已完全支持
    • BungeeGuard:暂时不支持
    • Velocity:已完全支持
    • Query:已完全支持
    • RCON:已完全支持
    • Gourd (一个基于 Pumpkin 协议库的轻量级代理端):https://github.com/Purdze/Gourd

强大的网络数据包压缩:

  • 使用了更高效的压缩库,同时支持更强的压缩算法,相较于原版使用的 ZLIB 库,具有更高的压缩效率,更低的延迟,更强的资源利用率。

减少不必要的数据包收发:

  • 列如,当方块或者实体距离玩家超过一定距离时自动较少非必要的状态更新数据包(如熊猫的情绪,鸡的产蛋冷却,熔炉状态等),从而显著降低网络流量,当玩家接近方块或者实体一定距离时恢复正常更新。

自定义负载支持:

  • 允许插件通过自定义负载( Custom Payload )访问插件通道,实现与客户端模组的深度互操作性(例如与 Simple Voice Chat 模组通信)。这使 Pumpkin 插件能够与依赖插件通道的各类客户端模组进行双向通信。

全面开放的扩展方式:

支持插件加载器:

无需编写代码:

未来支持 Mod:

  • 规划在未来支持向服务端添加真正的 Mod (即新增内部物品、方块、功能逻辑)。

官方的插件市场:

  • 南瓜拥有官方的扩展市场,目前处于小范围测试阶段。设计目标是支持多语言插件、多平台分发,并包含付费资源支持机制

强大的牛马团队:

目前的开发进度:

超多的贡献者:

  • 目前截止文档编辑直接向南瓜端贡献的开发者(包括我在内)共有 193 位开发者,这还不包括他的各种衍生项目,直接或者间接向南瓜和各种衍生项目(包括文档,压测工具,网站等)贡献的开发者超过 300+。

各类衍生项目:

意见和建议:

  • 我们广泛地接受来自社区的意见和建议,这会使得我们的发展更加充满创意和动力。

我们面临的挑战和常见问题:

无法发挥最大化性能:

  • 由于需要遵循原版游戏特性,因此会造成在整体设计上的一些缺陷,虽然南瓜对比原版各方面都拥有大量的提升,但是当一个功能拥有效率更高、资源更低的方式来实现的时候,常常为了能够与原版行为类似而采用效率更低的方式来运行,但是我们相信只要持续坚持和改进总能都取得特性和性能之间的平衡。

扩展生态兼容:

  • 即便我们开发出了能够加载 Bukkit 、Spigot 、Paper 插件的 PatchBukkit 也依然无法 100% 完美兼容老插件,列如 PatchBukkit 不支持 NMS 和多线程插件。

内部稳定性:

  • 我们不得不承认完全重写服务端的 BUG 和稳定性相对比较差,这是一个需要长期维护和修复的过程。

内容的不完善:

  • 即便我们做了很多内容但是对比原版游戏内容来说还是杯水车薪,但是随着我们的快速更新和强大的开发团队,我们一定会在计划规定的时间内给大家一个相对完整的游戏体验。

我们的联系方式和项目地址:

10 条回复    2026-02-26 11:58:33 +08:00
kkk9
    1
kkk9  
   7 天前
玩啥游戏都不晕,就 Minecraft 晕 3D 咋办

(长隆过山车我能连坐 3 趟全程睁眼的身体素质不应该啊)
Q2297045667
    2
Q2297045667  
OP
   7 天前
@kkk9 那不应该啊,我玩 MC 感觉还好,但是其他游戏会有一些晕
youngxhui
    3
youngxhui  
   7 天前 via iPhone
@kkk9 我也是,玩一会就头疼的厉害不玩不下去了
1zh3n
    4
1zh3n  
   7 天前 via Android
作者似乎年纪不大,厉害
iniMeow
    5
iniMeow  
   7 天前
支持
Q2297045667
    6
Q2297045667  
OP
   7 天前
@1zh3n 0 多,还在上大学
kkk9
    7
kkk9  
   6 天前
@Q2297045667 #6 大学建议谈恋爱体验下爱情的美好,别天天沉迷电子设备,等毕业就知道什么叫做现实的女人
Q2297045667
    8
Q2297045667  
OP
   6 天前
@kkk9 额,我是说主要开发者,人家是德国人,我只是贡献者之一,哈哈,我 30 了,都上班十几年了
bigmomo
    9
bigmomo  
   23 小时 10 分钟前
看起来不错啊
Q2297045667
    10
Q2297045667  
OP
   2 小时 57 分钟前
@bigmomo 这两天我也是成功晋级了,从贡献者混到项目管理员了
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5504 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 26ms UTC 06:55 PVG 14:55 LAX 22:55 JFK 01:55
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86