// 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遊資網 的文章