Hazel游戏引擎(001-003)
文章目录
- 前言
- 001.游戏引擎介绍
- 002.什么是游戏引擎
- 003设计我们的游戏引擎
本人菜鸟,文中若有代码、术语等错误,欢迎指正
前言
-
我写的项目地址
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创作模型或者纹理
-
资产可以热拔插到我们得引擎中
-
相关文章:
Hazel游戏引擎(001-003)
文章目录前言001.游戏引擎介绍002.什么是游戏引擎003设计我们的游戏引擎本人菜鸟,文中若有代码、术语等错误,欢迎指正 前言 我写的项目地址 https://github.com/liujianjie/GameEngineLightWeight(中文的注释适合中国人的你) 关于…...
耗时一个星期整理的APP自动化测试工具大全
在本篇文章中,将给大家推荐14款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、APP性能测试、稳定性测试、抓包工具等。 一、UI自动化测试工具 1. uiautomator2 openatx开源的ui自动化工具,支持Android和iOS。主要面向的编程语言…...
算法设计与分析(屈婉玲)视频笔记day2
序列求和的方法 数列求和公式 等差、等比数列与调和级数 求和的例子 二分检索算法 二分检索运行实例 2 n 1个输入 比较 t 次的输入个数 二分检索平均时间复杂度 估计和式上界的放大法 放大法的例子 估计和式渐近的界 估计和式渐近的界 小结 • 序列求和基本公式:…...
14-PHP使用过的函数 131-140
131、session_unset 释放当前会话注册的所有会话变量。 没有返回值。 132、session_destroy 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。 如果需要再次使用会话变量, 必须重新调用 session_…...
【第39天】实现一个冒泡排序
本文已收录于专栏 🌸《Java入门一百例》🌸 学习指引 序、专栏前言一、冒泡排序一、【例题1】1、题目描述2、解题思路3、模板代码三、推荐专栏序、专栏前言 本专栏开启,目的在于帮助大家更好的掌握学习Java,特别是一些Java学习者难以在网上找到系统地算法学习资料帮助自身…...
「2」线性代数(期末复习)
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 方阵的行列式 (1) |A^T||A|(2) |ǖ…...
动态规划专题——背包问题
🧑💻 文章作者:Iareges 🔗 博客主页:https://blog.csdn.net/raelum ⚠️ 转载请注明出处 目录前言一、01背包1.1 使用滚动数组优化二、完全背包2.1 使用滚动数组优化三、多重背包3.1 使用二进制优化四、分组背包总结…...
数据的分组聚合
1:分组 t.groupby #coding:utf-8 import pandas as pd import numpy as np file_path./starbucks_store_worldwide.csv dfpd.read_csv(file_path) #print(df.head(1)) #print(df.info()) groupeddf.groupby(byCountry) print(grouped) #DataFrameGroupBy #可以遍历…...
【Airplay_BCT】Bonjour conformance tests苹果IOT
从Airplay开始,接触到BCT,这是什么?被迫从安卓变成ios用户和开发。。。开始我的学习之旅,记录成长过程,不定时更新 Bonjour 下面是苹果官网关于bonjour的解释 Bonjour, also known as zero-configuration networking, …...
开发微服务电商项目演示(五)
登录方式调整第1步:从zmall-common的pom.xml中移除spring-session-data-redis依赖注意:本章节中不采用spring-session方式,改用redis直接存储用户登录信息,主要是为了方便之后的jmeter压测;2)这里只注释调用…...
Git删除大文件历史记录
Git删除大文件历史记录 git clone 仓库地址 查看大文件并排序 git rev-list --objects --all |grep $(git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -1|awk {print $1})删除大文件 git filter-branch --force --index-filter git rm --cached --ig…...
Seata-Server分布式事务原理加源码(一) - 微服务之分布式事务原理
概念 基础概念:事务ACID • A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失 败的情况。 • C(Consistency)…...
【ZooKeeper】zookeeper源码9-ZooKeeper读写流程源码分析
源码项目zookeeper-3.6.3:核心工作流程ZooKeeper选举和状态同步结束之后的服务启动ZooKeeper SessionTracker启动和工作机制ZooKeeper选举和状态同步结束之后的服务启动 在Leader的lead()方法的最后,即Leader完成了和集群过半Follower的同步之后&#x…...
Python实现批量导入xlsx数据1000条
遇到的问题:用户批量导入数据1000条,导入不成功的问题,提示查询不到商品资料。这个场景需要依靠批量的数据,每次测试的时候需要手动生成批量的数据,然后再导入操作,费时费劲。所以写了个脚本来实现。在前面…...
Ubuntu20.04安装redis与远程连接
一、安装Redis5.7 1、安装Redis apt-get install redis-server2、安装完成后,Redis服务器会自动启动。查看redis是否启动成功 service redis-server status #查看状态如下显示Active:active(running)状态:表示redis已在运行,启动成功。 …...
SAS应用入门学习笔记5
input 操作符: 代码说明: 1)1 表示第1列字符;7表示第7列字符; 2)col1 表示第一列数据;col2 表示第二列数据; 3)4.2 表示的是4个字符,2表示小数点后两位&a…...
PHP新特性集合
php8新特性命名参数function foo(string $a, string $b, ?string $c null, ?string $d null) { /* … */ }你可以通过下面的方式传入参数进行调用foo(b: value b, a: value a, d: value d, );联合类型php7class Number {/** var int|float */private $number;/*** param f…...
【开发环境配置】--Python3的安装
1-开发环境配置 工欲善其事,必先利其器! 编写和运行程序之前,我们必须先把开发环境配置好。只有配置好了环境并且有了更方便的开发工具,我们才能更加高效地用程序实现相应的功能。然而很多情况下,我们可能在最开始就…...
postman实现接口测试详细教程
各位小伙伴大家好, 今天为大家带来postman实战接口测试详细教程 一、通过接口文档集合抓包分析接口 通过fiddler抓包获取到注册接口URL地址及相关参数数据,并通过接口文档分析接口参数内容及参数说明, 如有必要的依赖条件必须进行梳理, 如token等 Fiddler抓包注册接口请求与…...
使用crontab执行定时任务
本来这个东西是挺简单的,是我脑子一直没转过来弯,我就想看看有多少人跟我一样😏 crontab语法自己去菜鸟教程看看就知道了,没什么难度 需求:每分钟定时执行一个PHP文件或者一个PHP命令 这是需要执行的文件࿰…...
嵌入式MCU选型十步法:系统级工程决策指南
1. 微控制器选型的系统性工程方法微控制器(MCU)作为嵌入式系统的核心,其选型绝非简单的参数比对或品牌偏好,而是一项融合硬件约束、软件架构、供应链管理与产品生命周期规划的系统性工程决策。尽管MCU技术迭代迅速,从8…...
Nanbeige 4.1-3B惊艳效果:思考日志区域动态展开/收起的像素动画效果
Nanbeige 4.1-3B惊艳效果:思考日志区域动态展开/收起的像素动画效果 1. 复古像素美学的视觉革命 在当今AI交互界面普遍追求极简风格的背景下,Nanbeige 4.1-3B的像素游戏风格前端带来了令人耳目一新的视觉体验。这套界面不是简单的皮肤更换,…...
基于成功历史的参数自适应差分进化算法(SHADE)与SaDE在CEC2017测试集上的性能对比...
SHADE和SaDE跑CEC2017测试集对比图,并分别连续运行30次并且输出最优值,最差值,平均值,标准差 基于成功历史的参数自适应差分进化算法(SHADE)是经典的差分进化变体,该论文发表于2013年,性能非常有参考价值&a…...
OpenClaw社区案例集:10个Qwen3-32B改变个人工作流的真实故事
OpenClaw社区案例集:10个Qwen3-32B改变个人工作流的真实故事 1. 引言:当AI助手遇上真实需求 去年冬天,我在整理年度技术笔记时突然意识到:那些真正改变工作流的工具,往往诞生于具体场景下的真实痛点。OpenClaw正是这…...
LSM6DS0嵌入式驱动开发:寄存器配置、中断DMA与硬件FSM实战
1. LSM6DS0 姿态与运动传感芯片深度解析:从寄存器映射到嵌入式驱动开发LSM6DS0 是意法半导体(STMicroelectronics)于2014年推出的超低功耗、高精度6轴惯性测量单元(IMU),集成三轴加速度计与三轴陀螺仪&…...
【Redis】布隆过滤器实战:从原理到缓存穿透防御
1. 布隆过滤器:Redis中的"安检门"原理 第一次听说布隆过滤器时,我正被一个诡异的线上问题困扰:凌晨三点突然收到数据库CPU飙升至100%的告警,查看日志发现大量请求在查询根本不存在的用户ID。这就是典型的缓存穿透场景—…...
Qwen3-TTS部署案例:数字人直播中实时语音驱动唇形同步技术实现
Qwen3-TTS部署案例:数字人直播中实时语音驱动唇形同步技术实现 1. 引言:当数字人开口说话,如何让嘴唇动得更真实? 想象一下,你正在看一场数字人直播。主播的形象栩栩如生,但当他开口说话时,嘴…...
避坑指南:Python弹窗程序打包成exe的3个常见错误(pyinstaller参数详解)
避坑指南:Python弹窗程序打包成exe的3个常见错误(pyinstaller参数详解) 当你花费数小时精心编写了一个基于tkinter的弹窗程序,准备打包分享给朋友时,却可能在最后一步遭遇各种打包失败。本文将深入剖析三个最常见的打包…...
DFRobot_ST7687S TFT LCD驱动详解:SPI显示模块硬件与API实战
1. 项目概述DFRobot_ST7687S 是一款基于 ST7687S 显示驱动芯片的 2.2 英寸 TFT LCD 显示模块(SKU: DFR0529),采用 30Pin 焊接式 FPC 接口,分辨率为 128128 像素。该模块专为嵌入式系统设计,支持全彩动态显示࿰…...
RS-485接口实战避坑指南:从终端电阻到EMC防护的完整配置流程
RS-485接口实战避坑指南:从终端电阻到EMC防护的完整配置流程 在工业自动化现场调试中,RS-485总线的稳定性往往决定着整个系统的可靠性。记得去年参与某钢铁厂轧机控制系统改造时,一个简单的终端电阻配置错误导致整条产线通信中断8小时——这种…...
