3D marrio 製作人:鄭楊叡
實作環境 名稱 詳細規格 硬體 CPU Intel(R)Core(TM)i5-3210M 記憶體 8GB DDRIII RAM 圖形加速卡 名稱 詳細規格 硬體 CPU Intel(R)Core(TM)i5-3210M 記憶體 8GB DDRIII RAM 圖形加速卡 NVIDIA GeForce GT 630M 軟體 作業系統 Wingows7 家用進階版64位元作業系統 程式開發工具 Microsoft Windows Visual C ++ 2010 圖片修改軟體 Adobe Photoshop CS6
目標是做出一個類似小精靈這種概念的小遊戲, 主要的程式重點放在遊戲地圖,場景製作,還有 敵人自動追逐玩家方法。 motivation 目標是做出一個類似小精靈這種概念的小遊戲, 主要的程式重點放在遊戲地圖,場景製作,還有 敵人自動追逐玩家方法。
遊戲畫面 關卡1 關卡2
遊戲概要 內容以3D版的小精靈遊戲為主,其中使用了多種演 算法和BSP碰撞偵測技術,也實作了一般遊戲中所要 具備的條件,音效,材質。
MD2模型 在1997年,id software參與其中所製作的第一人稱射擊遊戲雷神之錘II(Quake II)。MD2為雷神之錘II所使用的一種模型格式。主要是讓模型如動畫般呈現出來, MD2動畫是透過與多個keyframe所構成, 對每個keyframe內插來創建一個平滑的 動畫。
更換MD2 skin blue marrio green marrio red marrio
bump map場景 在遊戲中,如果只是在牆壁上貼上一張PNG材質,這樣會顯得牆壁缺乏立體感, 遊戲的樂趣會大打折扣。為了解決這個問題,我們利用Bump mapping的方法來讓 牆壁的材質多了一份立體感,讓玩家在玩的同時也能有身歷其境的感覺。 Bump Mapping 又稱凹凸貼圖,其基本原理跟法向量貼圖非常類似,不同的地方 在於凹凸貼圖使用灰階的圖片來儲存物體表面的凹凸高度訊息。
利用OPENGL函式去背 anywheredoor = pngBind("Door.png", PNG_NOMIPMAP, PNG_ALPHA, NULL, GL_CLAMP, GL_LINEAR, GL_LINEAR); exitdoor = pngBind("exit2.png", PNG_NOMIPMAP, PNG_ALPHA, NULL, GL_CLAMP, GL_NEAREST, GL_NEAREST);
BSP碰撞偵測 BSP是binary space partition 的縮寫,也就是二元空間分割的意思。如果給一 條具有方向性的直線,那麼它就會把一個空間分為兩半,而在直線方向上的左邊 判斷為free,右邊則判斷為solid。若給了一組直線,則可以建立出一個BSP tree,利用BSP tree的特性,能夠很方便地做出一個在室內空間的碰撞偵測。
遊戲角色追逐演算法 Green Marrio 遊戲中的green marrio是三種marrio 裡,運作方式最簡單的一種。遊戲一開始,會 給green marrio一個隨機的方向,直到與牆壁或是障礙物發生碰撞後,會在代表牆 壁的兩個方向中,選一個與原方向夾角較小的方向繼續前進。 Blue Marrio 一開始blue marrio會朝著能抓到yoshi最短的路徑行進,也就是兩點間的所連成的 直線。假如行進途中與障礙物發生碰撞,會沿著能有效接近yoshi的方向前進,每當 前進一步,就會再判斷一次自己與yoshi之間的連線還有沒有障礙物。 Red Marrio 遊戲中的 red mario 使用了 A star 演算法來做為路徑搜尋的依據,他會在有障礙 物的情況下規畫出一條通往yoshi位置最有效率及最適當的路線。
遊戲角色追逐演算法(一) Green marrio
遊戲角色追逐演算法(二) Blue marrio
遊戲角色追逐演算法(三) Red marrio
A* 演算法介紹 A* (A-Star)演算法是在Game中通常用來 解決最短路徑(Shortest Path)問題的一 種演算法。
三種路徑搜尋法比較
小地圖呈現 黑色框框:玩家 紅點:Red Mario 綠點:green Mario 藍點:blue Mario 遊戲中玩家的生命值
過場動畫
聲音函式 #define music "mario_music.mp3“ void init_fmod () { FSOUND_Init(44100, 32, 0); samp = FSOUND_Sample_Load (FSOUND_UNMANAGED, music, FSOUND_LOOP_NORMAL, 0,0); channel1 = FSOUND_PlaySoundEx(FSOUND_FREE, samp, NULL, TRUE); FSOUND_Update(); }
遊戲實際操作動畫
結論 經由這學期的課堂OPENGL教學讓我了解到電腦3D動畫的有趣之 處,從中我學習到如何架設3D場景,也從坦克的公克中學到如 何控制視角,從一開始懵懵懂懂到經過幾次作業的磨練後,慢 慢的對OPENGL有基本的了解,也從功課中實做了一些成果,在 每次的功課中都有不少的收穫,例如:貼圖、模型載入,3D場 景,以上都是我從課堂以及功課上獲得的收穫。
參考資料 [1] A*演算法: http://blog.minstrel.idv.tw/2004/12/star- algorithm.html [2] Bump Mapping: https://cg2010studio.wordpress.com/2011/09/1 0/glsl-bump-map-2/