Godot引擎 4.0 文档 - 入门介绍 - Godot设计理念

news2024/11/27 16:25:47

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面:

Godot's design philosophy — Godot Engine (stable) documentation in English

Godot设计理念

既然你已经了解了,让我们来谈谈 Godot 的设计。

每个游戏引擎都是不同的,适合不同的需求。 它们不仅提供一系列功能,而且每台发动机的设计都是独一无二的。这导致形成游戏结构的不同工作流程和不同方式。这一切都源于他们各自的设计理念。

此页面旨在帮助您了解 Godot 的工作原理,从它的一些核心支柱开始。它不是可用功能列表,也不是引擎比较。要了解是否有任何引擎适合您的项目,您需要亲自尝试并了解其设计和局限性。

如果您正在寻找引擎功能的概述,请观看Godot explained in 5 minutes 

面向对象的设计与组合¶

Godot 以其灵活的场景系统和节点层次结构将面向对象的设计作为其核心。它试图远离严格的编程模式,以提供一种直观的方式来构建您的游戏。

其一,Godot 可让您组合或聚合场景。它就像嵌套的预制件:您可以创建一个 BlinkingLight 场景和一个使用 BlinkingLight 的 BrokenLantern 场景。然后,创建一个用 BrokenLanterns 填充的城市。改变 BlinkingLight 的颜色,保存,城市中所有的 BrokenLanterns 将立即更新。

最重要的是,您可以从任何场景继承。

Godot 场景可以是武器、角色、物品、门、关卡、关卡的一部分……任何你想要的东西。它像纯代码中的类一样工作,除了您可以使用编辑器、仅使用代码或混合和匹配两者来自由设计它。

它不同于您在其它 3D 引擎中找到的预制件,因为您可以继承和扩展这些场景。您可以创建一个Magician 来扩展您的Character。在编辑器中修改Character,Magician也会更新。它可以帮助您构建项目,使其结构与游戏设计相匹配。

另请注意,Godot 提供了许多不同类型的对象,称为节点,每个对象都有特定的用途。节点是树的一部分,并且总是从它们的父节点继承到 Node 类。Godot中,大多数节点彼此独立工作,但也有一些节点被父物理体所使用,如碰撞形状。

换句话说,Godot 的节点不像其他一些游戏引擎中的组件那样工作。

Sprite2D 是一个 Node2D,也是一个 CanvasItem,还是一个 Node。它具有其三个父类的所有属性和特性,例如变换或绘制自定义形状和使用自定义着色器进行渲染的能力。

集大全的包¶

Godot 试图提供自己的工具来满足最常见的需求。它有一个专用的脚本工作区、一个动画编辑器、一个瓷砖地图编辑器、一个着色器编辑器、一个调试器、一个分析器、在本地和远程设备上热重载的能力等。

目标是提供一个完整的包来创建游戏和持续的用户体验。不仅可使用Godot 中的导入插件,您仍然可以使用外部程序。或者您可以创建一个,例如Tiled Map Importer。

这也是 Godot 提供自己的编程语言 GDScript 和 C# 的部分原因。GDScript 专为游戏开发人员和游戏设计人员的需求而设计,并紧密集成在引擎和编辑器中。

GDScript 允许您使用基于缩进的语法编写代码,但它会检测类型并提供静态语言的自动完成质量。它还针对具有内置类型(如矢量和颜色)的游戏代码进行了优化。

请注意,基于 GDExtension,您可以使用 C、C++、Rust 或 Python(使用 Cython 编译器)等编译语言编写高性能代码,而无需重新编译引擎。

请注意,3D 工作区的工具数量不如 2D 工作区多。您将需要外部程序或附加组件来编辑地形、制作复杂角色的动画等等。Godot 提供了一个完整的 API 来使用游戏代码扩展编辑器的功能。请参阅下面的Godot 编辑器是一款 Godot 游戏。

kubecz3k 的 Godot 2 中的状态机编辑器插件。它使您可以直观地管理状态和转换。

开源¶

Godot 在MIT 许可证下提供了一个完全开源的代码库。这意味着它附带的所有技术也必须是免费的(就像自由一样)。在大多数情况下,它们是由贡献者从头开始开发的。

任何人都可以根据项目的需要插入专有工具——只是它们不会随引擎一起提供。这可能包括 Google AdMob 或 FMOD。这些中的任何一个都可以作为第三方插件出现。

另一方面,开放的代码库意味着您可以从引擎中学习并将其扩展到您心中的内容。您还可以轻松调试游戏,因为 Godot 会使用堆栈跟踪打印错误,即使它们来自引擎本身。

