游戲制作入門指南

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

目 錄

  1 選擇一門語言

  2 選擇合適的編譯器

  3 選擇一個目標平臺

  4 充足電

  5 總結

  原 文:Game Programming Beginners Guide

  譯 者:Sunlxy

  版 本:the first edition(Ver 1.0)

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

  I often get asked how someone with little or no programming experience can get started in game development. Up until now, I have always tried to help them along as much as I can on a one-to-one basis. However, because the number of questions has grown to an almost unmanageable level lately, I decided it is time for me to put all my advice in an article to serve as a general resource.

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

  This article is intended for people who want to make their own games, but who have little or no programming experience. In fact, I'm going to assume the reader has no programming knowledge at all. I will focus mainly on the programming and design aspects of game development, and not the artistic side. I am not going to cover actually getting into the industry (because there are already ample resources for that) but I will walk you through the things you need to do to get to the point that you can make your own games. Finally, the path I lay out here should not be looked at as the only ?or even the best ?route to learning how to make games, but it has worked well for me and for other people.

1、選擇一門語言(Choosing a Language)

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

  The first thing you will need to do is to choose a language to program in. You have a lot of choices, including Basic, Pascal, C, C++, Java, etc., and there is a great deal of debate over which language is best for beginners. For a discussion of a number of popular languages, see John Hattan's excellent article, What Language Do I Use? 

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

  I'm going to recommend starting with C and C++. Some people will say that those languages are too advanced for beginners, but because I started with C++ myself, I tend to disagree. In addition, C/C++ is the most widely used language today, so you will be able to find a wealth of resources and help. It does not really matter whether you learn C or C++ first, because once you learn one, learning the other will be a trivial matter. However, if you choose to learn C++ first, make sure you understand and can use procedural programming before learning object-oriented programming (i.e. hold off on learning about classes until you can program well without them).

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

  If you start with C/C++ and it turns out to be too difficult, there is nothing wrong with going back and learning a simpler language, such as Basic or Pascal. But I really think that if you stick with it and find the right resources, you should have no problem with C/C++.

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

  Your next question should be, "How do I learn C/C++?" I'm glad you asked. The best way is to take a class. Having an instructor and TAs available to answer questions and help you along makes a huge difference, and the programming assignments will ensure that you actually apply what you are learning.

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

  If taking a class is not an option for you, the next best thing is to get some good books. Don't stress too much about picking the "perfect book", because you are probably going to buy several eventually. I'd suggest going to a local bookstore and spending some time browsing the introductory C and C++ books until you find one that you understand and think you can learn from. In time, you will want to pick up some more advanced books, and probably a reference, but once you have some knowledge of the language, you will have a better idea of what you need. See our books sectionfor some suggestions.

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

  At this point, I want to take a moment and address something that I have seen as a concern for a lot of beginning programmers, especially younger ones: not having money to buy books and other things. First, there are free resources available, including your local library, and Macmillan Computer Publishing, which has hundreds of programming books online at http://www.mcp.com/personal. But second, if you really want to become a good programmer, you have to plan on making an investment in it. Use whatever (legal ;<) means you have to come up with some cash.

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

  There are also a number of tutorials available on the web for learning C and C++, but I have found that tutorials are better for supplementing what you learn in books than for being a stand-alone resource.

2、選擇合適的編譯器(Picking the Right Compiler)

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

  The programs you write, or source code, is stored as a text file, and you can even use Notepad to write a C/C++ program. But something needs to take that source code and convert it into an executable file. In the case of C and C++, that something is a compiler.

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

  There are a large number of compilers available, including many free ones. It is important to choose a compiler that you are comfortable with, and the free ones have the advantage that you can try them all out and see which one you like best. However, free compilers are often not as full-featured or well-supported as commercial ones. Fortunately, most commercial compilers come in introductory or academic versions, which cost much less and usually have the same features as the full version, with the only restriction being that you cannot distribute programs you create using it (which you are not going to be doing for a while anyway).

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

  Ultimately, the compiler you choose will depend on how much you can spend and which operating system and platform you will be developing for. If you are going to be developing for Windows, I strongly suggest using Microsoft Visual C++. It has a powerful development environment that will make a lot of things easier for you, and there is no question that no other compiler is more well-suited to developing Windows applications. If you are a student, you can obtain a copy for a significantly reduced price. If you are going to program in DOS, your best bet is probably DJGPP, which is free.

3、選擇一個目標平臺(Choosing a Target Platform)

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

  Although you will probably develop for a number of platforms eventually, you are going to need to pick one to learn in. While you are learning the language, and before you get into any programming involving graphics, you will probably want to use a non-GUI operating system, such as DOS or UNIX. These will avoid the overhead involved with, for example, Windows programming, and let you just focus on learning the language.

  不過,一旦你準備開始制作游戲,你就該考慮轉換你的目標平臺了。一下是幾個常用的平臺:

  Once you are ready to start making games, though, you should consider changing your target platform. Let's look at the more prominent options.

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

  Windows: If you want to eventually work professionally in the games industry, or if you just want a lot of people to be able to play your game, then this is the platform you want to choose. The majority of your target audience uses Windows, and I don't see that changing any time soon. The vast majority of games today are made for Windows using a technology you have probably heard of called DirectX. DirectX is a library that allows you to access the hardware directly, which means you can write high-performance games.

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

  DOS: DOS used to be the dominant platform for games, but those days are gone. Although some hobbyists are still making games for DOS, no commercial games are being made for DOS, and it will continue to decline as Microsoft stops supporting it. If you are just starting to make games, don't choose DOS, or if you do, don't stay with it for long. Note: because there are a large number of game programming books written specifically for DOS, there may be some justification to developing games in DOS while learning from these books. However, as the number of books for game programming in Windows grows, this argument becomes less and less valid.

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

  Linux: Linux is a UNIX variant that has become popular lately for a number of reasons, including stability, price, and anti-Microsoft sentiment. Although the number of Linux users is still relatively small, the enthusiasm surrounding it and the potential growth of the market make it an viable choice as a target platform.

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

  Macintosh: The Mac has a very loyal following in numbers that are not insignificant, and nearly every Mac enthusiast I have talked to has expressed a desire for more and better games for the Macintosh. I have not seen as many resources for making games for the Mac, but I am sure they are out there, so this may be a valid option too.

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

  Consoles: The console (i.e. Playstation, N64, Dreamcast, etc.) game market is huge, and there is certainly a future in console game development. However, developing console games in a non-commercial setting is not really plausible at this time, for a number of reasons. If you develop for consoles, it will probably be while employed by a commercial game studio.

