Presentation is loading. Please wait.

Presentation is loading. Please wait.

動畫與遊戲設計 遊戲開發工具 程于芳 老師 yfcheng@cc.ncue.edu.tw.

Similar presentations


Presentation on theme: "動畫與遊戲設計 遊戲開發工具 程于芳 老師 yfcheng@cc.ncue.edu.tw."— Presentation transcript:

1 動畫與遊戲設計 遊戲開發工具 程于芳 老師

2 目錄 遊戲開發工具簡介 C/C++程式語言 Visual Basic程式語言 Java程式語言 Flash與ActionScript

3 遊戲開發工具簡介 程式語言的選擇 執行平台的考量 遊戲工具函式庫的功用 常見的開發語言:C/C++、JAVA、Visual Basic等。
整合開發工具(Integrated Develop Environment, IDE):將程式的編輯 (Edit)、編譯(Compile)、執行(Execute)、除錯等功能於同一操作環境下,簡化程式開發步驟。如Visual C++、Borland C++ Builder等。 使用正確的整合開發工具,對遊戲開發進度有幫助。 執行平台的考量 考慮玩家所使用的平台,如Windows、Linux、麥金塔等。目前市場上以Windows作業平台為主。 須考慮所選的程式語言與平台的相容性,例如Visual Basic只能在Window作業系統上執行。 遊戲工具函式庫的功用 使用工具函式庫的主要目的為使用者能輕易地開發一套遊戲。如OpenGL、DirectX。 成像標準函式庫在製作遊戲時所佔的地位。如圖 使用者 程式 開發 函式庫 COM介面 (Component Object Model) 硬體設備

4 遊戲開發工具簡介 函式庫是用於開發軟體的子程式集合。函式庫和可執行檔案的區別是,函式庫不是獨立程式,他們是向其他程式提供服務的代碼。
COM (Component Object Model) :COM介面是電腦硬體內部與程式間溝通的橋樑,程式須先經過COM介面的解譯才能直接對CPU、顯示卡或其它的硬體設備做要求或反應。

5 C/C++程式語言

6 C/C++程式語言 C語言:程序導向的語言,著重程式設計的邏輯、結構化的語法。 C++:以C為基礎,改進輸出輸入的方法,加入物件導向觀念。
適用於撰寫大型遊戲,功能強大,執行速度快,但使用上較為複雜,測試成本高。

7 C/C++程式語言 執行平台 C/C++為高階語言,使用上貼近於人類語意的語法,讓程式設計人員以人類思考方式來撰寫語言,例如if、else 、for 、while等語法。 右方為一小段C語言程式碼 NotePad #include<stdio.h> int main(void) { int int_num; printf(“請輸入一個數字:”); scanf( “%d”, &int_num ); if (int_num%2) puts(“您輸入一個奇數。”); else puts(“您輸入一個偶數。”); return 0; } 電腦無法直接了解C/C++程式語言所撰寫出來的程式,必須經過「編譯器」(Compiler)的編譯,將語法解譯為電腦所看得懂的機器語言。

8 C/C++程式語言 執行平台 編譯器(Compiler):採用整批作業(Batch)方式來處理程式轉譯的工作,可將原始程式區分為數個階段轉換為機器可讀的可執行檔。經過編譯後,會產生「目的檔」(.obj)和「執行檔」(.exe)兩個檔案。當原始程式每修改一次就必須重新編譯。 C/C++所提供的標準函式庫有限,常須叫系統所提供的功能,因此使用C/C++所撰寫的程式,通常只能於單一平台上執行。

9 C/C++程式語言 執行平台 C/C++撰寫出來的程式在呼叫系統功能或元件時較為方便,因為早期有些作業系統是以該程式語言撰寫,例如呼叫Windows API、DirectX功能等。

10 C/C++程式語言 語言特性 C語言:「指標」(Pointer)功能可讓程式設計人員直接處理記憶體的資料,也可達到動態規劃功能。例如記憶體的配置管理、動態函式執行。 C++:以C為基礎,改進輸出輸入上容易錯誤的方法,保留指標功能與既有語法,並導入物件導向觀念。目前大型遊戲許多都是以C++開發。 C語言 物件導向概念 C++語言

