GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议

在这里插入图片描述
GODOT,是一个免费开源的3D引擎。本文以unity作对比,简述两者区别和选型建议。由于是很久以前写的ppt,技术原因视频和部分章节丢失了。建议当做业务参考。
在这里插入图片描述
GODOT目前为止遇到3个比较重大的基于,第一个是oprea的合作奖,第二个是用支持c#换来的微软的投资,第三个是虚幻商城的支持
在这里插入图片描述
虽然我总结了一些特点(优点),但说到底最大的优势还是免费开源,MIT协议
在这里插入图片描述
GODOT是支持脚本混编的。不同语言支持程度不同,有些api不对其他语言支持。所以GDScript是绕不开的必学科目
在这里插入图片描述
此处不贴视频了。你可以去b站看,有很多。
在这里插入图片描述
godot的编辑器提供了开发流程所必要的工具链。比如调试工具profiler、可视化shader编辑器、帧动画编辑器、骨骼绑定编辑等。
与unity相比没什么太大差别,只是有些地方名称不同而已。比如资源树中,unity的每个对象都是gameobject,而godot是node。功能、用法都没毛区别
在这里插入图片描述
下面看看渲染性能表现。
测试方式:用比较经典(懒惰)的方式,递增物理方块同屏渲染
测试移动设备:小米平板4


以下是godot和unity在不同物体数量下的帧率对比:
在这里插入图片描述
3d渲染结论:unity不愧是3d手游首选引擎,3d渲染性能强悍,碾压godot。可以看到当场景中存在3000个物体后,unity还能达到18帧,而godot已经卡的上气不接下气
在这里插入图片描述
接着看看2d的渲染性能表现
在这里插入图片描述
在渲染2d物体时结论出现了翻转,在同屏渲染1500物体时,godot能到到51帧,而unity只有1帧。这是因为unity在2d渲染时,使用的是“伪渲染”,既物体本质是3d的。而godot是实打实的2d物体。

tips: 为毛看起来两个引擎的2d渲染性能看起来都不如3d ?
这是因为3d物体没有加贴图,所有像素的颜色值都是一个颜色,计算消耗仅是法线 * 颜色 * 光照。
而2d物体加了贴图,虽然每个方块看起都较小,但为了更快的展现效果贴了比较大的贴图。这样就增加了很多纹理寻址的性能消耗。

在这里插入图片描述
除了脚本语法的编写差异,其他差异基本都在表中。
还要补充一点,godot的android调试发包是必须加key的。这一点不如unity省事。

关于选型

1. GODOT更适合2d项目开发

这个结论来自于性能测试,2d渲染性能表现亮眼。在制作一些需要巨量渲染,诸如割草类型游戏的项目时,2d的优越渲染性能是唯一关注点。

2. GODOT更适合中级以上工程师参与开发

该结论来源于
1. godot的工具链虽然提供也比较完整,但质量偏下,bug层出不穷
2. 插件少、不全面且质量偏下
3. 版本更新较慢、社区支持有限
很多情况下需要开发者利用自身丰富的开发经验来填补引擎支持的不足和缺陷

3. GODOT适合对免费开源有强制需求的项目

godot使用mit协议,你可以任意修改底层代码进行商业销售。而其他引擎存在各种不易知道的暗坑和收费陷阱。比如unity,在某些硬件设备下需要对用户,对你没看错,是用户收取使用费。

4. GODOT更适合中小型项目开发

与其他成熟商业引擎相比,godot在社区活跃、插件广度、教程数量上都比较匮乏。在遇到比较尖锐的问题时,诸如图形缓存复用、黑屏定位时往往不会轻易找到解决办法。另外godot的编辑器质量堪忧,即使在最新的3.1版本也存在正常保存项目会损坏场景文件的情况。还有丢失资源时,偶尔还会出现无提示崩溃情况。这些都为大型项目带来不可预估的延期风险和开发难度。所以推荐中小型项目使用

没了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式开发学习(STC51-13-温度传感器)

内容 通过DS18B20温度传感器,在数码管显示检测到的温度值; DS18B20介绍 简介 DS18B20是由DALLAS半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器; 与传统的热敏电阻等测温元件相比,它是一…

【C++】map和set

目录 一、容器补充1.序列式容器与关联式容器2.键值对3.树形结构的关联式容器 二、set1.set的介绍2.set的使用3.multset的介绍4.multset的使用 三、map1.map的介绍2.map的使用3.multimap的介绍4.multimap的使用 一、容器补充 1.序列式容器与关联式容器 我们已经接触过STL中的部…

Mysql自动同步的详细设置步骤

以下步骤是真实的测试过程,将其记录下来,与大家共同学习。 一、环境说明: 1、主数据库: (1)操作系统:安装在虚拟机中的CentOS Linux release 7.4.1708 (Core) [rootlocalhost ~]# cat /etc/redh…

Docker学习(二十四)报错速查手册

目录 一、This error may indicate that the docker daemon is not running 报错docker login 报错截图:原因分析:解决方案: 二、Get "https://harbor.xxx.cn/v2/": EOF 报错docker login 报错截图:原因分析&#xff1a…

使用ubuntu-base制作根文件系统