4、充足電(On to the Good Stuff)

  是討論真正做游戲的時候了。雖然我所說的大部分內容適用于其他語言,為簡單起見,我將假定你選擇了C/C++來進行Windows編程。

  Now it's time to discuss actually making games. For simplicity, I'm going to assume that you have chosen to program in C/C++ for Windows, although most of what I say will apply if you chose otherwise.

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

  First of all, before you even think about starting to make games, you should have a good command of C and C++. You should understand pointers, arrays, structures, functions, and probably classes, and you should be proficient in using them. If so, you are ready to start making games.

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

  This article can't possibly teach you everything you need to know about making games. Fortunately, it doesn't have to. There are many books on the subject, and hundreds of tutorials on the web. GameDev.net should have everything you need right here. Here's how I suggest you start:

學習一本或幾本書。

對于 Windows 游戲的初學程序員,《Windows游戲編程大師技巧》是一本極好的Windows編程入門教程。在這個站點里擁有許多本站“Books Section”里所列出的好書。閱讀這些書籍,運行所有的例程,反復研讀你不理解的章節。

Get one or more books. For beginning game programmers in Windows, Tricks of the Windows Game Programming Gurus is the perfect place to start. Besides that, there are a number of other good books in our Books section. Read through the books, trying all the examples, and rereading parts you don't understand.

使用網上教程補充書本的不足。

書本除了闡明一些你閱讀的東西外,通常也會包含一些書本上沒有涉及的主題。

Supplement what you read with online tutorials. Besides clarifying things you read, they also cover topics not covered in books.

找專家進行咨詢。

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

Ask the experts for help. If you cannot find answers to your questions in books or tutorials, take advantage of our message board and chat room. There are a lot of people out there willing to help out.  不要把上面幾點當成是個有序的過程,而應當看作是一個循環往復的并行過程。僅僅是學習、思考是遠遠不夠的,你應當把你所學的東西付諸實踐。從一個簡單的游戲開始,逐步發展。你可以閱讀一下 Geoff Howland的文章《How do I Make Games? A Path to Game Development》。

  This should not be looked at as a sequential process, but as a silmultaneous process that is repeated continually.It is not enough to just learn, though, you must apply what you learn. Start off with a simple game, and work up from there. See Geoff Howland's article, How do I Make Games? A Path to Game Development.

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

  At first, plan on working on your own. Don't rush to join a team, because it will only slow down the learning process. Once you have several games under your belt, you can make a much larger contribution to a team anyway.

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

  One thing I'd like to mention about books: You will need to read more than just game programming books. To be able to create the kinds of games you see on store shelves, you are going to have to delve into topics more advanced than those covered in most game programming books. Some of what you need can be found in tutorials, but you are also going to need to pick up some books on graphics, artificial intelligence, networking, physics, and so on. This is where pursuing a degree in Computer Science comes in handy, because you will be required to take classes that you may think don't apply to game programming, but they do.

5、總結(Wrapping Up)

  這里有一些能產生巨大差別的技巧:

  Here's a few more tips that can make a huge difference:

要只知道聚集知識,應用是關鍵。

除非你使用了,否則你無法確實知道和理解這些東西。做一些小的測試程序來應用你所學的東西,并切實完成書上每個章節后的習題。

Don't just accumulate knowledge, apply it. You will never really know or understand something until you use it. Make little demo programs that use the things you are learning. Actually do the exercises at the end of the chapters in the books.

玩大量的游戲。

你會因此找到靈感,從而幫助你制作更優秀的游戲。當然,這也是一種受歡迎的解除編程壓力的調劑方式。

Play a lot of games. Doing so will give you ideas and help you make better games. It will also provide a welcome relief from programming.

幫助別人。

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

Help others. You will get to the point where you can help others out, and you will learn more yourself through the teaching process.

完成你的作品。

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

Finish what you start. Don't fall into the trap of thinking "I know I can finish this game, but I have an idea for a better one, so I'll move on to it instead." You will learn so much more if you finish the games you start, and you will have something to prove that you are not all talk. To make this a little easier, don't try to make really big or complex games until you are more experienced.

  出發吧。你該動手制作Quake 4了。當然,可能不那么容易,但至少你可以從這個方向出發,并且知道去哪里查找更多的信息。經過多年的努力工作,你會成功的。

  There you go! You should now be well on your way to making Quake 4. Well, not quite, but at least you can start on that path and know where to look for more information, and with years of hard work, it can happen.

  作者簡介

  Dave Astle從1984年開始制作電腦游戲。白天他在ROI Systems公司任軟件工程師,晚上他領導Myopic Rhino游戲開發小組。有時他也抽空來幫幫GameDev.net,使其成為同行中的佼佼者。有時間他也需要休息了。 


Dave Astle 2011-02-22 02:32:33

[新一篇] 游戲產業中的獨行者

[舊一篇] 蓋茨:首席設計師一年吐真言
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表