400-638-8808
|
微信公眾號(hào)








穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無(wú)阻

協(xié)同辦公 資源管理

超大郵件 超級(jí)功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠

春節(jié)以來(lái)新型肺炎蔓延全國(guó),而為了防止病毒的傳播,各地封路封城,國(guó)民基本都是宅在家里面足不出戶(hù),受此影響國(guó)內(nèi)養(yǎng)殖、娛樂(lè)、零售、旅游、餐飲等眾多行業(yè)都遭受到重創(chuàng)。
不過(guò)有一個(gè)行業(yè)卻在這個(gè)假期迎來(lái)了爆發(fā)。
什么行業(yè)呢?既然只能在家,那么精神方面的娛樂(lè)就便不能少。于是在國(guó)內(nèi)許多行業(yè)受疫情影響處于低迷之時(shí),游戲行業(yè)卻逆勢(shì)實(shí)現(xiàn)了增長(zhǎng)。畢竟無(wú)聊的時(shí)候,打游戲是不錯(cuò)的選擇。
手游上線(xiàn),手游服務(wù)器也要與時(shí)俱進(jìn),及時(shí)做好數(shù)據(jù)備份工作。那么,手機(jī)游戲服務(wù)器該如何開(kāi)發(fā)呢?
下面天下數(shù)據(jù)小編就隨便聊聊手機(jī)手機(jī)游戲服務(wù)器開(kāi)發(fā)需要的技術(shù)。
一.聊聊手游服務(wù)器開(kāi)發(fā)有哪些東西要考慮。
1.開(kāi)發(fā)語(yǔ)言的選擇:
工欲善其事,必先利其器,選擇一門(mén)適合的開(kāi)發(fā)語(yǔ)法對(duì)后期開(kāi)發(fā)有著事半功倍的作用。
業(yè)界主要的是c/c++ + Python/lua模式做手機(jī)游戲服務(wù)器。c/c++做網(wǎng)絡(luò)通訊數(shù)據(jù)傳輸,python/lua做業(yè)務(wù)邏輯。這樣既保持了網(wǎng)絡(luò)傳輸?shù)男?c++),又提升開(kāi)發(fā)效率(Python/lua),同時(shí)也支持熱更新。
當(dāng)然,也有其他服務(wù)器開(kāi)發(fā)語(yǔ)言,erlang(沒(méi)用過(guò),頁(yè)游公司用的多),c#(大棒子國(guó)喜歡用,神奇的民族),Java(第一次聽(tīng)說(shuō)時(shí)我驚呆了),node.js(少量游戲用的,還有一個(gè)node.js寫(xiě)的引擎叫pemolo),php(做http協(xié)議通訊的游戲時(shí)php+mysql也不失為一種好選擇)
看過(guò)兩個(gè)手機(jī)游戲服務(wù)器引擎
1.firefly(9秒社團(tuán)開(kāi)發(fā)的一款python手機(jī)游戲服務(wù)器框架)
2.kbengine(按bigworld的架構(gòu)來(lái)設(shè)計(jì)的,c++ + python的)
2.數(shù)據(jù)庫(kù)
現(xiàn)在比較流行的兩種數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)mysql和非關(guān)系型數(shù)據(jù)庫(kù)mongodb。這是我用的最多的兩個(gè)數(shù)據(jù)庫(kù)。
關(guān)于兩者之間的各種比較,網(wǎng)上有很多,當(dāng)然你也可以用其他數(shù)據(jù)庫(kù),至于sql server,不怕被坑你就用吧(我向來(lái)對(duì)微軟的東西沒(méi)好感)。
3.服務(wù)端架構(gòu)
講一下我用過(guò)的其中一種架構(gòu)模型,也是公司按照bigworld架構(gòu)設(shè)計(jì)的:
1.Gate:首先要有一個(gè)Gate(網(wǎng)關(guān))服務(wù)器,負(fù)責(zé)客戶(hù)端連接及消息轉(zhuǎn)發(fā)到Game(游戲服),保持客戶(hù)端到服務(wù)端的連接
沒(méi)有任何邏輯,只做消息加密和解密,以及客戶(hù)端和服務(wù)器消息的轉(zhuǎn)發(fā)(相當(dāng)于兩者之間的橋梁).
2.GameServer:GameServer是游戲進(jìn)程,提供游戲邏輯功能(采用單進(jìn)程(或者單線(xiàn)程)模型,手機(jī)游戲服務(wù)器的瓶頸從來(lái)不在CPU,所以只做邏輯功能的話(huà)單線(xiàn)程足夠了,在這里沒(méi)必要用多線(xiàn)程或多進(jìn)程)。
3.DBManager:實(shí)現(xiàn)數(shù)據(jù)庫(kù)的讀寫(xiě),方便Game服務(wù)器異步讀寫(xiě)數(shù)據(jù)庫(kù)的數(shù)據(jù)(有些把數(shù)據(jù)庫(kù)讀寫(xiě)放在游戲服,沒(méi)有單獨(dú)的服務(wù)器,那恐怕游戲服單進(jìn)程就不夠用了)。
4.GameManager:負(fù)責(zé)管理所有的GameServer,GameServer之間消息轉(zhuǎn)發(fā),提供廣播到所有Game的功能。
4.協(xié)議
客戶(hù)端與服務(wù)器之間協(xié)議通信,可以用tcp或者h(yuǎn)ttp。主要看游戲模型,如果是那種弱聯(lián)網(wǎng)單機(jī)玩法,用http足夠了,像天天酷跑之類(lèi),只在需要的時(shí)候處理一條http請(qǐng)求響應(yīng)。
不過(guò)tcp用的比較還是比較多的,F(xiàn)在的網(wǎng)絡(luò)游戲大多數(shù)都是tcp,像MMORPG類(lèi)游戲。我們現(xiàn)在的游戲就是同時(shí)用了http和tcp,客戶(hù)端和游戲服采用http協(xié)議。只有多人戰(zhàn)斗轉(zhuǎn)向戰(zhàn)斗服才采用tcp長(zhǎng)鏈接。
udp:其實(shí)游戲是有udp的,在一些高效率的場(chǎng)景下比如pvp即時(shí)戰(zhàn)斗,tcp的擁塞控制和超時(shí)重傳并不適合,有些就用的udp,然后自己做丟包重發(fā),拿網(wǎng)絡(luò)公平性換游戲局部的效率。
現(xiàn)在參與開(kāi)發(fā)的游戲就同時(shí)使用了http協(xié)議和tcp協(xié)議,在游戲服是單機(jī)玩法用http協(xié)議,戰(zhàn)斗服需要長(zhǎng)連接保存協(xié)議狀態(tài),用的tcp。
5.存盤(pán)
有數(shù)據(jù)庫(kù)就肯定有數(shù)據(jù)庫(kù)讀寫(xiě)操作,最主要的還是存盤(pán)(save),周期存盤(pán)還是即時(shí)存盤(pán)
即時(shí)存盤(pán)就是每一次操作數(shù)據(jù)都進(jìn)行存到數(shù)據(jù)庫(kù),當(dāng)然這樣會(huì)導(dǎo)致對(duì)數(shù)據(jù)庫(kù)的操作過(guò)于頻繁,畢竟這是效率的瓶頸之一。
周期存盤(pán)也叫固定存盤(pán),就是每隔固定時(shí)間存盤(pán)一次,比如10秒或者15秒,這樣數(shù)據(jù)庫(kù)的壓力就會(huì)小很多,當(dāng)然自己就要在內(nèi)存中做好數(shù)據(jù)操作,防止數(shù)據(jù)污染或者存盤(pán)不上導(dǎo)致回檔。
天下數(shù)據(jù)游戲服務(wù)器解決方案圖
二.開(kāi)發(fā)一個(gè)手機(jī)游戲服務(wù)器需要掌握的開(kāi)源技術(shù)
1.libevent,boost.asio等網(wǎng)絡(luò)庫(kù),網(wǎng)上有很多開(kāi)源網(wǎng)絡(luò)庫(kù),與其自己造輪子,不如就用開(kāi)源網(wǎng)絡(luò)庫(kù)作為自己服務(wù)器的通訊庫(kù)。最出名的就屬libevent和boost.asio了。
Boost的ASIO是一個(gè)異步IO庫(kù),封裝了對(duì)Socket的常用操作,簡(jiǎn)化了基于socket程序的開(kāi)發(fā)。支持跨平臺(tái)。
libevent是一個(gè)C語(yǔ)言寫(xiě)的事件驅(qū)動(dòng)的開(kāi)源網(wǎng)絡(luò)庫(kù)。
至于二者之間的效率,仁者見(jiàn)仁。
當(dāng)然還有很多:比如云風(fēng)寫(xiě)的skynet(c + lua),陳碩寫(xiě)的muduo(c++)。都寫(xiě)得很好,云風(fēng)寫(xiě)的東西簡(jiǎn)單好用,陳碩在秀他的c++技術(shù)。
2.protobuf:全稱(chēng)Google Protocol Buffers,是google開(kāi)發(fā)的的一套用于數(shù)據(jù)存儲(chǔ),網(wǎng)絡(luò)通信時(shí)用于協(xié)議編解碼的工具庫(kù)。它和XML或者JSON差不多,也就是把某種數(shù)據(jù)結(jié)構(gòu)的信息,以某種格式(XML,JSON)保存起來(lái),
protobuf與XML和JSON不同在于,protobuf是基于二進(jìn)制的。主要用于數(shù)據(jù)存儲(chǔ)、傳輸協(xié)議格式等場(chǎng)合。
protobuf他的優(yōu)勢(shì)是對(duì)于傳輸比較大的數(shù)據(jù)產(chǎn)生的數(shù)據(jù)很緊湊很小,可以明顯減小傳輸量。
而且處理速度也比較快,又有各種編程語(yǔ)言的實(shí)現(xiàn),例如C++,Java,PHP等等。
缺點(diǎn)是不能明文編輯(數(shù)據(jù)是二進(jìn)制的)。
用protobuf rpc進(jìn)行數(shù)據(jù)傳輸很方便,所以是一個(gè)不錯(cuò)的選擇。google protobuf只負(fù)責(zé)消息的打包和解包,并不包含RPC的實(shí)現(xiàn),所以需要自己實(shí)現(xiàn)。
3.zeromq:消息隊(duì)列,一個(gè)穩(wěn)健,簡(jiǎn)潔的多進(jìn)程通訊方案的基礎(chǔ)。ZeroMQ 并不是一個(gè)對(duì)socket的封裝,不能用它去實(shí)現(xiàn)已有的網(wǎng)絡(luò)協(xié)議。它有自己的模式,不同于更底層的點(diǎn)對(duì)點(diǎn)通訊模式。它有比 tcp 協(xié)議更高一級(jí)的協(xié)議。(當(dāng)然 ZeroMQ 不一定基于 TCP 協(xié)議,它也可以用于進(jìn)程間和進(jìn)程內(nèi)通訊。)它改變了通訊都基于一對(duì)一的連接這個(gè)假設(shè)。
在這里它更適合服務(wù)器與服務(wù)器之間的通信,比如邏輯服和戰(zhàn)斗服之間進(jìn)行通信。
4.memcached:一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載。它通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)的次數(shù),從而提高動(dòng)態(tài)、數(shù)據(jù)庫(kù)驅(qū)動(dòng)網(wǎng)站的速度。
可以用來(lái)做緩存,比如客戶(hù)端本來(lái)每次操作都需要操作數(shù)據(jù)庫(kù),會(huì)嚴(yán)重影響效率,這時(shí)在中間加一層緩存系統(tǒng),就提升了性能。基于http協(xié)議的通信用memcached是一個(gè)不錯(cuò)的選擇,如果是tcp長(zhǎng)鏈接,直接維護(hù)一個(gè)在線(xiàn)的內(nèi)存對(duì)象就可以了。
類(lèi)似的技術(shù)還有redis等。
5.glog/zlog:你肯定需要記錄日志,看愛(ài)好嘍。
6.tcmalloc:內(nèi)存性能分析
7.distcc:分布式編譯工具,之前每次修改代碼都要make半個(gè)小時(shí),用distcc進(jìn)行多臺(tái)電腦同時(shí)幫你編譯,快很多。
天下數(shù)據(jù)擁有超15年游戲運(yùn)營(yíng)經(jīng)驗(yàn),全球50+ CN2頂級(jí)網(wǎng)絡(luò),1300+個(gè)CDN節(jié)點(diǎn)資源,包括并不僅限于中國(guó)香港,美國(guó),日本,韓國(guó),新加坡,馬來(lái)西亞等10多個(gè)國(guó)家直接CN2高速專(zhuān)線(xiàn)接入。無(wú)條件免備案,提供智能化DDOS防護(hù)升級(jí),負(fù)載均衡優(yōu)化,數(shù)據(jù)庫(kù)集群服務(wù)及建議,高防CDN節(jié)點(diǎn)布局優(yōu)化等一系列高品質(zhì)服務(wù),打造適合企業(yè)穩(wěn)抓客戶(hù)布局全球的全能型游戲解決方案。詳詢(xún)天下數(shù)據(jù)客服電話(huà)400-6388-808 。
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國(guó)服務(wù)器 韓國(guó)服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺(tái)灣服務(wù)器云服務(wù)器
香港云主機(jī) 美國(guó)云主機(jī) 韓國(guó)云主機(jī) 新加坡云主機(jī) 臺(tái)灣云主機(jī) 日本云主機(jī) 德國(guó)云主機(jī) 全球云主機(jī)高防專(zhuān)線(xiàn)
海外高防IP 海外無(wú)限防御 SSL證書(shū) 高防CDN套餐 全球節(jié)點(diǎn)定制 全球?qū)>(xiàn)GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團(tuán)隊(duì)建設(shè) 加入天下數(shù)據(jù) 媒體報(bào)道 榮譽(yù)資質(zhì) 付款方式關(guān)注我們
微信公眾賬號(hào)
新浪微博
天下數(shù)據(jù)手機(jī)站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠(chéng)聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊(cè) 網(wǎng)站地圖
天下數(shù)據(jù)18年專(zhuān)注海外香港服務(wù)器、美國(guó)服務(wù)器、海外云主機(jī)、海外vps主機(jī)租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證》 ISP證:粵ICP備07026347號(hào)
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運(yùn)營(yíng))聯(lián)合版權(quán)
深圳總部:中國(guó).深圳市南山區(qū)深圳國(guó)際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號(hào)建安商業(yè)大廈7樓
7×24小時(shí)服務(wù)熱線(xiàn):4006388808香港服務(wù)電話(huà):+852 67031102
本網(wǎng)站的域名注冊(cè)業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品