最近开始补GAMES104的课程,以此文章记录下自己在课程中的收获。

目录

前言

为什么学游戏引擎?

游戏引擎历史

早期游戏时代

游戏引擎之父和第一个游戏引擎的问世

现代游戏引擎

什么是游戏引擎

学习游戏引擎的Main Road


前言

游戏最奇妙的点在于每个人都很熟悉,但却很少有人能够意识到其中的高深之处。游戏中的每一个画面,每一个细节,都是在计算机中由0和1模拟出来的。一款游戏的制作十分复杂,它其中包含了计算机科学中几乎所有的知识门类。

游戏作为一款虚拟现实,其中蕴含着计算机科学最具技术含量的运用。而游戏引擎则是隐藏在背后的东西,中国现在有几亿用户,其中会游戏开发的大概几百万,但这只是相当于会开车,真正会开发游戏引擎,真正会造车,懂得核心原理的人却是很少的,所以说游戏引擎是游戏行业皇冠上的钻石

为什么学游戏引擎?

因为下一个时代将是由游戏引擎构建的虚拟现实的时代,现今的游戏引擎已经发展成为很多东西的底层技术支撑,比如现在很火的虚拟人技术、很多国家的军事演练、动画电影行业虚拟背景的制作、以及数字孪生等等,这些就是游戏引擎带来的巨大价值。

游戏引擎历史

早期游戏时代

早期的游戏非常的简单,那时最大的问题便是如何将复杂的元素放入一个比如40KB的非常小的储存空间里,常见做法包括一张贴图的反复使用,白色的贴图放在天空中就是云朵,改变一下颜色就可以当作草丛复用;一只小乌龟的贴图正反面来回播放来模拟小乌龟的行走。

游戏引擎之父和第一个游戏引擎的问世

游戏引擎之父John Carmack,将他参与研发的一款FPS游戏《德军总部3D》中能够复用的核心功能分离出来,便产生了早期游戏引擎的雏形。在他后来开发的第二款游戏《Doom》中,他将其中分离的功能卖出,便有另外一款游戏《Shadow Caster》被开发出来,这款游戏在商业上取得了巨大的成功,此时距离真正的游戏引擎的诞生已经很接近了。直到《Quake》的问世,其中的核心分离出来制作的Quake Engine,被用来制作其他第一人称射击游戏,至此,第一个游戏引擎诞生了。

最早的计算机硬件中并没有显卡,直到人们认识到逻辑运算和图形运算并不相同,图形运算是大量向量运算,而且有大量的并行化运算,并不适合用CPU来运算,此时,显卡便诞生了。硬件的发展不断推动着游戏引擎的发展,随着显卡等硬件性能的不断提升,游戏引擎的算力也从Play Station 1到Play Station 5提升了约二十万倍,游戏的质量自然也随之得到快速提升。更高的算力也就意味着游戏引擎变得更加庞大,复杂,也就演变成了现代游戏引擎。

现代游戏引擎

当代游戏引擎大体可分为三类:

  • 商业引擎,其中有我们熟知的Unity和Unreal等
  • 游戏公司独立研发的引擎,这类引擎一般为各大游戏公司内部使用,其中包括著名的寒霜引擎
  • 免费引擎,主要适用于轻量级的休闲游戏,与商业引擎和游戏公司独立研发的引擎还是有一定差距的

随着游戏行业的不断发展,诸如物理运算一类的东西会非常复杂,早期游戏会自己实现结算器,物理碰撞的检测等,但计算越来越复杂时,便出现了专门处理物理运算的模块,也就是中间件。中间件包含处理物理运算,声音效果等等的一系列引擎。

什么是游戏引擎

百度百科:

游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。

简单来说就是:

  1. 游戏引擎是创造类似《黑客帝国》中虚拟世界的底层框架
  2. 游戏引擎是创作者(艺术家、设计师)实现创意或者想象力的生产力工具
  3. 游戏引擎复杂,庞大的体量很好的展现了复杂性系统的艺术,即系统复杂之美

当然,游戏引擎也需要提供如一个工作室中多人合作开发的可行性,并在不断升级优化时具备底层的兼容性。

学习游戏引擎的Main Road

在学完游戏引擎的分层架构后,我们打开一个游戏引擎的源码,将能够有理清头绪的办法(Update函数);在学完渲染系统后,我们将认识到如何组织虚拟世界中需要渲染的元素,并依照不同图形学的算法进行渲染;在学完动画系统后,我们将了解如何组织一系列的动作动画,以及不同动作的动画之间是如何过渡的;学完物理系统后,我们将学会如何使用物理表达这个世界(刚体力学、软体力学、流体等等);在GamePlay系统中,将学到事件系统,脚本系统,图形驱动等等;在网络系统中,我们将了解到帧同步算法,异步同步算法等等

还有许多支路如特效系统、寻路系统、相机系统、C++反射机制等等。

以及广受关注的前沿科技如动作匹配技术、程序化内容生成、Lumen技术、Nanite技术。

以上即是第一课带给我的收获~

GAMES104-01视频传送门:01.游戏引擎导论 | GAMES104-现代游戏引擎:从入门到实践_哔哩哔哩_bilibili

