当前位置: 首页 > news >正文

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) |&#x1d6…...

动态规划专题——背包问题

🧑‍💻 文章作者: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命令 这是需要执行的文件&#xff0…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)​现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

网站指纹识别

网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...

CSS | transition 和 transform的用处和区别

省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...