當前位置: 華文星空 > 知識

遊戲開發的編程算不算是 IT 行業中難度最大的?

2015-07-12知識

本來只是想寫個評論的,沒想到超字數了。

贊同

Chaos

,以及部份其他回答中,對遊戲引擎的大部份觀點。

但是, 隔行如隔山 ,現在IT行業的區分已經真的是很明顯了,不同領域之間,基本上可以認為是兩個完全不同的行業。 大家真的沒必要去踩其他領域的技術 ,因為你去了別人的主場,別人也能吊打你。

例如說:Google/阿裏手裏的海量數據檢索系統,技術含量就低了?很多IT巨頭開始涉足的大資料探勘,分析,智慧學習等等領域,從演算法到架構到實作,哪個簡單了?

還有,工業領域,別的不說,光是那個 真即時 的系統就不比你的遊戲引擎技術含量低了。說穿了,遊戲引擎也就是一個基於定時器和中斷的 偽即時 環境而已。

最關鍵的一點:

遊戲行業對可靠性的要求,比起很多其他領域來說,完全是低了好幾個檔次的

遊戲行業對可靠性的要求,比起很多其他領域來說,完全是低了好幾個檔次的

遊戲行業對可靠性的要求,比起很多其他領域來說,完全是低了好幾個檔次的

遊戲引擎計算跟不上了?什麽後果?無非就是丟幾個幀,被問候一下家人而已。

遊戲引擎渲染錯誤?什麽後果?無非就是出了色塊,有bug嘛,大家玩遊戲的時候見得還少嗎?

就算再退一步,持續跟不上/出錯,那就告訴玩家,你這配置玩不了,或者降低特效或者分辨率咯。

還不行?那讓遊戲開發商降低特效,或者減少一個區的玩家數嘛。

再不行?好吧,那你要不下一款遊戲換引擎吧?我不做你這生意了,這總行了吧?

但是,在其他行業裏:

淘寶/支付寶如果發生偶爾錯誤,那可能只是騷擾客服,但是如果大規模數據錯了,這基本上是政治事件了。QQ也是一樣的。如果某天QQ出問題,全市或者全省的使用者都登陸不上QQ,你覺得會不會各種謠言滿天飛?

同樣的,如果是像華為那些核心交換機路由器出問題了,一大片使用者受影響,照樣不是被問候一下家人,或者說「換」就能完事的。

還有工控領域也是一樣,如果某汽車的esp的程式可靠性出了問題,該介入時不介入,或者不該介入時介入了,那損失的照樣不是錢的問題。前幾年豐田在美國的剎車門,大家沒忘把?也許那不完全是程式和技術的問題,但是嚴重性和後果是差不多的。

化工等等就更是嚴重,碰到的東西,不是易燃易爆,就是高溫高壓,或者有毒強腐蝕。如果在出問題剛露苗頭的時候,自控系統反應得稍慢一點,那都可以說是滅頂之災。

至於銀行,那就更不用說了。我說一個真實事件:90年代某四大行的某省分行,上了一套新系統,用於全省儲戶的結息。結果系統出問題了,在結息日的下一個工作日的8點(營業時間前一個小時)還沒算完。

因為沒算完利息,那就意味著沒法知道儲戶的真實金額,所以營業網點如果按時開門,那被儲戶發現自己的錢不對,那有問題。但是如果不開門,那是更麻煩的問題。更何況,即使網點不開門,各種非網點辦理的業務,包括電匯等,是不是也要暫停呢?所以,這件事1小時內就層層上報到中央,然後全省武警立刻去各主要網點門口待命,防範群體事件。

知道了吧?這是 政治事件 ,從上到下,很多人的飯碗,很多人的前途,甚至很多人的生命(例如說如果真有鬧事,控制不住的話),都會和你的程式相關。

其實每個行業都有自己的行業特性。

遊戲行業之所以可以大膽的用各種最新最前沿的技術,不是做遊戲引擎的人都比較聰明,比較牛,其他行業的不會這麽幹,而是因為 遊戲行業的犯錯成本低

所以你看我上面列的好幾個不同領域的,因為他們的犯錯成本也不一樣,所以他們對新技術的使用態度也是有不同的:

阿裏、淘寶、QQ等,其實相對還挺接受各種新東西的,有時他們也會自己弄點新玩意出來。

華為、思科等就會保守很多,不內測個兩三年是不會輕易投入生產的。

工控自動化等領域就更保守,新東西出來,沒個5年10年都不敢大規模推廣。

銀行就是最保守的,直到現在,連分布式集群都不敢隨便用,核心系統基本上還是靠大型電腦死命扛。

所以, 術業有專攻

沒那個行業的技術可以包打天下的。

誰要是覺得支付寶/銀聯/銀行/證券交易系統的那套東西,業務簡單邏輯簡單外加預算寬松,於是覺得自己在遊戲引擎十幾年準即時系統的研發功力,絕對是手到擒來的話,那請組團去做一套出來,然後看他們 敢不敢 上線?

----------------------------------------------------------------

不少人在評論中都表示(或者說質疑):難度不等於穩定性。

何為難

一句話: 別人能做到而你做不到的就是難 (反之亦然)。

永遠不要以為XX特性是我沒去做,而不是做不到。很多事情,你沒真正做過,是不知道裏面有多少問題的: 魔鬼在細節中 (The devil is in the detail),這句話在軟體行業極為適用。

至於有些人說什麽:穩定性不過是細心雲雲,我只能說,這不但是無知,而且是對過去幾十年來所有軟體工程研究成果的一種侮辱。就好比一句話: 考100分不難,不過是細心而已 。這句話在學霸口中說出來,那是謙虛,在學渣口中說出來,那就是 無知 。所以,請所有想說穩定性不難的人,先把自己手上的程式碼、模組、系統做到和別人一樣穩定,然後再來高談闊論說:穩定性不是難度。

再說回軟體開發。

一個軟體系統,其難度可能體現在以下幾個方面:演算法、架構、實作、規模、穩定性、效能、可延伸性……

當然,在現實中,受限於各種實際條件,所以我們在以上幾點幾乎是不可能同時做到完美的。所以我們通常說的「設計」,其實就是綜合考慮實際情況,在以上各種指標和參數間作出 取舍

而不同領域,一般情況下的取舍傾向是有不同的:

例如說遊戲,在一定程度舍棄了穩定性、規模和可延伸性,而把演算法和效能會調整到極致。

而像google/阿裏/騰訊等互聯網企業,則在一定程度上舍棄了效能(互聯網公司很少會追求單機、單服務的極致效能),而透過平行擴充套件能力,把規模、架構等做到極致。

例如銀行等,穩定性第一,其他一切往後排。至於演算法或者可延伸性嘛,就只能呵呵了。

再說回遊戲。

某些做遊戲的人,例如說

Chaos

,說他們做遊戲的也追求穩定性。

那我就想問一下,要談穩定性,最起碼就是沒bug,對吧?例如說,一個三天兩頭就發生空指標存取的模組,怎麽都算不上穩定吧?

好,那我不妨請

Chaos

或各位做遊戲的人來報一下料,說說看,你們的遊戲工作室,或者你們曾經參與過的某款遊戲,在上線前,測試的 行覆蓋率 函式覆蓋率 分支覆蓋率 條件覆蓋率 分別是多少(別告訴我你們工作幾年都不知道這些指標的含義)?

然後,據我所知,很多遊戲,別說上線標準如何,很多是連這些數據都 根本沒有 。你們不妨給我一點反例?

所以,你們說你們也追求穩定?還要動不動和通訊、銀行等行業比穩定性?

說得難聽點,真是: 井底之蛙