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命令 这是需要执行的文件࿰…...
家用混动SUV舒适度技术科普入门:从实测看核心技术要点
在家用混动SUV的日常使用中,接送孩子上下学、家庭短途出行是最高频的场景,而“舒适度”并非单纯的主观感受,而是一套涵盖空间设计、座椅工程、材质工艺、座舱适配及动力平顺性的综合技术体系。对于有儿童乘坐需求的家庭而言,舒适度…...
基于 HT for Web 的机车整备场数字孪生系统技术实现
本文基于 HT for Web(基于 WebGL/Canvas 的纯前端可视化插件)构建机车整备场数字孪生三维可视化系统,通过轻量化三维建模、实时数据对接、前端 API 驱动渲染,实现整备场全流程、全要素、全场景的数字化监管。该系统采用 B/S 架构&…...
python 最基础的一些
获取数组长度 lengthlen(list)for 循环数组 for i in list:print (i)打出来的就是数组里的每一个数据。for 循环数组下标 for i in range(length):print(list[i])寻找某个数据在数组里的下标 indexnums[i1:].index(numNeed)i1因为是从i1开始找的,然后用index函数获取…...
ESP-01s固件烧录与Arduino编程:从接线玄学到一键下载的避坑指南
1. ESP-01s模块入门:为什么你的接线总是出错? 第一次接触ESP-01s的朋友,十有八九会在烧录固件或上传程序时遇到各种莫名其妙的失败。我见过太多人把模块插上CH340就以为万事大吉,结果在电脑前折腾一整天都搞不定下载。这其实是因为…...
kmp算法(完结)
1.重复的子字符串 class Solution { public:void getNext(vector<int> &next,const string s){int j0;next[j]0;for(int i1;i<s.size();i){while(j-1>0&&s[i]!s[j]){jnext[j-1];}if(s[i]s[j]){j;next[i]j;}else{next[i]0;}}}bool repeatedSubstringPa…...
终极指南:如何自定义Android RecyclerView ItemAnimator动画扩展
终极指南:如何自定义Android RecyclerView ItemAnimator动画扩展 【免费下载链接】android-advancedrecyclerview RecyclerView extension library which provides advanced features. (ex. Googles Inbox app like swiping, Play Music app like drag and drop sor…...
ai辅助开发:让快马平台智能诊断并生成最优的wsl ubuntu环境配置方案
在折腾开发环境配置的路上,相信不少朋友都踩过WSL安装Ubuntu的坑。从选择版本、处理依赖到解决网络问题,整个过程就像开盲盒。最近尝试用AI辅助完成这个任务时,意外发现了一条捷径——通过智能交互就能生成量身定制的环境方案。 传统配置的痛…...
Chrome for Testing 终极配置指南:5个实战技巧让浏览器自动化测试更高效
Chrome for Testing 终极配置指南:5个实战技巧让浏览器自动化测试更高效 【免费下载链接】chrome-for-testing 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-for-testing Chrome for Testing 是 GoogleChromeLabs 团队专门为浏览器自动化测试设计的…...
AI辅助开发创意秀:让快马AI为你定制专属的antigravity式彩蛋代码
最近在尝试用AI辅助开发一些有趣的小项目,发现InsCode(快马)平台特别适合快速实现这类创意编程。今天就来分享一个用AI生成个性化编程彩蛋的完整实现过程,效果类似Python著名的antigravity彩蛋,但加入了用户自定义内容。 项目构思 这个项目的…...
OpenClaw+千问3.5-9B智能翻译:多语言文档自动处理
OpenClaw千问3.5-9B智能翻译:多语言文档自动处理 1. 为什么需要本地化智能翻译 去年参与一个跨国开源项目时,我每天要处理英日韩三种语言的开发文档。传统翻译工具需要手动复制粘贴,遇到代码片段还会破坏格式。更麻烦的是技术术语的准确性—…...
