教孩子寫遊戲:我們將要編寫的這個3D遊戲程序什麼樣?

2020-12-17 我是遊戲小胡

「學」的部分

你可能會說,這是一個多餘的章節,是不是湊字數的?如果你真的這麼想,說明你的思維方式是比較淺顯的,看問題是不夠透徹的。

如果說,這是一套教你寫一個2D遊戲的教程,那麼這一章就是多餘的。可我們學的是3D遊戲編程,提前知道最終的遊戲會寫成什麼樣子,對你接下來的學習過程是有很大幫助的。

通過上一節的內容,我們已經知道,3D遊戲的編寫過程,就是模擬「拍電影」的過程,只不過,一切需要的「道具」都需要程式設計師自己去「虛擬化」。3D遊戲編寫是一個非常非常龐大的獨立學科,一頭扎進去,幾十年都很難學精通。一個程式設計師,能夠獨立寫出類似CS這樣能聯網的3D遊戲已經非常厲害了。所有的遊戲程式設計師,都是在一次次地摸索過程中成長起來的。

然而,這個教程的目的是讓一個沒有什麼基礎的人入門3D遊戲編程,這個人,很有可能還是個十幾歲的孩子。所以,我在考慮這個3D遊戲示例的時候,還是蠻糾結的:設置得太簡單,教不了太多的東西;設置得太難,就可能講不明白很多細節。

我編寫這個3D示例程序,大約花費了半個月的時間,有增加內容的時候,也有刪除內容的時候,最終,這個還算滿意的示例程序就寫出來了。

說起來,這個3D示例不是很複雜,大約是如下這個樣子:

1.建造一個封閉的立方體房間,沒有門,有地板和天花板;

2.房間中有正常的重力,牆壁、地板、天花板都是硬的,可以反彈任何有彈性的物體;

3.由於房間密閉,所以,我在房間內添加了燈光;

4.為了讓房間看起來像一個房間,牆壁、地板、天花板都用了不同的貼圖;

5.光看房間沒什麼意思,我在房間內添加了一個發射系統,發射器就位於攝像機的位置上,只要玩家操控,就能發射比較重的彈球;

6.既然是彈球就會有彈性,我們要模擬彈球的物體碰撞過程,並展現出來;

7.彈球不僅會和房間邊界發生碰撞,彈球與彈球之間也會發生碰撞,這是一個有點複雜的物理問題了;

8.攝像機不能固定,要能移動和旋轉,否則會看不到彈球的運動效果;

9.遊戲一般都有聲音,所以,我給這個3D示例添加了彈球碰撞的聲音。

我們可以把這個3D示例看成是「彈球模擬系統」,如果你有興趣,在學完整個課程之後,可以試著改造這個遊戲程序,比方說,玩家可以通過改變參數,用來模擬各種不同屬性的彈球。這些彈球可以是足球啊、桌球啊、鉛球啊等等,只不過參數的設定需要大量的時間來試驗。

「習」的部分

我的建議是,首先你要自己學會整個課程,然後才能和孩子一起學習。如果孩子年齡挺大了,而且悟性不錯,你才可以讓孩子自己學。當你學會了整個課程後,就可以把這個3D示例編譯出來,當著孩子的面演示一下最終效果,可以激發孩子的學習興趣。如果你不想編譯程序,可以回過頭去第一節課看看,第一節內容的末尾有介紹,如何獲得這個3D示例程序的運行版本。

