
[摘要]Flash游戲不僅是當今最流行的游戲類別之一,它也正隨著硬件技術的不斷發展逐漸成為手機游戲的主流產品。為了滿足IT公司對當前緊缺的Flash游戲設計師這一新型職位的需求,我打破傳統Flash課程“講解軟件功能,練習基本應用”的教學模式,取而代之地實施以“Flash游戲開發激發學生動畫創意與程序設計的能力培養”項目教學模式,有效地提高了畢業生從業率。
[關鍵詞]Flash游戲 職業技能 程序設計
一、flash游戲現狀概述
flash游戲是一種新興起的游戲形式,因游戲簡單,操作方便,綠色,無需安裝,文件體積小、傳播快、畫面美觀等優點正漸漸被廣大網友喜愛。flash游戲又叫flash小游戲,基于flash游戲矢量圖的優勢,主要應用于一些益智、動作、體育、棋牌、休閑等趣味化的、小型的游戲之上。
因為flash cs3和actionscript 3.0的迅速發展,近年來,許多年輕人投身其中,并在整個flash行業中發揮重要作用。Flash player占據了90%互聯網用戶的瀏覽器,網頁游戲將會向手機WAP和手機客戶端圖形網游(j2me)方式聯合發展,flash所制作的產品將有可能在電視、手機、掌上電腦,甚至其他智能家用電器上應用,具有跨平臺的特點,不會單單停留在網頁表現形式上,所以發展空間還十分巨大,前途不可估量。
二、趨向flash課程項目設計與開發的游戲職業技能鍛煉
《平面動畫設計與制作(Flash)》課程是中職計算機多媒體技術專業和計算機應用技術專業的職業核心技能課程。我在教授這門課程時,以工作過程為導向,根據廣州地區對平面動畫高技能人才的能力要求,針對中職學生的認知特點,形成從簡單到復雜的系統化教學項目,充分體現flash課程教學的職業性、實踐性和開放性。
本課程以廣州地區對flash游戲高技能人才的能力需求為導向,針對中職學生的認知特點,設計6個學習情境對應于廣州地區Flash平面動畫技術的6大應用方向。每個學習情境都以企業典型產品項目或學生、教師創新項目為載體。每個項目采用以學生為中心、基于工作過程的項目驅動式教學方法,項目蘊含的核心技能用若干生動、直觀的案例進行導人。校企合作構建循環螺旋上升式實訓體系,通過“核心技能實訓”、“仿真項目實訓”、“訂單項目實訓”和“頂崗實訓”四個實訓環節,讓學生在循環進行的“假題假做”、“假題真做”和“真題真做”過程中培養平面動畫設計與制作的綜合職業技能和職業素質。
具體教學實施:
1.采用歷屆學生或教師的創新項目為載體講解游戲開發;
2.采用生動直觀的案例導人工作項目蘊含的核心技能,激發學生學習興趣,短期內催生學生的成就感;
3.項目采用“項目效果一知識講授一游戲設計一操作演示一學生操作一技能拓展一總結考核”七步驟教學過程;
4.為了強化學生的獨立工作能力,從游戲設計階段開始,由學生獨立自主進行,直到項目完成后由學生將作品上傳到課程網站上展示動畫效果,并由教師和其他同學進行評分。
三、Flash“飛機射擊游戲”項目所蘊含的職業能力目標剖析
通過教師創設的Flash“飛機射擊游戲”項目教學實施,引導學生們確立“flash游戲制作基礎;flash游戲的場景制作;flash游戲的背景制作;flash游戲的界面元素制作;flash游戲組件的控制與調試;flash游戲的實現與測試”等職業能力目標。
第一步:飛機射擊游戲的構思
1.采用帶流星效果的閃電夜空作為游戲的背景。
2.游戲情節和規則構思如下:游戲中有一架可以供玩家控制的飛機(下面簡稱為“主飛機”),有源源不斷地攻擊主飛機的物體,分別是:灰色的石頭和黃色的石頭。灰色的石頭是垂直下降式攻擊,黃色的石頭是跟蹤式攻擊。主飛機能夠發射子彈和炸彈射擊攻擊過來的石頭,打中一個石頭得10分,打中越多所得分數就越高,屏幕的左上角顯示目前的得分。子彈和炸彈是有限的,會消耗完畢,游戲中主飛機有可以補充子彈和炸彈的方式。屏幕的左下角是當前子彈的數量顯示,右下角是當前炸彈的數量顯示。一旦攻擊物體打中主飛機,游戲就算失敗??梢酝ㄟ^按鍵重新開始游戲。
3.玩家通過鼠標來控制主飛機的移動,按鼠標左鍵發射子彈,按空格鍵發射炸彈,按R鍵重新開始游戲。
第二步:飛機射擊游戲素材的編輯和制作
1.圖形圖像的準備
這里的圖形一方面指flash中應用很廣的矢量圖,另一方面也指一些外部的位圖文件,兩者可以進行互補,這是游戲中最基本的素材。雖然flash提供了豐富的繪圖和造型的工具,如貝塞耳曲線工具,可以在flash中完成絕大多數的圖形繪制工作,但是flash中只能繪制矢量圖形,如果需要用到一些位圖或者用flash很難繪制的圖形時,就需要使用外部的素材了。
取得這些素材一般有下面幾種方法:
a.自己動手制作:可以使用一些專業的圖形設計軟件來制作自己需要的素材,比如Photoshop、Painter、Coreldraw等都是很不錯的選擇,另外可能需要一些3D的造型,這時候像3D Studio Max、Poser、Moho和Bryce等都是很方便的工具,完全可以利用這些工具為flash服務。
b.多媒體光盤
c.網絡資源
本游戲的圖片素材包括:主飛機圖片、灰色和黃色石頭的圖片、閃電夜空背景圖片、物體爆炸效果的靜態圖組。
本游戲的動畫素材包括:移動的閃電夜空動畫、移動的流星動畫、發射子彈動畫、發射炸彈和炸彈爆炸動畫、物體爆炸動畫。
2.音樂及音效
音樂在flash游戲中是非常重要的一種元素,大家都希望自己的游戲能夠有聲有色、絢麗多彩,給游戲加入適當的音效,可以為整個游戲增色不少,前面的圖形圖像我們已經知道如何去獲取了,同樣,通過網上搜集、多媒體光盤、使用常用的音效編輯器(如:Cool Edit等),可以得到我們需要的音效。
本游戲的聲音素材包括:發射子彈的聲音、發射炸彈的聲音、炸彈爆炸的聲音、子彈和炸彈打中石頭的聲音、石頭打中主飛機的聲音、主飛機成功獲取到子彈和炸彈的聲音。
第三步:飛機射擊游戲的程序設計
游戲中有很多的物體都需要編寫程序來控制,如上面[圖一],Flash采用分層式的設計。按照物體的關系進行分層,把相互關聯的物體放在同一層,把不同行為的物體放在不同的層。比如:主飛機會發射子彈和炸彈,邏輯上它們是一個整體,就把這些相關聯的影片放在同一層;而黃色石頭和灰色石頭雖然都是攻擊性物體,但它們攻擊的方式不同,一個是跟蹤式下降攻擊,一個是垂直下降攻擊,因此把它們放在不同的層。通過分層,能夠做到條理清晰,便于游戲程序代碼的編寫和修改。從上面[圖一],我們注意到,Flash游戲設計一般只需要三幀:
第一幀:一般是空白幀,定義變量和數組,同時對變量和數組做一些初始化的設置;
第二幀:放置物體,進行核心程序代碼的編寫;
第三幀:跳轉代碼gotoAndPlay(2)(只要在其中任意一層寫就可以,[圖一]中是在倒數第二層),讓程序循環執行第二幀的核心程序。
這款飛機射擊游戲有兩個程序設計的難點,下面對這兩個難點進行詳細分析。
1.黃色石頭跟蹤式下降攻擊的程序設計
實現跟蹤式程序設計,主要運用到數學里的直線方程原理。因為兩點確定一條直線,當攻擊物體和被攻擊物體的位置其中任何一個發生改變的時候,經過這兩個物體的直線也會發生改變。我們可以通過這兩個物體當前的_x和_y屬性,來計算出這個改變后的直線方程,重新確定攻擊物體的攻擊方向,即得出新的A._Y、A._X值。假定:攻擊物體為A,被攻擊的物體為B,實現代碼如下:
OLDAX=A._x;//變量OLDAX、OLDAY保存攻擊物體移動前的位置
OLDAY=A._Y;
A._Y:A_Y+OFFY;//攻擊物體向下移動OFFY個位移
//根據直線方程原理
//OLDX-B.X OLDX-A.x
OLDY-B.v OLDY-A.Y
//轉換后得到A._X的值,其中OLDY-B._Y要不等于零,寫成程序代碼如下
IF(oLDY-B._Y!=0)
{A._x=OLDX-(OLDX-B._X)*(OLDY-A._X)/(OLDY-B._Y);1
通過直線方程,重新確定的A._Y、A._X都已算出。
2.判斷兩個物體是否接觸的程序設計
判斷兩個物體是否接觸的程序設計,在游戲中多處用到,例如:判斷子彈或炸彈是否打中攻擊過來的石頭;攻擊過來的石頭是否打中主飛機;主飛機是否成功補充子彈或炸彈等。
一個物體所占的范圍,一般由四個位置來確定,水平方向:最左邊位置、最右邊位置;垂直方向:最上邊位置、最下邊位置。根據各個物體中心點的不同,通過物體的_X、_Y、_width、_height這四個屬性進行組合計算,可以得到上面的四個位置,通過比較兩個物體的這四個位置來判斷物體是否接觸。假定:兩個物體A和B的中心坐標_X、_Y,都在他們的中心位置,那么:
A_Left=A._X-A._width/2 //A物體最左邊的位置
A_fight=A._X+A._width/2 //A物體最右邊的位置
A_up=A._Y-A._height/2 //A物體最上邊的位置
A_down=A._Y+A._height/2 //A物體最下邊的位置
B_Left=B._X-B._width/2 //B物體最左邊的位置
B_right=B._X+B.width/2 //B物體最右邊的位置
B_up=B._Y-B._Height/2 //B物體最上邊的位置
B_down=B._Y+B._height/2 //B物體最下邊的位置
//判斷兩個物體是否接觸到條件語句如下:
//水平方向比較(A_Left<=B_right)(A_right>=B_Left)
//垂直方向比較(A_up<=B_down)(A_down>=B_up)
//要同時滿足水平方向和垂直方向的比較,得出兩物體是否相接觸的條件
(A_Left<=B_right)(A_right>=B_Left)A_up<=B_down)(A_down>=B_up)
四、總結
學生往往一聽到游戲設計,就覺得很神秘和深奧。通過項目實例的實現,他們能了解到Flash從編輯制作動畫到程序設計等方面對游戲開發強大而方便的支持。完成幾個游戲設計的整個過程之后,學生就不會覺得開發Flash游戲會有多么困難。一般來說,一款Flash游戲的開發和設計需要經歷以下三個步驟:
第一步:游戲情節和規則的構思;游戲場景的構思;游戲操作的構思。
第二步:游戲圖片素材編輯和制作;游戲聲音素材編輯和制作;游戲動畫素材編輯和制作。
第三步:游戲的程序設計。
第三步是最難也是最重要的一步,編寫程序,才能控制準備好的各種素材,實現我們對游戲的構思。
Flash提供了對程序設計的強大支持。游戲設計經常會用到的編程知識主要包括以下內容:變量的定義和使用、數組的定義和使用、條件語句、循環語句、分支語句,以及鼠標事件、鍵盤事件、影片類屬性等,對于任何一款Flash游戲。里面的大部分功能都能通過靈活地運用和組合上面的知識得以實現。
題后話:
學習Flash游戲設計不要陷入“我會了,所以我不用做了”的思維。知識不能僅僅是積累,而是要不斷使用。除非使用,否則很難真正知道和理解它們。讓學生用所學的知識制作一個小的Demo,認真去完成老師布置的每一次作業,盡量玩更多的Flash游戲,從其他Flash游戲中獲得和觸發更多的靈感,可以幫助他們把自己的游戲做得更好一些。