游戏引擎概述-Part1

news2024/11/25 12:32:20

一、简述自己的学习心路历程      

          自从业UNITY以来已经有4个月多了,回想起来自己从工作以来就很少写博客了,也算督促一下自己,回想自己从最早的Unity开始,入手C#和编辑器、Unity开发界面,再到自己学一些Unity的小项目,直到入职,直到现在只能说慢慢对Unity有了一些了解,也大概知道使用Unity引擎可以做哪些事,怎么做,项目流程等等...

        与此同时对虚幻引擎有了一些了解,慢慢自己有闲暇的时间也大概学习了C++和虚幻蓝图等,也做了一些官方的C++小案例和谌嘉诚的蓝图网课,这个期间比较有意思的是我除了学习Unity和虚幻,出于开发需求也学习了一个轻量级引擎Inscape VTS,是采用了纯蓝图的方式进行项目开发,所以自己从事虚仿行业一下接触了三个引擎...

        最早接触Unity时,同事给了第一个项目就是让我去调整HDRP的灯光布置和渲染,后处理等等(虽然后面才知道灯光这种事是美术干的..),但是拿着一本HDRP的书死磕一个月回想起来还是很有耐心的,从那以后就自己摸索学习,自己能够在Unity中开发VR项目,大概会浏览大神写的源码,知道如何调用,如何使用开发工具,知道里面有自带的物理系统,也知道UGUI,NGUI等UI基础开发,还能嵌入音频,视频等,甚至还能自己制作材质,也能自己搭建服务器,将自己的项目联网,也可以使用Web展示自己的项目,所以感觉东西越学越多,那会自己每天接受的信息量巨大

        在那之后感觉自己对Shader特别感兴趣,觉得能够用HLSL手写Shader很厉害,所以又补了补Shader的知识,买了UnityShader入门精要,又买了OpenGl蓝皮书,不过只是浅浅的看了看,发现目前公司的项目不太支撑我能继续学习Shader..(亦或是兴趣并不是呢么浓厚?)后来到实际的项目开发中,后续肯定还是要补Shader部分的...

        后来自己开始管理一个小的项目,又把之前学过的数据结构算法拿过来看了看,虽然自己写的东西完全是不堪入目,不过过程中对代码的开发维护管理有了自己的认知,也越来越发现自己在代码上的功夫太浅,之前自己写的有关C#和C++的一些东西不实践很容易就忘掉了,所以一定要不断学习,也要不断练习才能进步...

二、入坑游戏引擎

        上一个月开始吧,偶然一天觉得自己现在泛泛的了解过三个引擎了,大概直到引擎之间的共性是什么了,所以看了看GAMES104的部分课程,知道引擎的开发历史(其实最早有游戏引擎的概念是在当时面试老板的书架子上有一本游戏引擎开发,当时特别感兴趣,还拿过来看了看...),2008年的时候,游戏已经成为了经济价值上百亿美元的产业了,那个时候引擎已经做的很精彩了,比如Quake和开山鼻祖Doom引擎,UE引擎,Unity引擎,CryEngine,寒霜引擎,Source等已经是具有完整功能的可复用软件的开发套件

        几乎所有的引擎都含有一组常见的核心组件,比如渲染引擎,碰撞,物理引擎,动画系统,UI系统,音频系统,对象模型和人工智能系统等等,这也就在业界形成了一些半标准化的设计方案,想要做一套完整的引擎是相当不容易的,所以称游戏开发堪称软件开发的天花板,它几乎涉及了所有计算机的知识,从底层到顶层,各种编程语言,对数据结构算法,内存管理,渲染引擎,动画系统,物理系统的使用可谓到了极致,而在第二版的游戏引擎架构一书中,把游戏团队的结构划分成如下结构:

        工程师:设计并实现软件,分为运行时程序员和工具程序员

        艺术家:概念艺术家(游戏原型设计),也就是原画师

                        3D建模师:为游戏中的所有事物制作三维几何模型

                        纹理艺术家:制作贴图,纹理等内容

                        灯光师:布置游戏世界的静态和动态光源

                        动作捕捉演员:提供一些原始的动作数据

                        动画师:为游戏中的角色和物体添加动画

                        音效制作师:制作游戏中的音效

                        配音演员和作曲家:为游戏的背景音乐和台词进行配音

        游戏设计师:在一般的游戏公司里面,这样的角色一般称为游戏策划

        游戏制作人:负责管理游戏开发进度等

        其他管理人员:负责行政,IT,公司硬件支持等..

        发行商和工作室:发行商负责游戏的市场策划,制造和分销,发行商都是一些比较大的其他也,比如EA,THQ,索尼,任天堂等等,很多游戏工作室不属于发行商,他们只是把自己制作的游戏卖给了发行商

