当前课程知识点:游戏程序设计 >  第四章 《游戏循环及实时模拟》 >  4.1 游戏循环概述(上) >  4.1 游戏循环概述(上)

返回《游戏程序设计》慕课在线视频课程列表

4.1 游戏循环概述(上)在线视频

下一节:4.2 游戏循环概述(下)

返回《游戏程序设计》慕课在线视频列表

4.1 游戏循环概述(上)课程教案、知识点、字幕

这个课大概就是

因为讲这个游戏循环的话

游戏循环感觉就是不是很好去说

所以我就做了一个很简单的

一个demo

然后这个demo特别简单

本来的话可能不需要就是像这里头所说的

做的这么就是结构不需要这么复杂

但是我们实际就是为了介绍一下

就是做游戏一般是怎么回事

所以我们还是按照一个

就是比较大的一种游戏的方式

然后大概去做一个架构

我这一个Demo也放在那个github上(https://github.com/dreamanlan/GameDemo)

如果大家有需要的话

可以从上面下来看

先看一下这个dreaman就是很简单

可能会觉得一个基本上

都没有什么美术资源

然后大多数就是直接拿的Unity的东西

所以看起来会特别简陋

我这把声音也发一下

这大概是怎么一个

然后会

就是会设计上有一些UI

然后我们会有一个地形

而这上面摆了很多小球

然后下面会有将来有一个玩家

还会有几个VI会跟着他

然后就

我们可以用这个鼠标操作它动

如果动的话走到哪个地方

它上面这个球就会掉下来

掉下来如果被砸掉的话就会掉血

大概就是这样一个规则也比较简单

我本来想做的复杂一点就是这个小球的数量

如果越小的话就是重力越大

然后球会掉得越快

但是好像这个就是效果表现不出来

因为可能球的数量太多了

这个场景大概摆了两千多个球

大概就是这么个样子

接下来我们讲一下这个游戏循环

我下面说的这个的是就是我们的一个理解

就是大概就从软件的角度来说

因为有各种各样的程序吗

我们可以看到的就是这里是列到了第一类

有命令行程序

向我们现在可能看到的比较多的就是

这种图形用户界面的这种程序

还有像操作系统的服务

或者是我们的网站

还有财务的这种系统

或者有一些是

ERP这种企业资源规划的这种系统

这些系统的话

它主要都是面向任务的

而这种软件有一个主要的特点

就是它是被动处理

就是只有你去请求它的一个功能的时候

它才需要进行处理

如果不做请求的话

其实这个时候它就是在那等待

它就不需要做什么

我们再看一下另外一类

就是类似自动控制的这个软件

这类软件

我不知道大家有没有接触过这个

这种控制置换的东西就是

自动控制这块的东西

这个所谓的PID这种

这种软件的话呢

它的特点就跟刚才所说的会不太一样

它是不能够停下来的

因为特别是在工业控制里头

如果停下来的话

那现场可能就会失控

所以这种呢它会是一个主动的处理

那游戏是什么样子的

游戏实际上是更接近我们一个真实的世界

我们可以看到一个世界的话

实际上是和每一个人

或者有关

但是其实关系不大

有句话说少了谁地球都会照样转嘛

然后游戏最典型的一个特点

就是游戏实际上是对真实世界的模拟

不管我们是玩哪一种类型的游戏

就是想着最简单的棋牌类的游戏

实际上也是对我们现实世界的这种

棋牌的这种模拟

然后大一些的话

比如说最典型的就是二匹机RPG

PG是角色扮演类的游戏

那它就是完完全全在模拟

我们一个真实的世界

真实的世界它跟这个也是比较类似的

就是实际上我们玩家不去做任何操作的话

这个游戏世界它还是会正常运转

由于这个特点

所以才引出就是我们为什么

会提到说游戏需要一个循环

因为游戏他是要主动运转的

而主动运转的整个世界的驱动

它是在这个循环里头的

在我们这个游戏行业一般的话

我们会把这个循环称之为心跳

就是相当于这个世界

它是有个心跳

它在每一次心跳里头会进行相应的处理

然后就驱动了这个整个游戏世界的运转

然后还有像我们所说的NPC

NPC就是非玩家角色

就是一般是指有AI来控制的这个角色

这也是靠这个来驱动的

还有一块就是游戏世界里头和玩家的交互

说到这个游戏循环的话

我这个主要讲的是

前端的这个游戏的程序循环

那么前端一般

我们现在通常都会有一个游戏引擎

然后呢

在具体做游戏的话就有一个游戏的逻辑

那么所以游戏循环一般也会分成两个层次

就是最底层实际上是一个引擎的循环

然后游戏的循环一般来说

是有引擎的循环的驱动的

我们提到引擎的循环的话

这里头有几个就是3D引擎这几个概念

这个和2D不一样就是3D的

其实它也有点模拟

我们真实的这个摄像的这个情况

就是这个世界实际上是相当于

有一个摄影师拿着这个相机

然后在观察这个世界一样

所以引擎实际上

展示出来的就像是一个摄影师

在一个摄像机里头看到的一样

所以这里最主要的一个概念就是摄像机

然后另外一个就是

我们游戏里说都会有可以动着这个物件

这就是可以移动物件

然后另外还有一个就是我们前面说到

游戏它是需要有一个游戏世界

我们会通常会是有一个场景

就是游戏里的所有的东西

都会在这个场景里发生

还有一块呢

就是游戏肯定是有玩家的吗

玩家和游戏需要交互

所以会设计到UI

就是一般会在游戏的话

引擎往往就会在这几个层面提供

就是包括UI系统

场景管理

然后有一些就是游戏物件的一些管理

和一些支持

然后有相机的这个概念

然后我们下面就会提到这个

引擎的这个主循环

引擎的主循环呢

就是大概就是右边这个图上

这么一个过程

一般来说

游戏的刚才我们说的另外一个循环

就是游戏逻辑的循环

我们今天实际上主要会议介绍

游戏逻辑的循环

这里可以简单过一下就是引擎这一块

就是引擎的循环里头一般会有一块

是会去驱动游戏逻辑的循环

然后在游戏逻辑的循环里头呢

我们会有刚才提到的

比如说NPC玩家

就是这些可移动这些物件的

比如它位置的变动

它的属性的变化以及相应的这样

就是基本上可以理解成是一个

数据层面的一个变化

所以首先第一步就是游戏循环

然后变化之后呢

然后引进层面会就相当于游戏逻辑

会控制引擎层面可移动物件

它的位置旋转缩放的这些变化

所以引擎上往往会做一个更新

因为对一个游戏场景来说

如果数量非常多的话

我们可能会采用一些就是空间的设计结构

去进行管理

所以这个时候往往会涉及到

比如说有二叉数或者是八叉数

或者这种方式去管理的话

那就会涉及到

这些相应的数据结构的一些更新

然后在这个之下呢

就是场景的整个是渲染

场景渲染完了之后

然后就是渲染UI

因为UI一般是覆盖在场景表面上

然后最后还有一个就是双缓冲的切换

这个现在基本上是标配了

就是一般在显示一帧游戏画面的时候

另外一帧就正在后台

会提前写好一个屏幕

然后到时候在显示的时候

它就表现上就会比较连贯

这个是刚才说的这个大的一个图

你可以看到一个相机

这是一个场景里的各种物件

那么实际上

右边这个图就是我们看到屏幕上的东西

屏幕上的东西实际上是

所有的这个3D物件

在这个相机的这个近裁剪面上的一个投影

接下来说道的就是游戏逻辑的循环

前面其实我们已经说过

就是它可能会是由引擎来驱动

一般呢

游戏的循环就逻辑的循环

游戏逻辑的循环是在引擎循环的每一帧的开始

他们一帧的开始

或者是结束做这个处理一般不会嵌在中间

因为引擎的整个的渲染

我们可以大的理解成它就像数据

需要一个原子的操作一样就是它需要枷锁

如果在中间

我们有对这个的修改的话

可能会影响整个引擎的这个管线

所以一般都是在开始或者是结束

然后游戏逻辑的循环

主要是用来驱动游戏的各个子系统

这个是我们后面会提到的

一般来说呢

是有两类的风格

就是一种可能

就是大家可能会看起来会觉得

更有设计的特点就是事件或者是消息驱动

还有一种人就是比较直白的

实际就是我们会在那个循环里头

依次写着调各个子系统的Tick

就是前面说的心跳

然后像我们的话

其实更多的会用这个更简单的这种方式

就是事件的和这个驱动的这个方式呢

虽然在技术上来说

可能它会显得就是更有技术含量一点

但是呢

实际上因为游戏开发是一个多人协作的

就是比如说

而且游戏的开发的过程

一般时间都会比较长

所以在这个过程中可能会有

比如说能源会有流动

就是一开始设计的人

可能和后面继续做的并不是同一个人

所以能保持这个简单和可理解

对我们来说是一个比较重要的事情

所以一般我们会采用更简单

这种方式就是

一般就是一个静态循环

这个可能接近

我估计大家应该对这一块都比较熟悉

就是循环的几种类型

这个是比较老一点的

就是以前在windows上

因为都是GUI的系统嘛

windows都是消息驱动的

所以游戏的循环以前就是在

windows消息的这个主循环里头

就相当于每一次

这个windows程序处理完

它的消息队列里的消息

然后接下来呢就会做一次游戏的Tick

另外一类就是游戏帧的回调

这其实也是一个原来比较老的

就是windows系统上的一个引擎

就是windows系统上的一个引擎,也是开源的,叫OGRE

它就是这种方式

就是我们可以看到它是因为它可以在

每一帧的开始和结束还有两个回调

然后中间就是刚才我们说的游戏引擎的循环

它会渲染当前的那个场景

然后在这个两个回掉里头

实际是我们会执行游戏的逻辑

去修改这个游戏世界逻辑层的一些东西

然后中间那就会通过引擎的方式表现出来

还有一个呢

这个就是Unity3D的

我估计大家可能都现在应该都接触过

这个Unity3D吧

就是说现在应该是比较

相当于它把游戏开发就做的很简单了

就是让大家不用猜

在去了解那些很底层的东西

然后它用了一个脚本呢

也和传统一般

比如说用C++语言呢要简单很多

就是用C#语言

然后在这里讨论主要的方式就是

我们可以理解成是一种事件驱动

但是实际上

Unity3d这个它是在MonoBehaviour上

实际上是在C++里头

直接去调用了这四个方法

而不是说用了C#的event的这种机制

但是它本身应该还是属于一种事件驱动

就是大概是三类

然后下面就提到前面

我们说到的游戏循环那么游戏循环

如果它只是循环的话

它总得要有一点事情去做

那主要做什么

就是游戏循环里头就是在驱动各个子系统

就是每一个子系统

基本上都会有一个心跳

那么由于循环里头实践就是

依次对各个子系统的这个心跳着一个调用

前面说的有两种方式

一种静态的方式的话

我们就可以看到这个循环会看的很直白

可能就是一个一个的会分别去掉

如果是那种事件驱动的方式呢

这个时候可能看到的是

对一个已经注册好的一个列表循环Tick

然后这个列表人可能会在中间会有变化

比如说某些系统

它这个时候可能不需要工作了

它可以从列表里头移出

那Tick的时候

它就会少Tick一些

所以性能上可能会稍微好一点

但是因为一般游戏的系统

其实大多数时候都是要一直工作的

所以这种比较直白的方式呢

其实特别是对RPG游戏的话

基本上两者差别就很小

然后这是几个比较常见的

就是因为现在

可能一般网络游戏会比较多嘛

所以一般会有一个网络系统

然后接下来就是场景

然后3D游戏呢

因为资源会比较多

所以也会涉及到这个资源管理的一个系统

然后就是游戏对象

比如说玩家NPC

这个是一个比较重要的一个

还有就是AI主要是用在NPC身上

还有就是战斗性战斗的话

一般就是我们所说的技能

就是技能

包括还有一些射击的表现

还有报复这种

还有一块是剧情另外一块是UI

另外一块是意外

游戏程序设计课程列表:

第一章 《游戏开发导论》

-1. 1什么是游戏(上)

--1.1 什么是游戏(上)

--选择题

-1.2 什么是游戏(下)

--1.2 什么是游戏(下)

--选择题

-1.3 游戏是如何开发出来的

--1.3 游戏是如何开发出来的

-1.4 游戏引擎(上)

--1.4 游戏引擎(上)

-1.5 游戏引擎(下)

--1.5 游戏引擎(下)

--单选题

-1.6 如何成为一个游戏开发者

--1.6 如何成为一个游戏开发者

--多选题

第二章 《游戏服务器概述 》

-2.1 什么是游戏服务器

--2.1 什么是游戏服务器

--单选题

-2.2 游戏服务器的和分类发展

--2.2 游戏服务器的和分类发展

--单选题

-2.3 核心技术和实现难点

--2.3 核心技术和实现难点

--单选题

-2.4 设计原理与方法论

--2.4 设计原理与方法论

--单选题

第三章 《《三维几何学基础》 》

-3.1 三维坐标系统

--3.1 三维坐标系统

--多选题

-3.2 向量与运算

--3.2 向量与运算

--单选题

-3.3 矩阵与线性变换

--3.3 矩阵与线性变换

--双选题

-3.4 四元数

--3.4 四元数

--多选题

第四章 《游戏循环及实时模拟》

-4.1 游戏循环概述(上)

--4.1 游戏循环概述(上)

--多选题

-4.2 游戏循环概述(下)

--4.2 游戏循环概述(下)

--单选题

-4.3 《无尽之路》的实现

--4.3 《无尽之路》的实现

--单选题

-4.4 支撑游戏的功能

--4.4 支撑游戏的功能

--选择题

-4.5 支撑游戏的机制与系统

--4.5 支撑游戏的机制与系统

--多选题

第五章 《随机数在游戏中的应用》

-5.1 基本介绍

--5.1 基本介绍

--单选题

-5.2 随机数生成器

--5.2 随机数生成器

--单选题

-5.3 随机数分布与应用

--5.3 随机数分布与应用

--单选题

第六章 《游戏性系统》

-6.1 什么是游戏玩法开发

--6.1 什么是游戏玩法开发

--单选题

-6.2 建立愿景 Vision

--6.2 建立愿景 Vision

--单选题

-6.3 划定边界 Scope

--6.3 划定边界 Scope

-6.4 迭代 Iteration

--6.4 迭代 Iteration

--单选题

-6.5 迭代 Iteration+抛光Polish

--6.5 迭代 Iteration+抛光Polish

--单选题

第七章 《实时图形渲染管道》

-7.1实时图形渲染管道 宏观渲染系统

--7.1实时图形渲染管道 宏观渲染系统

--单选题

-7.2实时图形渲染管道 应用阶段

--7.2实时图形渲染管道 应用阶段

--单选题

-7.3实时图形渲染管道 几何阶段

--7.3实时图形渲染管道 几何阶段

--单选题

-7.4实时图形渲染管道 光栅化阶段

--7.4实时图形渲染管道 光栅化阶段

--单选题

-7.5实时图形渲染管道 总结 参考

--7.5实时图形渲染管道 总结 参考

第八章 《材质着色与光照》

-8.1 物理回顾1

--8.1 物理回顾1

--单选题

-8.2 物理回顾2

--8.2 物理回顾2

--单选题

-8.3 材质 1

--8.3 材质 1

-8.4 材质 2

--8.4 材质 2

-8.5 材质3

--8.5 材质3

-8.6局部光照

--8.6局部光照

--单选题

-8.7 全局光照

--8.7 全局光照

--单选题

第九章 《游戏动画》

-9.1 动画介绍

--9.1 动画介绍

--多选题

-9.2 游戏动画介绍

--9.2 游戏动画介绍

-9.3 动画技术类型

--9.3 动画技术类型

--多选题

-9.4 骨骼蒙皮动画

--9.4 骨骼蒙皮动画

--多选题

-9.5 动画流水线

--9.5 动画流水线

--多选题

-9.6 动画前沿趋势

--9.6 动画前沿趋势

--多选题

第十章 《网络同步技术》

-10.1 .基本概念

--10.1 .基本概念

--多选题

-10.2 设计目标

--10.2 设计目标

--多选题

-10.3 传输数据分析

--10.3 传输数据分析

--多选题

-10.4 常用同步方案 1

--10.4 常用同步方案 1

-10.4 常用同步方案 2

--10.4 常用同步方案 2

-10.4 常用同步方案 3

--10.4 常用同步方案 3

-10.4 常用同步方案 4

--10.4 常用同步方案 4

--多选题

-10.5 方案对比

--10.5 方案对比

--多选题

第十一章 《游戏常用几何学》

-11.1 基本图元

--11.1 基本图元

--单选题

-11.2 图元距离(上)

--11.2 图元距离(上)

--单选题

-11.2 图元距离(下)

--11.2 图元距离(下)

--单选题

-11.3 图元相交测试+ 其他几何方法

--11.3 图元相交测试+ 其他几何方法

--单选题

第十二章 《游戏物理模拟》

-12.1 著名物理引擎介绍

--12.1 著名物理引擎介绍

--单选题

-12.2 物理引擎原理(上)

--12.2 物理引擎原理(上)

--单选题

-12.3 物理引擎原理(下)

--12.3 物理引擎原理(下)

--单选题

-12.4 游戏中的物理体

--12.4 游戏中的物理体

--单选题

-12.5 物理引擎使用入门

--12.5 物理引擎使用入门

--单选题

第十三章 《开发工具 》

-13.1开发语言

--13.1开发语言

--单选题

-13.2 开发环境

--13.2 开发环境

--单选题

-13.3 腾讯开发组件介绍

--13.3 腾讯开发组件介绍

--单选题

-13.4 网络通信+业务框架介绍

--13.4 网络通信+业务框架介绍

--多选题

第十四章 《分布式系统设计 》

-14.1 进程间通信(上)

--14.1 进程间通信(上)

-14.2 进程间通信(下)

--14.2 进程间通信(下)

-14.3 通信格式

--14.3 通信格式

-14.4 并发模型

--14.4 并发模型

-14.5 超时处理

--14.5 超时处理

-14.6 大系统小做(上)

--14.6 大系统小做(上)

--多选题

-14.7 大系统小做(下)

--14.7 大系统小做(下)

-14.8 架构层面的技术支持(上)

--14.8 架构层面的技术支持(上)

--单选题

-14.9 架构层面的技术支持(下)

--14.9 架构层面的技术支持(下)

-14.10 分布系统的关键能力

--14.10 分布系统的关键能力

--多选题

第十五章 《游戏人工智能》

-15.1 游戏人工智能综述

--15.1 游戏人工智能综述

-15.2 人工智能在游戏中主要方法 上

--15.2 人工智能在游戏中主要方法 上

--多选题

-15.3人工智能在游戏中主要方法 (下)

--15.3人工智能在游戏中主要方法 (下)

-15.4 人工智能在游戏制作中的应用领域1

--15.4 人工智能在游戏制作中的应用领域1

--多选题

-15.5 人工智能在游戏制作中的应用领域2

--15.5 人工智能在游戏制作中的应用领域2

-15.6 人工智能在游戏制作中的应用领域3

--15.6 人工智能在游戏制作中的应用领域3

--多选题

-15.7 人工智能在游戏运营中的应用实践(上)

--15.7 人工智能在游戏运营中的应用实践(上)

-15.8 人工智能在游戏运营中的应用实践(下)

--15.8 人工智能在游戏运营中的应用实践(下)

--多选题

第十六章 《游戏支撑系统 》

-16.1 游戏支撑系统(1)

--16.1 游戏支撑系统(1)

--单选题

-16.2 游戏支撑系统(2)

--16.2 游戏支撑系统(2)

--单选题

-16.3 游戏支撑系统(3)

--16.3 游戏支撑系统(3)

--单选题

-16.4 游戏支撑系统(4)

--16.4 游戏支撑系统(4)

--单选题

-16.5 游戏支撑系统(5)

--16.5 游戏支撑系统(5)

第十七章 《游戏逻辑服务器和反外挂》

-17.1 游戏逻辑服务器(上)

--17.1 游戏逻辑服务器(上)

--单选题

-17.1 游戏逻辑服务器(下)

--17.1 游戏逻辑服务器(下)

-17.2 外挂与反外挂(上)

--17.2 外挂与反外挂(上)

-17.2 外挂与反外挂(下)

--17.2 外挂与反外挂(下)

--多选题

第十八章 《运行环境和运维 》

-18.1运行环境

--18.1运行环境

--多选题

-18.2物理部署

--18.2物理部署

--多选题

-18.3系统的可运维性

--18.3系统的可运维性

--多选题

-18.4运维案列分析

--18.4运维案列分析

--多选题

4.1 游戏循环概述(上)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。