讀書筆記之《Visual C++遊戲開發技術與實例》(一)

        前天去陽江購書中心想買一些關於DirectX9相關的書,結果找遍整個書店也沒找到一本合適的。講遊戲開發的書倒是有幾本。去掉幾本大部分內容都在講遊戲本身的書後,我選擇了兩本書,一本就是現在正在讀的,書名看標題。另一本是Direct3D中的2D編程,不過是基於DX8.0的,而且很大篇幅都是講2D,其實也不錯,2D也是3D的基礎嘛。

        昨天看了《Visual C++遊戲開發技術與實例》(以後簡稱V書)的第一章,主要是講一些背景知識,例如遊戲開發的歷史和Windows編程。雖然以前也有看過遊戲發展史的相關資料,這次看又收穫不少,不過那些什麼歷史上第一個、最先什麼的東西和之前看過的不一樣,可能暫時也是沒什麼權威的統一信息吧,算了,反正現在不用太注意這個。

        算起來我也算是個遊戲老手了,小學一二年級的時候就接觸了街機,那時候玩遊戲機可是會被家長和老師批評的(我想現在也是吧),所以每次去遊戲機廳就像去做壞事一樣,提心吊膽的,老是擔心會被同學看見,那時的學生超聽話,看見同學去遊戲機廳大多數會向班主任報告,我的機友很少,就一兩個鄰居,屬於很調皮的那種,老爸常常以近墨者黑的道理教訓我,叫我不要和他們玩,可是遊戲機的吸引力太大了,只有口袋裏有一兩塊錢,大多數都會往遊戲機廳跑,想起來還真懷念街霸等街機啊(大多數名字都忘記了)。後來終於有了自己的家用遊戲機FC,也就是任天堂經典的紅白機。當時(93年)以爲是全世最新的遊戲機了,看了V書後才知道原來FC是83年產的,過了很多年纔在中國流行起來,不過也沒流行多久。我那臺FC很快就被小霸王學習機所取代了,最後我把FC以不到100塊的價錢賣給了同班同學(真應該保存下來,作個紀念多好啊)。嗯,從那以後過多兩三年我就開始接觸電腦了,從此與電腦遊戲結伴同行8年。

        還是說說書的內容吧,第一章後半部分簡單講了一些Windows編程的基礎知識,如消息機制,GDI,定時器,回調(CALLBACK)機制,多線程,動態鏈接庫,COM,聲音和MFC等知識。其實這些東西之前都懂一點點,但是不能說精通,因爲看了V書後,對這些東西的認識又更進一步。先說說消息機制吧,16位的機子只有一個消息隊列,所以整個系統的每一個消息都必須等待排在它之前的消息處理完後才能得到控制權,嗯,書上說這種操作系統叫協同式的多任務系統。進入32位後,即Windows98系統之後,每個程序有屬於自己的一個消息隊列,這樣對應於每個進程,可以定製自己的消息處理函數,所以在Windows98和之後的操作系統上,我們可以同時運行多個程序。嗯,書上說這種操作系統叫搶佔式的多任務系統。

        還大概知道了GetMessage和PeekMessage的區別。除非在隊列中有消息,否則GetMessage不會把控制權交回給程序。PeekMessage不同,它每隔一段時間就往消息隊列中Peek一下,如果有消息則返回TRUE,沒有則返回FALSE。在這裏要說一下游戲的兩個渲染時機,有些遊戲是在接收到WM_PAINT消息後渲染的,而有一些則是在隊列空閒的時候(即PeekMessage返回FALSE時)渲染的,不過我還不太清楚這兩種渲染時機的區別是什麼。

        GDI就不想多說了,好像也只是一些函數,知道如何創建和如何使用就行了。嗯,HDC似乎貫穿GDI的所有操作。

        最主要的收穫還是明白了定時器的作用。原來定時器的主要作用是發送WM_TIMER消息的。設置定時器的函數是SetTimer,停止它的函數是KillTimer。也可以將WM_TIMER消息發送給自己定義的消息處理函數。

        回調機制不說了。多線程也不多說了,主要是如何實現同步與互斥的問題。DLL也不說了。COM太複雜,也不說了。

        Windows中和聲音相關的API主要分兩類,一種是高層的,以waveIn和waveOut作前綴,一種是低屋的,以midiIn和midiOut做前綴。還有一些以mci做前綴的接口(MCI,Media Control Interface)。

        書上說MFC也可以開發遊戲,不過是面向小型遊戲的,開發大型遊戲是需要很多Windows API的,MFC對API的封裝使得它並不適合編寫一些底層的軟件。寫遊戲,還是從WinMain開始吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章