1:ubuntu官网下载最小根文件系统: 放置到电脑的ubuntu中, Mkdir Ubuntu_rootfs Cd Ubuntu_rootfs Sudo tar –zxvf Ubuntu-bash-xxxxxx.tar.gz 2:电脑的ubuntu安装qemu搭建arm模拟系统 将/usr/bin/qemu-arm-static/(64位拷贝…

(黑客)自学笔记

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 行为:从编程开始掌握,前端后端、通信协议、什么都学。 缺点:花费时间太长、实际向安全过渡后可用到的关键知识并不多。…

Java基础面试题2

Java基础面试题 一、IO和多线程专题 1.介绍下进程和线程的关系 进程:一个独立的正在执行的程序 线程:一个进程的最基本的执行单位,执行路径 多进程:在操作系统中,同时运行多个程序 多进程的好处:可以充…

[webpack] 基本配置 (一)

文章目录 1.基本介绍2.功能介绍3.简单使用3.1 文件目录和内容3.2 下载依赖3.3 启动webpack 4.基本配置4.1 五大核心概念4.2 基本使用 1.基本介绍 Webpack 是一个静态资源打包工具。它会以一个或多个文件作为打包的入口, 将我们整个项目所有文件编译组合成一个或多个文件输出出去…

macbook怎么卸载软件?2023年最新全新解析macbook电脑怎样删除软件

macbook怎么卸载软件?2023年最新全新解析macbook电脑怎样删除软件。关于Mac笔记本如何卸载软件_Mac笔记本卸载软件的四种方法的知识大家了解吗?以下就是小编整理的关于Mac笔记本如何卸载软件_Mac笔记本卸载软件的四种方法的介绍,希望可以给到…

LeetCode 热题 100 JavaScript--206. 反转链表

/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} head* return {ListNode}*/1、逐个断键,将后一个节点放到前面 …

网络可靠性之链路聚合

网络的可靠性 网络的可靠性指当设备或者链路出现单点或者多点故障时保证网络服务不间断的能力网络的可靠性是可以从单板、设备、链路多个层面实现。 链路聚合 以太网链路聚合: 通过将多个物理接口捆绑成为一个逻辑接口,可以再不进行硬件升级的条件下&a…

neo4j入门实例介绍

使用Cypher查询语言创建了一个图数据库,其中包含了电影《The Matrix》和演员Keanu Reeves、Carrie-Anne Moss、Laurence Fishburne、Hugo Weaving以及导演Lilly Wachowski和Lana Wachowski之间的关系。 CREATE (TheMatrix:Movie {title:The Matrix, released:1999,…

LeetCode-Java(06)

24. 两两交换链表中的节点 非递归解法 class Solution {public ListNode swapPairs(ListNode head) {ListNode pre new ListNode(0);pre.next head;ListNode temp pre;while(temp.next ! null && temp.next.next ! null) {ListNode start temp.next;ListNode end …

Android平台GB28181设备接入端如何降低资源占用和性能消耗

背景 我们在做GB28181设备接入模块的时候,考虑到好多设备性能一般,我们一般的设计思路是,先注册设备到平台侧,平台侧发calalog过来,获取设备信息,然后,设备侧和国标平台侧维持心跳,…

如何在Spring MVC中使用@ControllerAdvice创建全局异常处理器

文章目录 前言一、认识注解:RestControllerAdvice和ExceptionHandler二、使用步骤1、封装统一返回结果类2、自定义异常类封装3、定义全局异常处理类4、测试 总结 前言 全局异常处理器是一种 🌟✨机制,用于处理应用程序中发生的异常&#xff…

HCIA---OSI/RM--开放式系统互联参考模型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.OSI--开放式系统互联参考模型简介 OSI开放式系统互联参考模型是一种用于计算机网络通信…

C# Blazor 学习笔记(11):路由跳转和信息传值

文章目录 前言路由跳转测试用例路由传参/路由约束想法更新:2023年8月4日 前言 Blazor对路由跳转进行了封装。 ASP.NET Core Blazor 路由和导航 NavigationManager 类 本文的主要内容就是全局的跳转 路由跳转 路由跳转就要用到NavigationManager 类。 其实最常用…

解密HTTP代理爬虫中的IP代理选择与管理策略

在当今数据驱动的世界中,HTTP代理爬虫作为一项重要的数据采集工具,其成功与否往往取决于IP代理的选择与管理策略。作为一家专业的HTTP代理产品供应商,我们深知IP代理在数据采集中的重要性。在本文中,我们将分享一些关于HTTP代理爬…

RabbitMQ-API

这里写目录标题 Hello word 模式添加依赖生产者消费者获取信道工具类 Work Queues模式消费者代码 C1开启多线程运行启动 消费者代码 C2生产者代码 消息应答自动应答消息应答的方法Multiple 的解释消息自动重新入队消息手动应答代码消费者API 队列持久化消息持久化不公平分发消息…

一文带你深入了解JMM(Java内存模型)

JMM(Java内存模型)详解 为什么要有内存模型? 要想回答这个问题,我们需要先弄懂传统计算机硬件内存架构。 硬件内存架构 (1)CPU 去过机房的同学都知道,一般在大型服务器上会配置多个CPU&…