注:这不会以任何方式影响您使用 Godot 所做的工作:引擎或您使用它制作的任何东西都没有附加条件。

社区驱动¶

Godot 由其社区、为社区以及所有游戏创作者制作。用户的需求和开放的讨论推动了核心更新。核心开发人员的新功能通常侧重于最先让大多数用户受益的功能。

也就是说,虽然有少数核心开发人员全职工作,但在撰写本文时,该项目已有 600 多名贡献者。仁慈的程序员致力于他们自己可能需要的功能,因此您会在每个主要版本中同时看到引擎各个角落的改进。

Godot 编辑器是一款 Godot 游戏¶

Godot 编辑器在游戏引擎上运行。它使用引擎自己的 UI 系统,它可以在您测试项目时热重载代码和场景,或者在编辑器中运行游戏代码。这意味着您可以为您的游戏使用相同的代码 和场景,或者构建插件和扩展编辑器。

这导致了一个可靠且灵活的 UI 系统,因为它为编辑器本身提供了动力。通过@tool注释,您可以在编辑器中运行任何游戏代码。

RPG in a Box 是使用 Godot 2 制作的voxel  RPG 编辑器。它使用 Godot 的 UI 工具用于其基于节点的编程系统和界面的其余部分。

@tool注释放在任何 GDScript 文件的顶部,它将在编辑器中运行。这使您可以导入和导出插件,创建自定义关卡编辑器之类的插件,或使用您在项目中使用的相同节点和 API 创建脚本。

注:该编辑器完全用 C++ 编写,并静态编译为二进制文件。这意味着您不能将其作为具有 project.godot文件的典型项目导入。

独立的 2D 和 3D 引擎Godot explained in 5 minutes

Godot 提供专用的 2D 和 3D 渲染引擎。因此,2D 场景的基本单位是像素。即使引擎是分开的,您也可以在 3D 中渲染 2D,在 2D 中渲染 3D,并在 3D 世界上叠加 2D 精灵和界面。

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

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

相关文章

(转载)MATLAB智能算法30个案例分析(1)——遗传算法工具箱

