2008-10-16 80 views
14

與大多數開發人員一樣,我是一名業務開發人員,其實質上包括將UI簡化爲一些後端數據存儲。 (我們都知道還有比這更多的東西,但這通常是它歸結的原因。)遊戲開發與業務開發有什麼區別?

我知道遊戲開發與業務開發有很大不同,但我很難解釋它我的一個朋友。我希望SO社區能夠幫助我。

對我來說,現代遊戲開發人員處理很多操作三維圖形。在遊戲代碼中(我在這裏猜測),你正在裝配多邊形(或類似的東西),旋轉它們等。這涉及到操縱關係數據的不同方式(例如)。我真的不知道。我只知道它不同。

編輯:

我要強調的是,「發展」我的意思是「編程」,而不是所有這一切進入創造商業軟件的遊戲或一塊方面。對不起,我原本沒有說清楚。

謝謝!

+0

系統開發怎麼樣?設備軟件,國防和運輸系統 - 軟件比遊戲和企業更多! – metao 2008-10-17 05:38:30

+1

真的!但那不是我朋友想知道的。他問我是否可以編寫遊戲,而且我說這是與我所知道的完全不同的一種開發。 – 2008-10-17 12:57:21

回答

12

我在遊戲開發,但很久以前來自業務發展。如果你在物理或圖形方面工作,遊戲開發在數學上非常嚴格。即使人工智能可能需要相當多的低等級的數學。就屏幕上的繪圖而言,硬件通常會處理大量的多邊形操作數學運算。在預處理步驟中運行(通常)很多工具也會涉及到很多的遊戲數據生成過程,如果您生成可見性數據,那麼這些數據也可能是數學密集型的。

+1

在我看來,這是讓遊戲開發與衆不同的數學。人們認爲計算機編程通常涉及數學,但作爲一名業務開發人員,除了偶爾的統計數據外,我幾乎不會使用任何非常簡單的數學算法。聽到這個消息,大多數人都很震驚。 – 2008-10-16 22:24:57

+0

是的,我在業務發展中處理的唯一數學問題是美元和美分,也許是偶爾的百分比。 – 2008-10-16 23:12:00

5

業務發展和遊戲開發之間的一個巨大差異是涉及的學科數量。大多數商業軟件是由一組開發人員創建的,他們都具有相同的基本技能。相比之下,遊戲由遊戲設計師,視覺藝術家,3D模型師,動畫師,音樂家和開發人員組成。

+0

你是對的,但我打算把我的問題集中在編程方面。我知道那不清楚,所以我會編輯我的問題。 – 2008-10-16 19:21:09

5

一個應該有無限循環,一個不應該。

+0

太短... – 2008-10-16 19:19:47

+0

實際上,在現代GUI環境下,這兩種類型的應用程序都有無限循環。 – 2008-10-16 19:45:53

3

有關數學和團隊中藝術家和其他專家的整合的好處。另外,我會這樣說:

  • 遊戲開發在某種程度上會依賴硬件。在很多情況下,遊戲是同時建立到幾個平臺和控制檯(更不用說手機),而且具有不同的體系結構。這被抽象到一定程度,但開發人員不能完全避免這個事實。

  • 遊戲開發通常對性能更敏感,或者至少性能要求不同。你正在處理實時體驗,所以花了很多時間來優化這些討厭的fps。

  • 在很多情況下,遊戲開發並不關心重用和可維護性。遊戲引擎可能會被重用,但應用程序代碼基礎可能不會看到v2.0。在最後一個項目中,有很多快速和骯髒的調試正在進行。如果最終用戶看起來不錯,那麼在發佈前兩天做出優雅的修復並沒有什麼附加價值。

9

在編程領域方面,除其他事項外,我們處理:

  • 圖形編程(包括Shader發展)
  • 動畫
  • 物理模擬
  • AI和遊戲
  • 音頻
  • Networking(typica lly相當低級的東西)

其中一些涉及非常嚴重的數學和算法知識。除此之外,我們面臨極其嚴格的速度限制,並且通常也必須非常小心內存使用情況。我們面臨着不斷變化的硬件,並且由於我們試圖將硬件推向極限,這可能非常艱難 - 您不能將其抽象化。大多數遊戲開發仍然是相當低級的C++工作。我們現在處理的數據庫可能比其他大多數程序員都要少(儘管在線遊戲正在改變這種狀況)!程序員往往是現代遊戲項目中的少數派:它們都是關於內容創作(動畫,建模,紋理,音頻和設計)。這意味着許多遊戲程序員致力於使內容創建過程高效,而不是在遊戲代碼本身上工作。這項工作可能會有更寬鬆的速度和內存限制,儘管它必須處理大量的數據集。

