天天看點

無程式設計經驗人員遊戲開發入門指南

我經常被問及:一個具有很少甚至沒有程式設計經驗的人要如何開始遊戲制作。直到目前為止,我總是盡我所能一個一個解答。然而,問題的數量已經增長到了一個難以處理的水準,于是,我便決定把所有的建議彙總在一篇文章裡作為參考提供給人們。

這篇文章主要面向那些想開發自己的遊戲,但僅有一點點或沒有半點程式設計經驗的人們。實際上,我也假定讀者根本沒有任何的程式設計知識。我将把重點放在遊戲開發的程式設計和設計方面,而不是藝術方面。我也不準備對遊戲行業進行論述(因為這個話題的資料太多了),但是,我會帶你浏覽一下在制作遊戲之前需要做的一些事情。該說明的一點是,不要将我這裡所介紹的方法當作唯一的或最好的學習遊戲制作的路徑,但對于我和其他人來說,它是有效的。

  1、選擇一門語言

第一件要做的事就是選擇一門語言。你有一大堆的選擇,包括 Basic、Pascal、C、C++、Java 等等,同樣也有一大堆關于哪門語言最适合初學者的争論。欲了解各種語言的優缺點,請參閱 John Hattan 的絕妙文章《我該使用什麼語言》。

我這裡建議使用 C 和 C++。有些人認為這些語言對于初學者來說太難了,但從我個人角度來說我是反對這個觀點的,因為我自己就是從 C++ 起步的。另外,C/C++ 是目前最廣泛應用的語言,是以,你能找到大量的資料和幫助。至于先學 C 還是先學 C++ 的問題不大,因為一旦你學習了其中一種,再學習另外一種就沒太大問題了。不過,如果你一開始就選擇 C++,請确信在學習面向對象程式設計之前,你已經了解并掌握了面向過程程式設計。(比如說,如果你在不使用類的前提下仍無法編好程式,先不要急于學習類)

如果你發現學習 C/C++ 是一件很困難的事,不要緊,回過頭選一門比較簡單的語言來學,比如 Basic 或 Pascal。不過我認為,如果你堅持下去,并找一些好的資料,學習 C/C++ 的問題不大。

你的下一個問題是:我如何學習 C/C++?我很高興你問這個問題。最好的方法是去聽課。有沒有老師幫助解答問題,對于你的發展影響巨大,而且程式設計作業将確定你确實掌握了所學的東西。

如果聽課不在你的考慮範圍内,下一個最好的辦法就是找一些好書。不要把注意力放在那些“大全”書上,因為你終究會買幾本。我建議你去一個本地書店,花點時間浏覽一下介紹 C 和 C++ 的書,直到找到你能了解并能從中學到東西的一本。同時,你可能還想買幾本進階書或是一本參考書,但一旦你具有了這門語言的部分知識,你會對你需要什麼有更好主意。可以在網站BOOKS頻道中找到一些建議。

在此,我簡要的說明一下我見過的很多入門程式員,尤其是年輕人關心的事情:沒有錢買書或其他東西。首先,有許多資源是免費的,包括圖書館和 Macmillan Computer Publishing (他們的網站www.mcp.com 上有數百本程式設計的書)。其次,如果你想成為一名優秀的程式員,你不得不考慮在這上面的投資。利用各種手段(合法的 ;<)去弄點鈔票來。

網絡上有大量的 C 和 C++ 的學習教程,但是我認為這些教程作為你學習書本的參考要比作為單獨的材料好得多。

2、選擇合适的編譯器

你寫的程式,或源碼是以文本檔案存儲的,你甚至可以用記事本來寫 C/C++ 程式。但是,必須有樣東西能把這些源碼轉化成一個可執行檔案。對于 C 和 C++ 來說,這樣東西就是一個編譯器。

現在有大量的編譯器存在,其中有許多是免費的。選擇一個合适的編譯器是非常重要的,而免費編譯器有個好處就是你能一個一個的試,看哪個你最喜歡。但是,免費編譯器經常是比商業編譯器功能少或缺少良好的技術支援。幸運的是,大多數商業編譯器都有與完整版功能相同,但價格便宜許多的介紹版或學習版,唯一的限制是,你不能釋出使用該編譯器開發的程式(這點你肯定維持不久)。

基本上,你選擇什麼樣的編譯器取決于你能花多少錢、你将在什麼作業系統和平台上開發程式。如果你準備為 Windows 作貢獻,我強烈建議使用微軟的 Visual C++。它具有一個功能強大的開發環境,能讓你倍感輕松,再也沒有其他編譯器能比它更适合開發 Windows 軟體了。如果你是名學生,你可以以極低的價格獲得一份拷貝。如果你準備在 DOS 下開發程式,你最好使用免費的 DJGPP。

3、選擇一個目标平台

雖然你可能最終會為各種平台開發程式,你還是應該選擇其中之一進行學習。當你學習語言的時候,在沒進入圖象程式設計之前,你大概想使用一個非 GUI 的作業系統,比如 DOS 或 UNIX。這有助于你将注意力集中在語言學習上,進而避開一些高層的問題,如 Windows 程式設計。

不過,一旦你準備開始制作遊戲,你就該考慮轉換你的

目标平台了。一下是幾個常用的平台:

