// Bukkit 与 Spigot 的冷战(2013 ~ 2014)
自从原开发团队离去后,先不提越来越慢的更新和越来越落后的 API,CraftBukkit 的性能也饱受诟病。许多人都自己私下制作了 CraftBukkit 的优化版本,当时最出名的是 CraftBukkit++,着重优化了农作物生长的部分,能显著提高 TPS(ticks per second,TPS 越低,服务器就越卡,和我们玩游戏时说的 FPS 帧数很相似)。但是每个优化版本都只是优化了一小部分,这个优化通讯,这个优化实体,这个优化 AI,这个优化地图加载... 有没有一个版本的 CraftBukkit,能集齐百家所长呢?
有的,那就是由 md_5 大神开发的 Spigot。
md_5 同学的头像,橙色的史莱姆
来来来,先上个功能列表:
- TPS increases
- Optimized growth, decay and chunk ticking
- Automatic conversion between online and offline mode.
- Auto stack merging for items and experience orbs
- Chunk garbage collector to prevent chunk leaks
- Convert your offline mode server to online mode without losing player data
- Configurable values for many vanilla/Bukkit messages (e.g. whitelist, no permission)
- Disabling of random light updates
- Optimized anti x-ray (Orebfuscator)
- Efficient Netty networking engine
- Smart crash and hang detection / prevention
- Reverse compatibility with CraftBukkit plugins
- Entity activation and tracking ranges to ensure client-side and server-side resources are only used when needed
- Prevent server load caused by maps in item frames
- Automatic restarts upon a server crash
- Automatically stays up-to-date with the latest CraftBukkit changes
- Ability to disable TAB command complete
- Customization over what the console logs
- Fine control over growth rates, chunks, and ticks
- Optimized tick loop
- Memory-reducing nibble arrays
- More accurate benchmark timings reports
- Configurable chunk packet sending
- Threaded chunk compression
是不是不明觉厉?
总之,你只要知道 Spigot 是个牛逼哄哄的强化版 CraftBukkit,只要换上它你的服务器立刻流畅几倍,提供的 API 和配置文件都更丰富,并且完全开源免费。
或许大家还理解不了上面说到的 15 TPS 是什么概念。15 TPS 意味着服务器在二十分钟内会有五分钟都完全无法响应你的请求。你拿一把钻石剑砍人十次,可能就有三次明明砍中了对方也不会扣血,因为服务器正忙着处理别的事儿呢,没空理你的请求,自然也就不会做攻击判定。而 Spigot 做过多线程相关的优化,所以自然没有这类问题。
正常人能做到 Spigot 这个地步也就足矣,之后就只需时不时更新一下,就可以自我陶醉于众人的喝彩声里了。md_5 也完全可以凭着他的编程实力随便加入个一线服务器赚大钱,但他并没有止步于此。
我们都知道,Minecraft 是个吃内存的游戏。服务器也同理:1GB 内存最多只能带给 10 名玩家最好的游戏体验,玩家数一超过 15 服务器就会开始卡;而现在市面上的 VPS 虚拟主机最多也就 8GB 内存,只能容纳 80 个玩家。
于是初期的服主们大多采用的做法是,开多几个服务器,每个服务器上的插件、地图、配置全部一样,玩家的数据则储存在一个统一的 SQL 数据库内。然后玩家们就用类似http://server1.tigerserver.net,http://server2.tigerserver.net 这样的 IP 进入服务器的不同分支。嗯,听上去不错。
问题在于,跨服务器之间的通讯将变得极为困难。例如,玩家将无法直接在游戏内从 server1 的世界传送到 server2 的世界,聊天消息也无法互通,甚至服务器是否满人还得玩家自己连连看才知道,间接令玩家的体验大大降低。而 md_5 正想着手解决这个问题。
Bungeecord,就是 md_5 与他的 Spigot 团队提供的解决方案。Bungeecord 如同一座桥梁将不同服务器无缝地连接在一起,同时还向开发者提供了容易扩展的 API,整合了跨服通讯等实用的功能。详细的技术原理我们就撇开不谈了,只说说结果吧:如今,所有一二三线的服务器都在使用 Bungeecord。
Bungeecord 无疑是 Spigot 交出的一份完美的答卷
如果说 Spigot 让 md_5 一炮成名,那么 Bungeecord 就足以让他被捧上神坛。Spigot 论坛变得越来越热闹,而另一边厢的 Bukkit 论坛却不断的流失着用户。这事儿想起来也很喜感:明明 Spigot 只是 Bukkit 的扩展,但结果青出于蓝而胜于蓝,2012 年还在通通用 Bukkit,2013 年就已经是 Spigot + Bungeecord 的天下了。像是一夜之间,Bukkit 论坛兴旺不再,原本为 Bukkit 团队喝彩的人们都跑去 Spigot 喝彩了。
Bukkit 团队:“...”
Bukkit 团队完全可以和 Spigot 合作,为 Minecraft 业界一起打造出耀眼的未来。不过在 Spigot 刚刚流行起来的时候,EvilSeph(还记得吗?2012 年初加入 Mojang 的其中一位)不知道何故从 Mojang 辞职,反而回到了 Bukkit 开发团队里。EvilSeph 作为 Bukkit 的创始人之一,自然看 md_5 们不顺眼,所以不知从哪一天起,Bukkit 论坛不再允许任何与第三方服务器端有关的讨论。就连提到名字都不行。
夹杂点私货吧,笔者曾经在 Bukkit 论坛询问过一条关于 Bukkit API 的问题,问题描述里我这么写:“...这个问题似乎在某个以 S 开头的服务器端里也存在着。(暗指 Spigot)”。然后该贴子就被删除了。我以“Stop hating 3rd party unofficial builds(不要再对第三方服务器端们心怀仇恨了)”为题发贴,贴子被封锁,两天后被删除。以上是管理员 TnT 给予我的解释。从此我几乎不再上 Bukkit 的论坛。
越来越糟糕的性能和 API,还有封闭的言论自由都令越来越多原本忠实地守在 Bukkit 的人一再失望(包括我在内),而此时的 Spigot 论坛却友善地接纳了这一群 Bukkit 支持者。在 Bukkit 论坛的管理员们忙着删贴、十多天都不审核插件平台(BukkitDev)上的插件的时候,Spigot 论坛推出了 Premium Resources平台和 Services & Recruitment 版块。前者是个交易平台,开发者可以自由地上传自己写的插件,并向下载者收取一定金额的费用;而后面这个论坛版块更厉害,服主们可以在这里招揽人才,时不时都会有一线服务器过来招人,有实力的人则在这里推广自己的服务,我自己就在上面发过 offer,专门帮人订制小游戏。
现在还活跃在 Bukkit 论坛的,大多都是初来乍到的新手;就以现在我打这行字的时点来做个统计,Spigot 论坛在线人数 197,Bukkit 论坛 26,相差整整 7 倍多!现在国外是凌晨时分,要是高峰期的话,估计距离会拉得更远吧。Bukkit 和 Spigot 之间不知不觉进行起来的冷战,持续了一年多,终于又在无声无息中以 Spigot 的彻底胜利告终。
// EULA 危机(2014)
“泥嚎,我们又见面了”
这事儿又得从我们的主角说起 —— 唉你说你忘了主角是谁了?
“靠尼玛我都多久没出来过了!?”
2014 年 6 月。瑞典。
Notch 正一边喝着啤酒,一边舒服地倚在阳台的躺椅上晒太阳。这天是星期日,刚好适合休闲 —— 不过反正是不是周末他也是照样宅在家里,最多拖着日渐发福的身躯去楼下跑跑步,顺路光顾一下就隔着两条街的 Mojang,和自己的属下们谈笑风生。
真是美好的一天呀。
突然,他好像想到了什么,利索地坐直身,抓起摆在一旁的手机。就在几个小时前,他在推特上发了一张自己正在制作的游戏的图片,一句话也没说,深藏功与名。
嗯,是时候看看有多少转发和评论了,他心想,随之点亮了屏幕。
他满意地看见屏幕上方原本黑不溜秋的状态栏上出现了一排浅蓝色的推特图标:看来他发的图片有不少人关注嘛。
Notch 故作淡定地点开推特的客户端,发现竟然有几百多个人@了自己!尼玛人气这么高!?他镇定地喝了一口啤酒,转眼又赶紧开始阅读起来...
Vermanion @vermanion · 1m@notch 看起来好棒!md_5 @md__5 · 3m@notch 要不这次直接让我们来帮你开发多人模式算了?
...很好很好!反馈挺不错的嘛。让我继续往下看...
Wah Wong @wahwong · 1h@notch 你个混蛋...你谁啊?
Cesar Leavey @cleavey · 1h@notch@Minecade 你们俩等着收法院传票吧。...你又是谁啊!?
Romina Victor @romina1960 · 1h@notch 你收钱收得够爽了吧,够了,别再祸害我儿子了!
我收谁钱了啊??新游戏预购都还没开始啊!!!
Notch 疾步走入屋里,拿起话筒,拨通了 Jeb —— 他在 Mojang 的接班人 —— 的号码。电话那头安静地听完 Notch 的血泪控诉,长叹了一口气。“老兄,咱们 Mojang 这个月都收了三百多封投诉信了,推上几个@而已,很快就习惯啦。”
.......
好啦好啦好啦,全部是我瞎编的。不过我觉得我这个猜测也猜得八九不离十了 —— 因为 Mojang 的人确实对自己的游戏被滥用以赚钱感到忍无可忍了。就在 2014 年 6 月 12 日,Mojang 官方博客更新了一篇文章,光是标题就金光四射,足以将所有 Minecraft 玩家的眼球聚焦于此:
“Let’s talk server monetisation!”(咱们来谈谈商业化吧!)
服主们见到标题,心里一颤,卧槽绝对没好事。
虽然心里老大不乐意,但总得点开看看吧,说不定是虚惊一场呢?
Mojang 一开始先小步跑到服主们面前,主动送上鸡汤:
“我们先把话说在前头:无论是小型的合家欢服,还是站在业界前线的大服;也不管你是用 SMP 开服,还是用第三方的服务器端开服 —— 我们都不介意,你们能够这么做实在让我们太高兴了。”
正所谓攻心计嘛,大家都知道这么一说,接下来就肯定没好事。果然,刚送完温暖,Mojang 就严肃地声明道:
“然后呢,其实从法律角度上来讲,你并不能利用我们的产品赚钱。”
你并不能利用我们的产品赚钱。
眼见服主们通通哭了,赶紧再端上一碗鸡汤压压惊,“不过之前有一个例外:在与 Minecraft 有关的视频里放个广告赚钱,这一点我们是允许的。现在我们决定为 Minecraft 的多人服务器们,再制作一个‘例外’。”
“咦?例外?”
“不过你必须遵从下面的这些规则...” Mojang 露出了温柔的微笑,却让人不寒而栗。
文中的规则大致归纳如下:
你可以利用服务器赚钱,以下两点除外:
- 禁止出售影响 gameplay 的内容。任何破坏游戏平衡度的物件 / 特权不得出售。例如:屠龙宝剑、隐形药水、食人猪宠物等等。作为反例,纯属装饰用途的物件则可以出售,例如不会攻击生物的宠物,或者围绕玩家身边的酷炫粒子效果,又或者超帅但毫无防御能力的全身装甲,则可以出售。我们希望所有的玩家都能享受平等的游玩待遇,不管他们是否付过钱。
- 禁止出售披风。披风是我们赠予给某些玩家的专属礼物,我们不希望别的玩家也拥有这些披风(指的是某些 mod 可以将原本属于玩家 A 的披风穿到玩家 B 身上),这无疑伤到了赠礼者和被赠者的感情。
这就是 Mojang 提出的新用户协议(EULA)。
好吧,那我们来仔细研究一下。披风并不适用于 Bukkit 的服务器们,所以第二点问题不大。然而我们来看看第一条...
也就是说不管是红金会员橙金会员黄金会员绿金会员青金会员蓝金会员紫金会员黑心会员白金会员所拥有的特权还是双倍金钱三倍经验四倍伤害五倍防御六倍速度安倍晋三之类的效果加成或是屠龙刀倚天剑斜阳弩邪影枪魅影刃凌波戟龙吟斧王大锤打狗棒孔雀翎蚊须针等等的稀有武器又或是让海蛇大狗碧狼荒鹫碧池朱雀玄武青龙白虎麒麟来做你的强力宠物,只要是买了之后就能拥有 gameplay 上的优势的,统统给我滚蛋。
服主们:“...”
当然了,会员制度其实可以搞,不过就算你傻乎乎地买了咱们的黑心...黑金会员,我们也只能送你一只不会咬人只会屁颠屁颠跟着你的狗狗作为宠物;或者帮你放放烟花;或者帮你改改前缀;或者给你戴个南瓜头盔。要不,也可以给你几百颗钻石啦,不过这些钻石必须是展示用途,你可以将它拿在手上和其他玩家炫耀道怎么样呀我有钻石你没有噢红红火火恍恍惚惚何厚铧黑乎乎,但是绝对不能用来合成钻石剑之类的工具。必须是装饰用途。
Mojang 之后还在官推友善地提醒大家:“新 EULA 将于 2014 年 8 月 1 日生效。” 如果在限期过后我们还发现你用我们的游戏来坑懵懂少年们的钱,我们就有权利告你上法庭哦。
服主们的反应也很友善,双方之间的气氛一派祥和。
祥和个屁阿!!!!!
这什么鬼阿!!!!!
还有没有天理阿!!!!!!
谁会肯买那种装饰用的狗屁碗糕阿???!!!!!
说好的自由市场咧?????说好的良好产业链咧???????
什么叫能够出售纯属装饰性的物品阿!!!!!!
你以为你摩尔庄园阿???!!
你以为你暖暖环游世界阿????!!!
靠个换装系统就能掳获少男少女们的心阿?????!!!!
Minecraft 里塔麻只有五种装甲阿!!!!!!!!五种阿!!!!!!!!换装个头阿!!!!!!!!!!!
粒子效果又是什么鬼阿!!!!!!!!谁会傻逼到花几十美金就为了买一堆粒子效果围绕着自己转阿!!!!!!!!!
你以为你太阳阿!!!!!!!八大行星围绕着你转阿!!!!!!!!!!!!
如果服主们没钱赚了!!!!!
服主们就完蛋拉!!!!!!!
如果服主们完蛋拉!!!!!
服务器们也就完蛋拉!!!!!!!
如果服务器们完蛋了!!!!!!!!!!
那 Minecrafter 们还玩个蛋阿!!!!!!!!!!!!!!!
可以想象得到,新 EULA 一出台就顿时掀起了哄然大波,Notch 的每一条推特下以肉眼可见的速度增加着对 Mojang 甚至对 Notch 本人的谩骂与指责,但同时也有饱受 RMB 玩家欺凌的人士为新 EULA 争辩和叫好;而许多 Minecraft 社区直接干脆地为 EULA 事件开设了新的板块或是专贴供玩家讨(dui)论(ma):Reddit 讨论贴上双方观点争持不下,不过已经算是比较理性的;Bukkit 和 Spigot 论坛上的讨论贴们则大多是服主们在叫苦喊冤;像 minecraftforum.net 这种较多低龄玩家集结的地方已然沦落为反 EULA 者们的狂欢派对,在版块里连续翻上几页全部都是 F**k EULA 的贴子,形同爆吧,无比壮观。
当你看到就连平时冷清的 Bukkit 论坛都讨论得如火如荼的时候,你就知道这事儿有多严重了
整个六月,围绕着 EULA 的讨论就从没停息过。推特上 #SaveMinecraft 成了最热门的标签之一;change.org 上的“驳回 EULA”请愿有两万多人签署;各大 Minecraft 社区仍然在进行口水战;就连一贯与国外脱节的国内 Minecraft 社区们,也在热烈地讨论着 —— 不过 EULA 再怎么改也不会轮到他们头上就是了。
服主们郁闷,玩家们郁闷,Notch 更加郁闷。他每天起床一打开电脑,只是失望地看到无数人在推特上或是邮件上寄来对他个人的攻击。他在个人博客 notch.net 抱怨道:“有一些私人 Minecraft 服确实引入了游戏内付费的系统:像是经验加成啊,解锁游戏模式啊之类的。有些的费用甚至高到了离谱的地步。我都不知道我已经收到过多少封邮件是关于家长们想要要回自己孩子在一些完全不在我们控制之下的服务器上花的几百块钱。收费本来就没被允许过,但我们在来得及粉碎这些内购之前就已经被翻天覆地的工作给淹没了。”“人们还在让我将 EULA 转回以前的那个版本。这让我很难过。”
他随后又以个人身份接受了 Rock, Paper, Shotgun 的访问,当被问到应该如何令 Minecraft 玩家界在保持创新的同时杜绝内购被滥用的情况时,Notch 也迟疑了。“这很复杂,也令人很困扰,所以我尽量不去思考这个问题。几年前根本没这些事情,因为那时人们还不至于用 Minecraft 来经营生意。可现在呢?难道我们要聘人全天候工作就为了解决这些?对这个问题,我确实没有什么好的答案哪。”
那么实际上新 EULA 的成效又如何呢?像 Hypixel,HiveMC 等等一线服的服主们还是比较服从新 EULA 的。理由很简单:Mojang 要是真派人去搜查服务器们有没有违反 EULA,必然最先审核他们的服务器。Hypixel 的服主 Hypixel —— 没错服务器就是以他自己的名字命名的 (;¬д¬) —— 在服务器上的论坛上发贴,向玩家们详细地阐述了目前的情况,并告知玩家们服务器的未来走向。Hypixel 属于第一批能够从反 EULA 大潮里脱身的服务器,后来 Mojang 在反对声一片里照样开始执行新 EULA,也证明了这是个明智的决定。Mineplex 则有点打擦边球的味道,虽然最后将所有原本触犯 EULA 的会员特权移除,但又同时让会员每个月会得到一定金额的游戏内货币,变相还是违反了 EULA。
Mineplex 服主 Gregory Bylos 在个人网站上发布公开信,先代表服主们对 Mojang 员工遭到小学生们的频繁骚扰表示歉意,并认为,新的 EULA 对 Mojang 曾经多番支持、鼓励过的服务器太不公平(见下文),也令 Minecraft 多人游戏界再难有让人眼前一亮的创新
当然这只是对一线服务器而言。对三线的服主们来说,EULA 与否其实不重要:因为他们的服务器规模小,大不了换个名字东山再起即可。而不少一线的服主已经早就注册并设立好了公司来处理税务和发放工资,要是他们违反了 EULA,Mojang 是可以起诉该公司的!这必然导致了这类服务器降服在 Mojang 的淫威之下。当然也有作死的,比如我曾经工作过的地方 Minecade,就敢明目张胆地反对 EULA。虽然这厮早就沦落为三线服务器了(至于为什么就越出了这部编年史的范围了,有人感兴趣的话再说吧),毕竟也是触犯了 EULA,我作为前员工衷心祝愿他们快点死吧死吧死吧死吧死吧(全身怨气)....
咳咳又跑题了。再来看看二线的服务器,既有完全遵守 EULA 的 MultiCube,也有稍微擦边的 Minescape,甚至有直接在首页宣传 VIP 三倍经验的 Shotbow。可以观察到的现象是,在 Minecraft 界待得越久的服务器底气似乎就越足,遵守 EULA 的二线服务器反而都是刚刚进来闯荡的新人。比如 Shotbow 就是和 MCSG 同一代的服务器,早期出道,原本是一线的元老人物,因为游戏模式越出越没意思,都掉到二线边缘了。
Minecraft 主创 _jeb 在发布新 EULA 前曾在 Reddit 上埋怨服主们“变得越来越猖狂,目的就是骗小孩子的钱,影响了 Minecraft 和 Mojang 的形象”。并给出了一个地址作为举例,不过该链接现已无效
Mojang 的 Grum 倒是很亲切地跟大家开 IRC 茶会,莅临解答玩家和服主们的问题。但对于玩家们表示的不满嘛... 基本都漂亮地抛回去了。
如果说这是服主们对 EULA 的态度...
...这是服主们对 Mojang 下决策者的态度...
...那么 Mojang 的态度大概就是这样
在 Notch 以及 Mojang 看来,新 EULA 比旧 EULA 更好。这在客观事实上是成立的:旧 EULA 根本没允许过游戏内收费这种模式,也没有允许过第三方客户端们的存在。但是他们却忘记了一点:旧 EULA 从来未被强制执行过,而新的 EULA 直接判了无数走在前沿的服务器们死刑。
收费泛滥的确是 Minecraft 多人游戏界急迫需要解决的问题,但是正如不能因为飞机可能失事就拒绝乘坐一样,Mojang 也不能因为部分服务器的恶习就将整个 Minecraft 多人游戏界矫枉过正。
Shotbow Network 的首席程序员 Austin Smith 在推特上感叹道:“我只能希望 Mojang 可以探下头聆听一下这个如此深切地溺爱着他们的社区,然后将他们手上朝向服务器们的大铁锤放下,用一把精细的手术刀取而代之。”
EULA 事件是对整个 Minecraft 多人游戏界的沉重打击。其一是不少一二线服务器被迫裁员甚至倒闭,不少人都丢掉了饭碗。如果只是做兼职的还好说,但是不少人是真的将经营服务器 / 开发插件作为自己的主要工作的,新 EULA 的强制执行无疑令他们叫苦连天。
其二是人才流失,许多本来对 Minecraft 满怀热情的人们都离开了。比如插件 ProtocolLib,可以说是 Bukkit 上最重要的插件,没有之一。它实现了对 SMP 源代码跨版本方式的调用,也极大简化了原本十分繁琐的抓包过程。其开发者 Comprenix 是多年献身于 Bukkit 界而从没要求过一点回报的人,我也曾经受过他的指导,实在受益匪浅。他时不时能零零碎碎地收获几笔捐款,其中虽然有一笔来自 Mineplex 开发者 libraryaddict 达 $1100 的捐款,但全部款项加起来还不过 $1500。虽然用金钱来衡量前辈有点不当,但我私以为就以 99.9% 的一二线服务器都在使用 ProtocolLib,他的回报后面就起码应该再加两个零。而他在 EULA 事件后宣布退出 Bukkit 开发者的行列,对整个 Minecraft 界都是一大损失。
刚才去 BukkitDev 看了看,发现 Comprenix 大神两个小时前才上来过 —— 可能是查看 ProtocolLib 有没有新 ticket 吧 —— 即便他之前还在论坛上声称不再接触与 Bukkit 有关的事物... 唉,有点泪目
其三最严重,那就是整个多人游戏界都开始衰退。 Gregory Bylos 一语成谶,原本 2014 的前半年服务器们就处于井喷期后的低迷,MCBrawl 的 Minecraft Party,Mineplex 的 Arcade Games,Hypixel 的 Quakecraft,HiveMC 的 Hide n' Seek,这些精妙而引人入胜的游戏模式即便再好玩,也不可能流行长达半年以上;新 EULA 出台后,往后新游戏的质素更是一落千里,Mineplex 出了个 Mine-Strike,Hypixel 出了个模仿 Mineplex 的 Arcade,HiveMC 最近出了个 TheLab,但无论是创意还是耐玩度都大不如前,都是玩几个小时就能弃的东西;服务器的开发成本被大幅削减,很大程度上都是因为 EULA 新规的引入。
EULA 事件带给整个 Minecraft 业界甚至游戏业界的影响是如此深远,以致连英国的《卫报》(The Guardian)都对此事件进行了大篇幅的报道。面对着四处飞散而来的指责,Mojang 早早地就陷入了公关危机;而就在这种时候,Mojang 仍然回绝了所有试图采访的媒体,孤身陷在沼泽之中,其糟糕的公关也算是给之后的一连串事件埋下了伏笔。
2014 年 8 月 1 日,新 EULA 开始生效。这标志着黄金时代的彻底结束,也同时给 Minecraft 多人游戏界下了一道沉重的枷锁:它永远也不可能再重现那份辉煌了。
// DMCA 危机(2014)
如果说 EULA 事件是一朵肆意狂暴的乌云,那么 DMCA 危机的严重程度犹如陨石撞地球,一切毁于一旦......
(待续......)
閱讀更多 GameRes遊資網 的文章