一刻钟学会:游戏开发基础
一刻钟学会:游戏开发基础
2万+ 人选课
更新日期:2025/05/01
开课时间2025/03/11 - 2025/07/21
课程周期19 周
开课状态开课中
每周学时-
课程简介

   你小时候是否曾在游艺厅酣畅淋漓飞舞锤子暴打从洞口冒出来的地鼠,或是否在诺基亚手机上玩过《贪吃蛇》,或两个好友在一局《俄罗斯方块》中因为小小地失误而懊恼,或是否曾绞尽脑汁地把《推箱子》通关,或是否玩过因为踩到“地雷”而叹息的《扫雷》,是否跟你的父母玩过《跳棋》或者跟你的同座在作业本上画出棋盘在课上偷偷玩《五子棋》?在享受这些游戏带来的愉悦之余,你是否曾有冲动思考过这些游戏是如何制作的?如果有,《游戏开发基础》这门课程,将带你深入理解和开发多款经典的游戏。 

   本课程借助成熟的Unity游戏引擎,以经典的游戏算法为基础,由Unity价值专家,Unity全球认证讲师张帆主讲:《打地鼠》、《俄罗斯方块》、《翻牌子》、《华容道》、《连连看》、《拼图》、《三消》、《扫雷》、《贪吃蛇》、《推箱子》、《跳棋》和《五子棋》(2020年新增《战疫3D》和《战疫2D》游戏。)等游戏的程序实现思路。通过对这些游戏的讲解,将为你实现游戏创作之梦打开一扇门!

    通过对这些实例的讲解与实践,同学们能够了解、掌握基本的游戏算法,同时加深数据结构等基础知识在游戏开发中的应用认识。

    同学们在学习完本课程后,能够熟练使用游戏引擎,同时能够灵活运用相关数据结构和相关数学思路自主创作游戏。

***2020年是不平凡的一年,在年初全球爆发了新冠疫情,在此,本门课程专门制作了两款关于疫情的游戏《战疫3D》和《战疫2D》,借此向奋战在抗疫一线的英雄们致敬。

******应同学们的需求,针对美术类或技术美术类,本期加入了美术类的附加课程(包括地形、灯光、模型材质贴图、动画系统、粒子系统、碰撞盒和触发器、物理引擎等等)

