本人菜鸟,文中若有代码、术语等错误,欢迎指正
前言
-
我写的项目地址
https://github.com/liujianjie/GameEngineLightWeight(中文的注释适合中国人的你)
-
关于此专栏
- 是我学习TheCherno的Hazel游戏引擎教程的笔记,包括一些重要的步骤和代码及思考,建议看原视频教程。
- 2023年1月1日至2023年2月14日学完123集,但是期间没有做笔记,现在开始利用空闲时间做个完整的从1到123集的笔记。
- 从2023年2月14日开始做此专栏,可能会耗时两三个月。
-
效果展示
为了避免第一个开头文章大都是文字介绍略显枯燥,先放个做到123集的效果,看看能不能引起各位兴趣
由于001-003都是些文字的讲述,我放在一起
001.游戏引擎介绍
-
关于第三方库
创建一个游戏引擎,用ImGui做UI
若自己做一个完整的UI编辑器是需要很费时间,所以会使用第三方库ImGui来做UI。
除了ImGui以外,也会用到其他类型的第三方库,这样就不用重头造轮子。
002.什么是游戏引擎
-
网上说游戏引擎是快速创造游戏的工具,内容创建者可以使用全套工具来制作模型等等
-
Unity UE本质上表现为一组工具,就像关卡编辑器这样的大型工具,你们可以在其中创造游戏,它更像一种平台,用来构建交互式应用程序,不一定非得是游戏,它的核心就是交互应用
-
提供一个平台,让游戏团队的工作人员能够真正构建游戏
-
所以游戏引擎说是一个平台,不仅构建游戏,并且能VR,一个完整的平台,可以让拥有的数据转换成一个更具交互性的或者它会得到交互式的视觉格式,这就是Cherno对游戏引擎的定义。
-
cherno,游戏引擎基本功能是或者至少它的目标是将数据从一种格式转换成另一种格式。
从桌面读取一组文件,我们从那些文件中提取数据,然后把它转换成的其他东西,显示在我们的屏幕上。
简化:读取文件、转换他们、然后把他们放到屏幕上,并且也增加了交互能力。
-
文件从哪里来,如何制作他们
这些文件也是游戏引擎的一部分,它是制作那些文件的平台,现在称这些文件为资产,资产是指游戏引擎将其作为输入的文件(本质是一堆数据)(3dmax、maya、ps做成的文件,无论是材质、模型、关卡等等),内容创造者负责为游戏引擎创建资产,然后游戏一群在运行时读取这些资源,并且屏幕上呈现一些内容,并为用户提供一种与之交互的方式成游戏。
-
因为游戏开发不能从头从0开始,工程师最终创作了所有这些工具,而内容创造者是艺术家,不熟悉编程或工程的人实际上可以用来构建所有的内容,因为游戏引擎更多的是将内容创造者创建的资产转换为屏幕上看到的东西。
-
游戏引擎开发人员要做的就是,为人们设计某种方式,为那些不熟悉编程的人来创建所有这些数据来编辑这些数据,当然,它们需要像脚本一样填充,但不是直接编程。
003设计我们的游戏引擎
-
入口
-
应用层
应用周期
-
系统窗口层
- 输入
- 事件
-
渲染
-
渲染API抽象
-
Debug 支持
-
脚本语言
-
实体组件系统
能挂载物理,决定物体的位置什么的
-
物理
-
文件的IO(VFS)
-
构建系统
-
自定义资产类型和处理用户的3D创作模型或者纹理
-
资产可以热拔插到我们得引擎中
-