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