【游戏编程扯淡精粹】自研引擎切 UE

news2024/9/23 13:18:00

【游戏编程扯淡精粹】自研引擎切 UE

UF2022 的两篇讲座,再加上 The Machinery 引擎项目失败

结合过去两年笔者使用自研引擎的体验,其实有一部分是共通的

在这里插入图片描述

Crystal Dynamics:如何从自研引擎转变到虚幻引擎5

  1. 游戏技术(featurelist)越来愈大,越来越复杂
  2. 物理引擎太难用了,你必须是一个物理学博士
  3. 老代码,硬编码,屎山 legacy code
  4. 你有 50 个人,做游戏还是做引擎
  5. 毕业生更容易适应新引擎
  6. 专家先预研新功能,multiuser-edit,streaming // 他们很在意资源制作流程
  7. ue的一些开箱特性
    a. 光照渲染,lumen,naite
    b. 资源校验,validation // 老引擎很难加
    c. virtual shadowmap,virtual texture
    d. VFX
    e. 跨平台,PC上对的,其他平台差不多对了
  8. ue的问题
    a. 定制材质要改引擎源码,which 容易出错
    b. gameplay,大量迁移老代码(抛弃老代码的好时机) // 他们的 inventory 也烂的很 hhh
    c. 程序和策划之间的脚本要分层 // 我觉得非程序用蓝图就好

从Liquid到虚幻引擎:我们为何不再选择自研引擎

11bit,frostpunk2 开始,本来升级了 liquid2,还是迁移 ue 了

liquid

  1. 程序员很开心,完全可以handle
  2. 美术很糟心,迭代太慢了

why UE

  1. 最小化项目风险,我们得目标是做游戏,不是技术
  2. 做研究很好,做游戏更加重要
  3. 搞引擎导致大量扩招引擎工程师,成本很高
  4. 人才流失 // 上面说到程序员容易 handle,但是人迭代了几波,新人就搞不明白屎山代码了,这个优势就变成劣势
  5. 更容易美术外包

升级 liquid2,ECS,可视化编程,这些工具很好,但是跑偏了

在这里插入图片描述

liquid 主要问题是业务风险

在这里插入图片描述
在这里插入图片描述

Writing Tools Faster

The Machinery,开发者这样的引擎经验,堪称完美,两人两年从零搭建

但是为什么失败了?

本篇是 Machinery 在 GDC 上分享如何做引擎编辑器 UI,笔者只节选一部分

在这里插入图片描述

问题小结

  1. 频繁切技术栈
  2. 花很长时间作工具

why 频繁切技术栈的理由

  1. Bad decision
  2. Tech 过时,继续开发非常痛苦

why 花很长时间作工具

  1. 所有东西都需要UI,UI管线(设计,代码,测试)
  2. UI特性:Undo, copy/paste, serialize, drag-and-drop
  3. Deep tech stack 导致难以理解,难以查bug,非负责人更加难理解

最后 Machinery 解决了问题,开发了几个核心技术

  1. The Truth,ECS DB,统一数据模型
  2. 自研 ImGui

Machinery / Stingray 有一个 UE 没有的功能,就是多人协作,同时编辑一个场景,依赖于这套技术

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

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

相关文章

LVGL的学习及使用

1、LVGL简介 LVGL是最受欢迎的免费开源嵌入式图形库,可为任何MCU、MPU和显示器类型创建漂亮的用户界面。使用SquareLine工作室,使用拖放UI编辑器来简化开发。 1.1、LVGL源码下载 lvgl 在github 上的开源代码 https://github.com/lvgl/lvgl 下载的源码包里…

Vue的数据绑定

