學(xué)游戲開發(fā),從客戶端還是服務(wù)端開始?
前言
近幾年,游戲開發(fā)行業(yè)風(fēng)生水起,入行的個個都賺個盆滿缽滿,這種現(xiàn)狀反過來又吸引著更多人源源不斷地進行這個行業(yè)。

那么,對于剛剛轉(zhuǎn)行到游戲開發(fā)或者有意轉(zhuǎn)行的朋友來說,應(yīng)該從哪里開始學(xué)起呢?
這個問題,Blake老師也多次講到。今天,我們換一個角度,請一位學(xué)員結(jié)合自己的經(jīng)歷談一談這個問題。
可能更能引起共鳴吧。

簡單來說,就是客戶端和服務(wù)端,要學(xué)哪個?
接下來,我們通過兩者的分析試著讓大家都能從中找到一個更適合自己的方向。
首先
技能點需求不同。
服務(wù)器,又稱后端。
需要用到的知識有:數(shù)據(jù)庫,數(shù)據(jù)結(jié)構(gòu),網(wǎng)絡(luò)編程等等。是不是感覺和其他行業(yè)的差不多,而且基本都是大學(xué)里學(xué)到的??赡艽髮W(xué)里唯一沒接觸過的是Linux開發(fā)和腳本語言。
客戶端,又稱前端。
技能點方面,圖形學(xué)應(yīng)該是其他行業(yè)很少接觸到的。龍書應(yīng)該是繞不過的。
其次
編程語言不同。
服務(wù)器的主流是c或c++,一般會搭配一個腳本語言lua,這也基本是國際上的主流。
有些另類,像廣州的頁游系有用erlang的,網(wǎng)易有個別項目有用純Python的。c#的,Java的也有遇到過一兩個但是整體不多。
在我看來語言只不過是個工具而已,從業(yè)越久就越不在乎語言,重點是服務(wù)器架構(gòu)的設(shè)計。
主程(程序部的老大)在乎的是高乘載高容錯,快速開發(fā)等等。
即使我是用c的,和用py的人,聊設(shè)計也能聊得通。當(dāng)然,對于入行新人來說,語言挺重要的。
我的建議是,如果想做服務(wù)器,可以從c++入手。對于lua則是多做了解。但是對于面試機會,任何語言的崗位都不要錯過。因為一些非主流的語言崗位(erlang,py)對于語言精通的寬容度是很高的。

至于前端,要看你想從事哪種游戲的開發(fā)(服務(wù)器則不存在這個問題,因為服務(wù)器的載體基本都是Linux)。
如果你想從事的是單機游戲開發(fā)的話,可能就要研究市面上的一些主流的引擎。大部分引擎都是基于c++上開發(fā)的。但是最大的問題是在于,現(xiàn)在國內(nèi)做單機的廠家很少了,你能得到的機會也相對少很多網(wǎng)絡(luò)端游,基本和單機游戲差不多,但是也有一些項目是用自研引擎的。不過,語言基本都是c++。
端游的問題和單機游戲遇到的一樣:基本沒幾家網(wǎng)游公司會開端游項目了。能開的起的都是大公司,他們會從自己內(nèi)部抽調(diào)一批老手來做,不缺人,所以嘛……
頁游,as是過去頁游用到的。但是,同樣的,傳統(tǒng)的頁游市場在萎靡(當(dāng)然有新興的頁游市場,下面會提到)。很多廠商都轉(zhuǎn)戰(zhàn)手游了。加上頁游處于玩家鄙視鏈底端,估計你選擇這條路的可能性很小。

手游,現(xiàn)在國內(nèi)主戰(zhàn)場。沒什么好說的,unity,Cocos2dx。個人建議是unity,基本都在用。
另外,提一嘴,雖然unity支持c#和JavaScript,但是大家都是在用c#來做。另外的另外,一般用unity的項目都會外接lua來寫邏輯層。對,又是那個lua。尤其是在蘋果商店上線的游戲,不接lua就很難頻繁的迭代版本(噢,這該死的ios審核)