11 C/C++程式語言 語言特性 動態函式庫: 附檔名:通常為 libxxx.so 的類型; 編譯行為:編譯時執行檔中僅具有指向動態函式庫所在的指標而已,並不包含函式庫的內容,所以檔案會比較小。 獨立執行的狀態:不能被獨立執行,程式讀取函式庫時,函式庫『必須要存在』,且函式庫的『所在目錄也不能改變』。 升級難易度:函式庫升級後,執行檔不需要進行重新編譯,故目前的 Linux distribution 比較傾向使用動態函式庫。

12 C/C++程式語言 語言特性 物件導向將現實生活中的人、事、物在程式中具體的以物件來表達,這使得程式能處理更複雜的行為模式。

13 C/C++程式語言 開發環境介紹 商業軟體:微軟Visual C++、Borland 的C++ Builder
非商業軟體:Dec C++ 、Kdevelop 通常商業軟體提供的功能較多,使用上更方便,對程式的測試與除錯功能也更完備。 C++ Builder 執行速度較快,但使用時的複雜度較高,由於它包裝了更多預設元件,使用上較為方便,所以使用速度上略差於Visual C++,目前常用來作為一些遊戲設計時的輔助,例如設計地圖編輯器等。

14 C/C++程式語言 開發環境介紹 地圖編輯器:玩家可以自己快速簡易的製造出這遊戲引擎可以使用的場景,及設置地形、在任何位置放置建築,玩家可以將山改成河流或增添島嶼等。例如魔獸爭霸2就有提供地圖編輯器功能。

15 C/C++程式語言 開發環境介紹 地圖編輯器製作畫面: 圖片來源:

16 C/C++程式語言 開發環境介紹-Dev C++開發環境

17 C/C++程式語言 Visual C++與遊戲設計
目前一般大型商業遊戲軟體的開發模式,大多採用Visual C++(簡稱VC++)程式開發工具搭配Windows API程式架構來撰寫,以提升遊戲程式執行時的效能。 VC++是微軟開發的一套適用於C/C++語法的程式開發工具

18 C/C++程式語言 Visual C++與遊戲設計 在VC++開發環境中,對撰寫Windows作業系統平台的視窗程式有兩種不同的程式架構:
MFC(Microsoft Foundation Class Library):一個龐大的類別函式庫,提供完整開發視窗程式所需的物件類別與函式,常用於設計一般的應用軟體程式。 Window API( Application Program Interface)架構:是Windows作業系統所提供的動態連結函式庫(通常以.DLL的檔案型態存在於Windows系統中),Windows API包含了Windows 核心及所有應用程式所需要的功能。其用在設計遊戲程式上相當簡單且具有較優異的執行功能

19 C/C++程式語言 Visual C++與遊戲設計
在VC++的開發環境下,只要在專案中設定好所要連結的函式庫並引用正確的標頭檔,就可容易的使用。 C++遊戲 大富翁(遊戲來源:GAMEBASE討論區)

20 Visual Basic程式語言

21 Visual Basic程式語言 微軟在1991年推出Visual Basic程式開發環境,將傳統BASIC語言導入視覺化概念,讓使用者可直接透過表單設計視窗來建立程式的輸出入介面,而不需要撰寫任何程式碼內容,並可描述介面中所有元件的外觀、配置與屬性。 對於初學者來說最容易上手,但執行速度緩慢,且功能性有限,對於大型遊戲而言,Visual Basic的速度與功能顯得不足,而且僅支援到DirectX 8.0版本。

22 Visual Basic程式語言 Visual Basic的設計環境是由多種工具列與工作視窗所組成:
圖片來源:

23 Visual Basic程式語言 執行平台 VB屬於高階語言,必須經過編譯的動作才能在電腦上執行。
VB程式只能在Windows作業系統上執行,且須額外將VB執行時所需的元件(類似虛擬機器)安裝到作業系統中,才能執行。 Visual Basic可呼叫Window API 與DirectX等元件,若呼叫Windows API,需注意平台相依問題,因為有些API在Windows95/98及Windows2000/XP/Vista上有些不同。

