想從事手機網路遊戲伺服器編程,不知道該怎麼入門?請前輩指路!
目標:從事手機網路遊戲服務端開發,也就是後端編程技術。
現狀:今年畢業,軟體技術專業,學校里學的都是皮毛,會C++語法(僅限於用C++做數學題而已),了解基本演算法。問1:手機網遊服務端一般都是用什麼語言開發?不同平台,例如IOS,安卓,服務端語言可以通用嗎?問2:原本想找一個培訓機構的,但發現培訓機構要麼是學的前端技術,要麼就是什麼都學,後端技術只提點皮毛,沒有一個專註於後端技術的培訓院校,這個是什麼原因?應為後端技術太難還是太簡單?一般自學都能學會?
問3:像我這樣的基礎,有沒有合適我的服務端編程技術的書?有的話請推薦。問4:遊戲服務端程序員待遇怎麼樣?公司地位高嗎?PS:小弟是外行,問題問的不專業,請前輩們見諒。
你好,我是個做網路遊戲伺服器的,可以回答一下你。
問1:手機網遊服務端一般都是用什麼語言開發?不同平台,例如IOS,安卓,服務端語言可以通用嗎?
網路遊戲服務端客戶端之間一般都是通過TCP協議通訊,所以服務端用什麼語言和客戶端用什麼語言沒有關係。甚至一套服務端的代碼可以同時用於iOS版本和Android版本,如果有網頁版和端游版理論上也是可以通用的。不過各平台在協議上可能會有不同。
問2:原本想找一個培訓機構的,但發現培訓機構要麼是學的前端技術,要麼就是什麼都學,後端技術只提點皮毛,沒有一個專註於後端技術的培訓院校,這個是什麼原因?應為後端技術太難還是太簡單?一般自學都能學會?
培訓機構培養網頁開發的比較多吧。培訓做遊戲的,我就知道一個遊戲學院。我以前有同事是從那裡邊出來的。他們好像主要是培訓客戶端的。說到客戶端難還是服務端難,這兩個都各有各的難。客戶端做圖形渲染的比較牛逼吧,服務端主要牛逼在網路、分散式方面。如果說普通的寫邏輯,應該是服務端更難。基本做一個功能,都是由服務端設計,客戶端在寫邏輯方面真的很簡單。。。
問3:像我這樣的基礎,有沒有合適我的服務端編程技術的書?有的話請推薦。
單純寫做遊戲伺服器的書,我是沒見過。因為做伺服器真的是很多種技能的組合。首先,它最麻煩的一點我覺得就是分散式和負載均衡。就是如何承載更多的人還能保證伺服器的穩定和高效。就這一點就需要操作系統的知識以及網路的知識。對我影響比較大的兩本書:&<&
問4:遊戲服務端程序員待遇怎麼樣?公司地位高嗎?
其實做伺服器的程序員,在公司里的壓力是最大的。因為伺服器如果出了問題,一般都是大事兒。比如如果伺服器有個bug會導致崩潰,那所有人都上不了遊戲,還有可能導致玩家數據丟失。如果伺服器有某個漏洞會被利用刷東西,額,這個太可怕了,因為都是涉及到錢的問題。可能你一個非常微小的錯誤,都可能早成難以彌補的後果。客戶端一般出不來大事。說到待遇,怎麼說呢,還是和能力有關,這個和行業沒什麼關係。做客戶端的和做服務端的工資水平是差不多的(雖然我覺得服務端程序員價值更高一些)。公司的地位,這個不同的公司地位是不一樣的。一般來講是比客戶端的程序員高一些的。但是,只是個程序員而已,如果你碰上一個技術出身的老闆,在公司里可能會比較受尊重。但是如果你的老闆只是個商人,那你就只是一頭牛而已。
另外,你既然想做伺服器,為什麼還要限定在手機遊戲呢?對於伺服器來說,手游還是頁游真的沒什麼區別。目前手機網遊也分兩大塊:(1)如果是HTTP方式聯網的,那麼跟做網站後台所用的技術也差不多;(2)如果是socket方式聯網的,比如mmo的,對性能要求比較高,數據主要存儲在內存里,db只是定時非同步存儲。看你想選哪個方向,最好是進入一個公司實踐。
答1: 網遊的伺服器端語言很多, java, c#,c++,c,golang,erlang等等,這些我都見過. 不同平台僅僅是客戶端不同, 但伺服器都是可以共同的, 就好比, 你可以用不同的瀏覽器去訪問相同的頁面, 差不多是這個意思.
答2: 因為後端技術都是非常非常基礎的東西, 不像web開發, 有那麼多的套件, 遊戲伺服器開發都是很基礎很底層的, 培訓機構沒有這種實際開發經驗的老師, 是肯定不會教的. 然而有遊戲伺服器開發經驗的, 應該沒有願意去做培訓的吧, 畢竟遊戲開發的待遇還是比較高的.
答3: 伺服器端開發用的都是非常基礎的東西, 基礎一定要紮實. 每個公司甚至每款遊戲用的引擎都不一樣, 所以基礎好了才能快速的接受這些結構, 普通的開發用到的很少有特別深的東西. 如果到了想開發引擎或者伺服器架構的程度, 那就得看計算機網路底層, 開發語言的網路底層之類的比較深層次的東西. 剛開始基礎最重要..
答4: 不管是客戶端還是伺服器, 剛開始的待遇都差不多, 肯定普遍會比做web的要高些, 尤其是做到核心開發或者主程. 公司地位這個就不好說了, 看人,看公司.
想做伺服器開發, 最最重要的是責任心, 其次是一定要細心, 畢竟伺服器關係著玩家數據和整個遊戲的穩定性, 對於一個遊戲來說是非常非常重要的角色.問1:手機網遊服務端一般都是用什麼語言開發?不同平台,例如IOS,安卓,服務端語言可以通用嗎?
各種語言都有,但如果你c++都能學透,其他的應該不在話下吧……
客戶端的不同平台基本上是不影響伺服器端的。影響伺服器語言和架構的主要是遊戲類型,比如MMORPG實時性要求高,社交遊戲用戶量大,手機遊戲網路不穩定等。有的遊戲是I/O敏感,有的遊戲是CPU敏感,有的遊戲並發高,有的遊戲更新迭代頻繁,這些因素在影響伺服器語言和架構的選擇。問2:原本想找一個培訓機構的,但發現培訓機構要麼是學的前端技術,要麼就是什麼都學,後端技術只提點皮毛,沒有一個專註於後端技術的培訓院校,這個是什麼原因?應為後端技術太難還是太簡單?一般自學都能學會?
原因很簡單,客戶端的技術很大一部分是依賴於平台的,學校一般只教編程不會教怎麼用各種平台的開發套件和API。伺服器端只要求學好學校里的課程,但是需要學得更紮實一點。
問3:像我這樣的基礎,有沒有合適我的服務端編程技術的書?有的話請推薦。
一般招聘新人主要考察的還是編程語言的使用熟練度以及學習能力。我們希望新人能在做一些事情的基礎上學習進步,肯定不願意新入職了一個c++後伺服器天天崩潰,各種內存泄漏什麼的。所以建議複習你熟悉的語言,複習數據結構和演算法,多做些「數學題」,找工作沒問題的。
有多餘的時間可以看一些工程實踐的書(如Effective c++、谷歌c++編碼規範),再了解下常用的設計模式,重要的是要多想。網路和操作系統相關的知識是加分項,這些往往決定你能走多遠而不是入場門票。問4:遊戲服務端程序員待遇怎麼樣?公司地位高嗎?
待遇相對來說算是好的,主要取決於遊戲這個行業本身不錯。服務端程序一般在項目的研發這塊兒還是很有話語權的,關鍵得看公司是不是重視研發了……
入門容易,走遠才難。
推薦閱讀:
※如何看待手游《少女前線》開服三天封禁上千賬號?
※為什麼 Clash of Clans 和 Puzzle & Dragons 不像國產手游需要玩家選伺服器?是因為有更好的技術嗎?