游戲后端設(shè)計與思考——業(yè)務(wù)開發(fā)较幌、配置讀取

最近也是經(jīng)歷了裁員換工作,在熟悉了新項目游戲后端的架構(gòu)后白翻,感覺到游戲業(yè)務(wù)上的一些設(shè)計有些不同乍炉,當(dāng)然設(shè)計的不同也受到游戲類型的影響绢片,這里記錄下自己的總結(jié)。

上一家公司的項目是一個MMORPG類型的游戲岛琼,業(yè)務(wù)比較核心的開發(fā)內(nèi)容是副本相關(guān)的玩法底循,比如爬塔副本、PVP擂臺賽槐瑞、各種組隊副本等等熙涤。
玩法副本類繼承于副本基類作媚,基類中定義了各種常用的虛函數(shù)接口捣卤,比如玩家進入/離開副本、擊殺蜈膨、死亡等等悼沿。所有的副本內(nèi)部邏輯都寫在這個新玩法副本類中等舔。除了副本類,還需要一個handle類來接收新玩法相關(guān)的協(xié)議糟趾;一個manager類來處理玩家在新玩法中的數(shù)據(jù)以及與玩家相關(guān)的邏輯软瞎,比如玩家的積分、玩法獲勝后獎勵的發(fā)放等等(并不是每一個玩法都需要這個類拉讯,如果有需要處理的數(shù)據(jù)或邏輯才會有)涤浇。
玩家會持有各種玩法的manager類指針,當(dāng)handle類收到協(xié)議需要處理邏輯或者副本類中需要處理玩家數(shù)據(jù)時魔慷,直接通過玩家身上的manager類指針調(diào)用函數(shù)即可只锭。思路比較簡單,邏輯好理解院尔。

新公司的項目是一個即時對戰(zhàn)動作游戲蜻展,業(yè)務(wù)開發(fā)主要是各種節(jié)日活動,比如雙十一活動邀摆、元旦活動纵顾、春節(jié)活動等等。
實現(xiàn)上栋盹,將各種基礎(chǔ)活動(比如抽獎施逾、簽到、任務(wù)例获、兌換商城等等)實現(xiàn)為一個個component組件汉额,節(jié)日活動module類根據(jù)需要注冊對應(yīng)的component組件即可。
邏輯的觸發(fā)使用了事件機制榨汤,組件類根據(jù)需要注冊相應(yīng)事件的回調(diào)函數(shù)蠕搜,當(dāng)有事件觸發(fā),由事件分發(fā)器類轉(zhuǎn)發(fā)到注冊了該事件的活動組件類收壕,觸發(fā)回調(diào)函數(shù)妓灌」旄颍回調(diào)函數(shù)使用了map存放,key值使用typeid().hash_code()來獲得事件類型的唯一值虫埂。
思路稍復(fù)雜些俱萍,而且代碼看起來比較累,各種回調(diào)函數(shù)告丢,邏輯不是特別清晰枪蘑。好處是理解之后,開發(fā)是比較便捷的岖免。

業(yè)務(wù)的設(shè)計和開發(fā)與游戲類型有一定的關(guān)系岳颇,而玩法活動配置的讀取就與游戲類型無關(guān)了。兩個項目的實現(xiàn)方式也不盡相同颅湘。

上一個項目的協(xié)議是自己實現(xiàn)的话侧,因此活動配置的數(shù)據(jù)結(jié)構(gòu)也使用了協(xié)議去約束〈巢危活動配置的excel表需要根據(jù)協(xié)議的定義來生成表結(jié)構(gòu)(由腳本實現(xiàn))瞻鹏,再由策劃配置內(nèi)容。內(nèi)容配置完成后鹿寨,由腳本生成為協(xié)議所定義的數(shù)據(jù)結(jié)構(gòu)類型對應(yīng)的二進制文件(供服務(wù)端讀取)和json文件(供客戶端讀取)新博。
因此,配置的讀取只需要在config配置類中注冊文件名脚草,服務(wù)器啟動時赫悄,config類會根據(jù)注冊的文件名依次讀取二進制配置文件內(nèi)容,轉(zhuǎn)為協(xié)議定義的數(shù)據(jù)結(jié)構(gòu)放到內(nèi)存中馏慨。
config類設(shè)計為單例埂淮,并且提供模板函數(shù)find<配置文件名>()用于獲取活動配置,在需要的地方写隶,使用config類即可獲得倔撞。

目前項目是將excel配置表導(dǎo)出為xml文件,封裝了TinyXml庫作為基類慕趴。添加新的配置表時痪蝇,需要添加新的config單例類繼承于基類并注冊各個頁簽數(shù)據(jù)讀取的回調(diào)函數(shù)。服務(wù)器啟動時秩贰,基類會調(diào)用各個config類的初始化函數(shù)霹俺,讀取xml文件到內(nèi)存中(此內(nèi)存在結(jié)束回調(diào)后會釋放)柔吼,再通過回調(diào)讀取到各個config類中毒费。因此config類中需要定義對應(yīng)的數(shù)據(jù)結(jié)構(gòu)類型來接收存放,再提供get()函數(shù)來獲取配置數(shù)據(jù)愈魏。

以上是對于游戲業(yè)務(wù)開發(fā)觅玻、配置讀取兩個方面在兩個項目中的設(shè)計實現(xiàn)方式想际。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市溪厘,隨后出現(xiàn)的幾起案子胡本,更是在濱河造成了極大的恐慌,老刑警劉巖畸悬,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侧甫,死亡現(xiàn)場離奇詭異,居然都是意外死亡蹋宦,警方通過查閱死者的電腦和手機披粟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冷冗,“玉大人守屉,你說我怎么就攤上這事≥镎蓿” “怎么了拇泛?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長思灌。 經(jīng)常有香客問我俺叭,道長,這世上最難降的妖魔是什么泰偿? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任绪颖,我火速辦了婚禮,結(jié)果婚禮上甜奄,老公的妹妹穿的比我還像新娘柠横。我一直安慰自己,他們只是感情好课兄,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布牍氛。 她就那樣靜靜地躺著,像睡著了一般烟阐。 火紅的嫁衣襯著肌膚如雪搬俊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天蜒茄,我揣著相機與錄音唉擂,去河邊找鬼。 笑死檀葛,一個胖子當(dāng)著我的面吹牛玩祟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屿聋,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼空扎,長吁一口氣:“原來是場噩夢啊……” “哼藏鹊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起转锈,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盘寡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后撮慨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竿痰,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年砌溺,在試婚紗的時候發(fā)現(xiàn)自己被綠了菇曲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡抚吠,死狀恐怖常潮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情楷力,我是刑警寧澤喊式,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站萧朝,受9級特大地震影響岔留,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜检柬,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一献联、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧何址,春花似錦里逆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至偎血,卻和暖如春诸衔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颇玷。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工笨农, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帖渠。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓谒亦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诊霹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容