讓遊戲變得「有趣」是最難做的事情之一 - 在商業術語中,它意味着極度不穩定的要求,因爲設計師不斷改變自己的想法應該如何運作,追逐那些難以捉摸的樂趣因素。

最後,遊戲通常是一次發貨,沒有機會解決某種交易。這實際上意味着很少涉及代碼維護,所以傳統上可能不太關注代碼質量問題。隨着發佈後內容的增加,在線遊戲和現代項目的龐大規模,這一情況正在發生變化。

總的來說,這是一個令人難以置信的令人興奮的領域,缺點是它的收入通常不高(因爲這對開發商來說是一筆非常艱難的財務支出,而且因爲它很受歡迎,所以總是有新的人員尋找工作) 。

6

只是對遊戲開發中不同的一些隨機想法。請注意,其中可能有一些諷刺,儘管我試圖壓制這種衝動。

  • 除非你是其中一個新式工作室(如Eidos Montreal或Blizzard)的幸運僱員,否則總會有一個截止日期,恐怕太短。在商業編程中,您大多會爲自己完成最後期限。
  • 業務應用程序服務於某些特定需求。遊戲的目的是娛樂人們。你無法真正預測遊戲是否會失敗,直到遊戲結束。
  • 性能至關重要,在遊戲的每個方面。編寫有利於維護的代碼是第二優先級。在業務編程中,有效的代碼是重中之重。
  • 對於商業應用程序來說,閃亮的用戶界面是一項獎勵。對於一款遊戲來說,這是必須的。
  • 調試遊戲比較困難,因爲總會有一些硬件依賴,導致只能在某些機器上覆制的錯誤,而這些錯誤都不在貴公司。和一個典型的商業應用程序相比,遊戲吸收的性能要高得多。
  • 你有人致力於創造藝術,故事,音樂,聲音,背景和設計,其中沒有一定需要編程知識(腳本有點不同),即你有很多內容,這是用戶球員)將看到。沒有人關心你的代碼有多好,除非性能不好或者有錯誤。其他人得到讚揚。
  • 對於較大的遊戲,您只需要專門爲3D圖形,網絡,音頻,工具,腳本,物理等而設的程序員。他們中的大多數都是高度專業化的,他們每個人都可能導致遊戲陷入災難。如果你是圖形或物理學家,你只需要高級數學技能。那麼,或者AI。
  • 除了一些錯誤修正之外,大多數遊戲都是不容忽視的,除非它是獲得擴展包或續集的更成功的遊戲之一。
  • 安全問題是網絡遊戲的一個重要問題,因爲有更多惱人的人試圖讓人們失去商務應用程序,其中許多應用程序在客戶的內部使用(或多或少)。
  • 與編寫業務應用程序相比,您的工作量要多得多。
  • 土地爲AAA頭銜的職位,你需要有至少三個運AAA遊戲的工作(沒有,沒有錯字這裏,讀過暴雪或LucasArts的一些工作描述:P)

但是這裏有好東西:

  • 當你玩遊戲時,你可以假裝工作。
  • 最後,編程遊戲很有趣。無價。
1

商業軟件必須是可靠的,可維護的,一致的,不會太煩人緩慢,並能建立在大量的已經寫好的東西,如數據庫,控件,窗體等

一個遊戲程序員常從一張白紙開始 - 硬件參考手冊,一些關於硬件的文檔,以及圍繞一些與上一份工作完全不同的高級硬件的瘦​​供應商庫。

因此,他們必須建立您所看到的 - 並使其大部分工作在20ms的時間段內,可靠,並且通常在一個可笑的短時間內,面對不斷變化的需求並且通常是一個非常艱難的最後期限,小時的比較微薄。

那更不用說經常有掌握一些相當複雜的數學和物理....

0

性能確實的區別,從我可以告訴。

技術上,遊戲通常由Windows/C++驅動。

2

讓我們從目標開始 - 遊戲開發的目標是創造有趣的產品。它應該是準確的,它看起來不錯並且運行平穩。商業軟件解決方案的目標是對工作流程進行建模。它應該是一個足夠快的工具。穩定的產品,執行絕對準確,並確保它應該做的任務。

由於我們針對不同的目標,我們使用不同的方法來構建遊戲和商業軟件。我們來看看需求。對於一款遊戲,這些要求由遊戲設計師決定。對於軟件產品,業務定義了過程和需求。對於一款遊戲來說,這些要求並不是最終的 - 我們是否會有小卡通人物或真人模特 - 例如,這對遊戲引擎無關緊要。但是對於軟件產品而言,在開發之前應嚴格遵循這些要求並儘可能清除最大可能的細節。