24 Visual Basic程式語言 語言特性 Visual Basic 無資料型態轉換的問題,系統會自動進行轉換。
Visual Basic不使用指標及不具備完整的物件導向功能,在6.0之後的Visual Basic.Net中才具有較好的物件導向功能。 VB語法關鍵字比C/C++更貼近人類語意。其撰寫環境提供許多現成元件。

25 Visual Basic程式語言 語言特性 VB程式內容參考: NotePad
Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer) Form1.PaintPicture Picture1,0,10,w, _ xc –w / 2,0,w,h,vbsrcCopy If KeyCode=39 Then xc=xc-10 End If End Sub

26 Visual Basic程式語言 Visual Basic與遊戲設計 使用VB開發遊戲相當直覺與方便,但對圖像與繪圖的處理速度非常慢。
微軟在DirectX7之後提供VB呼叫的介面機制,VB可以跳過作業系統直接存取繪圖裝置、輸入裝置、音效裝置,這使VB在繪圖、裝置資料的擷取有明顯的速度提升。 先天的限制導致VB在大型遊戲的開發上仍不足以勝任。

27 Java程式語言

28 Java程式語言 Java以C++的語法關鍵字為基礎,由Sun公司所提出。

29 Java程式語言 執行平台 Java具有跨平台的能力,跨平台是指JAVA程式可以在不重新編譯下,直接於不同的作業系統上運作,這個機制可以運行的原因在「位元組碼」(Byte Code)與「Java執行環境」(Java Runtime Environment)的配合。

30 Java程式語言 執行平台 Java程式執行流程 位元組碼為一種貼近於機器語言的編碼 Java程式(*.java) Java編譯器
位元組碼(*.class) Java直譯器 機器語言 載入記憶體中執行

31 Java程式語言 執行平台 直譯器(Interpreter):使用直譯器來翻譯程式的過程中,不需要產生目的檔,直譯器會將程式一行一行的讀入,並且逐行翻譯,並送交由電腦執行。編譯器形成可執行檔其執行速度快,但中間過程較為耗時繁瑣;直譯器其執行速度慢,但中間過程較為簡單利用這種方式完成的程式語言。 Java執行環境建構於作業系統上的虛擬機器,程式人員只要針對這個執行環境進行設計即可。

32 Java程式語言 執行平台 Java程式應用於遊戲上有兩種展現方式: 運用視窗應用程式
使用Applet內嵌於網頁中:使用者瀏覽到Java Applet程式的網頁時,會將Applet程式檔案下載,由瀏覽器啟動Java虛擬機器以執行Java程式,在這方面可稱Java是以網路作為他的執行平台。

33 Java程式語言 執行平台 程式設計人員 Java執行環境 程式設計人員只要針對Java執行環境進行設計即可 作業系統 電腦硬體

34 Java程式語言 語言特性 Java以C++的語法關鍵字為基礎,目的在於使C/C++程式設計人員快速入手Java程式語言。
Java過濾C++中易犯錯及忽略的功能,例如指標的運用,並採用「垃圾收集」(Garbage Collector)機制來管理無用的物件資源。 Java與C++語法上的不同點為,Java為完全物件導向語言,C++為具有物件導向功能。 若非執行速度上的考量,Java適用於中大型程式的開發。

35 Java程式語言 語言特性 Java程式語言內容參考 NotePad
public static void main(String args[]) { ex1103 frm= new ex1103(); } Private void check() for(int i=0;i<p.length;i++) if (p[i].px<0 || p[i].px>400) p[i].dx=-p[i].dx;

36 Java程式語言 Java與遊戲設計 Java程式執行前必經過第二次編譯,且Java程式只有在需用到某些類別庫時才載入相關的類別,造成執行速度上的拖累。 Java在繪圖、網路、多媒體、3D方面提供相當多的API程式庫,用來設計遊戲可獲得更多資源。 Java的整合開發環境 商業軟體:Visual J++、JBuilder 非商業軟體:Forte 、Netbeans Java應用於中大型的例子不多,所以整合式開發環境對遊戲設計的影響不大。

37 Java程式語言 Java與遊戲設計 Java線上小遊戲: 反應類:傳統食鬼(遊戲來源:瘋之谷) 反應類:冰與火
反應類:撞磚(遊戲來源:瘋之谷)