Windows:如果你想在遊戲行業裡專職工作,或者你想讓一大群人玩你的遊戲,那麼 Windows 是你的首選。你的目标客戶大多數使用 Windows,且這個情況不會很快改變。目前大量的 Windows 遊戲使用一種你大概聽說過的名為 DirectX 的技術。DirectX 是一個允許你直接操作硬體的程式庫,你可以依靠它寫出高性能的遊戲來。

DOS:DOS 曾經是遊戲的主要平台,但這已是昨日黃花。雖然有些愛好者仍然在為 DOS 開發遊戲,但是已經沒有商業遊戲是為 DOS 開發的了,而且, DOS 正由于微軟停止對它的支援而走向衰敗。如果你剛開始做遊戲,别選擇 DOS,如果你已經這樣做了,不要再停留了。注意:因為有很多遊戲程式設計的書是為 DOS 寫的,學習這些書時可能會認為在 DOS 裡開發遊戲有理有據。但是,随着 Windows 遊戲程式設計書籍數量的增長,這種争論變得越來越少,也越來越沒有意義。

Linux:Linux 是 UNIX 的一個變種,由于它具有穩定、便宜、反微軟情節等多個因素,它正變得越來越受歡迎。雖然目前的 Linux 使用者還比較少,但是随着它的熱愛者和市場的潛在增長,它也成為了作為目标平台的可行選擇。

Macintosh:蘋果機擁有一群數量不多但非常忠誠的追随者,幾乎每個我見過的蘋果機愛好者都有一個強烈渴望更多蘋果機遊戲的願望。我沒有看過多少在蘋果機上開發遊戲的資料,但我确信确實有,是以,這也是個合理的選擇。

家庭遊戲機:遊戲機(如 Playstation、N64、Dreamcast 等等)遊戲市場非常巨大,前景可觀。然而,由于種種原因,開發非商業性的遊戲機遊戲在目前來說是不太可能的。你為遊戲機開發的遊戲大多都會被商業遊戲公司買走。

4、充足電

是讨論真正做遊戲的時候了。雖然我所說的大部分内容适用于其他語言,為簡單起見,我将假定你選擇了 C/C++ 來進行 Windows 程式設計。

首先,在你考慮如何開始做遊戲之前,你應該能很好的掌握 C 和 C++。你應該了解并精通指針、陣列、結構、函數,以及類等。做到了這一點,你就可以開始制作遊戲了。

本文無法教授你關于制作遊戲所該了解的一切。幸運的是,這也不是必要的。有很多關于這方面的書,網上也有數以百計的教程。GameDev.net 應該會有目前你所需要的一切。下面是我對你起步的一些建議:

學習一本或幾本書。對于 Windows 遊戲的初學程式員,《Tricks of the Windows Game Programming Gurus 》是一本極好的Windows程式設計入門教程。在這個站點裡擁有許多本站 Books section 裡所列出的好書。閱讀這些書籍,運作所有的例程,反複研讀你不了解的章節。

使用網上教程補充書本的不足。網上教程除了闡明一些你閱讀的東西外,通常也會包含一些書本上沒有涉及的主題。

找專家進行咨詢。如果你無法從書上或教程中找到答案,到本站的留言版或聊天室來,這裡有許多樂于提供幫助的人。

不要把上面幾點當成是個有序的過程,而應當看作是一個循環往複的并行過程。

僅僅是學習、思考是遠遠不夠的,你應當把你所學的東西付諸實踐。從一個簡單的遊戲開始,逐漸發展。你可以閱讀一下 Geoff Howland 的文章《How do I Make Games? A Path to Game Development》。

首先,為自己的工作制定一個計劃。不要急于加入一個團隊,因為那隻會減緩你的學習程序。當你囊中擁有數個遊戲時,你将為一個團隊作出更大貢獻。

關于書本,有件事我要提醒一下:你需要閱讀除了遊戲程式設計外的其他書籍。為了制作出你在商店貨價裡看到的各種遊戲,你将不得不鑽研那些比大多數遊戲程式設計書籍所授内容更高深的話題。有些可能你能從教程中找到,但是,你還是有必要買幾本關于圖形、人工智能、網絡、實體等等方面的書。這是獲得計算機科學學位的必經之路,因為你将被要求學習一些你認為與遊戲程式設計無關的課程,而實際上它們是相關的。

5、總結

這裡有一些能産生巨大差别的技巧:

要隻知道聚集知識,應用是關鍵。除非你使用了,否則你無法确實知道和了解這些東西。做一些小的測試程式來應用你所學的東西,并切實完成書上每個章節後的習題。

玩大量的遊戲。你會是以找到靈感,進而幫助你制作更優秀的遊戲。當然,這也是一種受歡迎的解除程式設計壓力的調劑方式。

幫助别人。在你幫助别人的過程中,你會學到更多東西。

完成你的作品。不要陷入這樣一種思想的圈套中:“我知道我可以完成這個遊戲,但是我有個更好的主意,我要換做這個好的項目。”如果你能堅持有始有終,你會學到更多的東西,并且你有作品證明你不僅僅是空談。在你具有豐富的經驗之前,做得簡單一點,不要嘗試制作一個又大又複雜的遊戲。

出發吧!你該動手制作 Quake 4 了。當然,可能不那麼容易,但至少你可以從這個方向出發,并且知道去哪裡查找更多的資訊。經過多年的努力工作,你會成功的! (作者:ant3000)