欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

做游戲與web的區(qū)別 - 服務(wù)器篇【1】 - 新聞資訊 - 云南小程序開(kāi)發(fā)|云南軟件開(kāi)發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開(kāi)發(fā)/軟件開(kāi)發(fā)

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁(yè) » 新聞資訊 » 網(wǎng)站建設(shè) >

做游戲與web的區(qū)別 - 服務(wù)器篇【1】

發(fā)表時(shí)間:2018-7-15

發(fā)布人:葵宇科技

瀏覽次數(shù):31

在一間游戲公司的兩個(gè)部門待過(guò), 前一個(gè)部門以做web開(kāi)發(fā)為主,后一個(gè)部門做游戲開(kāi)發(fā),我在兩邊都是做后端的。

在游戲部門待的時(shí)間不長(zhǎng), 不敢說(shuō)已經(jīng)深入了解游戲開(kāi)發(fā)技術(shù)細(xì)節(jié),我僅把我已經(jīng)接觸到的內(nèi)容與之前擅長(zhǎng)的web技術(shù)做對(duì)比,一來(lái)作為工作日志記錄, 二來(lái)希望能給想從web轉(zhuǎn)游戲的同學(xué)提供一個(gè)預(yù)先學(xué)習(xí)的方向,少走一些彎路。

這一系列內(nèi)容我會(huì)連載發(fā)布,而不是一次性講清楚所有內(nèi)容, 畢竟當(dāng)前還不敢狂妄的表示已經(jīng)了解游戲開(kāi)發(fā)的種種細(xì)節(jié)。

通用性

即使不同類型的軟件開(kāi)發(fā)也是具有一定相似性的,這種相似性隨軟件類型的不同而不同。 如web前端開(kāi)發(fā)與web后端開(kāi)發(fā)差異就挺大, 前端程序運(yùn)行在瀏覽器中,后端程序運(yùn)行在服務(wù)器上;前端程序操縱的目標(biāo)是網(wǎng)頁(yè)元素,后端程序操縱的目標(biāo)是存儲(chǔ)在服務(wù)器上的數(shù)據(jù)。前端和后端相似的地方估計(jì)也就編程語(yǔ)言使用的一些基礎(chǔ)概念了,所以前后端程序員崗位轉(zhuǎn)變存在一定難度,比如讓一個(gè)沒(méi)有任何后端經(jīng)驗(yàn)的前端程序員立馬上手寫后端程序,幾乎不可能。

然而web服務(wù)器和游戲服務(wù)器的差異就沒(méi)這么大了,它們用的是相同的編程語(yǔ)言, 比如說(shuō)java;它們用的是相同的數(shù)據(jù)庫(kù)軟件,比如mysql和redis;它們都運(yùn)行在服務(wù)器端,比如linux server和windows server,且對(duì)穩(wěn)定性要求及其嚴(yán)格。擁有這幾處相同點(diǎn)兩種程序在宏觀上是完全相似的,對(duì)應(yīng)程序員工作的轉(zhuǎn)換也不存在硬性的技術(shù)障礙, 如果程序員技術(shù)基礎(chǔ)扎實(shí),完全可以平滑過(guò)渡。

差異性

因?yàn)闃I(yè)務(wù)的不同,web服務(wù)器和游戲服務(wù)器勢(shì)必存在不同之處,然而這種不同并非技術(shù)上的不同,而是套路上的不同。

服務(wù)器類型的不同

web程序使用http服務(wù),瀏覽器和服務(wù)器之間是http協(xié)議通信。游戲服務(wù)器通常是一個(gè)socket服務(wù)器,與游戲客戶端之間保持長(zhǎng)連接,如果是網(wǎng)頁(yè)H5游戲,那么使用的也是全雙工的websocket協(xié)議。通常,使用http協(xié)議的web服務(wù)器不用程序員費(fèi)事去管理網(wǎng)絡(luò)連接,程序員只要專注業(yè)務(wù)邏輯即可。而使用socket或者web socket等協(xié)議進(jìn)行長(zhǎng)連接通信卻需要程序員手動(dòng)編程管理,比如說(shuō)斷線重連游戲狀態(tài)恢復(fù)機(jī)制,就需要手動(dòng)處理網(wǎng)絡(luò)連接。這表示socket編程難度大于http編程,從而導(dǎo)致游戲服務(wù)器編程大于web服務(wù)器編程??蛇@并不能表示游戲服務(wù)器編程不同于web編程, 如果一個(gè)web程序員不了解socket編程原理,那也不能算一個(gè)優(yōu)秀的web程序員,畢竟http是以socket為基礎(chǔ)的。

