Games104——引擎工具链高级概念与应用

在这里插入图片描述

世界编辑器

其实是一个平台(hub),集合了所有能够制作地形世界的逻辑
在这里插入图片描述

  • editor viewport:可以说是游戏引擎的特殊视角,会有部分editor only的代码(不小心开放就会变成外挂入口)
  • Editable Object:人、物、房、云等都是可编辑对象
  • Object管理:场景对象结构(一般是树)、layer、搜索等功能
  • 属性面板:Schema展现选中物体的属性(Inspector,Details)
  • Content Browser:资源管理浏览器
  • 鼠标选取:用到Ray Casting,用包围盒或者用ObjectID Buffer区分物体(粒子或透明物体需要特殊处理)
    在这里插入图片描述
  • transform、快捷键、高亮等交互
  • Height Brush:地形刷,需要设计smoothing或让艺术家自定义笔刷
    在这里插入图片描述
  • 环境规则:比如路上不能有树,把结果保存为图,再进行程序化生成或刷子效果(甚至可以控制风格)
    通过一套复杂的graph把Rule表达出来,把原始数据进行分层,然后交给计算机根据Rule进行树的一个合理的分布
    在这里插入图片描述

编辑器插件架构

插件需要同时考虑引擎系统和对象2个维度,如图,支持矩阵性数据访问
在这里插入图片描述
插件的4种组合方式:
在这里插入图片描述

在这里插入图片描述

  • 版本控制:引擎接口修改后可能会导致插件功能失效,这就需要引擎端设计接口时就考虑到这些问题,老师认为没有10年引擎经验可以不用考虑这些问题,同时老师不认为程序员写了5-10年代码就应该做管理,没有10-20年沉淀很难理解其中复杂度和丰富度,架构师也是程序员的终极归宿。
    在这里插入图片描述

设计叙事工具

游戏做的越来越像电影,Storytelling就变得很重要,下图的时间线在ue里叫Sequencer,相当于电影导演的统筹安排,游戏中一些过场动画就是这样做的。这个过程中涉及到很多工具的实现
在这里插入图片描述

Reflection和Gameplay

游戏玩法不断更新就需要不断提供新的工具、接口,现代引擎中可视化编程可以部分处理这种可拓展性,比如ue的蓝图;Visual Scripting System

