排行榜 -

您的位置:首頁 > ppt下載 > PPT課件 > 課件PPT > 游戲開發流程ppt

游戲開發流程ppt下載

素材預覽

游戲開發流程ppt

這是游戲開發流程ppt,包括了手機游戲開發簡介,PNG圖像格式介紹,游戲設計中的動畫,手機游戲2D動畫開發,手機音效開發,綜合示例:飛機碰撞,小結等內容,歡迎點擊下載。

游戲開發流程ppt是由紅軟PPT免費下載網推薦的一款課件PPT類型的PowerPoint.

第7章 手機游戲開發 游戲是策劃、美工和程序三者的協調及創意和商業運作的平衡。集美術、音樂、動畫、人工智能等元素于一身。 目前支持Java的手機性能越來越強大,同時,手機的價格在不斷地下降,因此,手機游戲的市場前景將是非常良好的。本章將從圖片的處理、動畫的制作和音效的實現來學習手機游戲開發的基礎知識。 7.1 手機游戲開發簡介 現在的移動電話可以看作小型的計算機,只是它的處理能力與PC相比很有限,但是足夠運行一個小型的游戲。 另一個特性就是它們還是網絡計算機,能夠高速發送和接收數字數據。 除了語音數據以外,它們還可以發送和接收其他類型的數據。 所以類似《傳奇》、《千年》這樣的網絡游戲將來也可以在手機上實現。 但是與PC相比,它們的輸入和顯示功能也很有限。手機的屏幕都較小,其對聲音處理能力也很有限。 開發者在這樣的平臺上開發應用,必須認真的考慮這些特點。本節將重點討論手機本身的特點和手機游戲開發的特點。 7.1.1 手機游戲的類型 1.嵌入式游戲 2.短信息服務游戲 3.WAP瀏覽器游戲 7.1.2 手機游戲開發特點 1.龐大的潛在用戶群 2.便攜性 3.屏幕小 4.有限的顏色和聲音支持 5.應用程序大小限制 6.高等待時間 7.可中斷性是關鍵 7.1.3 揚長避短的手機游戲開發 1.縮短每回合的游戲時間 2.合理處理等待時間 7.2 PNG圖像格式介紹 7.2.1 PNG的由來 PNG全名Portable Network Graphics,字面意思是“可移植性網絡用圖形”,從這簡單幾個字已經明白定義了PNG的用途以及主要發展方向。 1996年,PNG Group向W3C(World Wide Web Consortium)提出一種多媒體圖形格式,重點在于改進現有JPG跟GIF的缺點,并且提供更多新的概念與壓縮模式,在提出后得到W3C的認可與推薦。 在1996年10月1號,W3C正式發函公告,推薦PNG為最佳的圖形格式,并且以“PNG Delivers Higher Quality Graphics for Web Page Design”的文字作為該文件的標頭。 7.2.2 PNG的圖檔格式特性 PNG保留了大部分GIF的特性, PNG的壓縮率很高,尤其是圖表型的圖片 7.2.3 PNG格式圖像的壓縮及處理 PNG圖像格式文件(或者稱為數據流)由一個8字節的PNG文件署名(PNG file signature)域和按照特定結構組織的3個以上的數據塊(chunk)組成。 PNG定義了兩種類型的數據塊,一種是稱為關鍵數據塊(critical chunk),這是標準的數據塊,另一種叫做輔助數據塊(ancillary chunks),這是可選的數據塊。 7.2.4 使用PNG圖片 在MIDP具體實現中,Images可以是可變的也可以是不可變的。 不可變的Image可以從二進制圖像文件創建,如果要用二進制圖像數據來創建Image,這些數據必須是設備支持的格式。 有的設備可能會支持額外的一些格式,不過所有設備都必須支持PNG格式。在手機中使用PNG圖片,必須先把圖片加載到內存,并且實例化成為一個Image對象。 Image對象的構造方法如下: public static Image createImage(String name) 7.2.5 游戲菜單制作 當玩家在菜單項中選擇了某選項后,系統給玩家返回的界面應該不同。 下例菜單選項包括:新游戲、高分榜、幫助和退出。其他屏幕包括:游戲中的界面、查看高分榜的界面、查看幫助的界面。 7.3 游戲設計中的動畫 7.3.1 動畫基礎 1.什么是動畫 動畫是通過連續播放一系列畫面,給人的視覺造成連續變化的圖畫。 2.動畫制作應注意的問題 (1)速度的處理 (2)循環動畫 (3)夸張與擬人 7.3.2 雙緩沖技術 雙緩沖技術是編寫J2ME游戲程序的關鍵技術之一。實際上,雙緩沖技術是計算機動畫的一項傳統技術。 造成屏幕閃爍的主要原因在于,畫面在顯示的同時,程序又在改變它。解決辦法就是在內存中開辟一片區域作為后臺畫面,程序對它更新、修改,完成后再顯示它。 這樣被顯示的圖像永遠是已經完全畫好的圖像,程序修改的將不是正在被顯示的圖像。當然還有其他方法可以解決屏幕閃爍問題,但使用雙緩沖技術是一種值得推薦的解決方案。 雙緩沖思想體現在程序上就是要依次完成以下幾步工作。 (1)定義一個Graphics對象bg和一個Image對象buf,按屏幕大小建立一個緩沖對象附給buf,然后取得buf的Graphics對象附給bg。 (2)在bg(緩沖屏幕)上用drawImage()和drawString等語句畫圖,相當于在緩沖屏幕上畫圖。 (3)調用repaint()語句,它的功能是告知系統調用paint()來完成真實屏幕的顯示。 (4)在paint(Graphics g)方法里,將buf(緩沖屏幕上的圖片)畫到真實屏幕上。 7.3.3 圖片的裁剪 我們可以通過設定裁剪的區域來顯示圖片的一個片斷,使用前面講的方法: setClip() getClipX() getClipY() getClipWidth() getClipHeight() 創建裁剪區域的步驟如下。 (1)聲明類的引用。 (2)創建類的實例,并賦值給這些類引用。 (3)當程序開始時,顯示Canvas類的實例。 (4)當Exit時,終止MIDlet。 (5)定義Canvas的派生類,并實現CommandListener。 (6)請求保存圖片所需的足夠內存塊。如果使用動態圖像,就創建圖像。否則確定圖像包含什么靜態圖片文件名。 (7)從Paint()方法中判斷圖像是否創建成功或者圖像是否打開成功。如果是創建一個新的裁剪區域,在畫布上繪制圖像。 7.3.4 播放動畫框架 開發MIDP的程序員經常會在一個MIDlet上顯示動畫。MIDP 1.0沒有直接提供對動畫的支持(正在開發中的MIDP 2.0支持),但真要是自己去實現,其實也并非是一件很難的事。 任何動畫的最基本的前提,是要在足夠快的時間內顯示和更換一張張的圖片,讓人的眼睛看到動的畫面效果。圖片必須按照順序畫出來。 從一張圖片到下一張圖片之間的變化越小,效果會越好。首先要做的,是使用你的圖片處理軟件(比如Photoshop或者Firework)創建一系列相同大小的圖片來組成動畫。 每張圖片代表動畫一幀。你需要制作一定數量的幀——越多的幀會讓你的動畫看上去越平滑。制作好的圖片一定要保存成PNG格式。 有兩個辦法讓你剛做好的圖片在MIDlet上變成動畫。第一,把圖片都放到一個Web服務器上,讓MIDlet下載他們,MIDP內置的HTTP支持。 第二個辦法更簡單,把圖片用MIDlet打包成JAR文件。如果你使用的是J2ME開發工具,把PNG文件放到你的項目文件里面就可以了。 動畫的過程其實更像賬本記錄:顯示當前幀,然后適當地更換到下一幀。 7.4 手機游戲2D動畫開發 7.4.1 MIDP 2.0 2D游戲開發 MIDP 2.0相對于1.0來說,最大的變化就是新添加了用于支持游戲的API,它們被放在javax.microedition.lcdui.game 包中。 游戲API包提供了一系列針對無線設備的游戲開發類。 由于無線設備僅有有限的計算能力,因此許多API的目的在于提高Java游戲的性能,并且把原來很多需要手動編寫的代碼如屏幕雙緩沖、圖像剪裁等都交給API間接調用本地代碼來實現。 各廠家有相當大的自由來優化它們。游戲API使用了MIDP的低級圖形類接口(Graphics,Image等)。整個游戲包僅有5個Class。 1.GameCanvas 2.Layer 3.LayerManager 4.Sprite 5.TiledLayer 7.4.2 GameCanvas的使用 GameCanvas類提供了基本的游戲用戶接口。 除了從Canvas 繼承下來的特性(命令,輸入事件等)以外,它還提供了專門針對游戲的功能,如后備屏幕緩沖和鍵盤狀態查詢的能力。每個GameCanvas 實例都會有一個唯一的緩沖區。 1.繪圖 2.鍵盤 7.4.3 Sprite的使用 Sprite 是一個基本的可視元素,可以用存儲在圖像中的一幀或多幀來渲染它;輪流顯示不同的幀可以令Sprite 實現動畫。 翻轉、旋轉等幾種變換方式也能應用于Sprite 使其外觀改變。作為Layer 子類,Sprite 的位置可以改變,并且還能設置其可視與否。 1.Sprite 幀 用于渲染Sprite的原始幀由一個單獨的Image對象提供,此Image可以是可變的,也可以是不可變的。 2.幀序列 Sprite 的幀序列定義了幀以什么樣的順序來顯示。 3.Reference Pixel 作為Layer 的一個子類,Sprite 繼承了很多方法來設置和獲取位置,如setPosition(x,y),getX()和getY()。 4.Sprite 的變換 幾種變換可應用于Sprite?捎玫淖儞Q包括旋轉幾個90 度加上鏡像(沿垂直軸)。 7.4.4 碰撞檢測 Sprite 非常適合移動的物體,如游戲主角、敵人等,在游戲中,可以使用Sprite 提供的碰撞檢測功能來簡化游戲邏輯。 Sprite的碰撞檢測可以分兩種:一種是矩形碰撞檢測,另一種是像素碰撞檢測。游戲中Sprite的大小往往是用包圍它的矩形的大小來表示的,如在圖7-12中的飛機和導彈并沒有發生碰撞但檢查的結果卻發生了碰撞。 對于像素碰撞檢測,往往把Sprite的背景色設置為相同的顏色,碰撞檢查的時候就只判斷兩個圖片除背景色以外的其他像素是否發生了重疊。 像素碰撞檢測比較精確,但計算復雜,一般沒有特殊要求都使用矩形碰撞檢測。下面的例子兩個矩形發生了碰撞但飛機和導彈并沒有發生碰撞,如圖7-13所示。 要判斷兩個Sprite 是否碰撞,或者與其他Layer 是否碰撞,可以使用collidesWith()方法。CollidesWith()共有三種形式: (1)public final boolean collidesWith(Sprite s,Boolean pixelLevel) (2)public final boolean collidesWith(TitledLayer t,Boolean pixelLevel) (3)public final boolean collidesWith(Image image,int x,int y,Boolean pixelLevel) 7.4.5 Layer的使用 Layer 是一個抽象類,表示游戲中的一個可視元素。 1.TiledLayer TiledLayer 由一系列單元格組成,單元格可被一組貼圖填充。 每個貼圖都被賦予一個唯一的索引號。 除了靜態貼圖外,開發者同樣能夠定義一系列動態貼圖(animated tiles)。 動態貼圖允許開發者能非常容易地改變一組單元格的外觀。 2.LayerManager LayerManager管理一系列的Layer。 可視窗口(view window)控制著可視區域及其在LayerManager 的坐標系統中的位置。 paint(Graphics, int, int)方法包含一個(x,y)坐標,控制可視窗口在屏幕中的顯示位置。 為了添加一個Layer,使用append()方法向這個LayerManager 添加一個Layer。 7.5 手機音效開發 現在能播放音樂的手機已經是很常見的了,同時手機游戲也需要聲音來增加動感效果,所以手機音效也成為了開發熱點。 J2ME針對多種媒體格式,提供了一套播放接口,那就是:MMAPI(Mobile Media API)。 7.5.1 MMAPI體系結構 現在多媒體的格式很多,要順利地播放這些不同格式的音樂,一種比較好的方式就是把這些不同格式的數據都轉換為統一的格式,然后統一使用一個播放器接口類來播放。 在MMAPI中,首先從數據源(如一個文件、一個捕獲裝置或一個流式服務)上讀取媒體數據內容后,然后傳輸給專門的處理程序進行處理。 處理過程主要是由DataSource類和Player類完成。DataSource類的作用就是讀取和轉換多媒體數據,Player類的作用就是播放這類數據。 然后提供一系列的播放、暫停、停止等播放器相關功能,DataSource類和Player類的工作過程如圖7-19所示。 7.5.2 Player接口 要使用MMAPI進行音效開發,首先需要導入相關的開發包,例如: import javax.microedition.media.* 創建一個Player對象有3種不同的方式,也就是用Manager類的不同構造方法,Manager類一共有三個構造方。 (1)Public static Player createPlayer (java.lang.string locator) throws java.io.IOException, MediaException (2)Public static Player createPlayer (DataSource source) throws java.io.IOException, MediaException (3) Public static Player createPlayer (java. io.InputStream stream, java.. lang.String trpe) throws java.io.IOException, MediaException 這三個方法分別可以讀取指定路徑的數據源或者DataSource和InpurStream類型的數據源,分別返回一個Player,當一個Player對象被創建以后,使用Player接口的start()方法就會盡可能快地啟動數據的播放,當數據播放完畢以后,Player會自動關閉。 1.UNREALIZED 狀態 2.REALIZED狀態 3.PREFETCHED狀態 4.STARTED狀態 5.CLOSED狀態 7.5.3 播放簡單音調 聲音的高低叫音調,也就是音符的頻率,J2ME提供了對簡單音調播放的支持,MMAPI提供了一個Manager.playTone()方法來播放音調。 使用Manager.playTone(),需要指定三個參數:音符、播放時間和聲音的大小。例如下面的代碼播放了一個C4的音調,C4音調是由ToneControl類的常量C4指定的。 7.5.4 播放歌曲 使用MMAPI播放歌曲很簡單,主要是用Player的createPlayer構造方法,只要指定網絡地址,Player就會自動的下載歌曲并播放,具體構造方法如下。 public static Player createPlayer(String locator)throws IOException,MediaException 為了很好地控制歌曲的播放狀態,需要MIDlet程序實現一個PlayerListener接口,同時實現該接口中的playerUpdate()方法。 public void playerUpdate(Player player,String event,Object eventDate) 在playerUpdate方法里可以判斷播放的狀態,例如判斷播放是否結束可以用PlayerListener.END_OF_MEDIA進行判斷。 public void playerUpdate(Player player,String event,Object eventDate){ if(event == PlayerListener.END_OF_MEDIA){ …… } } 為了提高播放效率,又不影響其他程序的運行,可以使用線程,只要實現Runnable接口即可。 如果想在播放過程中,對播放進行暫;蛘咄V沟炔僮,都要對播放器的各種狀態進行判斷, 7.5.5 控制音量 音量的控制可以使用VolumeControl控件接口,它允許設置音量的變化范圍是從0~100,其中0表示靜音。 VolumeControl控件接口的使用很簡單,使用getLevel()方法得到當前的音量級別,也可以使用setLevel()方法設置音量級別,靜音使用setMute()方法來設置,要判斷是否靜音可以使用isMute()方法。 具體獲得一個VolumeControl控件的代碼如下: VolumeControl volume = (VolumeControl) player.getControl("VolumeControl"); volume.setLevel(VOLUME_LEVEL); 7.6 綜合示例:飛機碰撞 本例子是在背景為星空的屏幕上顯示兩架飛機,通過手機的鍵盤可以控制飛機的相對位置,當兩架飛機碰撞的時候可以顯示爆炸。 同時播放爆炸的聲音。本例用到了前面學習過的動畫和音效開發的知識。由于飛機的碰撞除了背景還有兩個飛機和一個爆炸圖層,所以使用了一個LayerManager類來管理多個圖層,這樣能很方便的使用碰撞方法。 碰撞的檢測很簡單,可以使用collidesWith()方法,如果碰撞該方法返回true。 Sprite plane1,plane2; //使用像素碰撞檢測,如果碰撞該方法返回true Boolean collide = plane1. collidesWith(plane2); …… 當發生碰撞時,把兩個飛機設置為不可見,把爆炸的圖片顯示出來,這樣就構成了爆炸的場景。 為了具有聲音效果,要有一個用來播放音樂的類PlayMusic,在這個類里完成讀取和播放音樂文件的功能。 7.7 小 結 本章的內容很多,主要介紹了PNG格式圖像的由來,詳細介紹了PNG格式圖像的特性和壓縮處理。 針對手機的特點,詳細的給讀者介紹了如何在手機游戲中使用PNG格式圖像,由于游戲菜單是游戲的一個必須部分,最后使用范例介紹了游戲菜單的制作。 及在J2ME中如何實現動畫,由于在J2ME中實現動畫要涉及多線程技術,所以詳細介紹了Java中的線程技術,雙緩存技術以及圖片的裁剪技術,讓讀者掌握什么是線程及怎樣使用多線程實現動畫。 最后提供了一個播放動畫程序框架。讓讀者對實現動畫有一個完整的概念和理解。在最后介紹了手機音效的開發,介紹了如何播放簡單音調和歌曲及音量的控制。

推薦PPT

PPT分類Classification

Copyright:2009-2015 rsdown.cn Corporation,All Rights Reserved 紅軟PPT免費下載網版權所有

粵ICP備14102101號

湖北十一选五走势图app下载 湖南体彩赛车今日开奖 3月15日股票推荐 湖南快乐十分开奖图表下载 福建体育彩31选7中 广西快乐十分平台系统出租 福彩p62开奖号 北京赛车双面盘 青海体彩十一选五走势图快三 江苏快三app最新版 彩神大发快三