3D PACMAN! Student: Chia-Wei Yao ID:601415129 Computational Photography: Applied Graphics and Imaging Final Project 2013/01/15
Outline Introduction Implementation Operation Demo References
Introduction(1/2) Final Project: 目標為實作出令人懷念的《小精靈》(Pac-Man)的小遊戲。 並使用OpenGL修改成3D版本,再利用SDL(Simple Direct-Media Layer) API加入音效等功能。 What is “Pacman”: 小精靈(Pac-Man)是電子遊戲歷史上的經典街機遊戲,由Namco公司設計並由Midway Games在1980年發行。遊戲的目的就是控制遊戲的主角小精靈吃掉藏在迷宮內所有的豆子,並且不能被鬼魂抓到。迷宮的四個角落有大的閃爍點稱為大力丸,提供小精靈一小段時間,可以反過來吃掉鬼魂。鬼魂在這段時間內會變成深藍色並到處逃逸。當鬼魂被吃掉時會飛回原點,並再生而回復正常的顏色。 (from Wiki)
Introduction(2/2) 上圖為Google紀念活動,為紀念遊戲誕生30周年,Google標誌改為遊戲圖片,可進行線上遊戲。遊戲原本只放在傳統首頁48小時[3]。因為頗受好評,因此Google將當時的首頁改為永久版本。
Outline Introduction Implementation Operation Demo References
Implementation(1/5) Tools: Libraries: 1. OpenGL(Open Graphics Library):For Drawing. 2. GLUT 3.7 (OpenGL Utility Toolkit):Create Window. 3. GLUI 2.1 (OpenGL User Interface Toolkit): GUI. 4. SDL 1.2.15 (Simple Direct Media Layer):Audio Handling. 5. SDL-mixer:An audio mixer library based on SDL library. IDE: Microsoft Visual Studio 2008 SP1.
Implementation(2/5) 場景建立: 1.利用讀取txt檔,即可明確建立牆壁與玩家、敵人等配置,並且可隨時變更設計。如圖所示:
Implementation(3/5) 場景建立(cont.): 2. 背景材質: 使用TGA format 作為牆壁的材質圖檔格式,並非一般常見之Jpeg或bmp,最主要TGA有Alpha Channel在texture mapping方面表現較佳。 3. 建立牆壁cube與enemy, player, 黃點(called ‘Food’), 藍點(called ‘Invincible Point’)。 4.在畫面中心打光,且視角設定在y軸正上方。
Implementation(4/5) 物件處理: 1. 將各個物件如monster, player, light, map, material, texture等建立屬性,開始實作函式細節。 2. 而控制的重點在於glutIdleFunc(idle),callback函式idle裡必須對目前game state與keyboard event進行判定,例如鍵盤輸入上下左右的事件、與monsters碰撞機制的條件設定、無敵狀態(Invincible)的控制等,都是要在這callback函式處理同步問題。
Implementation(5/5) 音效控制: 1. 使用SDL (Simple Direct-Media Layer) API: 由於OpenGL並未支援audio格式的處理,因此必須藉由使用其他有支援的API來進行存取wav檔,這裡使用SDL做audio格式處理。 2. 雖然SDL可以開啟wav檔,但相關設定繁雜,這裡再另外加入SDL-mixer可大量相關簡化處理步驟。 3. 藉由SDL-mixer可以輕易地欲開啟的wav檔,可設定不同channel區別不同wav檔,且可以隨時開啟與關閉wav檔。
Outline Introduction Implementation Operation Demo References
Operation <SPACEBAR>(空白鍵): 可按下SPACEBAR開始進行遊戲。若不幸死亡可以再按下SPACEBAR繼續遊戲。 <Up>(方向鍵上↑): 控制Pacman往上行動。 <Down>(方向鍵下↓): 控制Pacman往下行動。 <Left>(方向鍵左←): 控制Pacman往左行動。 <Right>(方向鍵右→): 控制Pacman往右行動。
Outline Introduction Implementation Operation Demo References
Demo Invincible State You Lose You Win
Demo See Demo.avi
Outline Introduction Implementation Operation Demo References
References 1. OpenGL Programming Guide http://www.glprogramming.com/red 2. Simple Direct-Media Layer (SDL) http://www.libsdl.org/ 3. SDL mixer http://www.libsdl.org/projects/SDL_mixer/ 4. GLUT - The OpenGL Utility Toolkit http://www.opengl.org/resources/libraries/glut/ 5. GLUI User Interface Library http://glui.sourceforge.net/