你小时候是否曾在游艺厅酣畅淋漓飞舞锤子暴打从洞口冒出来的地鼠,或是否在诺基亚手机上玩过《贪吃蛇》,或两个好友在一局《俄罗斯方块》中因为小小地失误而懊恼,或是否曾绞尽脑汁地把《推箱子》通关,或是否玩过因为踩到“地雷”而叹息的《扫雷》,是否跟你的父母玩过《跳棋》或者跟你的同座在作业本上画出棋盘在课上偷偷玩《五子棋》?在享受这些游戏带来的愉悦之余,你是否曾有冲动思考过这些游戏是如何制作的?如果有,《游戏开发基础》这门课程,将带你深入理解和开发多款经典的游戏。
本课程借助成熟的Unity游戏引擎,以经典的游戏算法为基础,由Unity价值专家,Unity全球认证讲师张帆主讲:《打地鼠》、《俄罗斯方块》、《翻牌子》、《华容道》、《连连看》、《拼图》、《三消》、《扫雷》、《贪吃蛇》、《推箱子》、《跳棋》和《五子棋》(2020年新增《战疫3D》和《战疫2D》游戏。)等游戏的程序实现思路。通过对这些游戏的讲解,将为你实现游戏创作之梦打开一扇门!
通过对这些实例的讲解与实践,同学们能够了解、掌握基本的游戏算法,同时加深数据结构等基础知识在游戏开发中的应用认识。
同学们在学习完本课程后,能够熟练使用游戏引擎,同时能够灵活运用相关数据结构和相关数学思路自主创作游戏。
***2020年是不平凡的一年,在年初全球爆发了新冠疫情,在此,本门课程专门制作了两款关于疫情的游戏《战疫3D》和《战疫2D》,借此向奋战在抗疫一线的英雄们致敬。
******应同学们的需求,针对美术类或技术美术类,本期加入了美术类的附加课程(包括地形、灯光、模型材质贴图、动画系统、粒子系统、碰撞盒和触发器、物理引擎等等)。
***游戏的社会责任、工程方法-- 游戏作品要平衡经济效益与社会效益,并把社会效益放在首位
游戏开发与社会责任
第00章 课程简介
课程简介
第01章 游戏引擎和Unity--工欲善其事必先利其器
01-游戏引擎简介--工欲善其事必先利其器
02-Unity介绍的安装和使用
03-Unity的游戏逻辑编程思想
07-Unity的关键回调函数
08-使用Unity和Asset Store搭建迷宫
PPT
第一章作业:搭建一个小迷宫
第02章 《打地鼠》游戏制作 -- 可以提升反应能力的好游戏
01-《打地鼠》游戏的介绍
02-《打地鼠》素材的导入与SortingLayer
03-《打地鼠》生成洞口--二维数组和笛卡尔坐标的映射
04-《打地鼠》地鼠的生成--InvokeRepeating函数的妙用,防止循环卡死
05-《打地鼠》打击地鼠碰撞检测,游戏逻辑的核心
06-《打地鼠》计时功能--设计一个计时器
07-《打地鼠》计分功能-- 提升成就感,给玩家加分
08-《打地鼠》游戏结束
09-《打地鼠》修改地鼠出现频率--提升游戏难度,使玩家进入心流
10-《打地鼠》修改图标图案 -- 沉浸感需要好的反馈
11-《打地鼠》添加音效 --让游戏更生动,不仅仅只有画面
12-《打地鼠》重新开始游戏
13-《打地鼠》导出游戏 -- 把自己设计的游戏发布给玩家
14-《打地鼠》本章总结
《打地鼠》-PPT
《打地鼠》-图片资源
《打地鼠》测试
《打地鼠》
第03章 《记忆翻牌》游戏制作 --看看你的记忆力如何
01-《记忆翻牌》游戏课程介绍
02-《记忆翻牌》创建工程以及资源--游戏开发,不仅仅只有程序导入
03-《记忆翻牌》卡牌的位置排列 -- 二维数组,是游戏地图最好的伙伴
04-《记忆翻牌》洗牌功能的实现-- 随机,才能更好玩
05-《记忆翻牌》卡片背面与牌面的显示-- 必不可少的游戏反馈机制
06-《记忆翻牌》卡牌状态设置-- 把现实状态转化为程序代码
07-《记忆翻牌》卡牌的配对-- ID相同,才能通过
08-《记忆翻牌》分数与步数计算 --分数是衡量一个玩家能力的重要手段
09-《记忆翻牌》课程总结
《记忆翻牌》-PPT
《记忆翻牌》-图片资源
第04章 《拼图》游戏制作 -- 训练部分与整体观察能力的游戏作品
01-《拼图》游戏课程介绍
02-《拼图》工程的创建与资源导入
03-《拼图》碎片素材的批量读取--重复劳动尽量交给计算机
04-《拼图》碎片对象的生成-- 对象是对类的实例化(具体化)
05-《拼图》碎片的随机位置放置 -- 随机让游戏看起来更真实
06-《拼图》计算每一个碎片的目标 -- 帮助每个碎片找到家位置
07-《拼图》鼠标拖拽(1)-鼠标左键事件状态-- 简单的一个鼠标点击,实际可以分成几个步骤
07-《拼图》鼠标拖拽(2)-碎片的选取 -- 简单的碰撞检测计算
07-《拼图》鼠标拖拽(3)-移动碎片 -- 鼠标和碎片联动,实质是坐标系的转换和坐标的赋值
07-《拼图》鼠标拖拽(4)-碎片位置与目标位置的匹对 -- 除了欧式距离,计算距离也有多种方式
08-《拼图》游戏胜利判断
09-《拼图》游戏课程总结
《拼图》-PPT
《拼图》-图片资源
第05章 《推箱子》游戏制作--想提升逻辑思维能力,试试推箱子游戏
14-《推箱子》游戏课程总结
《推箱子》-PPT
《推箱子》-图片资源
01-《推箱子》游戏课程介绍
02-《推箱子》资源导入-资源切割与角色动画制作
03-《推箱子》地图生成思路分析 -- 二维数组再次出现
04-《推箱子》地图生成的程序实现与代码重构 --有了顶层设计,编程便不会慌
05-《推箱子》角色移动方向位置上的Tile类型检测与实现
06-《推箱子》角色可移动的情况分析 --看似简单,其实很复杂
07-《推箱子》角色可移动情况的代码框架实现--先写大纲,可以把复杂问题简单化
08-《推箱子》角色在场景中的移动功能
09-《推箱子》打印出地图快照信息 --好的测试工具,是提升效率的手段之一
10-《推箱子》角色移动与地图快照信息的实时更新
11-《推箱子》推动箱子的功能实现
12-《推箱子》移动代码的重构优化--代码是给人看的,顺便让计算机运行
13-《推箱子》游戏胜利条件判断
第06章 《俄罗斯方块》游戏制作--一位科学家开发出来测试电脑性能用的游戏
01-《俄罗斯方块》游戏课程介绍
02- 《俄罗斯方块》资源的导入
03- 《俄罗斯方块》地图的初始化与显示 -- 二维数组无处不在
04- 《俄罗斯方块》地图快照信息显示 --提升开发效率,减少bug,要有合适的测试工具
05- 《俄罗斯方块》方块的初始化 -- 跳出思维定势,表达不太规则的对象,需要点Trick
06- 《俄罗斯方块》方块的随机生成下下一个方格不知道是什么,是本游戏的可玩点
07- 《俄罗斯方块》移动和旋转方块用数据结构能表达的方式表达状态
08- 《俄罗斯方块》方块移动旋转与刷新地图 -- 游戏其实是一个不断擦掉画面重新绘制的过程
09-《俄罗斯方块》 边界判断 -- 有一些技巧可以实现边界检测
10- 《俄罗斯方块》满行消除 -- 一行一行扫,谁是满行谁便被删除
11- 《俄罗斯方块》游戏结束判断
12- 《俄罗斯方块》附加功能-显示下一个方块样式
13-《俄罗斯方块》课程总结
《俄罗斯方块》-图片资源
《俄罗斯方块》-PPT
实验步骤PDF更新--Bug修复
第07章 《华容道》游戏制作--诸葛亮也未必能通关的经典中国游戏
01-《华容道》游戏介绍
02-《华容道》资源的导入
03-《华容道》Chess类的编写-- 不统一的棋子形状如何用程序统一表达出来
04-《华容道》棋盘布局的生成-棋盘布局-- 把不统一的棋子形状放在二维数组中
05-《华容道》移动棋子-选择棋子 -- 判断不统一棋子的位置的计算思路
06-《华容道》移动棋子-移动1x1棋 -- 模糊移动向准确移动转化子
07-《华容道》移动棋子-移动1x2棋 -- 模糊移动向准确移动转化子
08-《华容道》移动棋子-移动2x1棋 -- 模糊移动向准确移动转化子
09-《华容道》移动棋子-移动2x2棋 -- 模糊移动向准确移动转化子
10-《华容道》 游戏胜利判断-- 很难测试
11-《华容道》总结
《华容道》图片资源
《华容道》PPT
《华容道》实验步骤
第08章 《连连看》游戏制作-- 来试试你的眼速和手速
01-《连连看》游戏课程介绍
02-《连连看》资源导入
03-《连连看》Tile类的编写 -- 多个属性和方法的对象,建议集合成一个类
04-《连连看》初始化地图 -- 二维数组再次登场
05-《连连看》选择Tile -- 要选两个相同的Tile才能消除
06-《连连看》连接判断-直连、二连、三连-- 俄罗斯套娃的套路
07-连接线绘制 -- 来点游戏反馈
08-《连连看》课程总结
《连连看》图片资源
《连连看》PPT
《连连看》实验步骤
第09章 《三消》游戏制作--满足人类配对的强迫症
01-《三消》本章内容简介
02-《三消》资源导入与场景设置
03-《三消》Gemstone类的编写
04-《三消》初始化地图数据结构和场景--换个思路,用链表实现二维数组
05-《三消》选择宝石 -- 选择并交换位置
06-《三消》消除宝石 -- 激动人心地满足配对欲望
07-《三消》重新洗牌操作 --卡壳,那就重新洗牌
0800-《三消》课程总结
《三消》图片资源
《三消》PPT
《三消》实验步骤
第10章 《扫雷》游戏制作--需要一些空间想象能力才能玩
01-《扫雷》游戏课程简介
02-《扫雷》资源的导入和场景配置
03-《扫雷》游戏逻辑框架 -- 写程序,建议先写框架
04-《扫雷》初始化场景 -- 仍然是二维数组
05-《扫雷》左右键操作和牌面翻开 -- 发挥递归算法的潜力--
06-《扫雷》游戏结束判断
07-《扫雷》UI控制 -- 让游戏画面更生动
08-《扫雷》课程总结
《扫雷》图片资源
《扫雷》PPT
《扫雷》实验步骤
第11章 《贪吃蛇》游戏制作--关键靠手速
01-《贪吃蛇》游戏课程简介
02-《贪吃蛇》资源导入与场景设置
03-《贪吃蛇》编写Node类
04-《贪吃蛇》初始化场景
05-《贪吃蛇》蛇的数据结构以及移动蛇的算法 -- 换一种实现思路,享受性能飞一般的感觉
06-《贪吃蛇》游戏结束判断
07-《贪吃蛇》课程小结
《贪吃蛇》图片资源
《贪吃蛇》PPT
《贪吃蛇》实验步骤
第12章 《五子棋》游戏制作--全国智力运动会竞技项目之一
01-《五子棋》课程简介
02-《五子棋》资源导入
03-《五子棋》初始化地图快照
04-《五子棋》落子框架的编写
05-《五子棋》落子功能-- 人没有那么精确,但可以借助计算机
06-《五子棋》连子判断--链子判断需要分不同情况
07-《五子棋》课程总结
《五子棋》-PPT
《五子棋》-实验步骤
《五子棋》-图片资源
第13章 《跳棋》游戏制作--最著名的亲子游戏之一
01-《跳棋》-课程简介
02-《跳棋》-资源导入场景配置
03-《跳棋》-初始化场景-1--当一条路走不通,试试换一条(自定义坐标系的构建和向笛卡尔坐标坐标的转换)
03-《跳棋》-初始化场景-2判断临近可走棋格--递归算法的另一个妙用
04-《跳棋》-移动棋子-1 选择棋子
04-《跳棋》-移动棋子-2 判断临近可走棋格
04-《跳棋》-移动棋子-3 移动棋子
04-《跳棋》-移动棋子-4 跳子实现思路
05-《跳棋》-回合功能--回合制,使游戏具备了亲子同玩功能
06-《跳棋》-游戏胜利判断
07-《跳棋》-课程总结
《跳棋》-PPT
《跳棋》-实验步骤
《跳棋》-图片资源
第14章 《战疫3D》游戏制作--向奋战在抗疫前线的英雄致敬
00-《战役3D》序
01-《战疫3D》游戏介绍
0200-《战疫3D》资源导入
0201-《战疫3D》白细胞添加刚体和碰撞盒
0202-《战疫3D》键盘监听功能讲解
0203-《战疫3D》白细胞滚动功能实现
0301-《战疫3D》摄像机跟随
0302-《战疫3D》摄像机推拉
04-《战疫3D》病毒对象创建和旋转
05-《战疫3D》白细胞吞并病毒的功能
06-《战疫3D》UI制作
07-《战疫3D》丰富场景
08-《战疫3D》游戏导出
《战疫3D》PPT
《战疫3D》资源
第15章 《战疫2D》游戏制作
00-《战疫2D》课程介绍
01-《战疫2D》资源导入
0201-《战疫2D》白细胞对象制作
0202-《战疫2D》2D和3D的区别
0301-《战疫2D》白细胞的移动
0302-《战疫2D》白细胞的移动
0401-《战疫2D》摄像机的跟随功能
0402-《战疫2D》摄像机的ZoomInOut功能
0501-《战疫2D》病毒对象的制作放置和旋转
0601-《战疫2D》白细胞吞噬和GUI创建
0701-《战疫2D》游戏美化
0801-《战疫2D》白细胞表情
0900-《战疫2D》界面制作和导出
《战疫2D》PPT
《战疫2D》图片资源
(美术类)附加教程02:模型导入、材质和贴图
模型导入、材质和贴图
(美术类)附加教程03:光源
(美术类)附加教程03:光源
(美术类)附加教程04:碰撞盒和触发器
碰撞盒和触发器
(美术类)附加教程05:物理引擎
(美术类)附加教程05:物理引擎
(美术类)附加教程06:动画系统
(美术类)附加教程06:动画系统