一些新興的市場,例如能在手機上玩到渣渣輝。簡單的理解就是跨平臺頁游。h5,白鷺引擎都是可以值得關(guān)注的點。
咋一看下來,是不是覺得前端的語言更多更細,不知道從何入門。
其實不然,首先你先確定自己想發(fā)展的領(lǐng)域。前面提到了,在國內(nèi)想一入門就做端游,基本就是要靠愛發(fā)電了。手游是國內(nèi)目前發(fā)展機會最多的領(lǐng)域,而新興市場也值得關(guān)注。但是個人感覺短時間內(nèi)很難取代手游。

至于,將來手游市場飽和,各大廠商轉(zhuǎn)戰(zhàn)其他市場怎么辦?
其實這種情況在中國游戲發(fā)展史里經(jīng)歷過很多次,我就遇到一些從端游轉(zhuǎn)到頁游,再轉(zhuǎn)到手游的人。就像我之前提到的語言只不過是工具,你可以把當(dāng)作敲門磚入行,但是之后就要靠自己的悟性去入門。
再次
遇到的困難不同。
服務(wù)器。乍一看很多其他行業(yè)轉(zhuǎn)游戲后端很美好,基本可以無縫轉(zhuǎn),但是實際情況呢?
開發(fā)團隊對服務(wù)器最重要的3點需求:穩(wěn)定,穩(wěn)定,還是tm的穩(wěn)定。這就意味著,后端不太愛用新人,也不太愛動架構(gòu)。你會看到一些上了年紀的項目十年如一日的用著老舊的架構(gòu)。程序員明知道那里底層有問題,但是考慮到穩(wěn)定性,就縫縫補補又三年。

所以,這就表示,一來你能拿到的面試機會就少。二來,就算你真的成功拿到offer,你就要去死磕一些很繞很繞的代碼。甚至有可能為了補一個窟窿,另一個程序員又插了段代碼進來。然后,按了葫蘆起了瓢,各種奇怪的東西插進來。
當(dāng)然前端也有這種情況,但是前端對穩(wěn)定性的需求遠沒有后端高。很多時候可以放心的大段大段重構(gòu)代碼。
再就是開發(fā)的難度,前端大部分情況就是所見即所得,我做對了,我能看得到。
而后端則是很虛的東西,簡單的講就是面對一堆數(shù)據(jù),還不能出錯。我到底做對沒?打個斷點看看,打個日志看看。這種情況會發(fā)生嗎?我怎么模擬?單人的情況沒問題,多人的情況會有問題嗎。人很多的時候會不會爆炸?

另外就是運營事故的發(fā)生,這是后端最怕的。
如果是前端出了大bug,頂多就是個別客戶端崩潰,閃退。但是數(shù)據(jù)還在啊,玩家沒實質(zhì)損失。
但是后端就不一樣了,后端無小事。
首先外面能在運營,并能活下去的項目,起步都是同時在線四五千以上(日活幾萬十萬)。更不用說那些大項目,幾百萬同時在線了。一旦出現(xiàn)服務(wù)器崩潰(玩家登錄不上,數(shù)據(jù)回檔),寫出個惡性bug(玩家東西不見,或者能刷東西),那意味著什么。你不僅要面對外網(wǎng)玩家山呼海嘯的責(zé)罵,整個部門都會盯著你,別的市場,運營,客服部門也在bb你。
所以,實際上后端你能拿到的機會遠比前端的少,入門難度則比前端的大。

最后
發(fā)展前景不同
因為我不是hr,所以不了解具體的薪資。
但是就感覺而言,新人入門,做服務(wù)器的工資應(yīng)該比做客戶端的高一些,畢竟物以稀為貴嘛。
但是越到后面雙方的差距會越小。到了主程級別,就沒區(qū)別了。那時不在于你是后端主程或是前端主程,而是在于你牛不牛逼咯。
再一次聲明,這僅是我基于個人經(jīng)驗得出的經(jīng)驗,不一定適合每一個人,但絕對保證真實。
希望能對大家有所啟迪和幫助。
再見。