课程大纲
游戏开发与社会责任、工程开发方法
0.1 游戏开发与社会责任
0.2 游戏开发--工程开发方法
0.3 游戏开发--技术选型方法
第01章 游戏引擎和Unity--工欲善其事必先利其器
1.1 课程简介;
1.2 游戏引擎与Unity介绍(为什么要使用游戏引擎?);
1.3 Unity和VSCode的下载安装配置(工欲善其事必先利其器);
1.4 Unity的软件界面和常用快捷键操作(熟练操作工具可以提升效率);
1.5 Unity的Component架构(抓住工具的核心,可以事半功倍);
1.6 Unity中的C#语言(设计开发游戏,需要程序语言的加持);
1.7 Unity的关键回调函数(回调函数,是流行和好用的软件设计架构);
1.8 使用Unity和Asset Store搭建迷宫(新手体验)。
第02章《打地鼠》游戏制作 -- 可以提升反应能力的好游戏
2.1 《打地鼠》游戏介绍;
2.2 《打地鼠》素材导入与SortingLayer;
2.3 《打地鼠》生成洞口--二维数组和笛卡尔坐标的映射;
2.4 《打地鼠》地鼠的生成--InvokeRepeating函数的妙用,防止循环卡死;
2.5 《打地鼠》打击地鼠-- 碰撞检测,游戏逻辑的核心;
2.6 《打地鼠》计时功能--设计一个计时器;
2.7 《打地鼠》计分功能 -- 提升成就感,给玩家加分;
2.8 《打地鼠》游戏结束;
2.9《打地鼠》修改地鼠出现评率---提升游戏难度,使玩家进入心流
2.10 《打地鼠》修改图标图案 -- 沉浸感需要好的反馈;
2.11《打地鼠》重新开始游戏 -- 玩家可以再来一遍;
2.12 《打地鼠》添加音效 --让游戏更生动,不仅仅只有画面;
2.13 《打地鼠》导出游戏 -- 把自己设计的游戏发布给玩家。
2.14 本章小结。
第03章《记忆翻牌》游戏制作 --看看你的记忆力如何
3.1 《记忆翻牌》课程介绍;
3.2 《记忆翻牌》创建工程以及资源导入--游戏开发,不仅仅只有程序;
3.3 《记忆翻牌》卡牌的位置排列 -- 二维数组,是游戏地图最好的伙伴;
3.4 《记忆翻牌》洗牌功能的实现 -- 随机,才能更好玩;
3.5 《记忆翻牌》卡牌背面与牌面的显示-- 必不可少的游戏反馈机制;
3.6 《记忆翻牌》卡牌状态设置 -- 把现实状态转化为程序代码;
3.7 《记忆翻牌》卡牌的配对 -- ID相同,才能通过;
3.8 《记忆翻牌》分数与步数计算 --分数是衡量一个玩家能力的重要手段;
3.9 本章总结。
第04章《拼图》游戏制作 -- 训练部分与整体观察能力的游戏作品
4.1 《拼图》游戏课程介绍;
4.2 《拼图》工程的创建与资源导入;
4.3《拼图》碎片素材的批量读取--重复劳动尽量交给计算机;
4.4 《拼图》碎片对象的生成-- 对象是对类的实例化(具体化);
4.5 《拼图》碎片的随机位置放置 -- 随机让游戏看起来更真实;
4.6《拼图》计算每一个碎片的目标位置 -- 帮助每个碎片找到家;
4.7《拼图》鼠标拖拽(1)-鼠标左键事件状态-- 简单的一个鼠标点击,实际可以分成几个步骤;
4.8《拼图》鼠标拖拽(2)-碎片的选取 -- 简单的碰撞检测计算;
4.9《拼图》鼠标拖拽(3)-移动碎片 -- 鼠标和碎片联动,实质是坐标系的转换和坐标的赋值;
4.10《拼图》鼠标拖拽(4)-碎片位置与目标位置的匹对 -- 除了欧式距离,计算距离也有多种方式;
4.11《拼图》游戏胜利判断;
4.12《拼图》游戏课程总结。
第05章《推箱子》游戏制作
5.1 《推箱子》游戏课程介绍;
5.2 《推箱子》资源导入-资源切割与角色动画制作;
5.3 《推箱子》地图生成思路分析 -- 二维数组再次出现;
5.4 《推箱子》地图生成的程序实现与代码重构 --有了顶层设计,编程便不会慌;
5.5 《推箱子》角色移动方向位置上的Tile类型检测与实现;
5.6 《推箱子》角色可移动的情况分析 --看似简单,其实很复杂;
5.7 《推箱子》角色可移动情况的代码框架实现--先写大纲,可以把复杂问题简单化;
5.8 《推箱子》角色在场景中的移动功能;
5.9 《推箱子》打印出地图快照信息 --好的测试工具,是提升效率的手段之一;
5.10 《推箱子》角色移动与地图快照信息的实时更新;
5.11 《推箱子》推动箱子的功能实现;
5.12 《推箱子》移动代码的重构优化--代码是给人看的,顺便让计算机运行;
5.13 《推箱子》游戏胜利条件判断;
5.14 《推箱子》游戏课程总结
第06章《俄罗斯方块》游戏制作
6.1 《俄罗斯方块》游戏课程介绍;
6.2 《俄罗斯方块》资源的导入;
6.3 《俄罗斯方块》地图的初始化与显示 -- 二维数组无处不在;
6.4 《俄罗斯方块》地图快照信息显示 --提升开发效率,减少bug,要有合适的测试工具;
6.5 《俄罗斯方块》方块的初始化 -- 跳出思维定势,表达不太规则的对象,需要点Trick;
6.6 《俄罗斯方块》方块的随机生成 --下下一个方格不知道是什么,是本游戏的可玩点;
6.7 《俄罗斯方块》移动和旋转方块 -- 用数据结构能表达的方式表达状态;
6.8 《俄罗斯方块》方块移动旋转与刷新地图 -- 游戏其实是一个不断擦掉画面重新绘制的过程;
6.9 《俄罗斯方块》 边界判断 -- 有一些技巧可以实现边界检测;
6.10 《俄罗斯方块》满行消除 -- 一行一行扫,谁是满行谁便被删除;
6.11 《俄罗斯方块》游戏结束判断;
6.12 《俄罗斯方块》附加功能-显示下一个方块样式;
6.13 《俄罗斯方块》课程总结。
第07章《华容道》游戏制作--诸葛亮也未必能通关的经典中国游戏
7.1 《华容道》游戏介绍;
7.2 《华容道》资源的导入;
7.3 《华容道》Chess类的编写-- 不统一的棋子形状如何用程序统一表达出来;
7.4 《华容道》棋盘布局的生成-棋盘布局-- 把不统一的棋子形状放在二维数组中;
7.5 《华容道》移动棋子-选择棋子 -- 判断不统一棋子的位置的计算思路;
7.6 《华容道》移动棋子-移动1x1棋子 -- 模糊移动向准确移动转化;
7.7 《华容道》移动棋子-移动1x2棋子 -- 模糊移动向准确移动转化;
7.8 《华容道》移动棋子-移动2x1棋子 -- 模糊移动向准确移动转化;
7.9 《华容道》移动棋子-移动2x2棋子 -- 模糊移动向准确移动转化;
7.10 《华容道》 游戏胜利判断-- 很难测试;
7.11 《华容道》总结。
第08章 《连连看》游戏制作-- 来试试你的眼速和手速
8.1 《连连看》游戏课程介绍;
8.2 《连连看》资源导入;
8.3 《连连看》Tile类的编写 -- 多个属性和方法的对象,建议集合成一个类;
8.4 《连连看》初始化地图 -- 二维数组再次登场;
8.5 《连连看》选择Tile -- 要选两个相同的Tile才能消除;
8.6 《连连看》连接判断-直连、二连、三连-- 俄罗斯套娃的套路;
8.7 连接线绘制 -- 来点游戏反馈;
8.8 《连连看》课程总结。
第09章 《三消》游戏制作--满足人类配对的强迫症
9.1 《三消》本章内容简介;
9.2 《三消》资源导入与场景设置;
9.3 《三消》Gemstone类的编写;
9.4 《三消》初始化地图数据结构和场景--换个思路,用链表实现二维数组;
9.5 《三消》选择宝石 -- 选择并交换位置;
9.6 《三消》消除宝石 -- 激动人心地满足配对欲望;
9.7 《三消》重新洗牌操作 --卡壳,那就重新洗牌;
9.8 《三消》课程总结。
第10章 《扫雷》游戏制作--需要一些空间想象能力才能玩
10.1 《扫雷》游戏课程简介;
10.2 《扫雷》资源的导入和场景配置;
10.3 《扫雷》游戏逻辑框架 -- 写程序,建议先写框架;
10.4 《扫雷》初始化场景 -- 仍然是二维数组;
10.5 《扫雷》左右键操作和牌面翻开 -- 发挥递归算法的潜力;
10.6 《扫雷》游戏结束判断;
10.7 《扫雷》UI控制 -- 让游戏画面更生动;
10.8 《扫雷》课程总结。
第11章 《贪吃蛇》游戏制作--关键靠手速
11.1 《贪吃蛇》游戏课程简介;
11.2 《贪吃蛇》资源导入与场景设置;
11.3 《贪吃蛇》编写Node类;
11.4 《贪吃蛇》初始化场景;
11.5 《贪吃蛇》蛇的数据结构以及移动蛇的算法 -- 换一种实现思路,享受性能飞一般的感觉;
11.6 《贪吃蛇》游戏结束判断;
11.7 《贪吃蛇》课程小结。
第12章 《五子棋》游戏制作--全国智力运动会竞技项目之一
12.1 《五子棋》课程简介;
12.2 《五子棋》资源导入;
12.3 《五子棋》初始化地图快照;
12.4 《五子棋》落子框架的编写;
12.5 《五子棋》落子功能 -- 人没有那么精确,但可以借助计算机;
12.6 《五子棋》链子判断--链子判断需要分不同情况;
12.7 《五子棋》课程总结。
第13章《跳棋》游戏制作--最著名的亲子游戏之一
13.1 《跳棋》-课程简介;
13.2 《跳棋》-资源导入场景配置;
13.3 《跳棋》-初始化场景-1--当一条路走不通,试试换一条(自定义坐标系的构建和向笛卡尔坐标坐标的转换);
13.4 《跳棋》-初始化场景-2;
13.5 《跳棋》-移动棋子-1 选择棋子;
13.6 《跳棋》-移动棋子-2 判断临近可走棋格--递归算法的另一个妙用;
13.7 《跳棋》-移动棋子-3 移动棋子;
13.8 《跳棋》-移动棋子-4 跳子实现思路;
13.9 《跳棋》-回合功能--回合制,使游戏具备了亲子同玩功能;
13.10 《跳棋》-游戏胜利判断;
13.11 《跳棋》-课程总结。
第14章《战疫3D》游戏制作(向奋战在抗疫前线的英雄致敬)
14.0《战役3D》序;
14.1 《战疫3D》游戏介绍;
14.2 《战疫3D》资源导入;
14.3 《战疫3D》白细胞添加刚体和碰撞盒;
14.4 《战疫3D》键盘监听功能讲解;
14.5 《战疫3D》白细胞滚动功能实现;
14.6 《战疫3D》摄像机跟随;
14.7 《战疫3D》摄像机推拉;
14.8 《战疫3D》病毒对象创建和旋转;
14.9 《战疫3D》白细胞吞并病毒的功能;
14.10 《战疫3D》UI制作;
14.11 《战疫3D》丰富场景;
14.12 《战疫3D》游戏导出。
第15章 《战疫2D》游戏制作(向奋战在抗疫前线的英雄致敬)
15.0 《战疫2D》序;
15.1 《战疫2D》课程介绍;
15.2 《战疫2D》资源导入;
15.3 《战疫2D》白细胞对象制作;
15.4 《战疫2D》2D和3D的区别;
15.5 《战疫2D》白细胞的移动(一);
15.6 《战疫2D》白细胞的移动(二);
15.7 《战疫2D》摄像机的跟随功能;
15.8 《战疫2D》摄像机的ZoomInOut功能;
15.9 《战疫2D》病毒对象的制作放置和旋转;
15.10 《战疫2D》白细胞吞噬和GUI创建;
15.11 《战疫2D》游戏美化;
15.12 《战疫2D》白细胞表情动画;
15.13 《战疫2D》界面制作和导出。
**(美术类)附加教程01:地形Terrain
0000-《地形制作》课程简介
0100-《地形制作》高度图生成地形的基本原理
0201-《地形制作》Unity的地形工具介绍
0202-《地形制作》使用Unity地形编辑器制作一个山脉
0301-《地形制作》相关工具和制作流程简介
0302-《地形制作》珠穆朗玛峰地形特征分析
0303-《地形制作》珠穆朗玛峰高度图
0303-《地形制作》珠穆朗玛峰高度图-处理
0304-《地形制作》WorldMachine导入高度图
0305-《地形制作》制作风侵蚀效果
0306-《地形制作》制作水侵蚀效果
0307-《地形制作》制作温度侵蚀作用
0308-《地形制作》导出高度图和相关蒙版
0401-《地形制作》Unity+Gaia
0402-《地形制作》材质分布生成
0500-《地形制作》总结
**(美术类)附加教程02:模型导入、材质和贴图
0000-《模型导入,材质和贴图》课程简介
0100-《模型导入,材质和贴图》Unity支持的模型文件格式
0201-《模型导入,材质和贴图》模型尺寸
0202-《模型导入,材质和贴图》不同软件的坐标系朝向
0202-《模型导入,材质和贴图》在Max和Maya中修改坐标轴
0301-《模型导入,材质和贴图》LOD技术
0401-《模型导入,材质和贴图》模型贴图的导入
0501-《模型导入,材质和贴图》-材质和PBR技术
0502-《模型导入,材质和贴图》-PBR特有属性介绍
0503-《模型导入,材质和贴图》-常用的贴图类型法线AO和自发光等
0601-《模型导入,材质和贴图》Standard材质和URP材质
0602-《模型导入,材质和贴图》使用SP导出贴图
0700-《模型导入、材质和贴图》常用贴图类型作用,uv坐标Mipmap
**(美术类)附加教程03:光源
0000-《光源》内容介绍
0100-《光源》基本概念-光线特性、色温、照度、来源分类
0101-《光源》光位、光型、光效、影调和影调反差分类
0200-《光源》Unity中的光照类型-直接光照
0201-《光源》Unity中的光照类型-间接光照
0202-《光源》Unity中的光照类型-间接光照演示
0301-《光源》室外场景晴天日出布光案例
0302-《光源》室外场景晴天夜晚布光案例
0304-《光源》室内场景夜晚常规布光案例
0305-《光源》室内场景夜晚气氛营造布光案例
0400-《光源》总结
**(美术类)附加教程04:碰撞盒和触发器
0000-《碰撞盒与触发器》课程介绍
0101-《碰撞盒与触发器》碰撞盒和触发器的概念
0102-《碰撞盒与触发器》碰撞盒的阻挡作用
0201-《碰撞盒与触发器》使用碰撞盒事件触发开门开灯
0202-《碰撞盒与触发器》使用触发器事件触发开门开灯
0203-《碰撞盒与触发器》使用射线检测事件触发开门开灯
0301-《碰撞盒与触发器》总结
**(美术类)附加教程05:物理引擎
0000-《物理引擎》课程简介
0100-《物理引擎》物理引擎作用和刚体(Rigidbody)
0200-《物理引擎》物理材质)
0300-《物理引擎》-物理关节
0301-《物理引擎》-使用铰链制作吊桥
0401-《物理引擎》-2D物理引擎
**(美术类)附加教程06:动画系统
0000-《动画系统》课程简介
0100-《动画系统》动画文件格式以及Animation工具制作动画
0101-《动画系统》从第三方软件导出模型动画
0200-《动画系统》动画状态机Mechanim
0300-《动画系统》BlendTree
0400-《动画系统》AnimationLayer
0500-《动画系统》Avator
0600-《动画系统》反向动力学IK
0700-《动画系统》动画事件
**(美术类)附加教程07:粒子系统
00-《粒子系统》课程简介
0100-《粒子系统》作用-初始化-喷射器
0101-《粒子系统》作用-粒子参数
0102-《粒子系统》粒子参数的控制方式
0200-《粒子系统》案例-火焰
0300-《粒子系统》VisualEffectGraph介绍
0300-《粒子系统》VisualEffectGraph介绍2
0400-《粒子系统》VisualEffectGraph的导入
0401-《粒子系统》烟花种子发射发射
0402-《粒子系统》爆炸效果的实现
0403-《粒子系统》拖尾效果实现