《GAMES104-现代游戏引擎:从入门到实践》-01 学习笔记相关推荐

  1. 《R语言入门与实践》学习笔记四

    第四天任务: 完成项目玩扑克牌后1/2,并通过项目学会以下技能: 1)从一个数据集中抽取个别数据值. 2)在一个数据集中改变个别数据的取值. 3)编写逻辑测试程序. 4)使用R的缺失值符号NA. -- ...

  2. python从入门到实践学习笔记_Python编程从入门到实践:学习笔记1(第二章)

    开通博客我用的理由是:读书学习时记笔记,一方面为了回顾,一方面为了督促自己.fighting! 学习Python,我买了Python编程从入门到实践. 我将从第二章开始记录我认为我以后会忘记以及重要的 ...

  3. 《R语言入门与实践》学习笔记二(chapter4~6)

    目标 : 如何存储.检索和修改计算机内存中的数据 设计一个扑克牌模拟系统,能够自动洗牌和发牌,系统可以记住发牌的结果, 四个任务 : 1 创建一副牌 2   发牌和洗牌函数 3 改变点数系统适应不同的 ...

  4. 《Python编程从入门到实践》学习笔记3:列表

    1.列表的组成 列表是由一系列按照特定顺序排列的元素组成的有序集合,在Python中,列表需要用'[]'括起来表示,列表中各元素之间需要用','隔开.  作为有序集合,列表在访问的时候,只要知道所需访 ...

  5. 《Python编程从入门到实践》学习笔记6:字典

    字典是Python中的唯一的映射类型,也是一个容器类型.Python的字典能够存储任意个数的Python对象,也包括其他容器类型.创建一个基本的字典,需要包括字典名称,以及用花括号扩起来的键值对,如下 ...

  6. 《Python编程从入门到实践》学习笔记8(第9章:类)

    笔者从昨天开始感觉到了课程的难度,接下来不能简单的概括知识点.笔者将会按照书上的标题章节来整理知识点.这样看起来会更加直观. 9.1 创建类和使用类 9.1.1 创建Dog类 1 class Dog( ...

  7. 《Python:编程:从入门到实践》学习笔记_第9章 类

    第9章 类 根据类来创建对象被称为实例化. 9.1 创建和使用类 使用类几乎可以模拟任何东西. 9.1.1 创建 Dog 类 class Dog(): """一次模拟小狗 ...

  8. 《Python编程从入门到实践》学习笔记8:函数

    Python中的函数就是带名字的代码块,主要用于完成具体的工作.Python的函数用def关键字来声明,定义好函数名后,后面的所金行都属于函数的函数体,如下所示: def test(t1): #def ...

  9. 《Python编程从入门到实践》学习笔记7:用户输入和while循环

    一.用户输入 函数input()的功能,就是让程序在运行过程中,能够接收到用户的输入进行输出,如下例所示: prompt = "请按照提示输入您的姓名,我们将根据您的姓名显示信息!\n&qu ...

  10. 《Python编程从入门到实践》学习笔记9:类

    类是对现实生活中一类具有共同特征的事物的抽象,根据类来创建对象被称为实例化,创建类时,类名首字母要大写完整的类如下例所示 #class声明类,后跟类名,类名首字母需要大写 class Dog():&q ...

最新文章

  1. 基于Java Swing的仪表盘实现
  2. python web 框架例子_最快的 Python Web 框架入门
  3. 大型高并发系统的系统设计要点
  4. eclipse 创建maven web项目_Eclipse创建第一个Scala项目(过程)
  5. redis缓存原理与实现_基于Redis实现范围查询的IP库缓存设计方案
  6. mpvue微信小程序动画_mpvue小程序以及微信直播踩坑总结
  7. Google+ 团队的 Android UI 测试
  8. 【Spring-AOP】自动代理类AnnotationAwareAspectJAutoProxyCreator
  9. 个人总结 超详细 windows10下载与安装
  10. DC综合各种lib library的解释
  11. Imagination开放PowerVR光线追踪技术授权
  12. 高通平台8953 Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953 android7.1实例分析篇)
  13. common-pool2的介绍和使用
  14. 前端通过【bitly】Api,将长链接转换短连接
  15. 腾讯T3手把手教你!Flutter尽然还能有这种操作!全套教学资料
  16. ASP.NET Core 项目文件夹解读新框架
  17. 大学生学习摄影如何进行构图?
  18. Symantec Backup Exec备份作业服务器盘符变更
  19. 干货分享!电子商务设计师备考学习方法
  20. java计算机毕业设计基于springboo个人家庭理财记账管理系统

热门文章

  1. 搭建博客,使用hexo-theme-matery主题无效果
  2. GCC编译过程及基本命令总结
  3. awk grep 以某个特定字母开头 shell 常用操作
  4. 李彦宏:高科技被叫做高科技 是因为它有高利润
  5. 计算机四级考试笔记(专门应付考试)
  6. 多元宇宙算法MVO优化BP做多特征输入单个因变量输出的拟合预测模型
  7. Axure—动态面板-勾选
  8. 引用@webServlet时出现WebServlet cannot be resolved to a type
  9. 摄影十大基本名词解析
  10. 一个全功能的个人财务管理中的应用,功能包括:网上银行,在线支付账单,投资管理,预算跟踪,预定交易,检查印刷,详细的图表,报告等等。