1. 程式人生 > >【棋牌遊戲】JAVA伺服器設計與開發(一)

【棋牌遊戲】JAVA伺服器設計與開發(一)

####開篇語
大概在16年時候,新型房卡模式開啟棋牌遊戲新里程,整個棋牌行業迅速改變模式,出現近兩三年激烈的競爭景象,據統計全國大大小小棋牌遊戲公司,專職棋牌公司近兩萬多家,這都不算後起大大小小遊戲公司加緊棋牌研發行列。新型棋牌模式有一個很明顯的特點,那就是地方區域“特色”化,幾乎近定製化的模式打破以騰訊為主的多年霸佔市場。最常見的地方區域棋牌劃分:廣東,湖南,四川,山西大唐等,不同省份玩法不一,甚至同一省份不同地方也有區別。這也導致大遊戲公司不會輕易入駐這樣的市場,而新型創業公司抓住切入點反而成功,比如最典型的閒來棋牌公司發展歷程。好景不會一直持續,當前受國家對棋牌遊戲加強管制,以及行業拼殺競爭激烈,棋牌行業發展有所縮減,創業公司加入棋牌行業日j漸見底,也出現倒閉一潮,預計將來能存活的公司不多,但從整個棋牌市場“總量”的需求看,存活下的公司後期應該是萬幸前途無量。這裡不再多談行業如何,言歸正傳,我以技術身份,解說《棋牌遊戲》研發技術如何更優實現統一架構。

####技術選型
伺服器端技術:

遊戲行業有個不成文的幾乎近統一建議,伺服器選擇基本使用C++跟JAVA,後來出現新的技術GO,但從大市場來看,C++做伺服器居多,從效能考慮C++確實比較快,但是我們也發現很多遊戲公司使用JAVA作為伺服器技術。

個人認為,微服務的出現使得服務端技術選型變得多樣,如果不是太追求效能,反而JAVA更被看好。原因是任何一家公司都需要建立一個管理平臺,比如客服平臺,賬號平臺,資料中心管理平臺等,而這類平臺的技術選擇基本用JAVA實現(當然國內現在也時興Python)。就當前技術中,JAVA統一架構平臺化更容易實現更穩定,各中心部門在對接上有統一的標準,可提高開發效率,節省成本;再則,JAVA的開發效率比C++的要高,敏捷,人員配置上相對C++經驗不足亦可完成,且有統一架構指導不易出錯,而C++的開發公認要求門檻高,是需要經驗豐富的團隊才能完成高效的成果,代價相對高。

舉個例子,比如一家棋牌公司成立,就要有兩大中心需要建立:一個遊戲中心,一個是資料平臺中心。如果這兩個中心使用人員的技術不能統一,很容易走向兩個各管各的部門,這樣,無論在整體架構建設,還是業務對接上,很難有一個核心標準,業務穿插成堆亂套,人員調動不利;反之,統一技術架構,對任何組織創業公司,在各個方面考慮上都是有很多好處。大概估計,三十人技術團隊,統一技術與否,團隊節省成本差至少5人,如果JAVA的統一架構做的好,這個人數差可達十人之多(16時候《陌陌》直播伺服器核心開發在5人左右)。

統一架構的好處還有,根據多年參與專案經驗,大多數公司到了必須重構階段,很多也是因為前期技術不統一,造成後期業務穿插成堆亂套,技術人員存留不足等,結果造成成本加大不得已重構,成本代價依舊很高。

當然,技術選型還要參考最主要的一點,核心負責人精通的技術,不能為了統一架構技術而選擇不熟悉的技術,哪怕是不統一架構也要選擇最熟悉的技術對應實現最核心的東西,因為我們瞭解過,多數技術創業成功的公司,前期技術穩定可靠性至關重要,產品的穩定與否直接關係公司存亡。

結論,針對棋牌遊戲特點,核心演算法對效能的要求不是特強特點,應屬於非強網類遊戲,不必過於追求效能。那麼,如果技術選型等同或者沒有特別考慮地方,強烈建議統一技術,統一架構組織,JAVA的平臺化建設是一個更優選擇。

客戶端技術:

客戶端技術可以使用當前流行的驅動語言Cocos-Lua或者Cocos-JS。據瞭解Cocos-JS的通用性更高,也源至JS的流行跟通用。鑑於本文重點談棋牌伺服器架構,對客戶端技術不做過多說明。