第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【DOTS学习笔记】DOTS简介

【DOTS学习笔记】DOTS简介

时间:2021-03-19 06:38:57

相关推荐

【DOTS学习笔记】DOTS简介

目录

前言DOTS是什么?核心Package游戏功能相关Package谁需要关注DOTS?DOTS可以应用到哪些地方?为什么需要DOTS

前言

本文是Metaverse大衍神君的《DOTS之路》系列课程的学习笔记

DOTS是什么?

Data-OrientedTechnologyStack(面向数据的技术栈)

从字面意义上来说DOTS是面向数据的技术栈

实际上Dots是由Unity的五个核心Package组成

它定义了一种全新的Unity代码编写模型

并在这些核心包之外提供了额外的游戏功能相关的Package和工具

是Unity下面向数据设计与编程的一整套解决方案

核心Package

The C# Job System: 提供快速、安全和使用简单的编写多线程方式 The Brust Compiler 优化C#代码的编译器可以编译生成比通过Mono或IL2CPP更快的代码并不止为DOTS而存在,同样可以编译Unity中的任何代码 Unity Mathematic 一套可以在Job System中使用的数学库在Brust编译的代码中是经过特别优化的 Unity Collections 提供常见的集合类型(列表、哈希映射表等)内存分配属于非C#托管类型可以在Brust编译代码中的Job System中使用这些基类类型支持安全检查,有助于他们在Job System中安全使用 Entities(Entity-Component System) Entity对象是比GameObject更轻量、更高效的替代品Entity并不承担任何代码Conpoment只是片段数据集合Entity和Componment都由System对应的代码单元处理

游戏功能相关Package

Entities.Graphics(1.0版本之前的Hybird Renderer) 支持URP和HDRP的Entity渲染解决方案并不是为了优化GPU而是优化CPU上的性能而设计的 Netcode 建立在五个核心包上的DOTS网络解决方案提供网络多人服务器功能、客户端预测等相关功能 Physics 建立在五个核心包上的DOTS物理解决方案支持两个后端 Unity Physics(默认) 无状态的确定性物理库适合多人网络游戏 Havok Physics 有状态但不具备确定性的物理库更稳定功能也更强大 Animation(开发中) 支持DOTS的Animation包 Audio(开发中) 支持DOTS的音乐相关包

谁需要关注DOTS?

技术负责人 在技术选型与Unity项目中是否使用DOTS的重要决策人 处理游戏逻辑部分的开发人员 需要非常了解DOTS的代码编写与设计方式了解Brust编译的细节 处理网络通信部分的开发人员 需要非常了解DOTS的代码编写与设计方式了解Brust编译的细节 处理动画部分的开发人员 了解动画扩展包的使用 处理物理模拟部分的开发人员 了解物理扩展包的使用 开发工具与工作流相关内容的开发人员技术美术DOTS相关工具与插件的开发人员

DOTS可以应用到哪些地方?

多线程加载、通讯,以及充分利用多核并行计算的游戏类型

具有大世界流式加载的游戏具有复杂的大规模模拟的游戏具有多种网络类型的多人联机游戏具有需要客户端模拟预测的网络游戏,如FPS

总之,只要是CPU Bound类的游戏都可以考虑用DOTS做并行优化

为什么需要DOTS

CPU、GPU、Memory以及带宽的发展速度的不均衡 添加高速缓存结构Cache内存层级结构去弥补(L1、L2、L3级的CPU缓存)面向数据编程本身是对缓存友好的,可以极大程度增加缓存Cache的命中,提高效率 摩尔定律的延续与现代CPU设计主要依靠的是 越来越好的工艺越来越多的核分工越来越细的处理单元与存储SIMD/SIMT并行编程的发展,要么依赖特地的硬件,要么是针对科学计算设计的,几乎无法集成到Unity中 OpenMPTBB(Intel Threading Building Blocks)CUDA(Compute Unified Device Architecture)OpenCL(Open Computing Language)MPI/OpenMPI(Message Passing Interface)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。