從不同的要求出現不同的軟件設計和開發方式。對於遊戲來說,性能和遊戲性是至關重要的,圖形和聲音的質量(例如)可以被降低,以便與較弱的硬件兼容。此外,物理模型可以簡化,只是爲了運行更流暢並改善遊戲性。對於商業軟件來說,所有東西都應該是精確的,並且裁剪功能意味着您的產品不會像設計中那樣功能強大。

對於一款遊戲,安全性並不重要 - 沒有應該保存的關鍵客戶數據。對於商業軟件來說,應該提供一個良好的安全系統 - 從數據加密(同時保存數據存儲或通過網絡傳輸)開始,通過備份系統並提及(但不是最後)與先前版本的兼容性。

我會繼續與其他方面,但我想這已經是太多的一個帖子...

5

每個人都應該有無限的循環,一個不應該。 - Rich Bradshaw

Rich是對的。基本上,從編碼的角度來看,遊戲循環會根據遊戲的狀態(如控制器輸入,對象碰撞等)創建一個動作「框架」,該動作可以無限重複,直到遊戲元素的某些狀態或輸入告訴它停止或「退出」。這種方法可以讓CPU和顯卡非常繁忙,因此遊戲機市場的處理器速度更快,顯卡甚至更快。

業務應用程序沒有活動循環。相反,他們坐着等待事件,如點擊,來自Web服務客戶端的消息,HTTP GET請求等,然後他們響應該事件。

當然,遊戲通常比業務應用程序在幾何上更密集,但這並非完全正確。考慮圖像編輯,CAD和圖形工具。對很多人來說,這些都是商業應用。但大多數情況下,業務應用程序都與查詢數據,顯示數據,接受用戶輸入以及根據用戶輸入修改數據有關。在許多情況下,商業應用程序通過網絡甚至互聯網來實現,但這簡直就是一個簡單的例子。

業務應用程序開發人員和遊戲開發人員的技能和心態往往不同。遊戲開發人員在創建用戶體驗方面需要考慮的輸入結構數量有限,如果您願意,可以無限選擇上下文或「世界」。業務開發人員恰恰相反,其潛在背景有限,通常是網頁或基本窗口,以及無限(或幾乎如此)的輸入和數據顯示組合集合,以創造完全不同於遊戲開發人員的用戶體驗着手實現。

0

遊戲編程與科學編程有更多共同之處。您正在建模行爲系統並根據有限的輸入預測結果。

2

由於產品的質量和產品的可銷售性之間的奇怪的脫節,商業軟件(非收縮包裝軟件)通常可能寫得很差,但仍然被認爲是商業上的成功。另一方面,遊戲軟件實際上必須是好的才能在市場上生存下來。

專業商務軟件的質量標準是,一般要低得多。

5

業務發展通常更寬容。

原因基本上是這樣的;通常,人們付費使用商業軟件。人們支付使用遊戲軟件。

這可能聽起來像它不回答你的問題,但它確實是。當我的老闆說「爲這個文檔使用微軟的詞」時,他們提供了這個軟件,我有義務使用微軟的詞。所以,當它使用它時,當它決定重新編號我的所有章節標題「僅僅因爲」或保存到磁盤需要30秒,而它解決OLE引用(這只是一個EXCEL電子表格,看在上帝的份上!),我只是砂礫我的牙齒,並提醒自己,我得到報酬來做到這一點。

鑑於,如果我在遊戲中,我期待娛樂。我期望這些經驗能夠正常,順利,乾淨地工作,不會出現大的口吃或問題。

再次回到爲什麼這是編程問題;遊戲中的那些循環和結構最好是DAMN,以確保遊戲引擎沒有大幅放緩,沒有停頓,沒有任何東西讓消費者只花了X美元的辛苦賺來的錢就說:「這是一塊的廢話「,然後走開。使用商業軟件,您可以擺脫這種情況;在某些方面,這幾乎是預期的。再次看看Microsoft Word的性能;如果這是一場遊戲,它將會被取笑。

我知道我聽起來像是在選擇微軟的Word,而且我一般都是這樣,因爲我覺得它很可怕,但是對於如此多的軟件來說,這一點是正確的。 CAD軟件是另一個例子。與遊戲一樣的基本事情正在發生,但總的來說,如果沒有經過很多培訓,工作就會變得很慢並且很難。

差異歸結爲波蘭語,以及預期的波蘭語水平。是的,商業軟件通常比遊戲更具靈活性;但更重要的是,從編碼的角度來看,代碼有GOT在遊戲中高效而乾淨地工作;商業軟件通常會更寬容潦草的代碼。

在商業應用程序中,未經優化且速度慢的算法已被普遍接受;雖然他們從來不是可取的,但業務決策通常會增加另一個功能,而不是提高性能。但是在遊戲中,性能是一個功能,而且是一種突破。