C++遊戲程式設計師現狀 中國C++程式設計師100%都是自學的。因為中國幾乎沒有象樣的C++培訓機構。大家都知道社會培訓是賺錢為主要目的。能在那裡成才是個大運氣。也不象JAVA有SUN公司一手推行。中國大學教育裡也根本沒有C++教學。關於C/C++基礎課的知識,只是讓學生入門。但對於實際的C++軟體工程應用,大學課本知識實踐意義不大。最重要的是,大學裡沒有合格的C++老師。程式設計是門技術,叫手藝也行。而大學是搞科研的,多的是科學家,靠出PAPER教科憑職稱為生。並不是技術員。沒有10萬行以上程式碼經驗和成功軟體專案經驗的人,很難教出中高階C++程式設計師。遊戲製作業對C++程式設計師的要求是比較高的。比一般行業軟體高很多。因為任何一個MMO都是個中大型軟體專案。日使用人次達到幾十萬上百萬,同時使用人數幾十萬線上的大型網路多人互動軟體,集成了超過十幾項專業領域程式設計技術的軟體,想不大都不行。另外,中高階C++程式設計師能力一般都很強。因為都是自學成才,這需要較高智商,很強的自學能力,解決問題能力,和克服困難的毅力。但是這種人才在遊戲行業里人數並不多。拋開鳳毛麟角具備整體大型軟體架構能力的高階人才不談。能夠承擔獨立模組開發,具備獨立解決問題的能力,寫出在空間,效能,可維護性等幾個方面達到要求的C++程式設計師,也是很難找到的。而具備這些能力,同時又具備一些專業領域技術的人(圖形引擎,網路引擎,等),更加稀少。所以,即便是大遊戲公司,對於C++遊戲程式設計師的需求,也是永遠不能夠得到滿足。而已經在公司工作的C++程式設計師,不經過短則3個月,長達1年的鍛鍊,也無法真正勝任獨當一面的C++遊戲程式開發工作。
MMO遊戲開發對C++遊戲程式設計師要求 前面提到,所有MMO遊戲都是中大型軟體。軟體佔用空間,穩定性,效能,可維護性等各項衡量軟體質量的指標,對MMO遊戲軟體的要求都非常嚴格。遠大於普通行業軟體。這種規模和銀行系統類似。而客戶端和軟體邏輯比一般的商業軟體又要複雜很多倍。這就要求軟體編寫人員具備較高的程式編寫素質。遊戲軟體中,解決好軟體工程部分,只是專案的1/3。另外兩部分是策劃和美術/音訊。從經驗來看,需求變更對於MMO遊戲軟體,不是偶然事件,而是一種MMO遊戲軟體開發的基本屬性。遊戲軟體投入大,週期長,風險高。MMO市場變化也大,互動電子遊戲發展迅速。遊戲軟體必須面對外界變動。又因為開發週期長,所以軟體需求變動成為了軟體開發的一種基本屬性。猶如複雜性是軟體工程的一項基本屬性一樣。這導致遊戲軟體的開發充滿了不確定性。互動娛樂不同於商業應用。娛樂是屬於理性和感性之間的領域。而C++開發面對就是0和1的二元世界邏輯。這兩個領域存在著不可調和的矛盾。這種情況,對C++遊戲程式設計師提出了更高的要求。首先,基本C++知識,C/C++運用技能,必須極其紮實。並不是遊戲軟體開發用到什麼平時書本上很難得到的知識點或者技能點。遊戲C++開發的知識體系和技能體系,利用現有C++書籍就可以滿足。比如《C++ PAORGRAMMING LANGUAGE》《C++ PRIMER》《EFFECT C++》《MORE EFFECT C++》等。但是在開始遊戲程式設計之前,把這些書本吃透並且實踐熟練的人,非常難遇到。當然能夠真做到這點的人,已經是個中高階C++程式設計師了。我曾經遇到過一個,畢業工作不久就去了GOOGLE其次,對於面向物件的深入理解。是非常重要的。熟練掌握C/C++語法,程式設計技巧,只是滿足了C++遊戲程式設計師一部分要求。而面向物件觀念的深刻理解,會為大型C++專案開發帶來翻天覆地的變化。 有時候,在一個10人以上並行開發的C++遊戲專案中,面向物件方法會成為救命稻草。《設計模式》以及《設計模式解析》相關的書籍,也是必修課。最後,好技術人員的本質是自大的。這屬於正常。但是如果這種習性影響了自身繼續提高和團隊合作。以及影響了其成為技術管理者和專案技術核心時,那麼這種技術人員的自身價值會大打折扣。 如果早日越過自命不凡這一關,擴大眼界,繼續在綜合素質上提高。在技術管理能力,架構能力上提高,其自身價值才會繼續增長。落到實處,就是待遇和身家增長。由於遊戲開發的本質是團隊開發。任何時候,只有對一個團隊有價值的技術人員,其本身的價值才有可能得以體現。
成長和技術發展路線 一般技術人員發展有幾個階段1 、具備獨立開發局部功能的能力 比如為某個UI編寫邏輯介面函式。為某個LOGIN對話方塊編寫自繪製控制元件等。2 、具備獨立開發和攻關某個功能模組的能力 比如為遊戲增加一個小型邏輯功能模組。3 、具備獨立設計並開發某個系統的能力 比如設計和開發AUTOPATCH 系統 4 、具備解決技術難題,設計架構的能力 比如開發網路同模擬系統,開發一箇中大型遊戲製作工具5 、具備整體架構,管理,協調其他人共同開發一個大系統的能力 客戶端主程,伺服器主程,引擎主程等6 、技術director制定技術發展方向,技術團隊建立,技術管理等 在邁向每個階段的過程中,伴隨的都是巨大的工作量和工程壓力。有時候是跨越1年的失敗等等。在公司專案不成功時轉換單位,重新開始,或者繼續做為核心團隊留在公司繼續從新的機會做起,都是好的辦法。但關鍵是吸取經驗教訓,儘量多學多練。並且結合自身長處發展。當然,遊戲製作人員,最好還是依靠一個核心團隊。成為核心團隊的一員。
能夠達到第三檔的程式,已經是公司不可缺少的人才了。但往往程式設計師自身對自己的認識,和公司對其的認識,有時候會有差異。我碰到過一些人,腦子好用,寫東西很快。各種技術都有涉獵。但總是不放心讓他獨立開發設計某個系統。哪怕是相對獨立的工具。也會被搞得一塌糊塗。要後面人不停擦屁股。可自己還覺著自己水平很高。這種人浮躁,眼高手低,不願意細緻周全的做好一件完整的事。所以就可以看到他不停的跳來跳去,可在新公司的職位也沒有見多麼提高。公司非常重視交給一個程式設計師一件事,他是否能完整,考慮周全的把事情做完。哪怕時間長一點,也不能不做完。這會給工程帶來致命的後果。
發展待遇 前面提到的6檔,粗略了劃分了待遇水平。其實到了第三檔,你的待遇已經是這個行業所決定的了。而不是某個公司決定的。因為遊戲業大量缺乏這樣的C++程式設計師。如果具備這個水平,在幾個大城市遊戲公司找到工作並不難。大公司提升慢,還有我這種不到百人規模的公司要。所以行業價格才是公司要考慮的。如果給少了,軟體專案的C++程式設計師流失會帶來較大影響。但給的多,其實是 C++程式設計師自己的價值增長瓶頸。如果幾年下來一直以為自己水平就該拿這麼高,結果到了一家整體技術水平比較高的企業,就會徹底傻眼。這個時候再放低心態去重新開始,對技術員來講就是件很艱難的事了。在目前遊戲行業技術水平普遍較低的情況下,哄抬程式設計師工資水平對程式設計師自身好處也不會很大。就算一個新手本來拿幾千的水平,給他1萬。他根本就不會知道自己到底有多少水。一年下來也就多拿了3-4萬人民幣。可耽誤的是學習,影響了心態。而那些心態好,知道努力方向的技術人員,幹個3-5年後如果有拿期權和股權的機會,比那些一開始虛高的人,身家就不知道高多少倍了。