3D遊戲編程:遊戲代碼的整體結構是什麼樣子的?

2020-12-10 我是遊戲小胡

為了能讓作為初學者的你學明白3D遊戲編程,我花費了17節的內容來講了一些「廢話」,只是希望你不要忽略這些「廢話」。3D遊戲編程實在是太複雜了,如果可以的話,我還想說一些更深層次的內容。但是我不能這麼做,過深的東西講得太多了,很容易「勸退」的。也就是說,你能把前面17節的內容完全掌握了,你的3D遊戲編程基礎就有了,接下來再講解代碼,你就很容易明白了。

從這一節開始,我們將要把整個3D遊戲示例程序的代碼講解一遍。由於有Direct3D的幫忙,我的程序代碼只有1000來行,所以,即便你是初學者,也是可以學明白這些代碼的。

「學」的部分

你知道一個程式設計師最煩的事情是什麼嗎?不是問題找不到思路,也不是代碼寫不出來,而是「被迫」去看其他程式設計師寫的代碼!

為什麼呢?因為看不懂啊!原本,程式設計師可以通過自己的思路來處理某個問題,可「領導」偏偏要讓自己看其他人的代碼。一般來講,這些代碼都沒有什麼注釋,如果過了幾個月的話,寫這些代碼的程式設計師都會看不懂自己當時寫了啥。我們在看這些代碼的時候,首先要分析代碼做了什麼事情,然後還要揣測這個程式設計師的思路是什麼。最關鍵的一點是,某些程式設計師給變量取名字的時候太隨意了,我們光猜測這個變量代表什麼,就會花費相當長的時間。所以,程式設計師真的很不喜歡看其他程式設計師寫的代碼。

我深深明白這一點。別看我寫的代碼只有1000來行,而且注釋比較全面,但是,其他程式設計師看起來也是很費勁的一件事情。所以,當我準備把這些代碼給你講明白的時候,一定要找一個好方法,否則,你會越看越迷糊

為了找這個好方法,我真的思考了好久……

後來有一天,我和孩子一起玩積木的時候,突然就想到方法了!(其實,編程解決問題的時候,找到方法也是一瞬間的事情)方法其實很簡單——借鑑「搭積木」的思路。

我可以把整個3D遊戲程序代碼分塊,就好像變成了一塊、一塊的積木一樣。然後,我們先用這些「積木」拼接一個完整的程序,當你明白了整個的拼接過程後,我們再逐個積木來「解剖學習」,這樣的話,你就能完全掌握「其他人」寫的代碼了。

說得再具體一些就是兩步:

1.先了解整個代碼的結構,知道代碼由哪些部分組成;

2.然後,逐個分析每一個組成部分。

好了,既然有了方法,我們就開始吧!

在這一節,我們就先把整個代碼的結構熟悉一下,然後,用剩下的章節來說清楚每一個組成部分是什麼樣子的。

為了能讓你明白遊戲編程的思考過程,我就按照編程思路來說明整個代碼的結構吧,實際上非常簡單,只有下面3個方面。