38 Java程式語言 Java與遊戲設計 Java手機遊戲免費下載:捉魚網 Java手機遊戲安裝(以Sony Ericsson為例)
打開其它資料夾 選擇所要安裝的jar檔案 安裝過程中請稍候

39 Java程式語言 Java與遊戲設計 選擇要安裝於哪個資料夾下 選擇是否馬上啟動 啟動該遊戲後,該遊戲可選擇語言別 39

40 Java程式語言 Java與遊戲設計 進入該遊戲 選擇開始遊戲 該遊戲可選擇單人或多人遊戲 40

41 Java程式語言 Java與遊戲設計 開始遊戲 打開遊戲資料夾 顯示剛才已安裝的遊戲 41

42 Flash與ActionScript

43 Flash與ActionScript Flash是由Macromedia所推出的動畫設計軟體。
Flash主要舞台為網路,其可內嵌於網頁中,也可編譯為Windows中可單獨執行的exe檔,要執行Flash動畫,使用者電腦須安裝Flash Player的播放器。

44 Flash與ActionScript Flash遊戲 內嵌式: 執行檔(exe檔): 裝扮類:變裝玩偶(遊戲來源:史萊姆的第一個家)
反應類:新版食鬼 (遊戲來源:益智遊戲網) 益智類:百萬富翁(遊戲來源:瘋之谷) 運動類:重量級拳賽 (遊戲來源:瘋之谷) 反應類:手動電池棒(一) (遊戲來源:瘋之谷) 執行檔(exe檔): 益智類: ZooKeeper

45 Flash與ActionScript Flash可重複利用圖片片段,加上補間動畫方式來達到圖片使用量的最小化,且可對圖片進行壓縮,並針對已下載的圖片先播放,不須等到所有圖片都下載完畢。 Flash動畫製作的方式節省大量圖片檔案的應用,且可省去對貼圖動作的程式設計成本。

46 Flash與ActionScript 補間動畫是利用「時間軸」,在每個時間片段上設定動畫的起點與終點,並設定圖片的移動軌跡,中間的移動過程則由播放程式自行計算,因此即使是複雜的軌跡運動,使用的圖片只有一張,下圖為時間軸與移動軌跡的基本示意: 時間軸 終點 Flash動畫製作的其本原理

47 Flash與ActionScript Flash與遊戲設計
Flash可完成遊戲設計的主因在於Action Script, Action Script可用來輔助動畫的製作,使動畫移動更具多樣性,或利用程式替Flash影片加入與使用者的互動式效果,在新版的Flash中更在Action Script中加入了物件導向的特性,使Action Script逐漸走向程式設計應用的趨勢。 Flash設計出來的畫面精美、容量小,看好於應用於網路遊戲與動畫的市場。

48 OpenGL

49 OpenGL簡介 OpenGL全名為open Graph Library ,為公開圖形庫
OpenGL是SGI公司於1992年所提出的一個製作2D與3D的圖形應用程式的API 。 是一套「計算機三維圖形」處理函式庫。 在電腦繪圖的世界裡,OpenGL就是一個以硬體為架構的軟體介面。 程式設計者在開發過程中可以利用Windows API來存取檔案,再以OpenGL API來完成即時的3D繪圖。

50 目前OpenGL版本為3.0版(2008年8月公布),大改版, 設計架構從「狀態」為主 「物件」為主,OpenGL 被「物件化」了
c 日期 版本 1992年7月 1.0版 1995年12月 1.1版 1999年5月 1.2.1版 2003年7月 2.1版(嵌入式版本) 2008年8月 3.0版 目前OpenGL版本為3.0版(2008年8月公布),大改版, 設計架構從「狀態」為主 「物件」為主,OpenGL 被「物件化」了

51 OpenGL發展史 OpenGL後來被設計成獨立於硬體與作業系統的一種顯示規範,它可以運行於各種作業系統與電腦上。
是專業圖形處理與科學計算等高階應用領域的標準圖形函式庫。 能在網路環境以客戶端和伺服器模式下工作 OpenGL透過Client/Server方式實現,當客戶端(以OpenGL標準開發的應用程序)向伺服器(OpenGL核心機制)發出命令時,由伺服器負責解釋這些命令 通常,客戶端和伺服器運行在同一台機器上,基於客戶端/伺服器的運行機制,這使用户能方便地在網路環境下使用OpenGL。

