QQ交流群 : 228688193??github地址
GeekServer是一個(gè)開源的單服結(jié)構(gòu)的游戲服務(wù)器框架,采用C# .Netcore開發(fā)透揣,開發(fā)效率高济炎,性能強(qiáng),跨平臺(tái)辐真,并內(nèi)置不停服熱更新機(jī)制须尚,支持http tcp∈淘郏可以滿足絕大部分游戲類型的需求耐床,特別是和Unity3D協(xié)同開發(fā)更佳。
設(shè)計(jì)理念:大道至簡(jiǎn)楔脯,以簡(jiǎn)化繁
使用C# .Netcore開發(fā)(可以跨平臺(tái)撩轰,可以跨平臺(tái),可以跨平臺(tái)),.Netcore現(xiàn)在功能和性能都已經(jīng)十分強(qiáng)大和穩(wěn)健堪嫂,不管是在windows還是linux上部署起來都很簡(jiǎn)便偎箫。
全部采用異步編程(async/await),讓邏輯代碼變得整潔優(yōu)雅溉苛,清晰易懂镜廉,讓代碼寫起來行如流水。
3.TPL(Task Parallel Library) Actor模型
GeekServer的Actor模型構(gòu)建于強(qiáng)大的TPL DataFlow之上愚战,讓Actor模型如虎添翼娇唯。(不了解Actor模型,可以搜一下相關(guān)資料寂玲,Akka塔插,Orleans都是采用的Actor模型)
Actor模型本身是存在死鎖的情況,且不容易被發(fā)現(xiàn)拓哟,GeekServer在debug模式下提供了檢測(cè)機(jī)制想许,讓死鎖問題暴露在開發(fā)過程中。
采用組件+狀態(tài)的設(shè)計(jì)断序,狀態(tài)只有屬性流纹,沒有方法,組件只用方法违诗,沒有屬性漱凝,并通過代理的方式全部放到熱更dll中,運(yùn)行時(shí)重新加載dll即可熱更所有邏輯诸迟。
網(wǎng)絡(luò)模塊采用了DotNetty茸炒,DotNetty是微軟Azure團(tuán)隊(duì),使用C#實(shí)現(xiàn)的Netty的版本阵苇,性能強(qiáng)勁壁公,功能強(qiáng)大。
采用Mongodb作為數(shù)據(jù)存儲(chǔ)绅项,狀態(tài)的持久化全透明紊册,框架會(huì)自動(dòng)序列化/反序列(并在編譯期間動(dòng)態(tài)注入INotifyPropertyChanged,高效過濾非變化的狀態(tài))讓開發(fā)人員更加專注于業(yè)務(wù)邏輯快耿,無需操心數(shù)據(jù)庫(kù)囊陡。
內(nèi)置線程安全的Timer,Scheduler润努,Event系統(tǒng),輕松應(yīng)對(duì)游戲服務(wù)器常見的定時(shí)示括,任務(wù)計(jì)劃铺浇,事件觸發(fā)等業(yè)務(wù)需求。
以功能系統(tǒng)級(jí)別的粒度垛膝,定期剔除內(nèi)存中不活躍的玩家數(shù)據(jù)鳍侣,盡最大可能減少服務(wù)器內(nèi)存開銷丁稀。
通信協(xié)議,以扁平數(shù)據(jù)結(jié)構(gòu)的xbuffer為基礎(chǔ)(flatbuffer的簡(jiǎn)化版)倚聚,序列化和反序列化效率極高线衫,同時(shí)序列化之后的數(shù)據(jù)極小,數(shù)據(jù)傳輸效率很高惑折。
GeekServer包含一個(gè)一鍵導(dǎo)表工具授账,將策劃配置表,轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)惨驶,并提供了方便快捷的API供游戲調(diào)用