三、什么是游戏引擎?

        最早的游戏引擎就起源于20世纪90年代的中期,那时候有一个游戏横空出世,就是大名鼎鼎的Doom,毁灭战士,他的开发者就是游戏界人尽皆知的John D. Carmack II,约翰科马克,在那个时候这个游戏已经清晰的划分成了三维图形渲染引擎,碰撞检测系统和音频系统,美术资产等,这也是我们游戏引擎的开山鼻祖,直到后来的雷神之锤三(Quake)和虚幻引擎等

        在引擎设计的时候就考虑到了复用性和mod,但是起初在设计引擎的时候是针对某种特定的,比如我们用来制作FPS的游戏引擎,对于第一人称射击游戏的复用性要比其他类型的游戏好的多,但是随着时代的推移,游戏引擎或中间组组件越来越通用,随着计算机硬件速度和显卡的应用,不同游戏类型的图形引擎差异已经很小了

根据第二版游戏引擎架构来说,做如下划分:

游戏引擎通常是由工具套件和运行时组件两部分组成。

运行时组件包含如下部分:

目标硬件

设备驱动程序

操作系统

第三方软件开发包和中间件

平台独立层

核心系统

资源管理器

渲染引擎

剖析和调试工具

碰撞和物理

动画

人体学接口设备

音频

在线多人/网游

游戏性基础系统

工具和资产通道

工具套件就包括了一些离线开发工具

用Games104的分类方式我们可以将游戏引擎分类成为如下模块:

我们可以用一些流程图来将游戏引擎的模块化,方便后续的继续补坑

 动画系统:

渲染:

物理系统:

动画系统:

基础架构:

工具链:

音效:

网络:

面向数据编程和任务系统:

GamePlay:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有效学习,通过PMP考试

但是我们时间有限,如何有效利用这些资料,花最少时间通过考试,是个关键问题。 课程主要的资料包括: PMBOK。官方指定用书,考试知识点来自PMBOK。 汪博士解读PMP考试。考试参考书,比PMBOK解析得更清楚&…

Qt-FFmpeg开发-视频播放(3)

Qt-FFmpeg开发-视频播放【软解码 OpenGL显示RGB图像】 文章目录Qt-FFmpeg开发-视频播放【软解码 OpenGL显示RGB图像】1、概述2、实现效果3、FFmpeg软解码流程4、主要代码4.1 解码代码4.2 OpenGL显示RGB图像代码5、完整源代码更多精彩内容👉个人内容分类汇总 &…

Bio-Helix 艾美捷IRIS11预染蛋白Markers基参及相关研究

IRIS11预染色蛋白梯是11种分子量为3至60kDa的预染色蛋白的组合。11种重组蛋白与蓝色发色团共价偶联,而2条70kDa和260kDa的红色带、一条15kDa的绿色带和一条新设计的60kDa的孔雀绿色带作为参考带。IRIS11预拉伸蛋白质阶梯在SDS聚丙烯酰胺凝胶电泳过程中跟踪蛋白质的大…

[附源码]java毕业设计新冠疫苗线上预约系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【测试沉思录】17. 性能测试中的系统资源分析之四:网络

作者:马海琴 编辑:毕小烦 计算机网络,就是通过光缆、电缆、电话线或无线通讯将两台以上的计算机互连起来的集合,包括广域网、城域网、局域网和无线网。 计算机网络是传输信息的媒介。我们常说的千兆网,是指网络带宽为…

openssl中SM2、SM3、SM4使用实例

目录 openssl的版本如下: SM3使用实例 1. SM3的扎凑实例 SM2使用实例 1. 生成SM2密钥对 2.查看SM2密钥对 3.生成自签名证书 4.查看证书详情 5.私钥签名消息 6.证书验证消息签名 SM4 使用实例 openssl的版本如下: SM3使用实例 SM3是中华人民共…

前端框架 Nextjs 实现React SEO优化

目录 一、Nextjs框架创建React项目 二、路由的使用 1、静态路由 2、动态路由 3、Link路由跳转 4、Api路由 5、Api动态路由 三、Nextjs中加载js脚本 四、Nextjs中加载图片 五、Nextjs的公共布局 六、Pages的其他特性 一、Nextjs框架创建React项目 快速入门 | Next.…

