游戲服務器的演變
游戲服務器的演變
1978年,英國著名的財經學校University of Essex的學生 Roy Trubshaw編寫了世界上第一個MUD程序《MUD1》,在University of Essex于1980年接入 ARPANET之后加入了不少外部的玩家,甚至包括國外的玩家。《MUD1》程序的源代碼在 ARPANET共享之后出現了眾多的改編版本,至此MUD才在全世界廣泛流行起來。不斷完善的 MUD1的基礎上產生了開源的 MudOS(1991),成為眾多網游的鼻祖:
MUDOS采用 C語言開發,因為玩家和玩家之間有比較強的交互(聊天,交易,PK),MUDOS使用單線程無阻塞套接字來服務所有玩家,所有玩家的請求都發到游戲服務器同一個線程去處理,主線程每隔1秒鐘更新一次所有對象(網絡收發,更新對象狀態機,處理超時,刷新地圖,刷新NPC)。
游戲世界采用房間的形式組織起來,每個房間有東南西北四個方向可以移動到下一個房間,由于歐美最早的網游都是地牢迷宮形式的,因此場景的基本單位被成為 “房間”。MUDOS使用一門稱為LPC的腳本語言來描述整個世界(包括房間拓撲,配置,NPC,以及各種劇情)。游戲里面的高級玩家(巫師),可以不斷的通過修改腳本來為游戲添加房間以及增加劇情。早年 MUD1上線時只有17個房間,Roy Trubshaw畢業以后交給他的師弟 Richard Battle,在 Richard Battle手上,不斷的添加各種玩法到一百多個房間,終于讓 MUD發揚光大。
用戶使用 Telnet之類的客戶端用 Tcp協議連接到 MUDOS上,使用純文字進行游戲,每條指令用回車進行分割。比如 1995年國內第一款 MUD游戲《俠客行》,你敲入:”go east”,游戲就會提示你:“后花園 – 這里是歸云莊的后花園,種滿了花草,幾個莊丁正在澆花。此地乃是含羞草生長之地。這里唯一的出口是 north。這里有:花待 阿牧(A mu),還有二位莊丁(Zhuang Ding)”,然后你繼續用文字操作,查看阿牧的信息:“look a mu”,系統提示:“花待 阿牧(A mu)他是陸乘風的弟子,受命在此看管含羞草。他看起來三十多歲,生得眉清目秀,端正大方,一表人才。他的武藝看上去【不是很高】,出手似乎【極輕】”。然后你可以選擇擊敗他獲得含羞草,但是你吃了含羞草卻又可能會中毒死亡。在早期網上資源貧乏的時候,這樣的游戲有很強的代入感。
用戶數據保存在文件中,每個用戶登錄時,從文本文件里把用戶的數據全部加載進來,操作全部在內存里面進行,無需馬上刷回磁盤。用戶退出了,或者每隔5分鐘檢查到數據改動了,都會保存會磁盤。這樣的系統在當時每臺游戲服務器承載個4000人同時游戲,不是特別大的問題。從1991年的 MUDOS發布后,全球各地都在為他改進,擴充,退出新版本,隨著 Windows圖形機能的增強。1997游戲《UO》在 MUDOS的基礎上為角色增加的x,y坐標,為每個房間增加了地圖,并且為每個角色增加了動畫,形成了第一代的圖形網絡游戲。
因為游戲內容基本可以通過 LPC腳本進行定制,所以MUDOS也成為名副其實的第一款服務端引擎,引擎一次性開發出來,然后制作不同游戲內容。后續國內的《萬王之王》等游戲,很多都是跟《UO》一樣,直接在 MUDOS上進行二次開發,加入房間的地圖還有角色的坐標等要素,該架構一直為國內的第一代 MMORPG提供了穩固的支持,直到 2003年,還有游戲基于 MUDOS開發。
雖然后面圖形化增加了很多東西,但是這些MMORPG后端的本質還是 MUDOS。隨著游戲內容的越來越復雜,架構變得越來越吃不消了,各種負載問題慢慢浮上水面,于是有了我們的第二代游戲服務器。【艾娜】