一、Vue的数据绑定 1、单向数据绑定:将Model绑定到View上,当通过JavaScript代码改变了Model时,View就会自动刷新。不需要进行额外的DOM 操作就可以实现视图和模型的联动 ​ a、数据只保存一份 ​ b、data—->DOM ​ (1&am…

在wsl下开发T113的主线linux(3)-写入spinand测试

接下来是烧写入硬件验证,我的板子焊接的是W25N01GV,这里使用xfel,因为支持写入spi-nand。GitHub - xboot/xfel: Tiny FEL tools for allwinner SOC, support RISC-V D1 chipTiny FEL tools for allwinner SOC, support RISC-V D1 chip - GitH…

QML学习笔记【04】:常用控件

1 Repeater与model Window {width: 640; height: 480visible: truetitle: qsTr("Hello World")Column{id: colspacing: 30Repeater{model: 3 //model控制了所有的数据,这里定义了Button的数量Button{width: 100; height: 50text: "btn" index…

整数划分——完全背包的变形

整数划分——完全背包的变形一、题目二、思路分析1、状态转移方程(1)状态表示(2)方程书写2、循环与初始化(1)循环(2)初始化三、代码一、题目 二、思路分析 这道题这么看的话还是比较…

Docsify使用之Markdown语法

Docsify使用过程中的排版,他是基于Markdown语法的。我们来看一下使用的常用语法: 字体加粗: 在需要加粗的文字前后各加两个** 具体格式如下 **加粗内容** 在需要加粗的文字前后各加一个* 具体格式如下 *倾斜内容* 在需要加粗并且倾斜的…

缅怀2022,展望2023

个人主页:董哥聊技术我是董哥,嵌入式领域新星创作者创作理念:专注分享高质量嵌入式文章,让大家读有所得!文章目录1、缘起2、收获3、憧憬不知不觉,2022已然到了最后一天,同时也是我技术创作一周年…

2.脚手架和逆向工程-使用renren开源

1.脚手架工程 脚手架工程提供了业务模块通用的类,比如返回结果封装、异常封装、分页工具类等 比较好用脚手架工程如renren-fast 备份地址 gitgithub.com:nome1024/renren-fast.git 2.逆向工程——使用renren-generator生成代码 逆向工程的作用是根据数据库快速生…

2022年仪器仪表行业研究报

第一章 行业概况 仪器仪表是用以检出、测量、观察、计算各种物理量、物质成分、物性参数等的器具或设备。真空检漏仪、压力表、测长仪、显微镜、乘法器等均属于仪器仪表。仪器仪表是人们对客观世界的各种信息进行测量、采集、分析与控制的手段和设备,是人类了解世界…

MySQL之表的修改和约束条件的添加

修改表中的数据:update[DML] 语法格式: update 表名 set 字段名1值1,字段名2值2,字段名3值3......where 条件;注意:没有条件限制会导致所有数据全部更新 举例: - 将id号为10的学生的姓名改变为"jas…

【自学Python】解释型程序与编译型程序

解释型程序与编译型程序 解释型程序与编译型程序教程 高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释型程序与编译型程序。 解释型程序 执行方式类似于我们日常生活中的 “同声翻译”…

Vue--》实现todo-list组件的封装与使用

目录 项目结构 创建todolist组件 创建todoinput组件 创建todobutton组件 项目结构 今天用 vite 脚手架搭建一个 vue3 的小案例,vite的搭建过程参考:vite的搭建 。其项目结构组件构成如下:注意:因为使用的是 vite 框架&#x…

51单片机GMS短信自动存取快递柜

实践制作DIY- GC0103-直流电机PID速度控制 一、功能说明: 基于51单片机设计-GMS短信自动存取快递柜 功能介绍: STC89C52RC最小系统板0.96寸OLED显示器DY-SV17F串口语音播报模块4*4矩阵键盘GSM短信模块4路舵机(模拟4个柜子) ***…

再学C语言21:循环控制语句——do while循环

一、其他赋值运算符 除了最基本的赋值运算符&#xff0c;C还有多个赋值运算符 a b等于a a ba - b等于a a - ba * b等于a a * ba / b等于a a / ba % b等于a a % b 这些赋值运算符的优先级与赋值运算符同样低 运算符优先级&#xff1a;赋值运算符 < 关系运算符 <…

《C++程序设计原理与实践》笔记 第9章 类相关的技术细节

在本章中&#xff0c;我们继续关注主要的程序设计工具——C语言。本章主要介绍与用户自定义类型&#xff08;即类和枚举&#xff09;相关的语言技术细节。这些语言特性大部分是以逐步改进一个Date类型的方式来介绍的。采用这种方式&#xff0c;我们还可以顺便介绍一些有用的类设…

数据结构与算法_五大算法之分治算法

这篇笔记记录分治算法的思想和两道leetcode题。 分治算法思想&#xff1a; 规模为n的原问题的解无法直接求出&#xff0c;进行问题规模缩减&#xff0c;划分子问题&#xff0c;子问题相互独立而且和原问题解的性质是相同的&#xff0c;只是问题规模缩小了。递归地缩小问题规模…

用Python记录一场2023的烟花

弹指间&#xff0c;2023已经到来&#xff0c;新的一年&#xff0c;祝大家新年快乐&#xff0c;阖家幸福呀~~~ 好吧&#xff0c;进入正题&#xff0c;2023的到来&#xff0c;肯定少不了烟花吧&#xff08;外面不让放炮&#xff0c;那咱们就用python放炮【DOGE】&#xff09; 首…

JSON Web Tokens(JWT)简单使用

文章目录什么是JWT&#xff1f;JWD对字符串进行Base64加密JWT加密字符串解释JWT使用场景jwt 特点JWT token在线解密什么是JWT&#xff1f; JWT&#xff08;json web token&#xff09;&#xff0c;它并不是一个具体的技术实现&#xff0c;而更像是一种标准。 JWT规定了数据传输…

Flink系列Table API和SQL之:动态表、持续查询、将流转换成动态表、更新查询、追加查询、将动态表转换为流、更新插入流(Upsert)

Flink系列Table API和SQL之&#xff1a;动态表、持续查询、将流转换成动态表、更新查询、追加查询、将动态表转换为流、更新插入流一、表和流的转换二、动态表三、持续查询四、将流转换成动态表五、更新查询六、追加查询七、将动态表转换为流八、更新插入流(Upsert)一、表和流的…

综合能源系统电压稳定研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…