相關焦點

  • 教孩子寫遊戲:在Windows下寫3D遊戲,為什麼需要DirectX?
    而且,這個課程是為了激發小孩子的興趣,你不學紮實一點,如何引導小孩?有了框架之後,我們就可以把遊戲內容寫在窗口之中了。那麼,接下來,我們要直接開始寫遊戲核心內容嗎?我想,你的答案和我一樣:不是的。因為我們要寫一個3D的小遊戲示例,即便這個示例再簡單,也包含了巨量的知識點,在你不了解這些知識點之前,你面對3D遊戲的核心代碼就和看天書差不多。所以,在開始寫這個3D遊戲示例之前,我們需要用好幾節課的篇幅把這些必須要知道的知識點講清楚了。這一節作為重要知識點的入門,我設置的比較簡單,只需要懂得一點:為什麼要用DirectX來寫遊戲?
  • 教孩子寫遊戲:3D遊戲編程離不開矩陣,我們要如何理解矩陣?
    雖然說,我們不需要對矩陣有非常深入的理解,但是,這並不代表著我們可以不學矩陣。這麼說吧,如果你對矩陣一無所知,那麼,整個3D遊戲編程你是學不懂的。你可以靠著強大的記憶力把本課程的代碼記住,並且也能通過自己的摸索寫出類似的3D遊戲來,但是,你對其中的原理是不理解的,將來想要寫功能更強大的3D遊戲,就純粹是天方夜譚了。
  • 教孩子寫遊戲:稍微深入了解一下DirectX
    遊戲編程和其他編程不同的地方在於,遊戲編程對程式設計師的要求更高。說一句不太好聽的話:一般的編程都有例子可以「抄」。我相信,很多人都在網上看過類似這樣的段子:A:最近好累,寫程序寫得頭大!B:累?寫程序不都是複製粘貼嗎?
  • 教孩子寫遊戲:計算機語言那麼多,為何3D遊戲編程偏愛C++語言?
    我們可以發現,這個問題解決的過程,就和寫一本書類似:剛開始構思大綱,然後通過文字的方式表達出來。而上面的過程,開始是分解問題,然後是通過計算機語言把問題的解決方法寫出來。寫書的時候我們用的是「編寫」兩個字,所以,寫程序的時候我們也用「編寫」這兩個字。
  • 3D遊戲編程:遊戲代碼的整體結構是什麼樣子的?
    也就是說,你能把前面17節的內容完全掌握了,你的3D遊戲編程基礎就有了,接下來再講解代碼,你就很容易明白了。從這一節開始,我們將要把整個3D遊戲示例程序的代碼講解一遍。由於有Direct3D的幫忙,我的程序代碼只有1000來行,所以,即便你是初學者,也是可以學明白這些代碼的。
  • 教孩子寫遊戲:如何通俗地讓孩子明白遊戲在電腦上的運行過程?
    理解透徹的意思,不僅僅是要懂得普通程序的運行過程,而且還要懂得這些運算過程是如何變成計算機加法的,甚至還要懂得CPU的電流結構。我想,絕大部分人就算花一輩子的時間也難全面了解。但是,我們要寫程序,一定要懂得程序的運行過程,否則寫程序的時候容易一頭霧水。所以,我把遊戲程序的運行過程分解成了如下的幾個知識點,這樣的話,你給孩子轉述的時候也會方便許多。
  • 通過編寫一個簡單的遊戲學習 C 語言|Linux 中國
    下面是如何用 C 語言來編寫它。 我在小學時就開始自學編程。我的第一個程序是在 Apple II 上編寫的,但最終,我還是通過看書和編程練習學會了 C 語言。練習編程的最佳方法是編寫示例程序,它能幫助你練習新知識。 在我學習一種新的程式語言時,我喜歡編寫一個簡單的「猜數字」遊戲來練習。
  • 這款遊戲讓娃娃也能寫程序
    這款遊戲讓娃娃也能寫程序   一個五歲的孩子會編程?肯定又是別人家的天才孩子。其實是Osmo這款編碼遊戲,它打破大部分人認為「編程好難」的固有印象,讓小孩子輕鬆學會編程。 這款遊戲讓娃娃也能寫程序   在一次有形互動設計研究項目中,美國西北大學(NorthwesternUniversity)的ArielZekelman和FelixHu發現編程只是一種思考和解決問題的方式,並不是人們想像的那麼難。   據報導,Osmo遊戲包括一批實體積木和一個iPad用的App及鏡頭附件。
  • 3D遊戲編程:初始化Direct3D的過程
    通過前面的課程,你已經對遊戲編程有了一個整體上的認識,就算不知道細節,但也足夠你出去「侃大山」了。從這一節內容開始,我們將要深入3D遊戲編程的細節。如果遊戲編程是一個複雜的機器,前面的課程已經幫你窺得全貌了,現在的你,只是機器中的原理和細節不太明白。
  • 少兒遊戲編程:孩子學習遊戲編程有哪些好處?
    有一個非常古老的辦法,就是另外找一個刺激點,把孩子的興趣從手機遊戲上吸引過來。如果這個新的刺激點是學習某項內容,豈不是很完美?我個人的建議是,把孩子的興趣從玩遊戲轉移到製作遊戲上,也就是說,我們通過教孩子如何編寫電腦遊戲,來轉移孩子的注意力。
  • 編寫外掛程序出售被判刑,玩遊戲用外掛也是違法的.
    小斌上學時就喜歡玩網路遊戲,一次遊戲中無意聽說有一款「外掛」很受歡迎,具有自動打怪、自動療傷等功能,不需要自己操作就能升級,許多玩家用了這款外掛,既不影響正常的工作生活,又能打怪升級。好奇的小斌也跟著大夥使用了這款外掛,計算機專業科班出身的他沒用幾次就看出這些外掛程序並不複雜,自己完全有能力寫出更好的外掛程序,外掛程序價格不低,寫外掛出售完全能大賺一筆。
  • 教孩子寫遊戲:手寫一個最最簡單的Windows程序框架
    你不用把這個集成工作環境想像地那麼難,覺得編程很高大上,然後覺得這個軟體也很高大上。如果這樣想的話,你就很難教好孩子了。編程的高難度時代已經過去,各種各樣的底層技術難題已經被我們的前輩們解決,而且很好地封裝到了各種各樣的函數中,我們只要懂得如何去使用就可以了。這一節課,我們就用這個集成工作環境寫一個Windows程序的框架。
  • 遊戲引擎是什麼?它與遊戲和程式語言是什麼關係? - 麥大麥
    先給出遊戲引擎的定義把:遊戲引擎是指一些已編寫好的可編輯電腦遊戲系統或者一些互交式實時圖像應用程式的核心組件。這些系統為遊戲設計者提供各種編寫遊戲所需的各種工具,其目的在於讓遊戲設計者能容易和快速地做出遊戲程序而不用由零開始。
  • 編寫程序有多難?
    看題解看程序與獨立思考編寫程序,兩者距離有多遠?       這是我們老師經常要關心的問題!如何訓練孩子才能達到獨立思考並編寫程序。       現在各種線上線下編程培訓,家長要關心孩子是否學有所成?關注的一個非常重要的點就是孩子是否能獨立思考並編寫程序!
  • 教孩子寫遊戲:3D遊戲編程的必備數學知識,理解三維空間向量
    因為我們要寫的是3D遊戲程序,所以,我們必須要接觸兩個數學方面的難點知識——向量和矩陣。有的人問:這個這麼難,我們可不可以不學?我的答案是這樣的:如果你是有心要學習本課程,那麼這個是必須要學習的,是沒有道理可講的,是想破了腦袋也要學明白的。
  • 編寫一個簡單的遊戲來學習 Python | Linux 中國
    在這個系列中,我們要用不同的程式語言編寫相同的應用,以比較各種語言是如何工作的,並說明使用標準測試程序是學習新編程好方法。  當你學習一門新的程式語言時,關注它們的共同點是件好事。變量、表達式和語句是大多數程式語言的基礎。一旦你理解了這些概念,你就可以開始弄清楚其餘的東西。
  • 教孩子寫遊戲:矩陣在3D遊戲編程中是如何被使用的?
    好了,大致了解了前因後果之後,我們來看一看矩陣在3D遊戲編程中到底怎麼用吧。一、虛擬3D中的3D物體需要有哪些操作?我們再簡單複習一下遊戲中的3D世界。第一步,我們要在一個虛擬的3D坐標系中構建3D世界;第二步,我們把各種各樣的3D物體加入到這個虛擬世界中;第三步,就是用虛擬攝像機把虛擬場景拍攝下來。這個過程中,第二步是處理3D物體的過程,現在,我們稍微深入了解一下。假設,我們要在3D世界中加入一輛小汽車,並讓小汽車停在預定的停車位中。我們要如何解決這個問題呢?
  • 教孩子寫遊戲:遊戲編程,「學」是一部分,關鍵在於「習」
    除非是超級天才,否則沒有哪一個程式設計師能夠不靠前人的基礎編程成果來寫程序。所以,想要讓寫程序從體力勞動變成腦力勞動,必須有異常紮實的基本功。也就是說,光有心學習編程是不夠的,可能你看上十幾遍教科書都無法完全學會一段代碼的意義。比方說編程中有一個「函數」的概念,這個概念光靠看書是無法理解的,必須在電腦上手動敲好幾個小時的代碼,才能真正理解它的作用。
  • 跟著一起寫一個多人在線遊戲(一)
    編程派微信號:codingpy之前 PythonTG 翻譯組分享過一篇 Pygame 的入門教程,教的是單機遊戲開發。今天和大家分享如何編寫一個多人在線遊戲,此教程共分為三部分,今天是第一篇,為大致概述。有興趣的朋友請繼續關注後續文章。本文作者為 Kyrylo Subbotin,是一家 IT 諮詢公司的 Python 工程師。
  • 使用Python編寫數獨遊戲自動出題程序
    數獨是一個很好玩的遊戲,可以鍛鍊推理能力。下面的代碼可以自動生成數獨遊戲題目。