作品名稱:專業概論
學校名稱:沈陽工學院
參賽隊伍:基于應用型本科動畫專業游戲設計方向專業概論課程的新教學方法研究
參賽老師:陳光宇
基于應用型本科動畫專業游戲設計方向
“專業概論”課程的新教學方法研究
陳光宇
沈陽工學院
藝術與傳媒學院
1、課程創新
2、學情分析
3、教學目標
4、教學內容
5、教學方法
6、評價方式
7、結課目標
1、課程創新
1.1、創新點:
游戲設計方向隸屬于動畫專業,且“專業概論”課程為一年級學生對于專業認知的導入性課程,對于后續專業學習具有決定性作用。本次研究將該課程原有的理論講授與案例研究相結合的教學方法,轉變為以游戲制作、實踐體驗為重心的教學形式。
1.2、課程概況:
理論課、必修課、32學時
2、學情分析
本課程針對動畫專業,游戲設計方向新生。學生普遍具備較強的美術基礎,但對程序、引擎等游戲后期制作技術的認知度為零。學生對于游戲產業有一定了解,但沒有獨立制作游戲技能和制作流程體驗。
3、教學目標
3.1、了解游戲行業及產業發展趨向
游戲制作崗位逐現多元化、游戲產品實現多平臺運行、移動端游戲產品逐漸成為游戲市場發展主導
3.2、熟悉游戲產品制作流程
游戲策劃、美術設計、程序引擎、運營推廣
3.3、掌握Unity游戲引擎制作技術
Unity5基礎技術操作與實踐
3.4、每名學生獨立完成一款交互游戲制作
安卓系統平臺游戲制作——砸磚塊
4、教學內容
4.1、游戲發展情況與趨勢 (8學時)
4.1.1、游戲發展概述
最早有記錄的電子游戲誕生于1952年,為井字棋游戲(Tic-Tac-Toe),運行于真空管計算機上。電子游戲在1970年代開始以一種商業娛樂媒體被引入,成為1970年代末日本、美國和歐洲一個重要娛樂工業的基礎。在1983年美國游戲業蕭條事件及繼而重生后的兩年,電子游戲工業經歷了超過兩個年代的增長,成為了達100億美金的工業,并與電影業競爭成為世界上最獲利的娛樂產業。電子游戲早期是以主機運算、圖形性能、以及主要儲存媒介為世代區分標準。平均大約一個世代歷時五至六年。世代之間的游戲機性能差別很大。
4.1.2、游戲發展情況
電子游戲專用機產生在70年代初。1971年,一個還在MIT(麻省理工學院)學習的叫Nolan Bushnell的家伙設計了世界上第一個業務用游戲機,這個街機游戲的名字叫《電腦空間》(Computer Space)。《電腦空間》的主題是兩個玩家各自控制一艘圍繞著具有強大引力的星球的太空戰艦向對方發射導彈進行攻擊。兩艘戰艦在戰斗的同時還必須注意克服引力,無論是被對方的導彈擊中還是沒有成功擺脫引力,飛船都會墜毀。這臺業務機用一臺黑白電視機作為顯示屏,用一個控制柄作為操縱器,擺在一家彈子房里。不過很可惜,這臺祖母業務機遭到了慘痛失敗,失敗的原因是當時的玩家認為這個游戲太過復雜,和當時美國流行的彈子球相比,這個游戲確實復雜了一點,不過我還是很懷疑當年美國玩家的素質。至此,歷史上第一臺業務用機以失敗結束了它的命運。制作者Nolan Bushnell承認失敗,但他仍然相信電子游戲的發展前景。
他在《電腦空間》推出的次年,和他的朋友Ted Dabney用500美金注冊成立了自己的公司,這個公司就是電子游戲的始祖——Atari(雅達利)。成立之初Atari的業務重點仍然放在了街機上。事實上,他們獲得了成功,世界上第一臺被接受的業務用機就是Atari推出的以乒乓球為題材的游戲Pong,據說當年Atari的工程師把這臺機器放在加利福尼亞Sunnyvale市的一家彈子房內,兩天之后彈子房的老板就找上門來說機器出了故障,無論如何不能開始游戲了,雅達利的人前去檢修的時候,驚訝地發現了造成故障的原因——玩家投入的游戲幣把這臺機器塞滿了。無論從何種意義上說,《電腦空間》都意味著電子游戲產業的開始,因為它是第一臺專門的游戲機,是第一個讓大眾接觸電子游戲的工具。而之后Pong的成功,標志著電子游戲開始作為一種娛樂手段,被大眾認可并接受。
4.1.3、游戲運營平臺
狹義的電子游戲是一種軟件,因此必須有相應的硬件設備,兩者是一種模組化(modulized)的關系。例如魂斗羅(P1、2、3;V1)、超級瑪麗(P4、5、6;V2)……一代所對應的游戲平臺就是紅白機(FC)(P7)。
一般而言,游戲的平臺各有市場,因此不宜以相同的標準來比較,即使它們之間的游戲常常相互移植。
A、家用主機
家用主機(Console)是最常見的游戲平臺。雅達利的雅達利2600是公認的第一個最成功的商業化的專為游戲所設計的平臺,它確定了:一個主機,分離的控制器,可更換游戲節目卡帶。此后的任天堂的FC皆是此架構的延續。初期的雅達利2600畫面相當簡陋,主機內存也不過4k,而此類平臺發展沿革至今,運算效能已經遠遠超過當初,向著更真實化的畫面發展。而且在最新的XBOX360與PS3上其已經不再是單純的游戲主機,而是希望成為每一個家庭的客廳的多媒體娛樂中心,包括游戲,視頻,圖片,音樂,網絡等等。
常見的家用主機:FamiCom(即紅白機)、Super Famicom、Sega Mega Drive、PC-Engine、Nintendo64、SEGA Saturn(P8)、Sony的Play Station(P9)系列、Dream Cast(P10)、Game Cube和Microsoft的XBOX(P11)系列。
B、掌上主機
掌上主機(Handheld)是1980年代后期以后,個人使用的行動化(mobilization)電子元件成為一種潮流,例如移動電話,而新形成的一種消費模式,當然各游戲廠商也開發了可以攜帶的游戲主機。最初的掌上主機叫做GAME&WATCH,他的軟件是完全燒死在機板上的ROM,無法替換游戲。而第一個可以替換游戲的掌機是在1979年,但第一個最成功的商業化掌上主機仍然是1989年由任天堂開發上市的初代Game Boy(P12、13)。
常見的掌上主機:Game Boy系列、Play Station Portable(又稱PSP)(P14)、Nintendo DS。
C、街機
街機(Arcade)即是流行于街頭的商用游戲機,以此名稱別于個人電腦和家用游戲機。
著名的機版:CapcomCPS-1與CPS-2(P15;V3、4、5、6)、SNKNeo-Geo、Sega的Model系列和Naomi系列。另外制作機版的公司還有Namco、ATARI、Konami、Irem、Midway等等。
D、個人電腦
個人電腦(Personal Computer)。關于個人電腦游戲平臺,詳見下。
4.1.4、游戲基本分類
電子游戲傳統上按題材分為:(按門戶網站單機熱度排行)
角色扮演游戲,RPG (Role Playing Game)
上古卷軸5:天際(P21;V8、9)
游戲制作:Bethesda
游戲發行:Bethesda
游戲平臺:PC/Xbox360/PS3/NS
上市時間:2011.11.11(PC
動作角色扮演游戲,ARPG (Action RPG)
尼爾:機械紀元(P20;V7)
游戲制作:Square Enix/白金工作室
游戲發行:Square Enix
游戲平臺:PC/PS4
上市時間:2017.03.17(PC)
冒險游戲,AVG (Adventure Game)
無人深空(P22;V10、11)
游戲制作:Hello Games
游戲發行:Hello Games
游戲平臺:PC/PS4
上市時間:2016.08.12
動作游戲,ACT (Action Game)
看門狗2(P23;V12、13)
游戲制作:Ubisoft
游戲發行:Ubisoft
游戲平臺:PC/XboxOne/PS4
上市時間:2016.11.29(PC)
第一人稱射擊游戲,FPS (First Person Shooting)
戰地1(P24;V14、15)
游戲制作:EA DICE
游戲發行:EA
游戲平臺:PC/XboxOne/PS4
上市時間:2016.10.21
格斗游戲,FTG (Fighting Game)
拳皇2002:終極對決(P25;V16)
游戲制作:SNK Playmore
游戲發行:SNK Playmore
游戲平臺:PC
上市時間:2015.02.27
射擊游戲,STG (Shooting Game)
戰爭機器4(P26;V17、18)
游戲制作:The Coalition
游戲發行:微軟
游戲平臺:PC/XboxOne
上市時間:2016.10.11
即時戰略游戲,RTS(Real-Time Strategy)
家園:卡拉克沙漠(P27;V19、20)
游戲制作:Blackbird Interactive
游戲發行:Gearbox Software
游戲平臺:PC
上市時間:2016.01.20
賽車游戲,RAC (RACe Game)
塵埃4(P28;V21、22)
游戲制作:Codemasters
游戲發行:Codemasters
游戲平臺:PC/PS4/Xbox One
上市時間:2017.06.09
模擬/戰略游戲,SLG (SimuLation Game)
魔獸爭霸3:冰封王座(P29;V23)
游戲制作:Blizzard
游戲發行:Blizzard
游戲平臺:PC
上市時間:2003.07.01(PC)
體育游戲,SPT (SPorT)
NBA 2K17(P30;V24、25)
游戲制作:2K Sports
游戲發行:2K Games
游戲平臺:PC/XboxOne/PS4
上市時間:2016.09.20
4.1.5、游戲行業發展趨勢
第十五屆中國國際數碼互動娛樂展覽會(ChinaJoy游戲展)今日在上海開幕,許多游戲制作公司表示,針對端游、頁游和手游,在不同的平臺上會有不同的產品,這樣更能適應這一平臺,但是多平臺打通將是游戲行業一大趨勢。 另外,移動端游戲產品逐漸成為游戲市場發展主導。
4.2、Unity制作——砸磚塊(一) (8學時)
今天的目標是利用Unity制作一個“砸磚塊”的游戲。
說起“砸磚塊”,很可能就暴露了年齡。這個游戲大概是上世紀90年代末風靡大江南北各種電腦一條街的。堪稱經典。
畫面一般都是這樣的:
游戲玩法很簡單,大概玩法就是一個小球彈來彈去,你控制下邊的平臺左右移動接住小球,讓它向上反彈。上方的磚塊被小球擊中會被摧毀。摧毀所有磚塊取得勝利,如果沒有接住小球就會失敗。
現在從零開始,每天花一點點時間,簡單的用Unity實現一個類似的小游戲Demo。
首先需要進行策劃,請看策劃案:
球能彈,能來回彈,撞到墻反彈,撞到屏幕上邊也反彈,會從屏幕下邊掉下去,掉下去就輸了。
板子能左右移動。
磚塊被撞到后會消失,并且得分。撞沒所有磚塊游戲就勝利。
勝利和失敗后都可以重來。
有了完善的設計,下一步可以開始開發了。
打開Unity,新建一個工程,選好文件夾,起個工程名。因為要直接用Unity自帶的Cube作為磚塊,并且想要有一些3D的效果,所以選擇3D工程。
創建工程后進入新建的場景。
在場景中要設置一些節點,用來部署腳本。
首先在Hierarchy中空白區域右鍵打開菜單,選擇“Create Empty”建立一個空白的GameObject,將其改名為GameMain,作為游戲的根節點。
選中GameMain,右鍵,選擇“Create Empty”,在GameMain中再新建Scene和UI兩個節點
Scene用來放場景中的物件,UI當然是用來放UI
保存場景,名稱為 Main
先在在Scene中建立一些節點和放上一些物件
SquareArray 節點,在這個節點里放Cube作為磚塊。(Hierarchy中,右鍵點擊SquareArray在3D Object找Cube)
一個一個右鍵添加Cube會很累,Ctrl+D可以快速的復制
隨意的擺放很多個,但要注意Position 的Z保持0
CollisionObject節點,將來用這個處理彈來彈去的球,在里邊建立一個Sphere(Hierarchy中,右鍵點擊CollisionObject在3D Object找)
Walls 節點,在里邊放一些Cube作為墻(Hierarchy中,右鍵點擊Walls 在3D Object找Cube)
左邊↑
右邊↑
上邊↑
PlayPanel節點,用來處理下邊的臺子或者叫板子,都行,不用糾結。在PlayPanel中建立一個Cube(已經說很多遍了,自行領會)
把Cube弄寬一點,這樣符合劇本。
擺完以后大概差不多是這個樣子
來對比下草圖,100%還原有沒有。
至此,今天的計劃圓滿完成。
貪多嚼不爛。
下一期開始講解布置UI,在那之前各位可以幻想一下游戲實際的運行畫面,憧憬一下未來。
4.3、Unity制作——砸磚塊(二) (8學時)
上一節說到了布置完整個Scene節點下的結構,接下來需要布置UI。
為了方便,直接使用Unity自帶的UI,在Hierarchy窗口中右鍵點擊GameMain/UI節點,在彈出菜單中找到子菜單UI,在里邊選擇Canvas
Canvas 在這里翻譯應該是畫布。意思就是設置一個畫布,UI都畫在這里邊。
注意Canvas這個地方和別的節點不一樣,這種Rect Transform是專門給UI排版用的,在Canvas下直接新建的子節點都是這種Rect Transform,當這個區域是灰色狀態的時候,這個節點的坐標和它的上一級沒有任何關系
另外在建立Canvas的時候系統會配套生成一個EventSystem節點,翻譯過來叫 事件系統,上邊還有好幾個腳本,這個不能刪除,沒有它界面就不好使了。你問為啥?沒有點擊事件了唄。
在這個Canvas節點下再建立新的空節點(提醒一下Create Empty),這幾個節點對應游戲的幾種狀態。
這幾種狀態應該大概是這種關系
新建Init,Playing,Lose,Win這幾個節點。將這幾個節點的Rect Transform中的參數改成下圖那個樣子
完善Init子節點用于制作游戲等待開始的界面
在Init 節點內添加一個Button(右鍵點擊Hierarchy窗口內的GameMain/UI/Canvas/Init節點,在UI子菜單下找到Button)
將Button改名為ButtonStart,用作開始游戲的按鈕,放到個合適的位置
將ButtonStart下Text節點上的Text腳本中的Text的內容從Button改成Start
上邊這些步驟完成后界面應該是這個樣子。
完善Playing節點,這個是游戲進行時候的界面,要有計分
在這個節點下添加Text(右鍵點擊Hierarchy窗口內的GameMain/UI/Canvas/Playing節點,在UI子菜單下找到Text),將Text顯示的內容改成 Score,用來作為標示。
在添加一個Text改名為TextScore用來動態顯示分數
將兩個Test擺成下邊這樣,不遮擋中央的游戲場景。
最后制作Lose 和 Win 的界面,計劃將Win和Lose的格式做成一樣的,只是勝利和失敗的文字不一樣,一個寫“You win”另一個寫“Game over”,顏色做一些區別。以Lose界面為例。
添加一個Text,用來填寫失敗文字“Game over”
再添加一個Text 改名為 TextInfo,用來顯示失敗的信息,比如得分之類的。
添加一個按鈕,用來再次開始游戲。(你完全可以從Init節點下邊拷貝一個)
自己根據喜好再排個版
我的是這樣的
Win界面和Lose類似
改改文字,換換顏色而已。
至此要用到的幾個界面已經準備好了,下一篇將要開始講解各種組件的使用和代碼的編寫。很簡單哦,這個游戲的開發已經完成一半了。
4.4、Unity制作——砸磚塊(三) (8學時)
在前兩節,已經準備好了游戲的場景和游戲的UI,現在就開始通過編寫代碼和添加一些組件,讓這些物件動起來,實現游戲的功能。
首先,先讓CollisionObject動起來
將CollisionObject 的Position 設為 0,10,0
點擊Inspector中的Add Component,在彈出的菜單中點Physics,然后點Rigidbody
這樣就在CollisionObject上添加了物理剛體組件,使得這個物體可以模擬物理運動了。
添加Rigidbody組件后,將Freeze Position 中 Z勾選,拒絕Z軸方向上的物理運動
現在運行游戲。
可以看到CollisionObject在默認重力的作用下下落,當撞到下邊的PlayPanel時停下。因為砸磚塊游戲里邊球是彈來彈去的。沒有彈力是不行的。
現在就需要給CollisionObject添加一種質地讓它能彈起來。
在Project新建一個Physic Material(Project中右鍵,Create 中查找),這叫物理材質,幫助你設計一個物體的物理性質。
將Physic Material 改名方便以后查找,將Physic Material 的屬性改成下圖這樣
其中Dynamic Friction =0 沒有動態摩擦力
其中Static Friction =0 沒有靜態摩擦力
Bounciness = 1 最大的反彈力
Friction Combine = Minimum 依照接觸雙方最小摩擦力計算受力
Bounce Combine = Maximum 依照接觸雙方最大彈性計算受力
找到CollisionObject 下的Sphere,將剛才新建的物理材質指定為Sphere Collider組件的Material
再次運行游戲,可以看見CollisionObject在撞到PlayPanel后會反彈。
下一步讓PlayPanel可以跟隨控制移動。先在PlayPanel上建立一個腳本,也叫PlayPanel
打開PlayPanel腳本,輸入如下代碼。
using UnityEngine;
public class PlayPanel : MonoBehaviour
{
float moveRange = 8f;
// Update is called once per frame
void Update ()
{
//計算 PlayPanel 在屏幕上的移動邊界
float xRight = Camera.main.WorldToScreenPoint(Vector3.right * moveRange * 0.5f).x;
float xLeft = Camera.main.WorldToScreenPoint(Vector3.left * moveRange * 0.5f).x;
//計算 PlayPanel在屏幕上的移動范圍和鼠標指針位置計算 PlayPanel在場景中實際的位置
float xMove = (Input.mousePosition.x - Screen.width / 2f) / (xRight - xLeft) * moveRange;
xMove = Mathf.Max(moveRange*-0.5f, xMove);
xMove = Mathf.Min(moveRange * 0.5f, xMove);
transform.localPosition = new Vector3(xMove,0,0);
}
}
輸入后保存,運行游戲。可以看見下邊的平板跟隨著鼠標在一定范圍內運動。
現在CollisionObject雖然會彈跳,但是很難用平板來控制方向。
下面給CollisionObject添加控制腳本,來實現功能。
CollisionObject 有兩個功能,一個是在撞到PlayPanel后會以一定的角度彈出,另一個是撞到磚塊會將磚塊擊毀。
打開CollisionObject腳本,代碼添加如下。
using UnityEngine;
/// <summary>
/// 用于自由碰撞的物體
/// </summary>
public class CollisionObject : MonoBehaviour {
Rigidbody mRigidbody;
float speed = 20;
private void Awake()
{
//在腳本的最初時刻自動獲取自身剛體
mRigidbody = GetComponent<Rigidbody>();
}
private void OnDisable() //當腳本被禁用時休眠剛體 這種用暫停功能
{
mRigidbody.Sleep();
}
private void OnEnable() //當腳本激活時喚醒剛體
{
mRigidbody.WakeUp();
mRigidbody.velocity = Vector3.zero;
mRigidbody.angularVelocity = Vector3.zero;
mRigidbody.velocity = (transform.up).normalized * speed; // 初始化初始速度
}
void OnCollisionExit(Collision collision)
{
if (collision.gameObject.tag == "Brick")//如果是磚塊
{
collision.gameObject.SetActive(false); //將磚塊隱藏,表現摧毀。
}
else if (collision.gameObject.tag == "PlayPanel")//如果是底板
{
mRigidbody.velocity = (transform.position - collision.gameObject.transform.position).normalized * speed; //指定自身向指定方向以最大速度飛出。
}
}
}
將PlayPanel 物體的Tag屬性改成PlayPanel,將SquareArray下的那些Cube的Tag屬性改成Brick
Tag中默認是沒有這兩個選項的,通過Add Tag 來添加。
修改完畢后,運行,現在CollisionObject撞到PlayPanel后會加速彈起,并且有一定的角度變化了。
帶有重力的CollisionObject不太好控制,可以關閉Rigidbody剛體組件上的Use Gracity 選項,關閉重力效果。
這一節就到這,簡單的實現了游戲中的運動效果。
5、教學方法
5.1、教學情景設計:
創設問題情境,配合多媒體展示實例,就主要重點、難點等知識點講授的時刻完成情境設計,利用問題激發學生積極探索的欲望,調動學生的積極性,具體需要教師根據學生實際情況完成問題的提設。
5.2、新章節導入:
結合多媒體展示實踐過程、案例,設置問題情境,以討論的方式引出本門課程的主要內容,并漸次引出本次課程的主要內容。
5.3、課堂互動:
講授內容重點、關鍵點時提出問題,完成討論的課堂情境;隨講解內容進行,設置學生主動講解的環節,要求學生首先就實例制作及設計理念完成講述、討論,教師進行小結、糾錯。活躍授課氛圍,變學生為主體,教師完成引導的作用。
6、評價方式
6.1、過程考核
結合學生在每個教學單元中的實踐狀態及完成效果,給予階段性考核評價
6.2、結果考核
依據學生的游戲實體的最終完成結果,由任課教師與合作企業的從業人員共同評審,多角度、全方位地給予綜合考核評價
7、結課目標
使學生在全面、系統地接觸游戲設計專業課程之初,獲得全流程游戲實體制作體驗,為后續專業研究打下有利基礎。