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

GAMES104笔记

GAMES104

文章目录

  • GAMES104
    • 01.从入门到实践
      • 什么是游戏引擎
      • 学习顺序
    • 02.引擎架构分层
      • 资源层
      • 功能层
      • 核心层
      • 平台层
      • 工具层
      • 总结
    • 03.如何构建游戏世界
      • 其它需要管理的复杂情况
    • 04.游戏引擎中的渲染实践Rendering
      • 游戏引擎中的绘制知识点(结合实际进化而来)
      • 渲染基础
        • GPU显卡
      • 总结:

01.从入门到实践

什么是游戏引擎

  1. Technology Foundation of Matrix 虚拟世界的技术基础
  2. Productivity Tools of Creation 创造力和生产力的工具 -> 为艺术家和开发者创造工具
  3. Art of Complexity 复杂性系统的艺术

学习顺序

基础构建Basic Elements、渲染Rendering、动画Animation、物理表达Physics、游戏规则Gameplay、特效系统Misc. Systems、工具体系Toolset、网络Online Gaming、前沿技术Advanced Technology(DOP, Job System, Lumen, Nanite)

参考书籍: Game Engine Architecture

02.引擎架构分层

从上到下:工具层Tool Layer,功能层Function Layer,资源层Resource Layer,核心层Core Layer, 平台层Platform Layer;还有第三方库

资源层

Offline Resource Importing : Resource资源转换成Asset资产

数据关联

GUID唯一识别号

实时资产管理器 handle系统

核心:管理生命周期

gc垃圾回收很重要

延迟加载:玩到哪才加载

功能层

Tick概念->tick函数两大神兽:

tickLogic(float delta_time) 逻辑

tickRender(float delta_time) 渲染

多线程算法(*)多核架构是未来

核心层

数学库

一切为效率服务

SIMD,并行计算

做一套自己的数据结构,容器实现

内存管理:类似操作系统,内存池(*)

底层内存管理三条逻辑:1.尽可能将数据放在一起 2.数据尽可能按顺序访问 3.读写尽可能一次一批(多量)

一般代码要求非常高

平台层

掩盖掉平台差异度

RHI(Render Hardware Interface) : 重新定义一次Graphics的API,把各个硬件的sdk的区别封装起来

工具层

以地图编辑器为中心形成的一系列编辑器,例如逻辑编辑器(蓝图)、材质编辑器、动画编辑器等

DCC:别人开发的资产生产工具,开发的资源通过一条管线(Asset Conditioning Pipeline,各种导入导出器)统一变成游戏资产

为什么引擎要分层:降低复杂度,封装;上层更灵活,容易根据改变需求来改变,而下层更稳定

总结

引擎是分层架构的,分为五层

越底层的代码越稳定,质量也要求越高;越上面的代码设计得越开放,比较灵活,能够适应不同的需求

游戏这个虚拟世界的核心是靠tick函数驱动的

03.如何构建游戏世界

动态游戏物体、静态游戏物体、环境(地形、天空、植被)、TriggerBox等 : 统一都为GameObject(GO)

面向对象:property、behavior

问题:没有清晰的父子关系

解法:组件化代替继承

ComponentBase->Components->GameObjectBase

基于GameObject的Tick× 基于Component的Tick√

事件机制event:解耦合 可扩展的消息系统

游戏物体管理、场景管理(空间划分算法:画格子、四叉树、八叉树Octree,BVH, BSP, Scene Graph)

其它需要管理的复杂情况

父GO先tick,子GO后tick

pretick和posttick:解决时序性问题

Q&A

如果一个tick时间过长怎么办:把步长传进去,补偿位移等(掉帧?)/跳过一个tick(分帧?);分帧处理策略

tick的时候,渲染线程和逻辑线程怎么同步:tickLogic会比tickRender早一些

如何debug:打印log

物理和动画相互影响的时候怎么处理:插值

04.游戏引擎中的渲染实践Rendering

游戏绘制中的挑战:所有绘制算法汇集在一起,所有算法要有高效率:深度适配当代硬件,帧率必须稳定,只能使用一部分CPU资源Profiling

游戏引擎中的绘制知识点(结合实际进化而来)

Rendering基础:GPU硬件

实战:光照模型,材质系统,Shader模型

特殊子系统:地形系统,天空系统,后处理系统

Pipeline:延迟渲染等

渲染基础

Rendering Pipeline:参考GAMES101,投影、光栅化、着色绘制、纹理sampling等

GPU显卡

SIMD

单指令多数据,指令级并行技术

SIMT

总结:

在游戏世界中,所有东西都可以抽象为一个GameObject

GameObject可以看成由很多Components组成

所有的component在tick更新

在component中,所有GameObject通过一套复杂的消息机制event system进行通信

场景管理需要高效的层次结构管理机制

http://www.lryc.cn/news/364906.html

相关文章:

  • ARM功耗管理架构演进及变迁
  • ARM-V9 RME(Realm Management Extension)系统架构之系统能力的设备隔离和保护
  • 如何为律师制作专业的商务名片?含电子名片二维码
  • 方案设计|汽车轮胎数显胎压计方案
  • MySQL学习——选项文件的使用
  • Vulnhub-DC-3
  • docker 停止重启容器命令start/stop/restart详解(容器生命周期管理教程-2)
  • lua字符串模式匹配
  • 【深度学习】温故而知新4-手写体识别-多层感知机+CNN网络-完整代码-可运行
  • ChatGPT 论文翻译指南!解锁高质量翻译的秘密!
  • SQLserver通过CLR调用TCP接口
  • 前复权、后复权,技术分析看哪个?价值投资呢?
  • Python正则表达式:深度解析URL匹配与操作
  • [C][数据结构][顺序表]详细讲解+实现
  • vscode运行Java utf-8文件中文乱码报错
  • Mybatis杂记
  • 修改缓存供应商--EhCache
  • 20240606更新Toybrick的TB-RK3588开发板在Android12下的内核
  • x264 参考帧管理源码分析
  • 大语言模型应用与传统程序的不同
  • MySQL换路径(文件夹)
  • 企业诚信管理:构建顾客忠诚的高性价比之道
  • 如何利用pandas解析html的表格数据
  • hadoop疑难问题解决_NoClassDefFoundError: org/apache/hadoop/fs/adl/AdlFileSystem
  • 文件传输基础——Java IO流
  • Mysql时间操作
  • Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:无人机自主飞行软件平台
  • weak的底层原理
  • 03-3.1.3 栈的链式存储的实现
  • 传输协议TCP-原理部分