知è˜
ä¸ç®¡æ˜¯ç¶²(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)閱讀
- ç¶²(wÇŽng)站建è¨(shè)é¸
- 云å—建è¨(shè)廳官方網(wÇŽng)ç«™
- 云å—ç¶²(wÇŽng)絡(luò)營銷顧å•
- å ±å»¢è»Šå›žæ”¶
- ç¶²(wÇŽng)ç«™æå»º
- æ±½è»Šå ±å»¢å›žæ”¶è»Ÿä»¶
- 手機網(wÇŽng)站建è¨(shè)
- 定制å°ç¨‹åºé–‹ç™¼(fÄ)
- python開發(fÄ)å°ç¨‹åº
- 云å—ç¶²(wÇŽng)站建è¨(shè)首é¸å…¬å¸
- 云å—ç¶²(wÇŽng)站建è¨(shè)首é
- 迪慶å°ç¨‹åºé–‹ç™¼(fÄ)
- ç¶²(wÇŽng)站建è¨(shè)優(yÅu)化
- 云å—軟件公å¸
- 網(wǎng)站收錄
- 云å—ç¶²(wÇŽng)站建è¨(shè)優(yÅu)化
- 云å—å°ç¨‹åºåˆ¶ä½œ
- 云å—å°ç¨‹åºå“ªå®¶å¥½
- 汽車回收管ç†
- ç¶²(wÇŽng)站建è¨(shè)專家
- 云å—ç¶²(wÇŽng)站建è¨(shè)æœå‹™(wù)
- 云å—å°ç¨‹åºè¢«é¨™è”£è»
- 云å—çœå»ºè¨(shè)廳官方網(wÇŽng)ç«™
- ç”Ÿæˆæµ·å ±
- ç¶²(wÇŽng)站建è¨(shè)首é¸
- äº‘å—æ‰‹æ©Ÿç¶²(wÇŽng)站建è¨(shè)
- 昆明å°ç¨‹åºé–‹ç™¼(fÄ)
- 云å—å°ç¨‹åºé–‹ç™¼(fÄ)å…¬å¸å“ªå®¶å¥½
- 云å—ç¶²(wÇŽng)站建è¨(shè)特性
- web教程