1. 程式人生 > >[開源專案]科幻背景的MMO網遊Ryzom介紹

[開源專案]科幻背景的MMO網遊Ryzom介紹

Ryzom是法國Nevrax公司從2000年左右開始開發的一個MMORPG遊戲,大概在2年前開始投入市場運營,這款網路遊戲在市場上也獲得了巨大的 成功。近期,由於多種原因,Nevrax公司瀕臨破產,所以正在市場上運營的Ryzom遊戲和廣大玩家都面臨著斷炊的危險。不過這也為自由軟體運動提供了 一個非常好的機會,讓我們有可能擁有一個自由的大型多人線上角色扮演遊戲。就在最近,一些自由軟體愛好者、前Nevrax員工還有遊戲玩家們共同發起了一 項解放Ryzom遊戲的運動。他們正在籌集一筆資金,準備從Nevrax公司購買Ryzom遊戲的原始碼、遊戲資料、藝術作品等等,然後通過GNU GPL授權釋出Ryzom遊戲。這樣,我們就擁有了一個完整的、自由的MMORPG遊戲引擎、一個完整的C/S遊戲架構等,使用者就可以基於自由的 Ryzom遊戲開發出自己的網路遊戲。他們也計劃創立一個非盈利性組織來運營現有的遊戲伺服器和後續的開發,讓現有的Ryzom線上遊戲繼續發展下去。

現在流行的大型網路遊戲都是由專有軟體公司開發,所以網路遊戲的發展也都是由專有軟體公司控制,而不是使用者。不過我們認為,既然使用者能夠參與現實社 會的發展,那麼也同樣有權力參與網上虛擬社會的建設。玩家是遊戲虛擬社會裡的公民,網路遊戲應該屬於全體玩家,所以他們有權力和機會實現自己在虛擬社會裡 的夢想,這就需要有自由的網路遊戲。自由軟體基金會認為收購Ryzom遊戲是一個高優先順序的自由軟體專案,所以決定資助此專案6萬美金,並最終幫助籌集到 20萬歐元左右,能夠買下Ryzom遊戲,將其變成一個自由軟體。

專案截圖:

科幻背景的角色扮演網路遊戲Ryzom的開發商Winch Gate Properties正式宣佈開源。

開發者現在能獲取客戶端、內容建立工具和伺服器端的原始碼,可以修改、增強或者創造一個新的虛擬世界。這是Ryzom漫長曆史的一個 重要轉折點。源 程式碼採用AGPLv3許可證授權,藝術資產包括3D物件、動畫跟蹤、粒子效果和紋理等採用創作共用-署名-相同方式共享授權。Winch Gate捐贈的原始碼超過二百萬行,捐贈的高質量紋理素材超過2萬,3D物件多達數千。

以下摘自網際網路

Ryzom服務架構(Aervice Architecture)介紹

伺服器(Server):指物理伺服器
服務片區(Shard):指Ryzom世界的一個例項。當前,Ryzom有三個服務片區,一個面向法語社群,一個面向德語社群,最後一個是面向說英語的人。所有的服務片區都是獨立的,他們之間幾乎沒有任何網路連線。
服務(Service):一個服務指的是一個可執行程式,它在伺服器上執行。例如,我們有一個用於管理AI的服務。我們也可以在Windows伺服器和Linux伺服器上建立不均勻分佈的服務片區,因此一些服務在Windows上執行而另外一些則跑在Linux上。

Ryzom的架構是完全模組化的。在2004年,一個Ryzom服務片區需要8臺伺服器來執行,而現在由於計算機效能的飛昇,一個這樣的服務區在一臺單獨的伺服器上就能夠跑起來了。

Ryzom服務
以下是Ryzom的服務和簡要介紹:

AES(啟動管理服務):一臺物理伺服器只能有一個AES。它通過啟動、停止、查詢這臺伺服器上的的各種服務來管理服務區
AS(管理服務):一個AS服務用於定位所有的AES,它是接收和傳送AES指令的中心點。
AIS(AI服務):一個服務區可以配置一個或這個多個AIS,這個服務的目的在於處理Ryzom世界中的人工智慧(AI)。一個AIS負責一個地理區域,例如,在Ryzom中我們有6個AIS,一個大陸配置一個。
BMS(備份管理服務):所有服務區配置有兩個BMS(一個主服務和一個副服務)。他們管理諸如玩家角色、工會等資料的儲存和載入,資料儲存在特殊的檔案格式之中。
EGS(實體遊戲服務):一個服務區配置一個EGS,它管理所有玩家的狀態、運行遊戲邏輯規則、任務、物品、工會等等,可以說它是一箇中心服務!
GPMS(全域性定位管理服務):一個服務區配置一個,通過它能查詢所有實體(包括玩家、NPC等等)的位置,它也負責碰撞檢測。
IOS(輸入輸出服務):一個服務區一個,管理所有的聊天、文字、本地化等操作。
NS(名稱服務):一個服務區一個,這是一個用於定位其他服務的底層服務。通過它可以查詢那些服務啟動了,各種服務的埠,就像黃頁一樣。
WS(歡迎服務):一個服務區一個,用於登入過程,該服務檢查玩家資料並路由玩家連線到空閒的FES。
TS(時鐘服務):一個服務區一個,這是一個用於管理遊戲時間和同步其他服務的簡單服務。
MS(映象服務):一臺伺服器配置一個。這個服務使用共享記憶體和網路通訊來跨伺服器同步資料,因此所有的服務都能夠高效地訪問所有需要資料。
SU(區域統一服務):全域性一個,用於管理牽涉多於一個區域的事務。例如,從一個區域傳送玩家到另一個區域。這個服務也用於處理玩家登入。
FES(前端服務):一個服務區可以配置一個或者多個前端服務。它是Ryzom客戶端的介面,處理客戶端的資訊並且路由他們到合適的服務上。假如一個服務區配置了兩個FES,那麼客戶端連線的量在兩個FES上均分。
SBS(會話瀏覽服務):和FES數量相同,用於管理各種會話(Session)事務(主要用於Ring系統)。
PDSS(持久資料服務):該服務用於定期備份角色資料到磁碟檔案,也用於提取某些統計和測試資訊。

//////////////////////////////////////////////////////////////////////

Ryzom的程式碼我自己下載看了一下,包含完整的客戶端引擎和伺服器引擎(Netnel),甚至有一套完整的指令碼引擎程式碼,不過很抱歉,其中沒有

vs工程檔案,需要用CMake自己夠建,裡面包含了挺多的第三方庫檔案,所以自己暫時就沒有生成檔案,有興趣的朋友可以整套弄好了貢獻出來。自己打算研究下CryEngine的程式碼,簡單看了下,程式碼風格稍微有點晦澀,不過商業程式碼都這樣,先從CE3的網路庫開始研究吧。它裡面包含了PS,Xbox360,PC三種平臺的程式碼,而我只打算研究PC的,其他兩種暫時沒什麼興趣。