傳輸數(shù)據(jù)格式的不同

在web前后端傳輸數(shù)據(jù)除了使用http標(biāo)準(zhǔn)的鍵值對(duì)格式以外使用最多的是json,json被使用的一個(gè)最重要的原因是與JS無(wú)縫兼容,高效方便。然而,這種優(yōu)勢(shì)在游戲客戶端中不存在,人家游戲客戶端又不使用JavaScript編程,所以游戲客戶端和服務(wù)器之間有更合適的數(shù)據(jù)傳輸時(shí)格式存在。

我接觸到的是谷人希家的protocol buffer協(xié)議, 它相對(duì)于json的優(yōu)點(diǎn)是

  • 體積小。經(jīng)我測(cè)試,同樣的數(shù)據(jù)內(nèi)容,使用protocol buffer格式存儲(chǔ)大小只有使用json存儲(chǔ)的三分之一甚至更低,即使在某些特殊情況下也不會(huì)超過(guò)json的一半。

  • 嚴(yán)格驗(yàn)證數(shù)據(jù)格式,有xml xsd的功效。而json數(shù)據(jù)格式驗(yàn)證相對(duì)寬松,只要符合json語(yǔ)法就行,因此容易出錯(cuò)。反之,protocol buffer則更加穩(wěn)定。

至于缺點(diǎn)最嚴(yán)重的是使用麻煩, 需要借助谷人希的第三方工具才行。

protocol buffer的使用細(xì)節(jié),這里不作講解。

分布式處理業(yè)務(wù)

我接觸到的游戲服務(wù)器是微服務(wù)的一種形態(tài), 整個(gè)游戲服務(wù)器的邏輯被分割成很多服務(wù)模塊,分別運(yùn)行在不同的服務(wù)器上。然而,我無(wú)法理解的是每個(gè)模塊之間的通信居然使用socket,而不是更流行的http。游戲客戶端與服務(wù)器之間使用socket連接可以理解, 然而,服務(wù)器各模塊之間也使用socket卻有些使我莫名其妙,雖然這會(huì)使服務(wù)器之間通信性能有所提升,卻會(huì)帶來(lái)編寫代碼任務(wù)過(guò)于復(fù)雜,穩(wěn)定性下降等問(wèn)題,為了些許性能提升而喪失項(xiàng)目的維護(hù)性,有點(diǎn)得不償失。 不過(guò)也有可能我還沒(méi)有理解其中奧秘,判斷過(guò)于片面。

極端的性能敏感

游戲中實(shí)時(shí)對(duì)戰(zhàn)模塊必須使用c/c++實(shí)現(xiàn),原因是JVM執(zhí)行垃圾收集時(shí)會(huì)造成虛擬機(jī)停頓,也就是stop the world。在虛擬機(jī)技術(shù)發(fā)展日新月異的今天, gc停頓依舊會(huì)對(duì)游戲體驗(yàn)造成影響,因而必須使用老掉牙的c++, 這使我感到震驚。

另外, 游戲中大多數(shù)數(shù)據(jù)被放在redis中而非mysql也使我意外,數(shù)據(jù)持久化存儲(chǔ)顯然不是redis的優(yōu)勢(shì),拿性能換穩(wěn)定和安全,這種做法略顯激進(jìn)。

以上內(nèi)容是我當(dāng)前對(duì)于web開(kāi)發(fā)與游戲服務(wù)器開(kāi)發(fā)不同之處的見(jiàn)解,如有謬誤請(qǐng)指出。 此外,在之后的學(xué)習(xí)和實(shí)踐中的心得體會(huì),會(huì)在之后的文章中繼續(xù)發(fā)布。

相關(guān)案例查看更多