但是在增加逻辑后,接口、工具都需要有相应的更新,工作量是非常大的,那就需要用到反射Reflection(高级语言基本都支持,如java和c#)。
「反射允许程序在运行时检查、修改和操作其自身的结构和行为」即引擎实现功能后,通过反射告诉工具有哪些开放类和接口可以访问,这时在蓝图中创建对象时,其接口参数全部可以展现,反射可以在代码和工具之间构建一个桥梁

c++中如何实现反射?
c++在编译时会翻译成抽象语法树(Abstract Syntax Tree,AST),比如类就会被翻译成一个树状结构表,在这个表里就比较容易提取接口和参数。课程小引擎用的是Clang,其中还涉及部分代码生成的内容
在这里插入图片描述

协同编辑

协同编辑是引擎发展方向,但大量数据、不同版本如何协作?

冲突:用类似git的方式管理merge冲突;
在这里插入图片描述

避免冲突:分层分配、分块分配(Divide The World)、One File Per Actor

在线同步操作:类似在线文档,需要同步,并解决Undo、Redo、Merge,比如用资源锁,或下述方法
在这里插入图片描述
在这里插入图片描述

QA
反射会不会影响运行效率:Runtime基本不会,但在编辑工具里频繁调用会有消耗
现代游戏开发中,DCC工具和引擎的分工是什么:DCC很多有渲染系统,引擎也想把DCC功能加入引擎里,两边都在大量融合

原文链接

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

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

相关文章

【力扣:新动计划,编程入门 —— 题解 ③】

—— 25.1.26 231. 2 的幂 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:…

10 Flink CDC

10 Flink CDC 1. CDC是什么2. CDC 的种类3. 传统CDC与Flink CDC对比4. Flink-CDC 案例5. Flink SQL 方式的案例 1. CDC是什么 CDC 是 Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数…

【PyTorch】6.张量运算函数:一键开启!PyTorch 张量函数的宝藏工厂

目录 1. 常见运算函数 个人主页:Icomi 专栏地址:PyTorch入门 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术&…

Python-基于PyQt5,wordcloud,pillow,numpy,os,sys等的智能词云生成器

前言:日常生活中,我们有时后就会遇见这样的情形:我们需要将给定的数据进行可视化处理,同时保证呈现比较良好的量化效果。这时候我们可能就会用到词云图。词云图(Word cloud)又称文字云,是一种文…

DeepSeek-R1论文研读:通过强化学习激励LLM中的推理能力

DeepSeek在朋友圈,媒体,霸屏了好长时间,春节期间,研读一下论文算是时下的回应。论文原址:[2501.12948] DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 摘要: 我们…

【深度分析】DeepSeek大模型技术解析:从架构到应用的全面探索

深度与创新:AI领域的革新者 DeepSeek,这个由幻方量化创立的人工智能公司推出的一系列AI模型,不仅在技术架构上展现出了前所未有的突破,更在应用领域中开启了无限可能的大门。从其混合专家架构(MoE)到多头潜…

万物皆有联系:驼鸟和布什

布什?一块布十块钱吗?不是,大家都知道,美国有两个总统,叫老布什和小布什,因为两个布什总统(父子俩),大家就这么叫来着,目的是为了好区分。 布什总统的布什&a…

Leetcode:350

1,题目 2,思路 首先判断那个短为什么呢因为我们用短的数组去挨个点名长的数组主要用map装长的数组max判断map里面有几个min数组的元素,list保存交集最后用数组返回list的内容 3,代码 import java.util.*;public class Leetcode…

Spring Boot 热部署实现指南

在开发 Spring Bot 项目时,热部署功能能够显著提升开发效率,让开发者无需频繁重启服务器就能看到代码修改后的效果。下面为大家详细介绍一种实现 Spring Boot 热部署的方法,同时也欢迎大家补充其他实现形式。 步骤一、开启 IDEA 自动编译功能…

LogicFlow 一款流程图编辑框架

LogicFlow是什么 LogicFlow是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端自定义开发各种逻辑编排场景,如流程图、ER图、BPMN流程等。在工作审批流配置、机器人逻辑编排、无代码…

Git进阶之旅:tag 标签 IDEA 整合 Git

第一章:tag 标签远程管理 git 标签 tag 管理: 标签有两种: 轻量级标签(lightweight)带有附注标签(annotated) git tag 标签名:创建一个标签git tag 标签名 -m 附注内容 :创建一个附注标签git tag -d 标签名…

riscv xv6学习笔记

文章目录 前言util实验sleeputil实验pingpongutil实验primesxv6初始化代码分析syscall实验tracesyscall实验sysinfoxv6内存学习笔记pgtbl实验Print a page tablepgtbl实验A kernel page table per processxv6 trap学习trap实验Backtracetrap实验Alarmlazy实验Lazy allocationxv…

Contrastive Imitation Learning

机器人模仿学习中对比解码的一致性采样 摘要 本文中,我们在机器人应用的对比模仿学习中,利用一致性采样来挖掘演示质量中的样本间关系。通过在排序后的演示对比解码过程中,引入相邻样本间的一致性机制,我们旨在改进用于机器人学习…

Baklib揭示内容中台与人工智能技术的创新协同效应

内容概要 在当今信息爆炸的时代,内容的高效生产与分发已成为各行业竞争的关键。内容中台与人工智能技术的结合,为企业提供了一种新颖的解决方案,使得内容创造的流程更加智能化和高效化。 内容中台作为信息流动的核心,能够集中管…

[论文阅读] (37)CCS21 DeepAID:基于深度学习的异常检测(解释)

祝大家新春快乐,蛇年吉祥! 《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正&#xff0…

JVM方法区

一、栈、堆、方法区的交互关系 二、方法区的理解: 尽管所有的方法区在逻辑上属于堆的一部分,但是一些简单的实现可能不会去进行垃圾收集或者进行压缩,方法区可以看作是一块独立于Java堆的内存空间。 方法区(Method Area)与Java堆一样,是各个…

火语言RPA--文本内容提取

🚩【组件功能】:通过前后截取、通配符参数组合或纯正则方式提取源字符串中指定的文本内容 配置预览 配置说明 源内容 支持T或# 默认FLOW输入项 进行处理、匹配的对象,若为空,以上一个组件的输出为源内容。 提取方式 前后截取…

JVM的GC详解

获取GC日志方式大抵有两种 第一种就是设定JVM参数在程序启动时查看,具体的命令参数为: -XX:PrintGCDetails # 打印GC日志 -XX:PrintGCTimeStamps # 打印每一次触发GC时发生的时间第二种则是在服务器上监控:使用jstat查看,如下所示,命令格式为jstat -gc…

芯片AI深度实战:给vim装上AI

系列文章: 芯片AI深度实战:私有模型deep seek r1,必会ollama-CSDN博客 芯片AI深度实战:自己的AI,必会LangChain-CSDN博客 芯片AI深度实战:给vim装上AI-CSDN博客 芯片AI深度实战:火的编程AI&…

供应链系统设计-供应链中台系统设计(十四)- 清结算中心设计篇(三)

关于清结算中心的设计,我们之前的两篇文章中,对于业务诉求的好的标准进行了初步的描述,如果没有看的同学可以参考一下两篇文章进行了解,这样更有利于理解本篇的内容。链接具体如下: 供应链系统设计-供应链中台系统设计…