52 OpenGL函式說明 OpenGL分為程序式(Procedural)與非描述式(Nondescriptive)兩種繪圖API函式
非描述性:場景中有很多特效、物件、且已是程式開發者事先定義好的 指令:任何可執行程序的元素的表述 函式:程式中超過兩次以上重複使用的程式碼,可以考慮將之定義為函式,以便重覆呼叫使用,降低相同程式片段的維護成本。

53 OpenGL函式說明 OpenGL 的工具函式庫 降低移植至不同視窗形式系統的問題: 例如:
c OpenGL 的工具函式庫 GLU(OpenGL Utility Library): 為較高階的圖形函式庫 主要功能是處理特殊矩陣運算、曲線和曲面、基本3D圖形處理等功能 協助程式設計師處理材質、投影與曲面模型 GLUT(OpenGL Utility Toolkit): 用於簡化視窗管理程式法的撰寫 不只有Microsoft Windows系統,支援視窗形式的作業系統(e.g.Mac OS、X-Window(Linux/Unix) 降低移植至不同視窗形式系統的問題 協助在各作業系統下作視窗的管理,功能包括視窗、選單的建立,滑鼠、鍵盤、搖桿的控制及簡單的3D 模型等 只要使用GLUT 就不必在乎是哪個作業系統,達到跨平台的目的。 降低移植至不同視窗形式系統的問題: 例如: Linux與Windows的開發環境不同,所以程式碼也會不同;利用VC++寫的程式在Windows上可以很順的執行,但是若要在mac OS或者Linux上執行,我們可能需要修改一堆函式以及形式

54 OpenGL函式說明 OpenGL提供glShadeModel()函式可在物體上著色效果,其函式結構如下:
在2D模式中,以GL_SMOOTH著色,具有平滑效果;以GL_FLAT呈現單一顏色

55 OpenGL函式說明 程式說明與舉例: void CreatDraw(void){
glClearColor(1.0f, 1.5f, 0.8f, 1.0); glClear(GL_COLOR_BUFFER_BIT); glShadeModel(GL_FLAT); //左邊的四邊形,以FLAT方式著色 glBegin(GL_QUADS); glColor3f(0.0f, 0.0f, 1.0f);//藍色 glVertex2f(-0.05f, 0.2f); glColor3f(1.0f, 0.0f, 0.0f);//紅色 glVertex2f(-0.05f, -0.2f); glColor3f(0.0f, 1.0f, 0.0f);//綠色 glVertex2f(-0.3f, -0.2f); glColor3f(1.0f, 0.0f, 1.0f);//紫色 glVertex2f(-0.3f, 0.2f); glEnd();

56 OpenGL函式說明 glShadeModel(GL_SMOOTH);//左邊的四邊形,以SMOOTH方式著色
glBegin(GL_QUADS); glColor3f(0.0f, 0.0f, 1.0f);//藍色 glVertex2f(30.0f,20.0f ); glColor3f(1.0f, 0.0f, 0.0f);//紅色 glVertex2f(30.0f, -20.0f); glColor3f(0.0f, 1.0f, 0.0f);//綠色 glVertex2f(5.0f, -20.0f); glColor3f(1.0f, 1.0f, 0.0f);//黃色 glVertex2f(5.0f, 20.0f); glEnd(); glutSwapBuffers(); }

57 OpenGL函式說明 執行結果:

58 OpenGL函式說明 OpenGL提供glShadeModel()函式可在物體上著色效果,其函式結構如下:
在3D模式中,GL_FLAT表示同一個三角形的所有位置對光線接以三角面的方法向量運算,使得面與面之間出現明顯接痕;以GL_SMOOTH則需要較長的時間計算,畫面明顯平滑許多(如下圖所示)

59 OpenGL函式說明 範例:「全方位3D遊戲」 使用Flat Shading,可以看到很明顯的三角形

60 OpenGL函式說明 範例:「全方位3D遊戲」 使用Gouraud Shading,畫面明顯平順許多

61 OpenGL運作原理 當撰寫OpenGL的程式,利用GLUT來產生一個供OpenGL繪圖用的視窗,取得該視窗的裝置本文(DC, Device Context)代碼,再透過OpenGL的函式來進行OpenGL的初始化。 OpenGL的主要用意是在於使用者在表現高階需求的時候,可以利用低階的OpenGL來控制。

62 OpenGL運作原理 圖示說明: 說明:繪圖資料讀進緩衝區(包含指令、座標點、材質資訊等) 轉 換與燈光(T&L),運算物體時計成像的幾何座標點與光影位置利用顯 像技術(Rasterization)建立影像送進記憶體(Frame Buffer),呈現 於螢幕上

63 OpenGL運作原理-軟體要求 通常顯示卡廠商會提供GDI(Graphics Device Interface,繪圖裝置介面)的硬體驅動程式來達成畫面輸出需要。 OpenGL的主要工作就是接受這種繪圖需求,並且將這種需求建構成一種影像,然後再將影像交給GDI處理,最後再由GDI送至繪圖顯示卡上。 OpenGL的軟體要求必須透過CPU計算,再送至GDI處理影像,再由GDI將影像送至顯示裝置,這樣才能算是一次繪圖顯像處理動作。

64 OpenGL運作原理-硬體要求 OpenGL的硬體處理要求是將顯像資料直接送往繪圖顯示卡上,讓顯示卡做繪圖要求所建構與顯像動作,其過程不須經過GDI軟體裝置 現在繪圖顯示卡技術提升與價格低落的情況下,幾乎每一張繪圖顯示上都有轉換與燈光(T&L)的加速功能 繪圖卡上的記憶體不斷地擴充,因此,在繪圖顯像的過程中似乎都不需要經過CPU和主記憶體的運算

65 DirectX

66 DirectX SDK簡介 DirectX(Direct eXtension,簡稱DX)是… 由微軟公司建立的多媒體編程介面
由「執行時期」(Runtime)函式庫與「軟體開發套件組」(Software Development Kit ,SDK)所組成 利用DirectX SDK開發的應用程式,要安裝 directx end-user runtime才可以正常執行。 開發時透過DirectX SDK中所提供的各種控制元件,來進行硬體的控制及處理運算。 讓Windows為作業平台的遊戲或多媒體程式獲得更高的執行效率 開發者不需為每一個廠牌的硬體設備來撰寫不同的驅動程 降低使用者安裝及設備硬體的複雜度 透過DirectX SDK提供各種控制元件進行硬體的控制與處理計算

67 DirectX SDK的內容表 元件名稱 用途說明 DirectX SDK由許多API函式庫及媒體相關元件組成,內容如下:
DirectGraphics DirectX繪圖引擎,用來處理3D繪圖影像,利用3D指令的硬體加速特性發展強大的API函式 DirectSound 控制聲音、音效處理及提供音效處理的支援,如低延遲音、3D立體聲、協調硬體運作等 DirectInput 處理遊戲的周邊設備裝置,如搖桿、方向盤、VR手套、GamePad介面 DirectShow 利用過濾器技術來播放影片與多媒體方法 DirectPlay 輕易的開發多人連線遊戲,連線方式包含區域網路連線、數據機連線等支援各種通訊協定

68 DirectGraphics c 顏色鍵(colorkey):用來指定圖片的透空色彩。由Quester主導開發, 由Blueidea.com站點軟件開發工作組測試和發行的一款具人性化、 科學化的交互式配色輔助工具。能使用戶方便地控制色彩傾向、 生成配色方案,能方便地將配色方案輸出為網頁文件和*.AI格式文件 DirectGraphics是DirectX9的內建套件之一,它負責處理2D與3D的影像運算,並支援多種硬體加速功能。 讓程式開發人員不需考慮對硬體的驅動與相容性問題,即可直接進行各種設定與控制工作 DirectDraw在使用上與Windows GDI相似且簡單易學,使用者可以利用顏色鍵作去透空處理。 DirectDraw除了簡單外,要做出相當炫的特效,還是得自己動手寫。 在3D硬體加速卡如此普級化的今天,運用3D功能作出超炫的畫面也是輕而易舉。 未透空顯示 透空顯示colorkey為白色

69 DirectSound-介紹 DirectSound套件則比MCI功能更為複雜與多元與複雜,是一種用來處理聲音的API函式。
音樂 是由多種聲音所組成的 如各種樂器 人聲等等 而音樂的輸入與輸出不可避免的 會因處理的過程產生延遲 而低延遲音 就是盡可能的降低這類的影響

70 DirectSound-介紹 c 對於音效播放區域分為數個物件成員,較具體的成員有:音效卡(DirectSound)、2D緩衝區(DirectSoundBuffer) 、3D緩衝區(DirectSound3DBuffer)與3D空間傾聽者(DirectSound3DListener) 若要播放音效,電腦上需安裝音效卡,而DirectSound將音效卡當作一個物件,一個物件處理一組音效運算,即使真正的音效卡沒有硬體功能(如音效合成器),音效卡物件能自行模擬 在多工作業系統(Multitasking)中,會使用到音效卡的程式並不只有遊戲本身,因此在只有一張音效卡情況下,過去可能必須親自處理音效卡與其他程式共用的協調問題,不過使用DirectSound就不需擔心這問題,因為它會自行處理音效卡的共用協調問 緩衝區(Buffer):為暫時置放輸出或輸入資料的記憶體, 緩衝器內資料自儲存設備(如硬體)來,放置在緩衝器中, 須待機送至CPU或其他運算設備。 多工(multitasking):一個系統可以同時運作多個 不同的軟體或是系統服務,可以充分使用系統資源 多人多工:指『同一時間』允許『多人』同時可執行多項工作(即程式),例網路作業系統(NOS)。 如:UNIX、Windows NT 、LINUX、NOVELL/NETWARE等 單人多工作業系統是指電腦在同一時間內只能有一個使用者, 但能同時執行多項工作的作業系統, 如 Windows 3.1 、 Windows 95 、 Windows 98 、 OS2。

71 DirectSound-介紹 音效檔案在播放音效實需載入記憶體,其記憶體位置於音效卡或主記憶體上;在DirectSound只要將音效檔案載入緩衝區物件,緩衝區物件同等於音效卡物件上的記憶體,且DirectSound將自行判斷記憶體位置 除了基本的2D音效,DirectSound提供3D音效的模擬功能,3D緩衝區用來存放3D音效檔案,將音效卡物件具體化為實體音效卡

72 DirectSound-音效緩衝區 DirectSound緩衝區是用來載入音效檔案,其中包含2D與3D緩衝區,一個緩衝區只用來載入一個音效檔案;也可將一個緩衝區視為一個音效檔案,2D緩衝區可進行平面的音效播放,3D緩衝區可擁有計算與控制3D音效的功能 除了單一音效檔案功能,它也提供多個音效檔同時播放的功能,藉此可將數個音效檔案適當的加以組合並同時間播放,已達到多種不同的播放效果變化

73 DirectSound-音效緩衝區 播放3D音效有幾種可能的移動:
音源不動,傾聽者移動 傾聽者不動,音源移動 音源與傾聽者一起移動 3D緩衝區不從事音效的播放與控制,用來設定位置與聲音錐,其操作播放需交回至2D緩衝區物件去執行 在3D音效播放時,位於音源的正面所聽到的聲音較大,而位於音源後方所聽到的聲音較小

74 DirectSound-聲音錐 當傾聽者位於聲音錐內時,所聽到的聲音會比較清楚,如果傾聽者位於聲音錐外,所聽到的聲音會比較小聲。
而聲音也具有一定的擴散性,我們可以使用聲音錐的角度來設定。 在DirectSound的設定中,還可以設定內層聲音錐與外層聲音錐,內層聲音錐所聽到的聲音會比外層聲音錐所聽到的聲音來得大,外層聲音錐也可以設定它的音量。

75 DirectSound-聲音錐 聲音錐外 聲音錐內 聲音錐示意圖 θ

76 DirectInput簡介 DirectInput是用來處理遊戲的一些週邊設備裝置,例如搖桿、GamePad介面、方向盤、VR手套、力回饋等週邊裝置。 利用DirectInput不需透過作業系統直接對裝置進行存取行為,立即回應目前硬體狀況,而非等待Windows傳送過來的訊息 DirectInput元件對於操作裝置是以「軸」與「按鈕」來定義,它將操作裝置分為三類:「鍵盤」、「滑鼠」與「搖桿」。

77 DirectInput-鍵盤 它屬於沒有軸的操作裝置,而鍵盤基本上具有101個以上的按鍵,所以鍵盤在DirectInput的定義上,就屬於「無軸」、「多按鈕」的操作裝置。 使用DirectInput來操作鍵盤比使用Windows事件處理來操作鍵盤擁有更多的優點。 由於DirectX的成員都可以直接存取目的裝置,而無需透過Windows的訊息;所以使用DirectInput直接存取鍵盤裝置,會比使用Windows事件處理來得反應快速。

78 DirectInput-滑鼠 滑鼠是利用軌跡球的滾動或是光線的相對位移(指光學鼠)來決定其移動量。
所以滑鼠的操作具有方向性,但是滑鼠的移動並沒有原點依據,它所採用的是「相對軸」。 在DirectInput的定義中,滑鼠屬於「多按鈕」、使用「相對軸」的操作裝置

79 DirectInput-搖桿 在DirectInput中對搖桿的定義為「多軸」與「多按鈕」的操作裝置。
無論該搖桿長的多怪異,操作方式多複雜,都將其歸類於軸與按鈕的操作。 在DirectInput中定義有兩種搖桿類型,一種為6個軸、32個按鈕的一般搖桿,一種為24軸、128個按鈕的新型搖桿。

80 DirectInputer進行操作裝置管理方式
直接取得裝置的狀態 設定緩衝區 優點: 即時資料可讀取裝置的即時資訊 缺點: 程式忙碌時可能讀取到錯誤的操作或遺漏訊息 訊息會儲存在緩衝區,操作訊息不會遺誤 必須自行處理緩衝區 緩衝區過大 導致操作有延遲效應 緩衝區過小 操作訊息被遺漏

81 DirectShow c DirectShow是DirectX中負責多媒體檔案播放的主要元件,它不僅使用簡單,更支援MPEG、AVI、MOV、MIDI、MP2與MP3等多媒體格式。 DirectShow的運作方式不同於DirectSound與DirectMusic元件,而是透過「過濾器」(Filter)技術來進行媒體檔案的播放作業。 「過濾器技術原理」:利用資料流(Data streams)將媒體檔案輸入到過濾器中,經過對應解壓縮方式操作後,再以資料流方式將處理過後的資料輸出 串流(Streaming)是指將一連串的影像壓縮後,經過網際網路分段傳送資料,在網路上即時傳輸影音以供觀賞的一種技術與過程;串流傳輸可傳送現場影音或預存於伺服器上的影片,當觀看者在收看這些影音檔時,影音資料在送達觀賞者的電腦後立即由特定播放軟體播放 (如 Windows Media Player, Real Player, 或 QuickTime Player)

82 DirectShow-過濾器 圖示說明: MPEG檔案 說明: DirectShow過濾器 解壓縮作業 資料流 輸入 輸出

83 DirectShow-過濾器 DirectShow元件可有多組過濾器,以負責不同媒體格式檔的運算處理,由下圖所示來介紹: 說明: 媒體
檔案 第一組 DirectShow過濾器 輸出資料流 第二組 說明: 過濾器可以相互組合使用,也就是可以將第一個過濾器的運算結果輸出資料流,導向第二個過濾器做進一步處理

84 DirectPlay DirectPlay是爲了滿足近來流行的網路遊戲而開發的API,此外也提供網路對談的功能,以及保密的措施。
如果使用DirectPlay,便可以撰寫一套支援IPX、TCP/IP、序列、數據機通訊,以及其它不同網路通訊協定的程式碼,否則就必須自行開發這些不同且繁雜瑣碎的通訊協定程式碼。

85 補充 DirectX 和OpenGL支援度的差別在於: DirectX 是微軟開發的所以只提供在Microsoft的作業系統。
DirectX 比較普及,因為所有灌有WINDOWS的電腦都有內建支援

86 Thank You !


Download ppt "動畫與遊戲設計 遊戲開發工具 程于芳 老師 yfcheng@cc.ncue.edu.tw."

Similar presentations


Ads by Google