基于应用型本科动画专业游戏设计方向
“专业概论”课程的新教学方法研究
陈光宇
沈阳工学院
艺术与传媒学院
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、结课目标
使学生在全面、系统地接触游戏设计专业课程之初,获得全流程游戏实体制作体验,为后续专业研究打下有利基础。