以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。 1理论基础 1.1遗传算法概述 遗传算法(genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法是把问题参数编码为染色体,再利用迭代…

第11届蓝桥杯Scratch选拔赛真题集锦

目录 一、编程题 第11届蓝桥杯Scratch选拔赛真题集锦 一、编程题 第 1 题 问答题 马克思的手稿 题目说明 背景信息: 马克思手稿中有一道趣味数学问题: 有30个人,其中有男人、女人和小孩。在一家饭馆吃饭共花了50先令;每个男人花了3先令,每个女人花了…

draw.io如何绘制带箭头的弧线

好长时间没有写draw.io相关的技巧了。今天再补充一个小技巧。 如何绘制像下图中蓝色的带箭头的弧线? 本来以为这个问题应该很简单,但是在仔细研究了很久之后我发现这个问题并没有想像得那么容易。 众所周知,draw.io中带箭头的线叫作“connect…

软件工程 | 期末复习习题

一、软件工程概述 1、选择 软件有无可行性和不可控性 软件工程是一门工程性学科 软件生存周期常见模型:螺旋模型、增量模型、瀑布模型、原型模型、融合模型、快速应用开发模型、敏捷模型 软件生存周期中时间最长的阶段是维护阶段 瀑布模型是一种软件生存周期模…

微搭低代码实现aad的sso

微搭低代码平台是一种可帮助您快速构建和部署应用程序的工具,而无需手动编写大量代码。要在微搭低代码平台上实现Azure Active Directory(AAD)的单点登录(SSO),您需要遵循以下步骤: 注册Azure …

SpringBoot整合Mybatis(3000字)

SpringBoot整合Mybatis 文章目录 SpringBoot整合Mybatis依赖导入配置信息(application.yml)代码分层数据库(建库建表语句)各层代码enity:dao:service:controller: 测试 Mybatis分页查询和模糊查询分页查询:测试: 模糊查询:测试: Mybatis的分布查询多对一:测试:一对多: Mybatis的…

邮箱营销不再难:如何提高邮件的到达率和打开率?

在数字时代,电子邮件是企业与客户以及潜在客户沟通的重要渠道,是企业培养客户的有效方式之一。然而,由于每个人每天也要收到大量的垃圾邮件,所以企业必须确保在正确的时间将邮件传递给正确的人。在这篇文章中,小编将探…

BEVDet 论文学习

1. 解决了什么问题? 自动驾驶系统感知周围的环境再进行决策,极具挑战。基于视觉的自动驾驶系统对准确性和效率的要求很严格,人们会采用不同的范式来解决 3D 检测和分割任务。对于多相机 3D 目标检测,image-view-based 方法如 FCO…

缓存更新策略

缓存更新策略 内存淘汰超时剔除主动更新说明利用Redis的内存淘汰机制,不用自己维护,当内存不足时会自动淘汰部分数据。下次查询时更新缓存。给缓存数据添加TTL(过期时间),到期后自动删除缓存。下次查询时更新缓存。编写业务逻辑,…

CSAPP Lab4- PerfLab

代码优化 typedef struct { unsigned short red; /* R value */ unsigned short green; /* G value */ unsigned short blue; /* B value */ } pixel图像用一维数组表示,第(i,j)个像素表示为I[RIDX(i,j,n)],n为图像的维数 #def…

Datacom-HCIE 02(10月26日更新)--含解析

单选题 1.[试题编号:189785] (单选题)如图所示,VTEP1上在BD20域内开启了ARP广播抑制功能,并且VTEP1通过 BGP EVPN路由学习到了PC2的ARP信息,则PC1发送的针对PC2的ARP请求,VIEP1在转发给VIEP2时…

sqli-labs Less-11,12

less-11(基于错误的POST型单引号字符型注入) sqlmap 1.使用bp抓包 2.保存为1.txt在本地,使用sqlmap查询数据库 sqlmap.py -r "C:\Users\wy199\Desktop\1.txt" --dbs 3.查询当前数据库的所有表 sqlmap.py -r "C:\Users\wy199\Desktop\1.txt"…

正点原子ALPHA开发板核心资源分析

目录 正点原子ALPHA开发板核心资源分析I.MX6ULL实物图对比SOC 主控芯片(MCIMX6Y2CVM08AB)NAND FLASHEMMCDDR3L 正点原子ALPHA开发板核心资源分析 I.MX6ULL实物图对比 I.MX6ULL NAND BTB 接口核心板资源图与 I.MX6ULL EMMC BTB 接口核心板资源图如上图&a…

安装ElasticSearch之前的准备工作jdk的安装

一.windows 下载jdk的软件 (1).进入jdk1.8官网 (2).根据电脑是32位还是64位按需下载 (3).点击下载之后就会跳转到Oracle账号登录界面 没有 Oracle账号的注册一下就可以了 下载好的jdk如下: 双击下一步下一步安装jdk 默认安装就可以了 配置环境变量 (1).电脑左下方设置选项 (2).…

UFT软件的安装与注意事项

安装包下载 UFT软件的安装包网上也有许多,这里我分享下我使用的--->UFT安装包 下载完成解压后进行安装。 要注意关闭杀毒软件,否则安装过程中某些组件可能会安装不上。 部分电脑在安装过程中出现以下提示,可以点击确定 然后我们查看桌面上…

学习open62541 --- [77] 修改String类型变量的注意点

对于String类型的节点,其值的类型是UA_String,在这篇文章中我们解释了UA_String的生成方法。 当我们修改String类型节点的值时,会事先准备一个UA_String变量,这时就会遇到一个选择:是否需要动态分配内存,即…

一种基于数值的横向相互作用

( A, B )---144*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有144个节点,训练集AB各由12张二值化的图片组成,让A中每行有1个1,B中全是0,排列组合A ,统计迭代次数的顺序。 前面实验已经表明对于A中每行只有1个1,…

虚幻or现实?堆区、栈区真实存在吗?是操作系统在骗你罢了...

文章目录 💐专栏导读💐文章导读🐧引例 🐦进程地址空间🐦虚拟地址与物理内存的联系🔔回答引例中的问题🔓写时拷贝 🐦虚拟地址存在的意义🔓malloc的本质 💐专栏…

Lift, Splat, Shoot 论文学习

1. 解决了什么问题? LSS 在工业界具有非常重要的地位。自从 Tesla AI Day 上提出了 BEV 感知后,不少公司都进行了 BEV 工程化的探索。当前 BEV 下的感知方法大致分为两类: 自下而上:利用 transformer 的 query 机制,…

软考 软件设计师上午题设计模式概念类

设计模式分类 创建型设计模式 简单工厂模式 不符合开闭原则,因此没有列入23类模式里 对扩展开放对修改关闭 工厂方法模式 说穿了:系统开放一个接口(拓展开放)、不提供修改的接口(修改关闭),…