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

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

159-8711-8523

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

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » ç¶²(wÇŽng)站建設(shè) >

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

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

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

瀏覽次數(shù):31

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

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

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

通用性

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

然而web服務(wù)器和游戲服務(wù)器的差異就沒這么大了,它們用的是相同的編程語言, 比如說java;它們用的是相同的數(shù)據(jù)庫軟件,比如mysqlå’Œredis;它們都運行在服務(wù)器端,比如linux serverå’Œwindows server,且對穩(wÄ›n)定性要求及其嚴(yán)æ ¼。擁有這幾處相同點兩種程序在宏觀上是完全相似的,對應(yÄ«ng)程序員工作的轉(zhuÇŽn)換也不存在硬性的技術(shù)障礙, 如果程序員技術(shù)基礎(chÇ”)扎實,完全可以平滑過渡。

差異性

因為業(yè)å‹™(wù)的不同,web服務(wù)器和游戲服務(wù)器勢必存在不同之處,然而這種不同并非技術(shù)上的不同,而是套路上的不同。

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

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

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

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

我接觸到的是谷人希家的protocol buffer協(xié)è­°, 它相對于json的優(yōu)點是

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

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

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

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

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

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

極端的性能敏感

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

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

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

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

相關(guān)閱讀