• 文章
  • 遊戲程式設計的藝術
2009 年 12 月 29 日(最後更新:2012 年 1 月 6 日)

遊戲程式設計的藝術

評分:3.5/5(228 票)
*****
注意:本文不教授遊戲程式設計技術。

開端

什麼是“遊戲程式設計”?嗯,遊戲通常是一種形式的輸入,由人提供,以產生輸出,從而實現某種目標,給人一種成就感。另一方面,程式設計是為 CPU 編寫指令以使其迴圈執行的活動。將這些術語放在一起,您就會得到:編寫指令以接收人的輸入、提供輸出並允許人實現某種目標的活動。

問題

我要討論的問題是關於那些過於熱情、希望投身遊戲程式設計的人。遊戲程式設計絕非易事。它需要時間和精力。僅僅帶著熱情而進入是不夠的。

假設

我認為這個問題是由慾望引起的無知造成的。這就像每年聖誕節都想要一匹小馬,但實際上,沒有真正的動力和渴望,這是不現實的。你之所以一直想要,是因為你不知道一匹小馬的價格。

解決方案

解決方案是告知您,並因此稍微嚇嚇您。我無意成為一個掃興的人或傷心的人。那不是我的意圖。程式設計是一件非常“現實”的事情。它沒有多少奇蹟或虛構。我記得一個關於一匹馬的腿被治癒並能神奇地再次比賽的故事。總的來說,程式設計中沒有這樣的故事,尤其是遊戲程式設計。所以,我需要對您誠實。

事實

雖然簡單的遊戲只需要基本的數學知識,但您仍然需要掌握一些三角學和碰撞數學。如果您想要比基本質量更高的東西,您還必須瞭解您將要使用的 API 的一些底層效果。

3D 圖形需要一定的物理學和高階碰撞數學才能實現基本功能。光照、矩陣運算以及其他各種事物的知識對於更進階的內容是必需的,而這僅僅是冰山一角。換句話說,您至少需要大學水平的物理學(這實際上並不複雜……)、一些微積分和大量的三角學。您需要理解 3D API 的底層性質,尤其是在 OpenGL(我推薦)中。例如,什麼是裁剪區域,向量的第四維是什麼意思,等等。

您還必須理解聲音的概念。如何緩衝和快取聲音,如何流式傳輸更大的聲音,以及如何在 3D 空間中處理聲音。您可能會使用一個庫來完成大部分高階混音工作(因為這很重複),並且聲音在概念上並不難理解。然而,尋找高質量的音效和音樂是一項非常艱鉅的任務。

在此之後,製作遊戲的本質確實很簡單。您必須在給定輸入的情況下為使用者提供輸出。這意味著您必須能夠正確地處理輸入。幸運的是,這並不難,但您仍然會看到不能正確處理輸入的や遊戲。您仍然需要考慮您將接收到的輸入的型別。使用者將使用操縱桿、鍵盤和滑鼠,還是遊戲手柄?如果使用者使用的是能夠提供力反饋的控制器,我應該啟用力反饋嗎?

您必須能夠處理執行緒。執行緒是提高效率的絕佳方式,但它們可能會變得複雜。它們很難追蹤 bug。

在那之後,如果一切都不是那麼完美,您就必須能夠找到問題。這些問題可能需要幾分鐘到幾天,有時甚至是幾周才能找到。程式設計就是耐心。

現在,讓我們看一個假設的例子。您想創造下一款熱門遊戲。您於 2008 年 1 月 1 日開始。考慮到大多數大型遊戲公司需要幾年時間才能開發出一款公眾通常認為平庸的遊戲,在相同的時間內,作為一個無償人員或團隊,並且沒有最好的工具,您認為自己會做得怎麼樣?

結論

面對現實吧。您不會創造下一款熱門遊戲。但是,您仍然可以計劃並開始製作一款尺寸適中的遊戲。但您必須知道,製作遊戲所需的時間和精力是巨大的。開始一個遊戲專案,只是因為它沒有耐心而放棄,是浪費時間。