艾莉尔 · 曼祖尔,Godot引擎的共同创建者
Godot engine 1是在2007年底构思的,当时我们 (胡安Linietsky和艾莉尔Manzur) 注意到
可用于游戏开发的硬件。第一个只是硬件的改进,这使得它在低端和
便携式设备,如PlayStation便携式 (PSP) 和第一款iPhone。当然,便携式游戏存在于2007年 (任天堂DS
当时已经推出了),但是这些设备太低端了,以至于必须专门为它们制作游戏,而且使用通用设备是不可行的
目的游戏引擎在那里。就iPhone和PSP而言,它们首次成为 “普通计算机”,但可移植。
1Godot引擎在麻省理工学院许可下作为开源项目发布。
第二个变化是中央处理单元 (CPU) 的构建方式。以前,我们习惯了 “计算机” 是单个CPU
一些内存、存储和图形处理单元 (GPU),随着时间的推移,CPU变得更快,GPU变得更强大。但
突然,我们开始看到CPU被分成多个内核。随着行业的开始,它是新的,也有点不可预测
实验 (例如PlayStation 3上的单元架构)。这意味着经典的 “游戏引擎主循环”,包括
“收集用户输入> 更新游戏逻辑> 更新图形> 返回开始”,不再是运行游戏的最有效方式,所以平行
处理是必要的。
这两个因素导致了一个决定: 我们不得不放弃我们正在使用的当前的低级引擎架构,并重新开始设计
更适合多核系统和具有多种功能的系统,从低端便携式设备到大型异国情调
控制台。我们采用了一种架构,其中每个核心系统都由一个 “服务器” 以异步方式处理。服务器操作在
比通常更高级别的抽象 (例如,与旧的渲染抽象相反,visual server执行自己的空间索引编制,
它只是绘制对象),但它们可以更好地利用底层硬件来实现。
当时,我们的引擎已经是第四代了,被用来制作一些游戏,包括MMORPG Regnum Online和
项目完结,系统自动填充内容但并不是所有的东西都被扔掉了,许多功能都被保留了下来,最重要的是
场景树。
虽然Godot的架构是基于服务器系统的,但从表面上看,内容是以对人类非常友好的方式组织的。这
对我们来说非常重要,因为我们知道在游戏开发过程中,大部分时间 (和金钱) 将用于整合
内容进入游戏。这意味着项目的每个成员都需要能够使用工具来集成这些内容,并且他们都需要
负责自己的内容,从创建到在运行游戏中实现。场景树系统非常适合这个,
因为这是人类已经习惯看待世界的方式。
想象你早上醒来,拿起你的背包,把你的电脑和充电器、雨伞和一个水瓶一起放进去。你
把你的手机放在口袋里,口袋里有20个应用程序,还把手机充电器放在背包里。当你出去的时候,你不会想,“我
我需要带着我的手机和20个应用程序,还有我的背包,我的电脑
t
呃,我的雨伞、水瓶和充电器。”你想,“ 我需要
带上背包和电话。”
你和另外20个人一起乘公共汽车,公共汽车司机知道如何在城市里开车,他没有想,“我和5个人一起开车20个人
背包、7个钱包、6个公文包、12台电脑、5本书、7支口红等等。”他在想,“ 我在开公共汽车。”
我们以不同的抽象级别来组织事物,我们分别担心每个级别,并且我们专注于每个级别。当你打包
背包,你担心里面有什么,然后你就随身携带一个背包。公共汽车司机知道怎么开公共汽车,他不知道
必须担心里面有什么,公共汽车上的所有乘客都负责搬运他们的东西。
场景树inGodot是组织游戏内容并让团队所有成员为此做出贡献的好方法,
专攻树的不同层次,不要被其他层次的人分散注意力。程序员调用
“爆炸” 动画并忘记了它,艺术家负责动画的内容,而不依赖于来自
程序员。这在游戏开发中至关重要,不仅因为它通过更多地利用程序员的时间来节省金钱
高效,但是通过让艺术家更好地控制他们的资产,他们能够为游戏提供更高质量的内容。
这本书是针对游戏开发团队的所有成员的,每个人都会带走与
他们的纪律。但是有一个领域我们希望我们能帮助每个人一起学习,那就是如何利用提供的工具
通过引擎来设计最有效的工作流程,以便团队中的每个人都能尽最大努力工作并产生出色的
游戏。我们将介绍引擎的所有主要领域: 2D、3D、物理和用户界面,以及一些示例游戏来展示所有的知识
付诸实践。程序员将有代码示例,但其他所有人也将学习引擎的特性和过程,以
以最好的方式整合他们的内容。
我们将使用即将推出的Godot版本3.0,其中包括对3D渲染的巨大改进、GDNative模块、C # 模块和
在过去的两年里,我们出色的贡献者社区做了很多工作。