相關焦點

  • 學習遊戲編程,我們都要做什麼?
    對於想學遊戲編程的朋友們,小編這裡推薦C++以及學習之後的流程:C++的學習不用非常深入,學習之後在數據結構上下點功夫,學到樹就可以了,樹和圖可以留到以後看,之前的鍊表堆棧隊列都看掉,爭取自己寫出來。然後學下SDL,這個包很容易學,看網上的教程幾天就學會了,然後接下來就是從最傻逼的遊戲開始寫。
  • 3D遊戲編程:初始化Direct3D的過程
    通過前面的課程,你已經對遊戲編程有了一個整體上的認識,就算不知道細節,但也足夠你出去「侃大山」了。從這一節內容開始,我們將要深入3D遊戲編程的細節。如果遊戲編程是一個複雜的機器,前面的課程已經幫你窺得全貌了,現在的你,只是機器中的原理和細節不太明白。
  • 編程遊戲開發:如何開發製作一款遊戲?你需要做哪些準備?
    首先,想出一個遊戲的主意。一旦你有一個簡單的想法,擴展它。 例如,如果它是一個棋盤遊戲,目標是什麼/你如何贏?規則會是什麼樣子?等等,如果你的遊戲中會有人物或故事,那就創造他們吧。確保你有一個相當明確的概念,你的遊戲將是什麼,當它結束。遊戲越複雜,你就越應該在一開始就計劃好,這樣你就不用在編碼的時候擔心遊戲本身了。
  • 教孩子寫遊戲:3D遊戲編程離不開矩陣,我們要如何理解矩陣?
    這麼說吧,如果你對矩陣一無所知,那麼,整個3D遊戲編程你是學不懂的。你可以靠著強大的記憶力把本課程的代碼記住,並且也能通過自己的摸索寫出類似的3D遊戲來,但是,你對其中的原理是不理解的,將來想要寫功能更強大的3D遊戲,就純粹是天方夜譚了。但是,擺在我面前的難題是:一個成年人想要學習矩陣都有點困難,如何讓小孩子也明白矩陣的一些道理呢?
  • Github霸榜:從零開始學3D著色器編程
    主要介紹了通過使用Panda3D遊戲引擎和OpenGL著色語言來為3D遊戲添加紋理,法線貼圖,泛光,環境遮擋等等。教程內容十分豐富,動圖也非常生動。Shader,是運行在GPU上的程序,中文稱為著色器。它的主要用途是對三維物體進行著色處理,對光與影進行計算,以及控制紋理顏色的呈現等,最終,將遊戲引擎中的幾何數據轉化為屏幕上的模型、場景以及特效。
  • Python遊戲編程
    Python遊戲編程課程目標本課程把遊戲開發實踐應用於python編程課程的教學之中,培養學生對編程的興趣
  • 如何製造一個簡單的2D遊戲?
    VS是用來寫代碼的,因為做一個遊戲肯定要通過寫腳本來實現各種炫酷的功能啦。Unity的腳本編輯語言可以選擇C#或者JS,這裡建議選擇C#(原因會在下文中解釋)。如果本身有一定的JAVA編程基礎的話是可以比較快上手C#的,因為二者在語法上有點像。到這裡,遊戲引擎的選擇和基本設置就完成了,我們可以進入下一個步驟——開發了。
  • 教孩子寫遊戲:計算機語言那麼多,為何3D遊戲編程偏愛C++語言?
    然後再說一說遊戲。在前面我們提過一句,說遊戲是非常複雜的編程。那麼,遊戲到底複雜在哪裡呢?我們這個課程要寫一個3D的遊戲示例小程序,那就以3D遊戲來說明一下。(1)我們的電腦屏幕只是2D的,我們並不能直接在屏幕上展現3D的內容,所以,首先我們要創建一個虛擬的3D世界。
  • 少兒遊戲編程:孩子學習遊戲編程有哪些好處?
    而且我發現,從小學習計算機編程好處非常多,不僅能提高思維能力,提高專注力,還能有效避免沉迷遊戲。那麼,一個小孩或者說是少年,學習遊戲編程具體有哪些好處呢?一、不容易沉迷遊戲不是說學習了遊戲編程之後就不會沉迷遊戲,而是沉迷遊戲的概率會降低。
  • 教孩子寫遊戲:我們將要編寫的這個3D遊戲程序什麼樣?
    如果說,這是一套教你寫一個2D遊戲的教程,那麼這一章就是多餘的。可我們學的是3D遊戲編程,提前知道最終的遊戲會寫成什麼樣子,對你接下來的學習過程是有很大幫助的。通過上一節的內容,我們已經知道,3D遊戲的編寫過程,就是模擬「拍電影」的過程,只不過,一切需要的「道具」都需要程式設計師自己去「虛擬化」。
  • 玩遊戲學編程:8個能夠快速提高編程水平的小遊戲
    練習是最好的,這將有助於你學習一種新的程式語言或圖書館。而這正是許多人經常遇到的障礙:擁有大量的學習材料,但嚴重缺乏使用該理論的個人經驗。計算機理論道路上的另一個障礙——你被它和你的動機淹沒了。沒有練習,你就不會看到學習曲線上的結果。這些問題有一個解決方案,它適用於學習如何編寫代碼或提高您對特定語言的知識。編程遊戲!今天我們將列出一份最佳編程遊戲的列表。1.
  • 3D遊戲編程:Direct3D幫我們做了哪些事情?
    尤其是會寫3D遊戲的老程式設計師,目光是非常高的,他們甚至會看不起DirectX!DirectX的技術中,讓所有程式設計師都佩服的地方有兩個:其一,就是COM技術;其二,是DirectX虛擬了所有的硬體,讓遊戲編程不再考慮繁瑣的硬體控制。
  • Scratch克隆應用編程之射擊遊戲
    (2)互斥信號變量」gv正在重裝子彈「的作用希望大家好好體會一下,因為在重裝子彈中有些事情是不允許發生的(例如本遊戲中的發射子彈)。有關代碼邏輯實現,相信不用解釋了,比較易於理解。(三)彈殼角色編程大家把握如下幾點,便不難理解上面代碼了:(1)為了模擬子彈發射後子彈殼崩出的效果,有兩個方向的加速度(X方向與Y方向)。但是,在Scratch內部,每次循環相應於過了一個單位時間,所以這個加速度正好對應於兩個方向的速度的變化量。這一點希望一定理解;否則,再開發稍微複雜的物理遊戲就更麻煩了。
  • 遊戲引擎是什麼?它與遊戲和程式語言是什麼關係? - 麥大麥
    先給出遊戲引擎的定義把:遊戲引擎是指一些已編寫好的可編輯電腦遊戲系統或者一些互交式實時圖像應用程式的核心組件。這些系統為遊戲設計者提供各種編寫遊戲所需的各種工具,其目的在於讓遊戲設計者能容易和快速地做出遊戲程序而不用由零開始。
  • 打完這個免費遊戲就能獨立開發app了!從幼兒園到成人都適合的編程遊戲精選
    在這個遊戲中,我們要用Pocky做編程用的代碼,很酷吧。任務很簡單,就是幫助這隻大胖雞(我覺得像這個)走到哭泣小女孩那裡去擁抱她。對於低年齡的小朋友來說,這是無法抗拒的任務。當然,回到今天的主題上來,這款遊戲的玩法也是通過編程,遊戲的形式是闖關。它最大的特色在哪裡呢?隨著遊戲的進行,玩家會不斷的得到不同的機器人,這些機器人技能、視野範圍、攻擊手段、移動方式都會有所不同。
  • Scratch青少年編程教程(三)~走迷宮遊戲
    01-目標在本課程中,將通過Scratch編程學習編程中最基本的邏輯結構:順序編程。
  • 教孩子寫遊戲:3D遊戲編程的必備數學知識,理解三維空間向量
    那麼,不學可不可以寫出3D遊戲來呢?其實是可以的。市面上有太多的3D遊戲引擎了,這些3D引擎把遊戲編程中比較複雜的工作都幫我們做了,只是把一些比較簡單的工作留給了我們。這樣的話,只需要點幾下滑鼠,添加一些遊戲素材,像本課程這樣的3D遊戲示例一下子就能生成很多個。但是,真的用遊戲引擎的話,不管是新手還是孩子,一點有用的東西都學不到。
  • 使用Unity和HTML5開發移動遊戲的優缺點
    Unity由Unity Technologies開發的一個讓玩家輕鬆創建諸如三維視頻遊戲、建築可視化、實時三維動畫等類型互動內容的多平臺的綜合型遊戲開發工具,是一個全面整合的專業遊戲引擎。HTML5HTML5與JavaScript結合開發,利用h5畫布可以模擬現實物體運動,現在我們常見在小遊戲畫面,不管是2d遊戲還是3d遊戲,H都是開發的得心應手。
  • TGDC|一個遊戲程式設計師的堅持——論向量化編程
    2020年12月7日,由騰訊遊戲學院舉辦的第四屆騰訊遊戲開發者大會(Tencent Game Developers Conference,簡稱TGDC)於線上舉行。來自重慶帕斯亞科技的CTO謝怡欣先生,分享了他對於向量化編程的一些看法。
  • 【譯文分享】HTML5實現多人實時3D遊戲
    原文:http://blog.artillery.com/2012/05/realtime-multiplayer-3d-gaming-html5