Firefly是免費(fèi)、開(kāi)源、穩(wěn)定、快速擴(kuò)展、能 “熱更新”的分布式游戲服務(wù)器端框架,采用Python編寫(xiě),基于Twisted框架開(kāi)發(fā)。它包括了開(kāi)發(fā)框架和數(shù)據(jù)庫(kù)緩存服務(wù)等各種游戲服務(wù)器基礎(chǔ)服務(wù),節(jié)省大量游戲開(kāi)發(fā)的工作時(shí)間,真正做到讓使用者把精力放在游戲玩法邏輯上。用它可以搭建自定義的分布式架構(gòu),只需要修改相應(yīng)的配置文件即可。
優(yōu)勢(shì)特性
-
采用單線程多進(jìn)程架構(gòu),支持自定義的分布式架構(gòu);
-
方便的服務(wù)器擴(kuò)展機(jī)制,可快速擴(kuò)展服務(wù)器類(lèi)型和數(shù)量;
-
與客戶端采用TCP長(zhǎng)連接,無(wú)需考慮粘包等問(wèn)題;
-
封裝數(shù)據(jù)緩存服務(wù);
-
可實(shí)現(xiàn)實(shí)時(shí)熱更新數(shù)據(jù)以及游戲邏輯,客戶端玩家無(wú)感覺(jué);
-
有幾十個(gè)基礎(chǔ)游戲玩法系統(tǒng)模塊提供組裝使用(v1.3.0提供);
框架介紹

management, firefly 是個(gè)多進(jìn)程、分布式的游戲服務(wù)器。因此各游戲server(進(jìn)程)的管理和擴(kuò)展是firefly很重要的部分,框架通過(guò)抽象使服務(wù)器的擴(kuò)展非常容易。
Network,客戶端連接通信、server進(jìn)程間的通信等構(gòu)成了整個(gè)游戲框架的脈絡(luò),所有游戲流程都構(gòu)建在這個(gè)脈絡(luò)上。與客戶端的通信采用的是請(qǐng)求/回應(yīng)式的,所以受到的客戶端的請(qǐng)求,服務(wù)端都會(huì)給出相應(yīng)的回應(yīng),服務(wù)端也能主動(dòng)的推送,廣播給客戶端消息。這些請(qǐng)求是基于指令號(hào)的請(qǐng)求。(例如定義101為登陸指令)server進(jìn)程之間的通信時(shí)采用的異步回調(diào)的方式,這樣就減少了的進(jìn)程間通過(guò)網(wǎng)絡(luò)通信中的時(shí)間消耗。
Data, 數(shù)據(jù)處理是網(wǎng)游的重要部分。在網(wǎng)游有大量的數(shù)據(jù)需要存儲(chǔ),需要更新,這使得數(shù)據(jù)庫(kù)的讀寫(xiě)效率成為服務(wù)器的最大的性能瓶頸。firefly的db處理能夠?qū)?shù)據(jù)庫(kù)表中的數(shù)據(jù)緩存到memcache中并能以對(duì)象的形式進(jìn)行調(diào)用相應(yīng)的對(duì)象方法對(duì)數(shù)據(jù)進(jìn)行操作。可以在不同的進(jìn)程中通過(guò)實(shí)例化相同的名稱(chēng)的緩存實(shí)例,得到同步的數(shù)據(jù)。并能將緩存對(duì)象中的數(shù)據(jù)寫(xiě)回?cái)?shù)據(jù)庫(kù)中。
框架思路
一個(gè)最基本的服務(wù)器就是一個(gè)在不停運(yùn)行著的應(yīng)用程序。在分布式游戲服務(wù)器中,我們需要的服務(wù)器具有的功能有,監(jiān)聽(tīng)客戶端的連接,監(jiān)聽(tīng)其他服務(wù)進(jìn)程的消息,連接其他的服務(wù)進(jìn)程,有些需要有數(shù)據(jù)庫(kù)連接和緩存服務(wù)。如下圖

net connect 做客戶端連接,root監(jiān)聽(tīng)其他服務(wù)進(jìn)程消息,node連接其他服務(wù)進(jìn)程,db數(shù)據(jù)庫(kù),cache緩存。是否需要監(jiān)聽(tīng)客戶端連接,是否監(jiān)聽(tīng)其他服務(wù)進(jìn)程消息等這是都是可以在config.json中進(jìn)行配置。包括各個(gè)服務(wù)器的名稱(chēng)以及各個(gè)服務(wù)器之間的連接關(guān)系。這樣就可以自定義出自己的分布式架構(gòu)。
Firefly團(tuán)隊(duì):我們或有不足,但我們不停努力!