Pomelo網(wǎng)易游戲服務(wù)器開(kāi)發(fā)框架
Pomelo 是由網(wǎng)易開(kāi)發(fā)的基于 Node.js 開(kāi)發(fā)的高性能、分布式游戲服務(wù)器框架, 也可作為高實(shí)時(shí) Web 應(yīng)用框架。
Pomelo的應(yīng)用范圍
pomelo最適合的應(yīng)用領(lǐng)域是網(wǎng)頁(yè)游戲、社交游戲、移動(dòng)游戲的服務(wù)端,開(kāi)發(fā)者會(huì)發(fā)現(xiàn)pomelo可以用如此少的代碼達(dá)到強(qiáng)大的擴(kuò)展性和伸縮性。當(dāng)然還不僅僅是游戲,很多人斷言未來(lái)的web時(shí)代是實(shí)時(shí)web應(yīng)用的時(shí)代, 我們發(fā)現(xiàn)用pomelo開(kāi)發(fā)高實(shí)時(shí)web應(yīng)用也如此合適, 而且伸縮性比其它框架好。目前不推薦將pomelo用于大型的MMO rpg游戲開(kāi)發(fā),尤其是3d游戲, 還是需要象bigworld這樣的商用引擎來(lái)支撐。
Pomelo的理念
pomelo的第一個(gè)理念是讓游戲(高實(shí)時(shí)web應(yīng)用)服務(wù)器的開(kāi)發(fā)變得非常簡(jiǎn)單, 而不是解決某類算法或系統(tǒng)上的難題。這個(gè)設(shè)計(jì)理念跟rails是很類似的;第二個(gè)理念是重視性能和可伸縮性,用戶用pomelo開(kāi)發(fā)出來(lái)的游戲天生具有很強(qiáng)的伸縮性,擴(kuò)展也很容易。我們?cè)谛阅軆?yōu)化上也花了很多功夫,并且會(huì)持續(xù)進(jìn)行;第三個(gè)理念是讓第三方很容易擴(kuò)展,框架用了很多插件式的設(shè)計(jì), 組件component、路由規(guī)則、甚至管理控制臺(tái)都可以完全由第三方擴(kuò)展。
Pomelo的框架組成
pomelo包括三部分:
-
框架, pomelo的核心, 與以往單進(jìn)程的游戲框架不同, 它是高性能、分布式的游戲服務(wù)器框架,并且使用很簡(jiǎn)單
-
庫(kù), 包括了開(kāi)發(fā)游戲的常用工具庫(kù), 如人工智能(ai), 尋路, aoi等
-
工具包, 包括管理控制臺(tái), 命令行工具, 壓力測(cè)試工具等
pomelo特性
-
快速、易上手的游戲開(kāi)發(fā)模型和api
-
高可伸縮的多進(jìn)程架構(gòu), 支持MMO的場(chǎng)景分區(qū)和其它各類分區(qū)策略
-
方便的服務(wù)器擴(kuò)展機(jī)制,可快速擴(kuò)展服務(wù)器類型和數(shù)量
-
方便的請(qǐng)求、響應(yīng)、廣播、服務(wù)器通訊機(jī)制, 無(wú)需任何配置
-
注重性能,在性能、可伸縮性上做了大量的測(cè)試、優(yōu)化
-
提供了較多擴(kuò)展組件,包括游戲開(kāi)發(fā)常用的庫(kù)和工具包
-
提供了完整的MMO demo代碼(客戶端html5),可以作為很好的開(kāi)發(fā)參考
為什么使用pomelo?
高并發(fā)、高實(shí)時(shí)的游戲服務(wù)器的開(kāi)發(fā)是很復(fù)雜的工作。跟web應(yīng)用一樣, 一個(gè)好的開(kāi)源容器或開(kāi)發(fā)框架可以大大減少游戲開(kāi)發(fā)的復(fù)雜性,讓開(kāi)發(fā)變得更加容易。
遺憾的是目前在游戲服務(wù)器開(kāi)發(fā)領(lǐng)域一直沒(méi)有太好的開(kāi)源解決方案。 pomelo將填補(bǔ)這個(gè)空白, 打造一款完全開(kāi)源的高性能(并發(fā))游戲服務(wù)器框架。 pomelo的優(yōu)勢(shì)有以下幾點(diǎn):
-
架構(gòu)的可伸縮性好。 采用多進(jìn)程單線程的運(yùn)行架構(gòu),擴(kuò)展服務(wù)器非常方便, node.js的網(wǎng)絡(luò)io優(yōu)勢(shì)提供了高可伸縮性。
-
使用非常容易, 開(kāi)發(fā)模型與web應(yīng)用的開(kāi)發(fā)類似,基于convention over configuration的理念, 幾乎零配置, api的設(shè)計(jì)也很精簡(jiǎn), 很容易上手。
-
框架的松耦合和可擴(kuò)展性好, 遵循node.js微模塊的原則, framework本身只有很少的代碼,所有component、庫(kù)、工具都可以用npm module的形式擴(kuò)展進(jìn)來(lái)。任何第三方都可以根據(jù)自己的需要開(kāi)發(fā)自定義module。
-
提供完整的開(kāi)源MMO游戲demo參考(基于HTML 5)。 一個(gè)超過(guò)1萬(wàn)行代碼的游戲demo,使開(kāi)發(fā)者可以隨時(shí)借鑒demo的設(shè)計(jì)與開(kāi)發(fā)思路。
在線演示:http://pomelo.netease.com/demo.html