YOLOv5~目标检测模型精确度

还是yolo5的基础啊~~ 一些关于目标检测模型的评估指标:IOU、TP&FP&FN&TN、mAP等,并列举了目标检测中的mAP计算。 指标评估(重要的一些定义) IOU 也称重叠度表示计算预测回归框和真实回归框的交并比,计算公式如下: TP&FP&FN&…

2022CTF培训(二)Hook进阶反调试

附件下载链接 Hook进阶 更精准的 Inline Hook 要求 实现防止任务管理器对某进程自身的结束要求不影响任务管理器结束其它进程的功能 Dll 注入程序编写 提权 主要过程如下: 首先,程序需要调用OpenProcessToken函数打开指定的进程令牌,并获取TOKEN…

【架构设计】作为架构师你应该掌握的画图技术

1.前言 大家知道,架构的过程其实就是建模的过程,那自然离不开架构图。那么,我们先来看几个问题。 (1)什么是架构图? 架构图 架构 图,用图的形式把系统架构展示出来,配上简单的文…

Rust学习笔记——安装、创建、编译、输入输出

目录 一.安装 二.创建 三.编译 四.输入输出 (一).输出hello world (二).输入 一.安装 Rust Programming Language (rust-lang.org),这是Rust官网。 直接下载自己对应系统版本即可,小编是linux版。 下…

ARP协议map4(3层网络层的协议)

数据来源 一、广播与广播域概述 1、广播域广播域 广播:将广播地址做为目标地址的数据帧 广播域:网络中能接收到同一个广播所有节点的集合(广播域越小越好,这样通信效率更高) 下图每个圈都是一个广播域,说…

通关算法题之 ⌈数组⌋ 上

滑动窗口 3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 输入: s "abcabcbb" 输出: 3 这就是变简单了,连 need 和 valid 都不需要,而且更新窗口内数据也只需要简单的更新计数器 …

(续)SSM整合之SSM整合笔记(ContextLoaderListener)(P179-188)

一 准备工作 1 新建模块ssm com.atguigu.ssm 2 导入依赖 <packaging>war</packaging><properties><spring.version>5.3.1</spring.version> </properties><dependencies><dependency><groupId>org.springframew…

Day10--初步实现自定义tabBar的效果

承接上文配置信息之后。 1.添加tabBar代码文件 我的操作&#xff1a; 1》在文件区新建一个custom-tab-bar文件夹 2》并在其中新建一个index组件 3》文件区展示图 4》最终的效果图&#xff1a; **************************************************************************…

界面组件DevExpress Reporting v22.1亮点 - 报表设计器功能全面升级

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reporting v22.1版本已正式发布&am…

数据结构之二叉树(前提知识)

文章目录前言**一、树****二、树的相关概念****节点的度****叶节点****分支节点****子节点****父节点****兄弟节点****树的度****节点的层****树的高度****祖先****子孙****森林****三、树的表示****孩子表示法****左孩子右兄弟法****双亲表示法****四、树在实际中的应用****总…

iPhone/iPad屏幕投屏镜像到PC或Mac上面教程分享

AirServer是一款Mac应用程序&#xff0c;可将AirPlay / AirTunes的音频&#xff0c;视频&#xff0c;照片&#xff0c;幻灯片和镜像接收功能添加到Mac电脑。它可以实现将iPhone手机或Mac电脑上的媒体文件以及其他操作投射到Mac电脑上。使用AirServer&#xff0c;可以从Mac&…

如何利用DGL官方库中的rgcn链接预测代码跑自己的数据集(如何在DGL库的链接预测数据集模块定义自己的数据集类)

最近在忙我的省创&#xff0c;是有关于知识图谱的&#xff0c;其中有一个内容是使用rgcn的链接预测方法跑自己的数据集&#xff0c;我是用的dgl库中给出的在pytorch环境下实现rgcn的链接预测的代码&#xff0c;相关链接贴在这里&#xff1a; dgl库中关于rgcn的介绍文档 dgl库…

联盟快应用-如何进行测试?

官方文档&#xff1a;快应用-无需安装&#xff0c;即点即用-厂商联盟官方网站 什么是快应用&#xff1f; 可以简单理解为是另一种小程序。 快应用是一种新的应用形态&#xff0c;以往的手机端应用主要有两种方式&#xff1a;网页、原生应用&#xff1b;网页无需安装&#xff…