Godot官网新闻翻译 - 2016年
2016Godot 2.0现在是测试版!作者: 胡安·利涅茨基 26 一月 2016经过很长很长一段时间的开发,Godot 2.0现在处于测试阶段!Godot 2.0 Beta具有新的界面,并有大量的可用性改进。它也比以往任何时候都更稳定,有数百个错误修复和小问题。请严格测试此版本并报告您发现的任何错误!如果您最喜欢的错误尚未修复,请将其发布到GitHub或(如果已经存在)更新它,以表达您希望它得
2016
Godot 2.0现在是测试版!
作者: 胡安·利涅茨基 26 一月 2016
经过很长很长一段时间的开发,Godot 2.0现在处于测试阶段!
Godot 2.0 Beta具有新的界面,并有大量的可用性改进。它也比以往任何时候都更稳定,有数百个错误修复和小问题。
请严格测试此版本并报告您发现的任何错误!如果您最喜欢的错误尚未修复,请将其发布到GitHub或(如果已经存在)更新它,以表达您希望它得到修复以实现2.0稳定的愿望。
在下载部分试一试吧!
戈多 2.0 RC1 发布!
作者:胡安·利涅茨基 9 二月 2016
最后,在 Beta 版发布后的几周(以及数百个修复程序)之后,我们很自豪地推出我们的第一个候选版本!这个引擎版本应该更稳定,如果没有发现严重的错误,将变得2.0稳定。
请下载并彻底测试!
开源 Godot 已经两年了!
作者:胡安·利涅茨基 14 二月 2016
在像今天这样的日子里,两年前Godot是开源的。
如果您将当前版本与当时可用的版本进行比较,则差异就像白天和黑夜一样。我认为可以肯定地说,作为一个OSS项目,它的改进速度比关闭的内部引擎快了几倍(并且变得非常棒几倍)。
这在很大程度上是因为现在又有几个开发人员在研究它,但这种巨大改进背后的主要原因是因为社区的反馈令人难以置信。你们所有的反馈都帮助我们,开发人员,理解了Godot到底应该是什么样子,而不是几个人孤独的愿景。
从开源的那一天起,我们就试图根据您的需求和想法塑造Godot,这就是结果。
所以,感谢你们所有人,2月14日祝所有情人节,社区和戈多快乐!
家,甜蜜的家
作者:Rémi Verschelde 21 二月 2016
这是:戈多引擎的新主页!你们中的一些人可能已经等待了很长时间,而其他人可能从未使用过以前的网站,因此我们将回顾再次修改网站的动机。
非常感谢Andrea Calabró,Alket Rexhepi,Hugo Locurcio(Calinou)和Rémi Verschelde(Akien)的辛勤工作!
注意:旧论坛(以及OpenProject网站的其余部分)现在仍然可以在 op.godotengine.org 访问。
为什么要再次改变?
早期的Godot用户可能还记得,我们在2015年曾经有一个WordPress驱动的网站,有一个自托管的论坛和Godot的GitHub wiki上的官方文档。随着社区和项目的不断壮大,越来越多的新贡献者,我们希望有一个平台来简化项目管理,以便我们可以在团队中高效地工作。同样显而易见的是,GitHub非常有限的权限管理不允许我们在wiki上做出贡献,而不会将源代码的推送权授予每个人(!),因此我们需要一个文档的替代方案。
一些Godot贡献者(主要是Theo Hallenius - TheoXD - 我们最感谢和赞赏执行这项任务)花了很多时间建立一个OpenProject实例来替换以前的网站。OpenProject是一个开源项目管理系统,它具有我们在同一软件中需要的大部分功能:任务管理,wiki,论坛,博客以及处理本地化网站的良好可能性。与设置几个单独的软件包相比,OpenProject似乎是显而易见的方式。
不幸的是,OpenProject对我们来说太复杂了。很难找到能够花足够时间来了解其后端如何工作的贡献者,我们也遇到了无法解决的性能问题。结果,该网站看起来未经打磨,运行缓慢。
新网站及其工具
因此,我们决定制作一个新的主页,我们可以很容易地用PHP,HTML和CSS作为主题,我们大多数人都非常熟悉,并且我们可以轻松地一点一点地添加组件以满足社区的需求(我听到有人说"资产共享系统"吗?)。在使用对我们来说太大的整体式平台遇到困难之后,我们决定采用一种更加模块化的方法,使用工具,这些工具应该易于由我们当前和未来的贡献者维护。
主网站
对于登录页面,我们希望有很大的技术自由来主题化我们想要的所有内容,并尽可能减少混乱以简化维护。我们首先在设计,HTML和CSS实现上工作,最后决定使用轻量级的OcthentCMS作为后端,它为这个简单的新闻部分提供了动力。
由于这种简单的设置,我们可以轻松设计好看(我们希望!)页面来展示Godot及其功能,使下载易于访问等。将来,我们希望添加一个部分,展示使用Godot制作的游戏。
问答平台
随着我们越来越多地注意到人们在Facebook群组上提出许多技术问题,该群组没有提供良好的搜索功能,也没有搜索引擎参考,我们决定设置一个Question2Answer实例,也是PHP格式,并且易于使用大量插件进行自定义。它与StackExchange或StackOverflow等流行的技术平台非常相似,应该有助于提高Godot相关问题及其最佳答案的可见性。看看吧!
目前,我们还提出了特定的类别来展示Godot游戏和WIP,并在问答中讨论偏离主题的内容 - 这曾经在论坛中,但我们还不想设置另一个新工具。如果我们/当我们确定一个更适合的解决方案时,这种情况将来可能会改变。同时,您仍然可以访问旧论坛。
狮身人面像文档
最后,为了使文档更容易贡献,我们选择使用完善的Sphinx文档生成器。它允许我们在公共git存储库中拥有文档的源代码,这意味着每个人都可以轻松地为文档拉取请求做出贡献,并且很容易使用git功能跟踪对任何页面的更改。然后,Sphinx会根据此源生成HTML页面,然后我们可以将其托管在我们的网站上。
为了使事情更容易管理,我们使用开源 readthedocs.org 前端,每次更新git存储库(以及PDF和Epub版本!)时都会重建HTML文档,并使我们能够处理不同版本的文档(例如,对于每个Godot版本,尽管目前只有"最新"分支可能成为"2.0")以及翻译。我们将发布有关此文档的更多信息,以及将来如何为它做出贡献!
今天就讲到这里!我们希望您会喜欢Godot的新家,我们很乐意欢迎您在IRC或Facebook群组中提供反馈。目前的网站不是最终的,我们将继续一点一点地改进它,使其尽可能实用。
戈多引擎达到2.0稳定
作者:胡安·利涅茨基 23 二月 2016
戈多 2.0
两年多前,Godot是开源的。它本来是一个内部工具,虽然它适用于内部项目,但当你有成千上万的开发人员使用它时,它远非预期的可用性。
经过一年的辛勤工作和社区反馈,Godot 1.0发布了,标志着第一个可供大众消费的版本。这个版本运行良好,但我们认为它仍然远离现代游戏引擎的可用性和功能。更紧迫的问题是改进2D引擎,所以我们再次努力工作并发布了Godot 1.1,这实际上确实大大改善了2D渲染。
可用性仍然是一个紧迫的问题,因此我们列出了一长串需要改进2.0的任务。我们努力工作,大约8个月后,我们现在终于为您准备好了一个稳定的Godot!
这个版本很特别,因为我们的团队已经成长了很多。我们有更多的定期贡献者,一个文档团队,一个错误分类团队和一个更大的社区!戈多不断成长,变得越来越棒。
请参阅更改的完整列表。
新的核心功能
虽然对于2.0核心更改不是优先事项,但此版本有一些不错的改进!
改进的场景实例化
实例化是戈多最好的功能之一。对于此版本,它已得到进一步改进。以前,只有场景的根节点是可编辑的。对子节点的更改将导致数据丢失。
现在可以编辑实例化场景的任何子节点,并使更改保持不变。即使是实例的子实例也可以通过持续修改进行编辑。
场景继承
开始的Godot 2.0场景不仅可以实例化,还可以继承。这允许许多有趣的用例,例如:
- 有一个基础场景(即敌人,可收集的,障碍物等),具有所有节点共有的层次结构(如爆炸,闪耀,指示器等),然后为每个职业扩展它。
- 对导入的场景(即 3D 场景等)进行非破坏性更改
- 对其他团队成员创建的场景进行非破坏性更改。
新的基于文本的场景格式
Godot 支持用于保存场景和资源的 XML 格式,但我们遇到了问题:
- 场景以 xml 格式保存,因此内容难以理解。
- 该格式的分析效率不高。
- 它对VCS(Git,SVN)不友好。
- XML 不容易手动编写,也很容易出错。
考虑到这一点,Godot 2.0添加了一种受TOML启发的新文本文件格式。这种新格式在保存场景时是描述性的(人类友好的),而Git/SVN是友好的:
对于 3.0,此格式将是唯一受支持的基于文本的格式,并且将弃用 XML。
onready和单例
初始化类成员变量可能非常麻烦,这样的代码在 GDScript 中很常见:
"onready"关键字允许在调用_ready时同时初始化类成员变量,从而节省一些代码:
但是,对于自动加载的场景执行此操作仍然很麻烦,因为每次创建脚本时都必须执行此操作。为了简化这一点,可以在项目设置中使自动加载的场景或脚本成为单例变量(可在全局范围内访问):
当然,所有这些都与代码完成完美地协同工作。
其他新核心功能
还添加了较小的新核心功能:
- 支持导出时使用 ZIP 包,而不是 PCK
- 支持 OPUS 音频格式
- 更改为更兼容的 JPG 解码器。
- 非常改进的游戏手柄支持
新的编辑器功能
Godot 2.0的编辑器部分是大部分工作集中的地方。当务之急是改进工具,提高工作流程的效率。
新的布局和主题
Godot 2.0采用了一个新的主题,由Andreas Esau提供。它看起来比前一个更专业,更少混乱。删除了许多不必要的图标,边距,箭头等,以进一步清理视觉效果。
另外,码头面板(以前固定在右侧)现在可以移动和重新排列。
"新建文件"对话框
Godot的常见障碍之一是过于简单的文件对话框:
对于2.0,我们创建了一个新的,它支持:
- 导航历史
- 收藏夹
- 最近使用的文件夹
- 缩略图预览(和列表视图兼容模式)
新的文件系统扩展坞
Godot曾经有一个原始的树停靠面板视图,其中包含所有项目资源。这被一个更现代的文件系统扩展坞所取代:
这个新面板可以在缩略图和图标视图中显示资源(类似于文件对话框),但它也包括几个工具。
根据流行的要求,Godot的新文件系统扩展坞具有允许用户执行以下操作的工具:
- 重命名和移动文件,并自动修复所有资源/场景依赖关系。
- 当其他资源引用正在删除的文件时发出警告。
- 使用启发式方法在项目中搜索损坏的依赖项。
- 直观地浏览并重新分配给定资源的依赖项。
- 浏览给定文件的所有者。
- 探索哪些资源可能是孤立的,以便于清理。
多场景编辑
Godot制作游戏的分而治之的方法依赖于在几个子场景中细分场景,每个子场景都有一个身份或功能。
Godot 2.0 通过支持多个场景编辑对此进行了改进,允许同时打开多个场景。在它们之间切换是无痛的,当依赖关系(实例或继承)发生变化时,Godot还会自动重新加载场景。
新工具布局
在 Godot 中,当选择给定节点或资源时,工具会根据上下文显示。这使得 UI 快速流动,并消除了对面板布局进行大量组织的需要。
Godot的这一方面在2.0中也得到了改进,引入了新的底部面板。在上面,上下文编辑器可以制作整洁的附图。某些编辑器也始终显示为永久按钮:
- 输出控制台
- 调试器
- 动画编辑器
新的代码编辑器
Godot将代码编辑器集成到其他编辑器中。在 Godot 1.1 之前,脚本是根据上下文打开的,但是,由于现在可以编辑多个场景,这不再可能。
作为补偿,新的代码编辑器现在的工作方式更类似于IDE,其中脚本始终处于打开状态。切换到场景还会自动切换到其主要脚本(根节点中的脚本,最常放置的位置),使编程体验更加流畅。
代码编辑器还具有许多新功能:
- 打开的脚本列表,因为使用选项卡意味着空间很快就会耗尽。
- 每个脚本的温度指示器,最常用的脚本显示得更接近红色。
- 脚本历史记录:现在可以轻松地在编辑脚本的历史记录中来回切换。
- 文档页面显示为文档。这允许将多个页面与脚本一起打开。
- 快速访问教程、课程列表和帮助搜索。
- 改进的代码完成
改进的调试器
调试器也进行了许多改进。新增功能是使用正确的通知报告运行时错误。
Godot从地面设计,试图通过恢复和报告错误来处理常见的崩溃情况。这在生产游戏中很有用,因为通常可能导致崩溃的意外错误不会使其失败。然而,这些错误被悄悄地报告给stdout,所以发现它们并不容易。除此之外,鉴于调试器不会为它们停止,因此很难有一些上下文来理解它们的起源。
现在添加了一个新的部分"错误",当运行时错误发生时,该部分将变为红色。选择或悬停错误将显示导致这种情况的脚本文件的回溯。
视频内存调试器
另一个新的、有用的功能是新的视频内存调试器。这允许查看正在使用的视频内存量,以及辨别哪些资源占用的视频RAM量最大。
在硬件设备上调试
现在也可以调试在实际设备上运行的游戏。确保在远程选项菜单中启用"部署远程调试"选项。如果您的设备装有Android 5.0 +,Godot可以直接通过USB电缆进行利用和调试。
碰撞和导航调试
我们添加了对在运行时中以 2D 和 3D 形式调试碰撞形状和导航多边形的支持。只需在上述菜单中选择"可见碰撞形状"和/或"可见导航"选项即可启用此功能。
实时场景编辑
在大型游戏引擎的脉络中,Godot现在有实时编辑支持。但是,它实现此功能的方式是不同的。Godot 使用 IPC 将编辑器状态与正在运行的游戏同步。这意味着对正在编辑的场景所做的任何更改都会自动反映在正在运行的游戏中。
虽然这种实时编辑方法不允许从不同的编辑器摄像机轻松检查游戏(无论如何,它最终可能会实现),但它具有巨大的优势,即允许在游戏播放时编辑关卡的可能性(并避免在游戏停止时丢失编辑状态)。只需添加敌人,移动它们,更改其属性,添加碰撞体,平台,图块等,所有内容都会立即反映在正在运行的游戏中。
要启用实时编辑,只需随时从远程选项菜单中切换即可。
实时编辑视频:
(视频缺失)
也可以在实际设备上进行实时编辑!只需在远程选项菜单中选择"部署远程调试"和"实时编辑":
(视频缺失)
新的颜色选取器
有一个新的颜色选择器由Mariano Suligoy提供,支持视觉HSV,原始模式,屏幕选择,最喜欢的颜色等等!
较小的新增内容
Godot 2.0 带来了几个较小的新增功能来帮助提高可用性:
- 属性编辑器的可见历史记录
- 在 2D 和 3D 模式下选择重叠对象
- 分类项目和编辑器设置
- 作为属性工具提示的内联文档
- 数组/字典属性编辑
- 多节点编辑
- 新的动画编辑器布局
- 改进的锚固工具
- 可以拖动单调框(控件和属性列表中)以更改值。
- 还有更多的小补充。
前途
我们知道Godot最薄弱的部分仍然是3D引擎,我们计划完全致力于对其进行现代化改造。但是,我们认为还有几个更紧迫的问题需要改进可用性。Godot 2.1将继续与2.0保持相同的风格,并不断增加可用性改进。(请随时查看路线图)。
资产共享
Godot社区不断发展,用户不断生产更多的资产,脚本,模块等,我们需要一个统一的平台来共享它们。因此,我们将努力为2.1提供一个资产共享平台(网站+ REST API + Godot集成)。内置平台将是免费的(它将与GitHub集成),但我们将确保REST API定义良好,以便任何人都可以制作一个商业资产共享平台并将其与Godot集成。
传播爱!
如果你喜欢戈多,让每个人都知道。用户越多,戈多就会变得越好。分享这个消息!
请捐款!
您不必是经验丰富的C++开发人员来帮助Godot开发!您的捐款有助于我们将更多的工时投入到项目中,并使其更快地进行!捐
插件!
作者:胡安·利涅茨基 27 二月 2016
让插件存在
有一段时间,用户要求他们可以扩展Godot,而不必修改核心C++代码库。我们已经开始以插件的形式实现这一点。支持在GitHub HEAD上是实验性的,但应该有足够的资源来开始工作。
编辑插件
插件是通过扩展 EditorPlugin 类在 Godot 中创建的。请随时查看此类的内置文档,以获取有关可以执行的操作的信息:
要配置插件,继承此类的脚本和配置文件(plugin.cfg)都必须位于项目中的以下位置:
addons/[plugin_name]/plugin.cfg
addons/[plugin_name]/plugin_script.gd
将有更多关于如何创建此类文件的信息,但现在您可以查看一些演示:
https://github.com/godotengine/godot-demo-projects/tree/master/plugins
启用插件
要启用插件,请转到"项目设置"窗口。将有一个新的部分"插件",您可以在其中查看已安装的插件并启用/禁用它们:
前途
此功能正在进行中。我们需要您的帮助,让它变得更好!我们知道编辑器API仍有大量表面无法直接访问,因此,如果您有无法使用当前API完成的插件想法,请告诉我们,我们将尝试对其进行改进。请提交请求此类函数的 GitHub 问题。
我们的目标是,一旦这个API稳定下来,它将成为Godot 2.1中新资产共享系统的基本组成部分。
快乐黑客!
发布周期更新 – 和 Godot 2.0.1
作者:Rémi Verschelde 7 三月 2016
Godot 2.0的稳定版本已经制作了九个月,并带来了大量的新功能和错误修复。我们的一些用户一直在测试alpha和beta版本,但其他人决定留在稳定的1.1版本,因此不得不等待相当长的时间才能修复错误。
因此,我们为发布周期决定了两件重要的事情:
更短的发布周期
稳定版本将更频繁地发生。提前发布,发布通常是一种经过验证的哲学,我们都深情,我们认为这对戈多是有益的。
对Godot 2.0的漫长等待实际上主要是由于破坏了与1.1的兼容性(特别是对于新的TSCN / TRES格式)。我们希望使它成为一个大版本,以便通过出色的新功能来弥补失去与1.1兼容性的不便。
另一方面,我们不会为将来的版本提供ETA。在像我们这样的社区驱动项目中,它在很大程度上取决于贡献者的可用性,然后我们将在准备就绪时发布。然而,我们希望在2.1中发布的主要功能上有一些良好的进展(虽然不是"2.1"路线图中的所有功能,我们将在2.x分支中将其拆分为几个子版本),主要是新的插件API和插件共享平台。
当前稳定版本的维护版本
与此同时,我们计划发布最新稳定版本的 bug 修复版本,为我们的用户带来有趣的 bug 修复,而不必在生产中使用 master 分支"冒险"。这也与我们在Steam上发布的版本特别相关,用户可能希望从上游错误修复中受益,而无需被迫进行beta测试。
戈多 2.0.1
为了开始使用这些维护版本,我们宣布推出Godot 2.0.1!它包含一些非关键的错误修复和一些可用性改进,应该可以改善Godot 2.0用户的整体体验。
此版本中的主要修复程序包括:
增强:
- 帮助部分的可用性改进(完整对象继承、可搜索类列表)
- 更好且可配置的脚本编辑器调用提示位置
- 支持独立构建的配置预设(尤其是 Steam)
- 添加了更多游戏手柄绑定
- 改进的类文档
- 减小了演示包的大小
错误修复:
- 修复了在项目设置中添加/删除全局变量的问题
- 修复了动画树播放器中的混合函数
- 修复了鼠标运动中的变换本地化事件
- 修复了在场景选项卡不是当前选项卡时关闭该选项卡的问题
- 有关更多详细信息,请参阅完整的更改日志,并前往下载页面以获取它!
对于此版本,我们还使用了新的构建系统来创建和部署二进制文件,因此,如果您遇到任何相对于2.0稳定的回归,请与我们联系。
戈多在GDC 2016,善后
作者:胡安·利涅茨基 19 三月 2016
什么?
GDC(或游戏开发者大会)是每年三月在旧金山举办的活动。GDC的重点是在一周内尽可能多地重聚视频游戏开发行业。该活动用于会议(主要是教育),商业,混音器,颁奖典礼(IGF),技术展示和与其他开发人员的聚会。
毫无疑问,如果您是视频游戏开发人员,那么这是一年中的绝佳时机,您可以参加它。
戈多在GDC
我们带着许多目标将Godot带到GDC,主要是看到行业对它的反馈(看看我们如何改进),并找到大公司对其发展的赞助。
我们花了一周的大部分时间与程序员,艺术家,设计师,公司代表等会面。去参加派对,会谈等等。
在赞助方面,我们有许多有前途的潜在客户,但现在写它可能还为时过早。
然而,在反馈方面,我们的发现并不是我们所期望的。可悲的事实是,即使经过两年的开源…
没有人知道戈多
就这么简单。当我们向他们展示Godot,社区正在制作的游戏,引擎的成熟度等时,开发人员和公司都充满热情和惊讶。然而,他们根本不知道它的存在,也从未听说过它。
这次GDC,组织者估计与会者人数超过70.000。有人可能会说,参加GDC的大多数开发人员都不是视频游戏技术爱好者,所以他们不会费心去研究公司要求他们学习的东西(可能是Unity)。我们的问题不在于用户不喜欢Godot,而在于开发人员懒得去寻找他们使用的东西是否有替代品。
另一方面,亚马逊为Lumberyard设置了一个巨大的展位(非常适合其40 GB的安装尺寸:P),你可以看到开发人员惊讶地发现周围有一个新的引擎。
我们需要可见性
在这一点上,我认为越来越清楚的是,Godot需要在整个行业范围内获得更好的可见性,因此我们应该开始考虑实现这一目标的方法。我想到的一些事情是:
- 我们应该开始联系公司的首席技术官或技术总监,并邀请他们私下展示戈多。
- 我们实际上可以尝试在GDC上众筹一个展位,这肯定会让我们在参加活动的行业中获得知名度。一个像样的展位虽然相当昂贵(15-25k美元),但我们实际上可能会与其他流行的开源软件共享,这些软件用于Blender或Krita等游戏。
- 创建一套培训材料可能会很有趣,因此其他Godot用户也可以使用它们在当地设置果酱,研讨会等。
任何想法都是受欢迎的,这是我们今年肯定会努力解决的问题。
戈多以主流为目标
作者:胡安·利涅茨基 1 四月 2016
**编辑:这当然是2016年愚人节的一个笑话。**不过,请继续关注一些真正的新闻,因为正在为Godot 2.1开发一个资产共享平台。
在参加了今年的GDC之后,我们意识到Godot虽然是一个我们认为已经为行业做好准备的良好引擎,但仍然很难被专业游戏开发者所熟知。
我们得到的最重要反馈是,Godot与最流行的游戏引擎不同,因此令人困惑。因此,为了变得更受欢迎,我们决定让Godot更像其他主流引擎。这应该让每个人都感到高兴,因为毕竟,地球上有一半的人都使用相同的游戏引擎。
一年前,我们开始这项工作,让戈多真正自由。今天,我们想宣布我们跟进这项工作的计划。
下载大小
Godot作为单个可执行文件下载,占用十几兆字节,并且仅通过执行它,就包含项目管理器和编辑器运行时。无需安装。这显然是错误的,并且与现代游戏引擎的趋势背道而驰。例如,新的惊人的亚马逊游戏引擎Lumberyard在下载后解压缩为40 GB。
这是营销的一个基本规则,公众知名度取决于你的规模。因此,从Godot 2.1开始,用户最终将能够下载占用2.7 GB硬盘驱动器的安装程序。这种规模的增加应该有望帮助我们提高知名度,并让我们的用户感觉他们正在安装一个功能丰富的引擎。当然,这不仅仅是臃肿,额外的尺寸将是由于许多重要的新功能:例如,内部PI常数将提供π(Pi)的前231个小数,因为我们知道数学精度是游戏行业中的一个重要问题。
资源商店
很明显,我们目前为编辑器提供最常用工具并旨在改进每个新Godot版本中的内置工具的方法是错误的,并且也违背了趋势。用户很难通过Godot现在支持的大量功能找到自己的方式,因此我们需要纠正这一点,以变得更加主流。
从Godot 2.1开始,我们希望摒弃这种单一的方法,并为编辑器提供一组有限的工具。这将使一开始学习引擎变得更加容易,因为没有太多的事情要做,而且大多数实际功能都必须从新的Godot Asset Store下载和购买。
我们将停止合并核心引擎和编辑工具上的拉取请求。相反,贡献者将被要求通过Godot Asset Store出售他们的改进,从而使向引擎生态系统贡献功能更具吸引力,从而使整个用户受益。
内置货币化
每个人都想在Godot中使用Google,Microsoft等的广告系统,但到目前为止,我们拒绝在核心树中包含此类模块。由于我们知道用户只关心与广告公司一起制作移动应用程序以赚钱,因此我们将为此类API提供开箱即用的支持。
不仅如此,Godot将继续免费,但您只能将Google服务用于广告和服务器服务。发布的游戏还将向我们的开发人员发送分析,以便我们可以通过出售您的信息更好地赚钱。
我们将很快发布日期为 2016 年 4 月 1 日的更新版 EULA,以确保从 2.1 版开始的每个 Godot 用户都知道并接受这些新的使用条件。
社区论坛又回来了!
作者:Rémi Verschelde 4 四月 2016
戈多开发者论坛
社区要求它,社区做到了!新的Godot开发人员论坛已经上线,可供您使用!
Godot曾经与其他社区渠道一起有一个官方论坛,但是在设计我们的新网站时,即使我们没有时间和基础设施来建立一个新的论坛(最重要的是将旧帖子迁移到新数据库中),也决定发布它。
尽管如此,社区的许多成员仍然表示,他们希望使用一个传统论坛来讨论Godot,高级支持请求和展示项目。因此,一些社区成员决定自己建立一个论坛,在他们自己的托管和使用SMF。在核心Godot开发人员的祝福下,他们做了令人印象深刻的工作来迁移旧数据库,并为他们的论坛设计了很酷的功能和品牌。
衷心感谢Timo(toger5)和Kiori的奉献精神,我们希望你们都能在这个新的社区论坛上获得良好的体验。请务必阅读有关论坛规则以及如何使用其特定功能的各种公告!
YouTube 频道和游戏展示
为了庆祝这个新论坛和最近的2.0版本,我们还发布了一个视频,展示了一些使用Godot开发的漂亮游戏。非常感谢Andrew Conrad和Freeman分别编辑视频和创作配乐。
(视频或图片缺失)
我们还有一个官方的YouTube频道来发布此类视频;我们希望将来能做更多这样的展示视频,以及预告片来展示新Godot发布的功能。
维护版本:戈多 2.0.2
作者:Rémi Verschelde 8 四月 2016
编辑 (2016-04-11 20:44 CEST):为2.0.2版本上传了新的二进制文件,以包括对导致某些平台(特别是iOS)内存溢出的错误的最新修复。
正如在之前的公告中提到的,在开发我们未来的主要版本 2.1 时,我们打算每隔一段时间为当前支持的版本(分支 2.0)提供维护版本。
因此,在Godot 2.0.1发布一个月后,这里是2.0.2版本,其中包含一些非关键错误修复和一些可用性改进。现在就抓住它!
分布更改
暂时禁用 OpenSSL
Godot在其网络API中使用OpenSSL进行HTTPS支持。为了更容易地进行二进制分发,大多数官方二进制文件都与OpenSSL的嵌入式副本相关联;然而,这个有点旧,因此容易受到各种安全问题的影响,我们选择在没有OpenSSL支持的情况下构建2.0.2二进制文件。
这是一个临时解决方案,用于解决您可能在Google Play或Apple Store上收到的有关二进制文件中安全漏洞的警告。未来版本的更好解决方案是将我们的嵌入式 OpenSSL 副本更新到最新的上游版本(参见问题 2780)。
如果您的游戏需要 OpenSSL 支持,您可以:
- 继续使用支持OpenSSL构建的2.0.1版本
- 使用(内置版本)或(系统共享库)自己构建二进制文件openssl=builtinopenssl=yes
未压缩的二进制文件
我们曾经使用UPX压缩官方二进制文件,UPX是一个很好的工具,可以生成小的二进制文件,几乎没有解压缩开销。但是,此工具自2013年以来一直未维护,并且仅对64位Windows提供实验性支持,而不支持64位OSX和其他一些平台。众所周知,它还会导致Windows上的防病毒软件出现各种问题,并且可能与其他一些错误有关。
因此,对于此版本,我们决定分发未压缩的二进制文件,看看它是如何进行的。如果您喜欢使用小型二进制文件进行分发,您仍然可以在导出模板或导出的二进制文件上使用UPX;我们将整理一些关于哪些模板可以安全压缩以及如何执行此操作的文档(在此期间,您可以参考UPX的网站以获取说明)。
发动机更换
此维护版本中的主要亮点是:
增强:
- 将 -r 标志添加到 adb 安装以保留应用用户数据
- 向 RigidBody 和 RigidBody2D 类添加信号sleeping_state_changed
- 向示例库添加停止和删除按钮
- 为文本编辑器添加了插入模式
- 添加了对 3D 模式下触控板的旋转/平移支持
- 绑定 Z 键(不带修饰符)以在 3D 视图中切换线框
- 公开参数并默认为 trueandroid/shutdown_adb_on_exit
- 行编辑/文本编辑:对复制、剪切和粘贴行为的各种改进和修复
- 切换行号的选项
- 切换制表图和可配置尺寸的选项
- 默认情况下,将帮助页与脚本分开
- 数字、函数和成员变量的语法突出显示
- 所选单词的语法突出显示
错误修复:
- 修复导入子场景时崩溃的问题
- 修复调整凹多边形阴影2D 段时的崩溃问题
- 修复光标在修改数字元素时清除树时被树控件锁定的问题
- 修复底部面板的编辑器面板,在某些情况下不调整大小
- 修复从画布编辑器使用空间编辑器切换到新场景时的错误
- 修复粒子2D插件的文件对话框,显示"错误"图标
- 修复不一致的文件保存验证
- 修复InputMap::action_erase_event()
- OSX:修复反转水平滚动
- 修补程序 (2016-04-11):使用非模板化(iOS 内存不足崩溃的解决方法)nearest_power_of_2
有关更多详细信息,请参阅完整的更改日志,并前往下载页面以获取它!
填写类引用中的空白
作者:Rémi Verschelde 27 四月 2016
在Godot社区,我们都喜欢等待。等待Vulkan,等待WebAssembly,等待C#,等待高级3D编辑器功能…等待戈多!
但有一件事我们不应该袖手旁观:API文档。它不会只是发生数百行类描述是由核心开发人员编写的;他们的时间最好花在开发我们都喜欢等待的伟大功能上。
好消息是,为类引用做出贡献非常容易;这是一个(部分无聊,但也有回报)的游戏,我们大多数人小时候玩过:填补空白。整个引用位于 Godot 源存储库中的一个 XML 文件中,编辑器和联机文档都使用该文件。
现状
所以这就是我们需要你的地方。在 2.0 之前,已经完成了一项重要的工作来完成类引用,但这项工作远未完成。截至今天,类引用有369个类,4420个方法,1763个常量,152个成员变量和142个信号。到目前为止,只有34%的人有适当的描述。(您可以使用bojidar_bg的精彩脚本为自己获得一个很好的概述doc/tools/doc_status.py)
您还可以在此协作板中看到详细状态,我们用它来协调贡献工作。
如何帮助?
文档页面中介绍了所有内容 更新类引用。基本上,工作流程是分叉和克隆Godot的源存储库,编辑文件并为您的更改发出拉取请求。doc/base/classes.xml
为了提高效率,并且因为一起处理这些事情更有趣(特别是当你对给定方法的作用有疑问时),我们非常欢迎您加入Freenode上的#godotengine-doc IRC频道,与文档团队的其他成员进行实时讨论。
我们的目标:为即将到来的2.1版本100%完成课程参考!
下一步是什么?
完成此任务后,将彻底审查在线文档的其余部分。大多数教程都是在Godot开源存在的早期编写的,尽管它们在这里和那里都看到了改进,但在过去两年中添加了许多新功能,并且没有得到很好的记录(例如,光烘焙,网络,插件,寻路等)。这就是为什么我们计划对现有内容进行全面审查,重新组织它并开始协调努力,再次填补空白。这将是另一项艰巨的任务,但在社区的帮助下,我们将使Godot Engine更容易学习,无论是新手还是有经验的用户!
对于演示,将进行类似的工作;它们中的大多数也是为了展示早期Godot版本的使用而设计的。从那时起,已经进行了许多新功能和可用性改进,因此其中一些演示可能已经过时,或者可能需要进行一些现代化。许多很酷的新概念尚未在演示中展示,例如场景继承或导航多边形。我们还在考虑编写附加到每个教程的教程,以便您了解它们的工作原理。但是,当然,只有在类引用得到充分增强之后,才会这样做…
所以不要等待,帮助我们给戈多它应得的文档!
有用的链接
在线课程参考
为类引用做出贡献
协作垫
最近的类引用更改
维护版本:戈多 2.0.3
作者:Rémi Verschelde 13 五月 2016
自 Godot 2.0.2 发布以来已经过去了一个多月,在主分支和稳定的 2.0 分支中都做了很多工作。
我们很快就会发布有关主分支中正在酝酿的很酷的新功能的更多详细信息(例如拖放支持和编辑器本地化),但与此同时,让我们给自己一个不错的错误修复版本,它还带来了有趣的可用性改进。现在就拿起它,并一起阅读!
分布更改
重新启用 OpenSSL 支持
在以前的版本中,由于各种安全漏洞,我们不得不禁用对内置OpenSSL库的支持。由于@mrezai的工作,我们可以将内置版本更新到最新,因此最安全的上游版本1.0.2h。因此,OpenSSL支持已在官方二进制文件中重新启用,这对于需要与服务器通信的游戏特别有用。
使用 MSVC 构建的 Windows 二进制文件
到目前为止,我们正在使用 MinGW 在 Debian 虚拟机上构建官方的 Windows 二进制文件进行交叉编译。虽然它工作正常,但许多用户提到,在使用Microsoft Visual C++ 2015(MSVC 14.0)在Windows上自己构建二进制文件时,性能显着提高。多亏了@Marqin的帮助下,我们可以设置AppVeyor,以便在我们现有的Travis CI构建系统旁边使用MSVC生成Windows二进制文件。
因此,请彻底测试这些新的Windows二进制文件,并就您将遇到的任何回归(或改进)向我们提供反馈!
适用于 OSX 的 64 位编辑器二进制文件
我们过去只在 OSX 上为编辑器分发 32 位二进制文件。由于OSX现在主要是64位,我们决定也开始发布64位版本,因此请对其进行测试并报告您可能遇到的任何问题。
请注意,OSX 导出模板过去已针对 32 位和 64 位进行了分发,因此该部分没有更改。
发动机更换
此维护版本中的主要亮点是:
增强:
- 记录了许多新课程!感谢所有在我们呼吁贡献者之后参与其中的人!请随时加入我们,因为还有很多事情要做,但进展是令人心动的!
- 能够在加载时缩小所有图像 x2
- 添加 Camera2D 屏幕边界的预览
- 按住 Shift 键时仅允许在一个(全局)轴上拖动
- 项目设置中更精确的输入地图轴描述
- 将导出 GUI 调试切换移至导出设置窗口
- 新增功能Dictionary.has_all(Array)
- 脚本编辑器可用性改进:
- 自动完成功能不再显示重复项
- 修复了打开括号后的代码完成
- 用于更改插入符号颜色和切换闪烁的选项
- 在保存时修剪尾随空格的选项
- 子类可以通过相对路径从其他子类扩展
- 更新到戈多的正则表达式库
- 将 OpenSSL 更新到版本 1.0.2h
错误修复:
- 动画播放器:防止在固定时重置时间轴
- 修复的行为OS.set_window_resizable
- 修复相机2D在检查限制时忽略变焦的问题
- 修复了仅在当前场景中检查未保存的更改的问题
- 修复了在 OSX 上从.app启动的问题
- 修复"退出到项目管理器"不停止正在运行的应用程序
- 修复着色器编辑器语法着色
- 修复以避免视频纹理缩放
- 网格图:修复向后旋转热键的问题
- 替换树根节点时保留可编辑的实例数据
- 使触控板行为在 3D 模式下成为可选
- 在 Emscripten 导出中重新实现键输入事件
- 旋转 API:度数方法的曝光率更高
- 选项卡:各种可用性修复
有关更多详细信息,请参阅完整的更改日志,并前往下载页面以获取它!
本文使用的屏幕截图来自@CowThing赢得Godot Engine Jam 03 /2016的真棒Mouse Boat游戏!如果您还没有,请查看所有其他果酱游戏,它们都是开源的,非常有趣!
你好 мир, Godot habla deine language désormais!*
作者:Rémi Verschelde 28 五月 2016
人们普遍认为,对于编程,需要对拉丁字母有一定的了解,并且对英语有一点了解。从那里开始,在流利的语言之前还有很长的路要走。
我们知道,因此,有大量的程序员,从初学者到非常有才华的开发人员,他们将从使用Godot的母语中受益匪浅。此外,Godot是团队合作的绝佳工具,因此被艺术家和游戏设计师使用,他们甚至可能不掌握程序员必须知道的基本概念。
编辑器的国际化
为了阻止这种对那些理所当然地认为自己有比流利的英语更好的事情要做的人的不公平报复,我们为Godot增加了国际化支持!
在撰写本文时,仅支持法语(在git master分支中),我们仍处于测试阶段,但我们对您可以贡献的尽可能多的语言持开放态度!
如果您认为自己能说流利的语言(因为我们中的一些人显然不是),并希望通过提交翻译来帮助您的同志,请告诉我们!
如何帮助?
Godot中的国际化系统基于完善的gettext/PO文件工作流程,尽管对不依赖于gettext的翻译字符串进行了量身定制的解析和集成。
编辑(2016 年 6 月):以下部分不再相关,因为我们现在在托管Weblate上管理Godot翻译。请在那里贡献您的更改,Godot核心开发人员将不时地将它们与git存储库同步。
要翻译的字符串都在 tools.pot 模板中引用。此模板可用于生成空的 PO 文件(例如 对于巴西葡萄牙语),使用 gettext 或 PO 版本工具:pt_BR.po
使用 gettext:msginit -i tools.pot -o pt_BR.po
使用PO版本工具(如Poedit),您只需加载文件,它就可以让您从中生成语言PO文件。tools.pot
然后,您可以使用自己喜欢的文本编辑器(填写条目,尝试遵循与源字符串中相同的格式)或使用 Poedit 或类似工具(为 PO 版本提供很好的工具,例如翻译记忆库)编辑新创建的 PO 文件。msgstrmsgid
请随时与社区的其他成员取得联系,以团队合作的方式进行翻译。一旦你对它感到满意(即使只是部分翻译,如果你希望其他贡献者接手这项工作),请在GitHub存储库上发出拉取请求,并将你的PO文件放在.tools/translations/
如果您从源代码构建编辑器,并且PO文件位于正确的文件夹中,则应将其拾取并提取已翻译的字符串以在编辑器中显示它们!
故障 排除
请注意,这是主分支中的一个非常新的开发,不会向后移植到当前的稳定 2.0 分支。关于国际化,仍然需要处理各种问题(例如,正确的从右到左的语言支持,需要它的语言的Unicode字体等)。
请报告您在翻译过程中可能遇到的任何问题,以便我们可以发布出色的2.1版本!
(*) 你好,世界,戈多从现在开始说你的语言!
戈多社区游戏果酱 - 2016年<>月
作者:Rémi Verschelde 3 六月 2016
在上一次由社区成员自发组织的游戏开发大赛取得成功后,我们决定在 2016 年 6 月的本月开始一个新的游戏开发大赛。
与前一个一样,这是一个规则相对宽松的非正式果酱,除了在Godot社区内的国际声誉以及使用我们伟大引擎的更多经验之外,没有太多收获!这就是为什么这个果酱将持续三周,让每个人都有足够的时间使用引擎来创造新的东西,初学者和有经验的用户。
在 itch.io:https://itch.io/jam/godotjam062016 上查看游戏开发大赛的页面
果酱主题和规则
果酱将从6月4日星期六0:00 UTC到6月27日星期一23:59 UTC进行,即超过三周(和四个星期结束)。它托管在 itch.io 上。
在与社区进行深入协商后,我们决定将程序作为果酱的主题。参赛者可以随心所欲地解释它,但请记住,如果你想获得分数,你的解释应该是可以理解的。
我们还提出了一个可选的奖励主题,只有两种颜色,也可以自由解释。如果需要,您可以决定将此奖励主题与主主题一起使用,但这不是强制性的。使用这两个主题的参赛者将获得少量奖金,但这不会为不使用可选主题的参赛者造成强烈的劣势。
参赛者可以单独参加,也可以作为一个团队参加。允许重用现有代码和资产。
开源和教育
我们将此果酱视为每个社区成员与其他用户分享知识的机会,这就是为什么我们要求为所有果酱开发的游戏都使用其源代码和资产在开源许可证下发布,从而帮助为新的Godot用户构建高质量的示例。
当然,如果愿意,jam参与者可以在果酱赛后作为专有项目自由继续他们的游戏 - 只有果酱版本应该是开源的,以便整个社区从中学习。
因此,有效果酱条目的最低要求是提供完整的源代码来玩游戏;当然,也欢迎您为可能不熟悉从源代码运行Godot项目的玩家发布导出的二进制文件。
玩得愉快!
这个果酱的主要目的是作为一个Godot用户社区一起玩乐。如果您从Godot开始,请不要犹豫,在我们的各种社区频道上提出任何问题;没有愚蠢的问题,所以继续吧!
如果您更有经验,为什么不借此机会尝试发现您可能尚未使用的Godot新功能(例如着色器,粒子)?您还可以使用Godot 2.1的当前开发版本在开发果酱游戏时进行一些alpha测试。
祝大家好运,享受果酱!
Mozilla 授予 Godot Engine 作为 MOSS"Mission Partners"计划的一部分
作者:胡安·利涅茨基 22 六月 2016
Godot Engine开发者社区很荣幸地宣布,Godot被选为MOSS"使命合作伙伴"奖的获得者之一。
随着 Web Sockets、WebAssembly 和 WebGL 2.0 等新技术的出现,免费和开源工具可用于为这些平台开发高性能游戏和应用程序比以往任何时候都更加重要。
20,000美元的奖金将由软件自由保护协会(Software Freedom Conservancy)获得,该公司是戈多的非营利性之家。他们将确保该奖项用于改进Godot,以尽快支持这些新技术。当有更多关于如何做到这一点的信息时,我们将很快发布更新!
在我们的网站上展示您的戈多游戏!
作者:Rémi Verschelde 27 六月 2016
作为市场上一个相对年轻的游戏引擎(至少在两年前的开源方面),我们经常被要求展示引擎的功能。但是像Godot这样的引擎具有数百个功能,可以满足不同的用例,并且显然很难将它们全部做到公正。特别是当很酷的新功能不断出现在开发分支中时!
展示戈多制作的游戏
因此,最好的解决方案是让您,游戏开发人员,展示您可以使用Godot做什么!所有类型的游戏,2D和3D,简单或非常复杂的游戏玩法,故事丰富或休闲…Godot可用于所有这些游戏,您可以帮助向世界展示这一点!
在这个程度上,我们创建了一个展示门户(检查导航栏!),其中显示了由Godot社区成员开发的已发布和正在进行的游戏的精选列表。页面本身是初稿,一定会根据您的反馈和想法一点一点地改进。首先,请将您的意见添加到这个广泛的GitHub问题中,以将所有内容收集到一个地方。
目前,该页面可以列出每个条目,其中包含名称,屏幕截图,简短描述,标签和类别,以及指向所述游戏的参考主页的链接。
建议内容
我们预先填充了一些由活跃的社区成员开发的已知独立和自由游戏的页面;但是,我们知道还有许多其他Godot游戏值得在此页面上展示。
目前还没有自动化的系统供您提出新条目,因此我们将采用良好的旧方法:发送电子邮件给网站管理员(网站管理员@godotengine·org)。
请提供以下信息:
- 游戏名称
- 简短描述
- 网址: 项目网站,Steam商店页面,git存储库等 - 最相关的一个。
- 类别:已完成、在制品或演示。
- 标签:检查其他条目,了解哪些标签可能相关。
- 截图:目前,我们只显示一个,但这种情况可能很快就会改变。确保它们的纵横比与现有条目(4:3)相似。
- 在Godot编辑器中打开的项目的屏幕截图:这只是为了直观地检查它确实是一款Godot游戏,这样我们就不会开始展示其他引擎的项目;)(如果源代码可用,则不需要,因为我们可以很容易地检查)。
然后,我们可能会挑选一些我们最喜欢的条目(在您的许可下)用于我们的下一个视频展示。与此同时,这里又是第一个:
(视频或图片缺失)
就是这样!期待收到提交并发现一些使用我们心爱的引擎开发的精彩新游戏!
维护版本:戈多 2.0.4.1
作者:Rémi Verschelde 9 七月 2016
编辑 (2016-07-10 8:00 UTC):在 2.0.4 中发现了一个回归,并且正在处理中,请继续使用 2.0.3,直到我们推送固定版本。
编辑 (2016-07-10 16:30 UTC):修补程序 2.0.4.1 版本现已推出,应修复之前的 2.0.4 二进制文件中的回归问题。您可以像往常一样下载它。
距离我们上一个维护版本还不到两个月,而且随着Godot 2.1的开发分支正在做好生产准备,我们很高兴地宣布在2.0稳定分支Godot 2.0.4.1中发布了新的错误修复版本!
至于以前的维护版本,我们从主分支中挑选了非侵入性错误修复和可用性增强功能,以便在我们等待即将发布的2.1版本及其出色的新功能时为您提供稍微好一点的稳定版本。我们认为 2.0 分支始终处于生产就绪状态,因此使用 2.0.4.1 部署现有项目是安全的。
请注意,这可能是2.0分支中的最后一个版本,因为我们预计我们的下一个稳定版本Godot 2.1将在几周内发布。
有关此新版本中的修复和增强功能的更多详细信息,请参阅下文,然后无需等待即可下载!
分布更改
OSX 的"胖"二进制文件
在以前的版本中,我们为 OSX 编辑器添加了一个 64 位二进制文件,这更相关,因为大多数 OSX 系统都是 64 位的。感谢贡献者的补丁,我们发现我们可以制作包含32位和64位编译代码的"胖"二进制文件,因此可以在两种架构上运行。
现在,我们默认将此系统用于官方 OSX 编辑器二进制文件和 OSX 导出模板。使用新模板导出 OSX 游戏时,"胖"位模式应已预先选中并开箱即用。"32 位"和"64 位"模式仍然可用,但您必须为 OSX 构建自己的导出模板才能使用它们,因为我们只提供胖二进制文件。
发动机更换
此维护版本中的主要亮点是:
增强:
- 记录了许多新课程!感谢所有在我们呼吁贡献者之后参与其中的人!请随时加入我们,因为还有很- 多事情要做,但进展是令人心动的!
- 更新的库: GLEW 1.13.0, libogg 1.3.2, libvorbis 1.3.5, libtheora 1.1.1, - libpng 1.5.27
- 能够使用工具旋转控件
- 在创建对话框中添加了类的简短说明作为工具提示
- 为 osx 的 scons 上的位参数添加了"胖"选项,生成包含 32 位和 64 位二进制文件的二进制文- 件
- 添加InputMap.get_actions()
- 将低处理器使用模式更改为上限为 60 FPS 而不是 40 FPS
- 将默认注释颜色更改为 #676767
- 调试器:如果说明不可用,则显示错误消息
- 控制边距的动态属性列表,允许将浮点属性与比率锚点一起使用
- iOS:添加了"arch"参数,让iPhone用它来构建isim
- OSX:键修饰符(Ctrl、Alt、Meta 和 Shift)现在可用作输入键
- OSX 导出:默认为胖格式,使其成为枚举
- 更漂亮的阵列str()
- 重命名为CanvasItem.edit_get()edit_get_state()
- 创建对话框现在开始折叠。可以在编辑器设置中重新激活原始行为
- 脚本编辑器的各种增强功能,例如成员变量突出显示、断点标记、插入符号闪烁等。
错误修复:
- 避免在设置修饰符失败时崩溃
- 避免镜像变为负值以修复崩溃
- 在 Windows 和 Unix 上获取用户数据目录时更改无效字符
- 从打开zip_io正确解析utf8,还修复了导出或打开Android apk文件时的问题
- 编辑器:修复返回项目管理器时的基本目录
- 修复了Camera2D预览绘图的继承转换错误
- 修复比较中的错误String==StrRange
- 修复和CanvasItem.get_global_transform()CanvasItem.get_local_transform()
- 修复了代码完成和示例播放器中的崩溃
- 修复 .tscn 中实例化节点子级的路径存储错误
- 修复导出到安卓时出现的错误
- 修复返回整个文件File.get_as_text()
- 修复 64 位 Windows 上的 OpenSSL 连接
- 修复视口自己的世界选项
- 修复了以科学记数法解析浮点数的问题
- 修复了与节点重复和信号相关的几个错误
- 修复了没有Vorbis流的Theora视频播放
- 修复脚本中未保存的修改在文件系统更改时被覆盖的问题
- 修复最小化窗口时的可视服务器错误
- 修复了阻止正确编辑主题的旧错误
- 修复了在Android Marshmallow中使用DirAccess的错误,因为data dir是一个符号链接
- 修复了内部类的各种错误
- 行编辑:修复和改进选择行为
- 使输入操作配置不会影响编辑器
- 通过父级传递 GUI 事件时正确传递本地化坐标
- 解决比较实例化继承时的数字错误,以避免错误地保存未更改的属性
- 窗口:防止在移动或调整游戏窗口大小时冻结。
- 还有许多其他不错的变化,我们不可能在这里列出,而不会让你无聊到时代的尽头!
有关更多详细信息,请参阅完整的更改日志,并前往下载页面以获取它!
本文使用的屏幕截图来自@CowThing赢得2016年6月Godot社区游戏果酱的精美开源游戏Dungeon of Cor!如果您还没有,请查看所有其他果酱游戏,它们都是开源的,非常有趣!主题是"程序",奖励主题是"只有两种颜色",这导致了非常有趣的提交:)
Godot 2.1达到测试版,准备测试!
作者:胡安·利涅茨基 12 七月 2016
编辑:新的 Beta 版本已发布,发布日期为 2016-07-21。查看自 2016-07-12 版本以来的更改日志。
今天,经过几个月的辛勤努力,我们在即将推出的2.1版本开发上达到了一个新的里程碑!我们现在对功能集和整体稳定性非常满意,因此提供了beta二进制文件供您测试和报告问题/建议改进。
Godot 2.1继续改进可用性趋势,处理了由于时间限制而被排除在2.0之外的几个方面。立即获取它,同时阅读下面的新功能列表(简短版本!
以下是快速而不完整的新功能列表(将为稳定版本编写适当的帖子):
- 新的资产共享平台:Godot拥有了用户之间共享资源的新平台。它仍然很粗糙,但随着时间的推移- 会有所改善。截至目前,几乎没有内容可以测试它,但是我们将在未来几天内上传一些插件和演- 示。
- 新的插件API:下载的资源可以用作插件来扩展编辑器功能。我们为此提供 API 的第一次尝试可能- 仍未完成,因此请根据您的反馈帮助我们改进它。
- 支持动态字体:将 TTF 和 OTF 字体文件直接加载到项目中。这极大地帮助了国际化。
- 完全国际化的编辑器UI:Godot现在可以在多种语言中使用,并正确显示所有Unicode字符(包括- CJK)。但是,从右到左的语言支持仍未实现。
- 编辑器可视化自定义:更改字体大小或设置自定义字体,设置自定义主题等。
- 可自定义的键绑定:大多数键绑定现在都可以自定义,并且编辑器设置中有一个新的绑定编辑器。
- 实时脚本重载:编辑器中保存的脚本将自动重新加载到正在运行的游戏中,工具脚本也将自动重新- 加载。
- Profiler和frame profiler:Godot有一个功能齐全的剖析器(带有图形绘图),它允许回到过- 去,逐帧查看性能数字和最常用的功能。
- 远程场景检查器:实时检查正在运行的游戏的场景树,包括节点和资源。
- HiDPI/视网膜支持:Godot 可检测高分辨率显示器,并提供具有原始分辨率的编辑器 UI。所有- Godot图标都以矢量图形重做,非常感谢几乎所有的@drjm!
- 拖放支持:Godot现在支持在编辑器范围内拖放。将资源从文件系统浏览器拖动到Godot也将打开- 相关的导入对话框。
- 上下文菜单:Godot 现在还支持相关上下文菜单。
- 脚本编辑器可用性改进:增量搜索、更好的突出显示、代码完成中的智能功能匹配等。
- 改进的资源管道:更改时自动重新导入和重新加载资源和场景。
- 改进的缩略图:预览会实时更新,资源的缩略图将显示在检查器中。
- 新的 AnimatedSprite 功能:带标签的动画,以及无需 AnimationPlayer 即可播放动画的功能。
随着这些变化,戈多已经成为一种真正的乐趣。请帮助我们进行测试,以便我们可以确保2.1是一个可靠的版本!现在是时候报告您喜欢的错误,或者为现有错误添加注释,以便我们给予它们更多的优先级。
对于最喜欢冒险的人,您可以查看到目前为止为这个新版本完成的1,600多个提交的完整git更改日志!
帮助我们完成 Godot 的 API 参考!
作者:Rémi Verschelde 14 七月 2016
不到3个月前,我们呼吁贡献者帮助我们填写课程参考。我们得到了一些新的文档编写者,他们做得很好,帮助记录了即将到来的2.1版本的一些最重要的类。其中许多改进也向后移植到稳定的2.0分支,并且可以在新发布的2.0.4.1和在线文档中获得。
当前状态如何?
我们都时不时地喜欢一些统计数据,所以这里有一些数字。自我们的求助以来,已经记录了900种方法,即与以前的状态相比增加了近50%(今天记录了2634种,而4月底记录了1730种)!它使我们在方法方面没有达到60%的完成率,这可以说是最重要的一个(常量或成员变量通常具有不言自明的名称,尽管我们肯定会一点一点地记录它们)。
我们仍然需要您的帮助才能达到100%!
正如您在上图中看到的那样,最近的进展令人印象深刻,但仍有很多工作要做。可悲的是,我们仍然只有少数贡献者在文档上工作,所以工作量很大。
如果我们能够发展团队并获得更多的定期贡献者,这将减少每个人的负担,我们应该能够很快缩小差距。
要为Godot编写文档,您不必是高级用户,但大多数情况下,您需要有一些时间可用。因此,如果您这样做,请考虑帮助我们努力!有关此主题的所有详细信息,请查看上一篇关于此主题的博客文章。请注意指向类引用状态的链接,该链接显示当前进度以及谁在处理什么。
如果您有任何疑问,请与 Freenode IRC 上的文档团队联系,#godotengine-doc 频道。
戈多 2.1 RC1 出来了!
作者:胡安·利涅茨基 24 七月 2016
我们的第一个候选版本已经发布!这意味着,如果没有重要的变化,这个版本将成为Godot 2.1。
Godot 2.1继续改进可用性趋势,处理了由于时间限制而被排除在2.0之外的几个方面。立即获取它,同时阅读下面的新功能列表(简短版本!
与Beta版一样,接下来是一个快速而不完整的新功能列表(将为稳定版本编写适当的帖子):
- 新的资产共享平台:Godot拥有了用户之间共享资源的新平台。它仍然很粗糙,但随着时间的推移会有所改善。截至目前,几乎没有内容可以测试它,但是我们将在未来几天内上传一些插件和演示。
- 新的插件API:下载的资源可以用作插件来扩展编辑器功能。我们为此提供 API 的第一次尝试可能仍未完成,因此请根据您的反馈帮助我们改进它。
- 支持动态字体:将 TTF 和 OTF 字体文件直接加载到项目中。这极大地帮助了国际化。
- 完全国际化的编辑器UI:Godot现在可以在多种语言中使用,并正确显示所有Unicode字符(包括CJK)。但是,从右到左的语言支持仍未实现。
- 编辑器可视化自定义:更改字体大小或设置自定义字体,设置自定义主题等。
- 可自定义的键绑定:大多数键绑定现在都可以自定义,并且编辑器设置中有一个新的绑定编辑器。
- 实时脚本重载:编辑器中保存的脚本将自动重新加载到正在运行的游戏中,工具脚本也将自动重新加载。
- Profiler和frame profiler:Godot有一个功能齐全的剖析器(带有图形绘图),它允许回到过去,逐帧查看性能数字和最常用的功能。
- 远程场景检查器:实时检查正在运行的游戏的场景树,包括节点和资源。
- HiDPI/视网膜支持:Godot 可检测高分辨率显示器,并提供具有原始分辨率的编辑器 UI。所有Godot图标都以矢量图形重做,非常感谢几乎所有的@drjm!
- 拖放支持:Godot现在支持在编辑器范围内拖放。将资源从文件系统浏览器拖动到Godot也将打开相关的导入对话框。
- 上下文菜单:Godot 现在还支持相关上下文菜单。
- 脚本编辑器可用性改进:增量搜索、更好的突出显示、代码完成中的智能功能匹配等。
- 改进的资源管道:更改时自动重新导入和重新加载资源和场景。
- 改进的缩略图:预览会实时更新,资源的缩略图将显示在检查器中。
- 新的 AnimatedSprite 功能:带标签的动画,以及无需 AnimationPlayer 即可播放动画的功能。
随着这些变化,戈多已经成为一种真正的乐趣。请帮助我们进行测试,以便我们可以确保2.1是一个可靠的版本!现在是时候报告您喜欢的错误,或者为现有错误添加注释,以便我们给予它们更多的优先级。
对于最喜欢冒险的人,您可以查看到目前为止为这个新版本完成的1,200多个提交(不包括合并提交)的完整git更改日志!如果您已经尝试过测试版,您还可以查阅自上次测试版以来的(更短的)git更改日志。
起飞前的最后一次通话:戈多 2.1 RC2
作者:Rémi Verschelde 3 八月 2016
尽管它的发型时髦,但我们对Godot 2.1 RC1的状态已经非常满意了。尽管如此,在我们准备稳定发布公告时,贡献者并没有停止修复错误并在此处和那里添加一些增强功能。
因此,为了考虑最新的变化,并确保稳定版本尽可能好,这里有一个新的候选版本,我们相信它最多会在一周内成为Godot 2.1-stable。
有关整个 2.1 版本的更多详细信息,请查看 2.1 RC1 发布公告。请参阅此处,了解自上一个候选版本以来的更改日志。
继续报告您发现的错误!我们预计,除非提出关键问题,否则我们将以稳定形式发布当前版本,但所有报告都将对针对Godot 2.2和可能的2.1.x维护版本的错误修复有用。
戈多达到2.1稳定!
作者:胡安·利涅茨基 9 八月 2016
戈多 2.1 稳定版就在这里!
经过近六个月的辛勤工作,我们自豪地向您展示了奇妙的Godot Engine 2.1。就像2.0一样,这个版本几乎完全专注于进一步提高可用性和编辑器界面。
此版本标志着专注于可用性改进的系列文章的结束。我们倾听了我们令人敬畏的社区,并与我们出色的社区合作,使Godot成为最容易使用的游戏开发环境之一。我们的目标是并将永远是瞄准易用性与功率比的顶端。
立即下载,同时继续阅读!
此版本中有无数的新功能(请参阅完整的更改日志,按时间顺序或按贡献者列出)。最重要的有:
新的资产共享平台
Godot 2.1附带了我们新的资源共享平台,即资源库。它仍然是新的,远非最终的,但它将继续发展以满足每个人的需求。这个想法是,用户可以在线发布资产,脚本,插件等(例如托管在GitHub或GitLab上),同时提供简单的用户界面来下载和安装它们。您的反馈使资源库变得很棒至关重要!
从 2.1 版本开始,资源库仅包含少量资产,这些资产已用于测试即将推出的开源 Web 前端,以提交和管理资产。由于Alket Rexhepi和Bojidar Marinov所做的开发工作,这个前端将很快达到alpha状态并正式宣布,以便所有社区成员都可以开始向库提交资源。
新的插件 API
与资源库一起,我们为Godot引入了一个EditorPlugin API。插件可以为编辑器添加许多不同的功能,并为游戏提供新的节点类型和功能。由于这是我们第一次尝试插件API,我们认为许多有用的功能可能仍然缺失,因此,我们再次依靠您的反馈来使这个API尽可能出色。
动态字体支持
Godot在世界各地使用,虽然它一直支持Unicode,但它对字体纹理的依赖使得支持某些语言(特别是亚洲语言)变得非常困难。这个新版本允许您在项目中删除任何TTF或OTF文件,并以任何大小直接在游戏中使用它。
还支持回退字体,因此可以绕过 64k 字符限制并使用真正的多语言文本。
完全国际化的编辑器 UI
结合动态字体,我们现在能够为您提供大量语言的Godot。来自世界各地的许多用户对英语不放心,可以用他们更熟悉的方式在Godot中迈出第一步。
从 2.1 版本开始,社区已经在我们的 Weblate 平台上为大量语言提供了翻译。意大利语,韩语,巴西葡萄牙语,俄语和西班牙语100%完整;其他语言,如中文(简体),法语,德语和波兰语也应该已经提供了良好的翻译水平。
编辑器可视化自定义
除上述内容外,我们还添加了对更改字体样式和大小的支持,以及创建自定义编辑器主题。用户制作的主题也应该很快登陆资源库,供每个人根据需要使用。
可定制的键绑定
最受欢迎的功能之一终于来了!Godot中的键绑定现在可以在编辑器设置中完全自定义!这还包括许多以前没有默认绑定的功能,如果您经常使用它们,您现在可以绑定到密钥。
实时脚本重新加载
厌倦了必须为每一个小小的代码更改或修复重新加载游戏?Godot现在支持实时脚本重新加载!只需保存您的脚本,它将在正在运行的游戏中更新。
如果您在外部设备(例如Android)上运行游戏,并使用"使用远程调试进行部署",则实时脚本重新加载也将神奇地发生在那里。
我们还清理了此版本的远程菜单,以使这些选项更易于理解和使用。
另外,在编辑器中运行的工具脚本如果也重新保存,它们也会正确重新加载,从而更容易开发它们。
Profiler & frame profiler
现在可以在执行分析运行(可以随时打开和关闭分析)时测量每个函数调用(包括和 self)中花费的时间。此外,Godot会记住它在过去500帧或更多帧中在最重要的函数上花费的时间,您可以通过擦洗漂亮的函数图轻松浏览。
与所有内容一样,如果您在启用了远程调试的外部设备(Android,iOS)上运行Godot,则可以从PC中的编辑器中分析该设备的性能。
远程场景检查器
Godot选择的实时编辑方法使得在飞行中创建内容,在正在运行的游戏中复制内容以及在游戏运行时保留更改变得非常容易。缺点是,与其他引擎不同,在运行的游戏中更难看到场景和节点的值。
从2.1开始,这不再是正确的,因为调试器有一个新字段"远程检查器",它允许实时查看已执行游戏的场景树,以及每个节点和资源的属性。编辑此类属性也是可能的,但不会保存更改(为此使用常规实时编辑)。
HiDPI / Retina支持和高分辨率图标主题
Godot现在支持HiDPI和Retina。对于编辑器,这是通过自动检测显示器分辨率来完成的(在具有HiDPI的Linux和Windows上,它看起来不再很小)。对于正在运行的游戏,您可以在项目设置中切换标志(如果您希望项目以高分辨率显示,请确保在 OSX 中启用它)。
还有一个美丽的新平面图标主题,支持HiDPI,由Daniel Ramirez提供。
拖放支持
自Godot制作以来,世界已经发生了变化,一些用户界面惯例已经发展。新用户过去常常发现Godot有点粗糙,因为无法拖动信息。
从这个新版本开始,编辑器中完全支持拖放。您可以从检查器或文件系统、节点中拖动资源以重新排列和重定父级,以及通常所有类型的列表和预览。如果您认为某些编辑器部分可以进一步受益于此功能,请告诉我们!
上下文菜单
与拖放支持一样,Godot现在在许多相关位置支持上下文菜单,例如文件系统停靠点,场景树等。右键单击将在预期位置显示一个菜单。在这里,请随时建议上下文菜单可能对整体可用性有益的其他位置。
脚本编辑器可用性改进
脚本编辑器已经看到了许多可用性的改进,包括查找/替换栏,增量搜索,更好的语法突出显示,代码完成中的智能匹配以及许多其他好东西,这要归功于Paul Batty,George Marques和Ignacio Etcheverry的出色工作。
改进的资产管道
戈多处理资产的方式发生了一些变化。现在,我们强制自动导入在外部更改的资源,并自动重新加载磁盘上更改的资源。将文件从操作系统本机文件系统浏览器拖放到Godot中也会弹出相应的导入对话框到所选文件夹中。
导入 3D 场景也发生了一些变化,因为默认情况下将不再合并场景。尝试跟踪更改的内容以及如何合并它被证明是很多工作,因此,我们现在鼓励用户尝试场景继承功能,对导入的场景进行局部修改。(只需导入场景,并将其继承到另一个场景中即可进行更改)。现在还可以在导入 3D 场景时选择根基节点类型。
改进的资源预览和缩略图
作为提高可用性的一部分,我们对缩略图进行了许多增强。支持更多资源类型,还支持内部场景资源的缩略图,允许预览材质、网格等。
除此之外,我们还在检查器底部添加了一个小型资源预览器,该预览器适用于许多资源类型。
新的动画精灵功能
虽然使用AnimationPlayer切换帧是一种非常强大的方法,但我们一直认为AnivematicSprite对新用户来说可能更容易访问。为此,我们为其添加了多个动画支持,以及以给定速度简单自动播放动画的功能,而无需使用AnimationPlayer。
最后,我们重新设计了 UI,使其更易于访问,并具有完全的拖放支持。
前途
这是一个有趣而令人兴奋的版本,我们觉得Godot终于达到了我们在可用性方面想要的位置。自1.1发布以来已经过去了一年多,这么长时间不专注于新的核心引擎功能是很困难的,但我们觉得这是值得的,因为Godot现在比以前更容易访问。
从现在开始,至少在几个版本中,我们将专注于使Godot更加精彩。我们的下一个版本已经在开发中,将是2.2(我们希望在2/3个月内交付)。它将包括一种新的视觉脚本语言,对Mono(C#)的支持,高级多人游戏网络和更高级的音频引擎。它还应该根据您未来几个月的反馈,对2.1功能(例如资源库或插件API)进行许多改进。
与此同时,Godot 3.0的工作已经开始(预计从现在起的6/7个月内),并将包括一个新的重新设计的现代渲染器,支持基于物理的着色,改进的着色器语言,VR和许多其他好东西,以及一个大大改进的HTML5导出平台,支持WebAssembly。
我们对3.0的目标是拥有一个游戏引擎,可以输出真正非常漂亮的3D视觉效果,比现有解决方案的麻烦要少得多。我们知道美术师甚至程序员使用现有游戏引擎使外观看起来有多么困难,因此我们的方法是使用内置的Godot功能为您提供游戏所需的所有工具,使其开箱即用。
传播这个词!
一如既往,我们衷心要求您传播有关戈多的消息。我们知道我们一起制作的这个小引擎(开发人员和社区)有多好,但我们在游戏开发领域仍然鲜为人知。由于没有营销预算和100%自愿贡献者,我们需要社区的每个成员都参与到努力中,并通过口口相传,博客文章,新闻报道,游戏果酱和活动,出版游戏等传播Godot的爱。
请尽可能多地制造噪音,以便更多的开发人员了解我们,并尝试我们的专业级开源游戏引擎!😃
更多编程语言在戈多,想要帮助吗?
作者:胡安·利涅茨基 10 八月 2016
为什么语言更多,难道GDScript还不够吗?
在这个行业中,有一个关于我们的常见误解:Godot开发人员总是试图重新发明轮子,因为我们喜欢它。这与事实相去甚远。
现实情况是,我们对第三方解决方案的要求要求非常高,而且这种情况经常发生,即使库,语言等非常受欢迎,它也不能满足我们的需求。这是第三方脚本语言的情况,如Lua,Python,Squirrel等。
当我们最初制作Godot时,我们完全确定我们希望我们的主脚本语言是动态类型的,因为它提供了很高的可访问性。我们知道,为游戏编写的大多数代码对性能并不重要,并且引擎C++部分已经涵盖了大部分关键部分,因此我们最初选择了Lua,然后是Squirrel(在此过程中尝试Python)。
不幸的是,我们在这些语言方面遇到了很多问题。绑定代码总是很大、很复杂,并且容易出现错误。不支持真正的多线程(每个线程有一个堆栈,但共享内存),并且必须使用自定义用户指示器创建矢量类型,这比内置类型提供的性能要慢得多。除此之外,我们永远无法完全消除与垃圾收集器相关的失速。
GDScript的诞生是为了让所有这些问题消失。当用户在IDE中用GDScript编写代码时,一切都"正常工作",并且您拥有实时代码完成的附加值。所有这些都不可能用第三方语言实现。我们尝试过,我们成为这方面的专家,但它只是没有成功。
正因为如此,GDScript将始终是主要支持的语言,也是我们推荐给所有Godot用户的首选。
那么,为什么选择其他语言呢?
尽管我们总是会推荐新用户走GDScript路线,因为我们知道这是最不麻烦的选择,但我们明白开发人员有不同的需求和体验,相信"一刀切"是一个错误。这就是为什么我们正在为即将推出的Godot 2.2提供C#和可视化脚本的支持。
为什么选择 C#?
就C#而言,人们对这种编程语言有很大的热爱,这是意料之中的,因为主要设计师是创建Object Pascal的同一个人(它在90年代与Borland Pascal一起非常受欢迎,后来通过Delphi非常受欢迎)。
事实是,Mono制作精良,具有出色的现代绑定扩展(与Java / JNI完全相反),并且支持多线程。因此,它应该顺利集成到Godot中。我们过去不想走这条路的唯一原因是由于许可证限制,但几个月前,当微软收购Xamarin并在MIT许可证下重新授权Mono时,这不再是一个问题。
支持C#的主要好处是,突然之间,Godot将成为习惯于支持这种语言的产品的独立和企业文化的一个诱人的选择。这应该极大地帮助我们接触到那些最初可能因为不得不学习GDScript而感到困惑的潜在用户(尽管我们仍然保证任何程序员都可以在不到一个小时的时间内掌握GDScript)。
然而,这并不是我们打算支持这一措辞的主要原因。与往常一样,我们希望实现社区最想要的功能,而 C# 支持绝对是最常出现的主题之一。我们还相信,它将为GDScript提供一种高性能的替代方案,而不必为C++手动编译Godot,并为对鸭子类型过敏的开发人员提供静态类型语言。
澄清一下:由于Mono运行时相对较重,并且许多Godot用户更愿意坚持使用GDScript,因此我们打算提供支持Mono的Godot版本作为单独的下载。这意味着用户可以选择仅将Godot与GDScript一起使用,或者GDScript和Mono。
为什么选择可视化脚本?
目前添加到Godot中的另一种语言是VisualScript,这是我们对可视化编程的看法。我们使用了一种表面上与虚幻蓝图类似的方法,但在引擎盖下却截然不同。
正如我们到目前为止所看到的,许多Godot用户和其他开发人员对Godot添加此功能感到困惑,我们想非常清楚地表明,我们无意取代GDScript或传统编程来采用可视化方法。
为了更清楚起见,我们并不认为强迫程序员使用可视块编写代码会带来更有效的工作流程。我们知道其他游戏引擎和解决方案试图向您推销这种观点,但请放心,这不是我们的观点或意图。我们坚持编程,仍然相信这是最好的。
那么,再一次,为什么是可视化脚本呢?我们的目标如下:
为非程序员提供一种方式来体验在Godot中开发的感觉,确保他们有办法操纵游戏的逻辑。
允许程序员设置他们的场景,AI等,他们可以向关卡设计师或游戏设计师公开粗糙的参数和逻辑。这样,他们可以在不打扰程序员的情况下进行调整。
允许程序员以可视化方式公开数据的组织方式。Godot的VisualScript在图形的流动方式上具有很大的灵活性,它允许以很小的努力创建对话树,粗略的游戏流,事件处理等。
请理解它只是一个额外的工具,而不是编程的替代品。可以在同一项目中同时使用GDScript和VisualScript作为补充工具。
绑定新语言
目前对其他语言的需求很大,例如Java,Haxe,Swift,Object Pascal等。由于Godot 2.2将专注于新的语言,现在是帮助我们开发和改进绑定API的好时机。当然,这似乎是一项具有挑战性的努力。
正式地说,我们目前支持的语言将是GDScript,Mono,VisualScript和C++。如果你想帮助集成另一种语言,你应该首先联系我们(请参阅网站底部的联系信息或使用IRC:Freenode上的#godotengine开发)。添加新语言的过程或多或少如下:
- 用你的新语言重新创建Godot的基本类型:这些是诸如Vector3、int、float、String等类型。其中许多通常已经提供。
- 创建模块:需要完成创建绑定代码C++模块(在C++中创建模块已详细记录)。整个公开的 Godot API 可以通过 ObjectTypeDB中的静态函数进行访问。
- 使用新语言生成绑定代码,用于访问MethodBind类中公开的函数(每个公开的方法都有一个绑定代码)。
- 创建一个 ScriptLanguage 类,并提供公开用于调试、分析等的必要方法。您可以提供符号,代码完成助手等,如果此语言要在Godot中进行编辑。
同样,由于此过程尚未完全简化,如果您想进行此工作,我们建议您与我们联系。
Godot的新高级网络预览版即将推出!
作者:胡安·利涅茨基 20 八月 2016
请高水平!
到目前为止,Godot网络仅限于UDP,TCP和一些高级协议,如SSL和HTTP。但是,对于游戏本身来说,关键是如何在游戏之间同步状态。由于协议的固有局限性,必须使用低级API手动执行此操作可能是一个巨大的痛苦:
- TCP 确保数据包始终到达,但由于纠错,延迟通常很高。这也是一个相当复杂的协议,因为它理解什么是"连接"。
- UDP是一种更简单的协议,仅发送数据包(无需连接)。它没有错误纠正的事实使它非常快(低延迟),但它的缺点是数据包可能会在此过程中丢失。除此之外,UDP 的 MTU(最大数据包大小)通常较低(只有几百字节),因此传输较大的数据包意味着拆分它们、重新组织它们、在部件发生故障时重试等。
这些协议的级别也太低,因此使用它们来创建对等体、可靠通道和网络拓扑可能会做很多工作。
中级抽象
在讨论如何跨网络同步游戏之前,我们需要定义基本网络 API 应该如何。为此,我创建了以下接口,该接口将抽象上一点中提到的所有低级工作:
新对象从PacketPeer扩展而来,因此它具有所有有用的方法来序列化您习惯的数据,这要归功于Godot漂亮的面向对象设计。它添加了设置对等体,传输模式等的方法。它还包括一些信号,这些信号会在对等方连接或断开连接时通知您。
这个想法是,此类接口可以抽象出大多数类型的网络层、拓扑和库。默认情况下,Godot将提供基于ENet的实现,但计划是这可以支持AdHoc WiFi,蓝牙,自定义设备/控制台网络API等。
对于大多数常见情况,不鼓励直接使用此对象,因为Godot提供了更高级别的网络设施。然而,如果游戏对较低级别的API有特定需求,则可以使用它来编写脚本。
通过网络进行同步的方法
初期
第一个联网的多人游戏使用调制解调器和局域网。两者都提供了非常低的延迟和非常有限的带宽。我记得在我十几岁的时候经常玩《毁灭战士2》和《魔兽争霸》,它们在电话线上的表现非常出色。局域网也是如此。
由于早期游戏也有很多事情要做,并且每帧同步它们意味着发送的信息比连接所能承受的更多,最常见的方法是利用低延迟,简单地将玩家的输入发送给彼此。
游戏以确定性方式编程,因此在同一帧上相同的输入足以复制状态。
进入互联网
有了互联网,连接变得更加复杂,中间距离和更长的距离都有更多的路由步骤。允许发送信息的带宽增加了许多数量级,但延迟也大大增加。
即使网络效率无限高,多人游戏是用光纤从家到家完成的,你仍然无法击败光速。我知道这看起来很奇怪,但你有没有想过这个问题?
- 光速为299,792,458米/秒
- 美国西海岸和东海岸之间的距离是5,200,000米。
这意味着在美国,信息从一端到达另一端所需的最短时间为 0.0173 秒。在 60 fps 下,计算机在 0.016 秒内渲染一帧。哇,如果你这样看,光可能会很慢…
分布式仿真
为了弥补这个问题,目前最常见的方法是在对等体之间"分配"模拟。通常,每个对等体都会模拟游戏中"更接近"的部分。
因此,考虑到这个问题的复杂性,网络"自动同步"的神奇解决方案实际上并不存在,或者除了简单的游戏表面之外,其他任何东西都无法应用。
戈多的高级网络
Godot有一个新的简单但非常强大的高级网络API。要使其正常工作,您必须向 SceneTree 提供一个多人对等对象,如下所示:
一旦完成,网络层就会神奇地发挥作用。
Godot的高级网络工作前提是所有对等方都将具有相似的场景布局,因此最重要的优先事项是能够有效地同步它们。
同步场景
在不同对等体之间同步信息的最简单方法是使用新函数(RPC表示"远程过程调用" - "过程"是旧编程语言中通常调用不返回值的函数的方式)。rpc()
只需调用 ,该函数就会神奇地在所有其他对等体中被调用。例如,用于跨节点同步位置和速度:Node.rpc(, )
这将调用所有其他连接对等体中的函数,从而使同步更容易。例如,该函数将如下所示:set_pos_and_velocity
我相信您已经注意到了这个新关键字。这意味着可以从 RPC 调用该函数。将此功能标记为 RPC 有很多用途,但最主要的用途是简单地让您知道它可以被调用。remote
从安全角度来看,让对等方能够调用其他对等方中的函数可能非常危险。想象一下,如果一个对等体打开另一个对等体中的文件以覆盖系统文件,该怎么办?这不应该发生,因此,为了避免这种情况,必须为 RPC 将函数列入白名单。
通过这种方案,安全性只是减少到收到的几个参数,使验证更容易,攻击者更难导致不需要的行为。
主/从模型
同步是可以的,但如前所述,我们最关心的是哪个对等方控制游戏的每个部分。在这个新的高级网络 API 中,任何节点都可以具有以下三种网络模式之一:
主人
奴隶
继承
缺省值为 ,表示与父节点相同,直到在父节点链中找到具有其他内容的节点。如果未设置任何内容,则服务器默认为主节点(所有节点主节点),而客户端默认为从节点(所有节点从属)。要在节点中更改此设置(以及因此使用该模式的所有子节点),只需使用以下函数:InheritInheritNode.set_network_mode()
当然,请确保始终有一个主节点,并且不同对等节点中的所有其他相同节点都是从节点。
在下面的示例中,您可以在客户端和服务器中看到相同的场景树。红色节点设置为从节点,绿色节点设置为主节点:
对于每个玩家,我们分配了其唯一的网络 ID 作为其场景名称。这使得它们很容易找到(默认情况下,服务器始终具有ID = 1,而对等方在连接时具有唯一随机生成的ID)。如果您的游戏更高级,则可以使用其他内容,例如用户名或其他内容。
高效使用主/从模型
此模型的真正优点是与 GDScript 中的 / 关键字一起使用时(不用担心,我们在 C# 和 Visual Script 中会有类似的东西)。与 类似 ,函数也可以使用它们进行标记:masterslaveremote
在上面的例子中,一枚炸弹在某个地方爆炸(可能是由主人管理的)。炸弹知道该地区的尸体,所以它检查它们并检查它们是否包含功能。exploded
如果他们这样做,炸弹就会召唤它。但是,播放器中的方法具有关键字。这意味着只有作为该实例主节点的玩家才能实际获得该函数。explodedexplodedmaster
然后,此函数在同一玩家的相同实例(但在不同的对等方中)调用该函数,并且仅调用那些设置为从属的实例,使玩家在所有对等方(以及当前,主对等方)中看起来都惊呆了。stun
试试看
截至今天,所有这些新的 API 都可以在 GitHub 主分支上使用。示例游戏可以在网络/simple_multiplayer下的 godot-demo-projects 存储库中找到。目前还没有二进制版本,因此您必须自己编译。
结论
从第一个洞见来看,高层次网络在戈多中是如何工作的似乎并不十分明显。您很可能必须自己尝试才能完全"理解"。
这种方法的巨大优势在于,一旦你习惯了它,你就可以制作一个多人游戏,其代码量几乎与单人游戏相同(除了放置/关键字和调用一些函数作为RPC而不是常规调用)。另外,您的多人游戏将正常运行,无需任何更改(所有节点都将是主节点,对从站的调用将被忽略)。masterslave
请记住,这是高级网络的第一次实现,我们很乐意听到您对我们如何改进它的反馈!感谢您的阅读!
图像的改变
作者:胡安·利涅茨基 22 九月 2016
图像
Godot有许多内置类型。内置类型用于非指针 API 参数,您需要快速传递信息,并且您并不真正关心保留引用。
Godot中早期的内置类型之一是Image,它类似于Vector,但具有与图像数据相关的更多信息(例如宽度,高度,格式以及它是否具有mipmaps)。
起源
我试图追踪图像类的早期版本,并且可以从2006年找到它。
您可以看到我们使用Tolua ++进行接口时的旧宏!当时,Godot(或它几乎没有什么)在任天堂DS和索尼PSP上运行,因此索引纹理压缩是最常见的!除此之外,除了许多处理图像处理的助手之外,这个类多年来没有太大变化。
目前
以兼容性为借口,新格式堆积了十多年,以当前状态结束。
我们添加的一些东西是:
YUV纹理,因此我们可以将它们发送到视频缓冲区并在GPU中进行转换。然而,这最终是相当棘手的,并且与SSE对话器相比,并没有提高太多性能。
BC纹理压缩,这是PC和控制台上最常见的。
PVRTC纹理压缩,这在Apple设备上很常见。
ETC纹理压缩,由Android设备使用。
还有高通公司使用的ATC,它与S3TC相同,具有不同的斜坡值,可以解决专利问题。
能够将自定义数据发送到纹理。我们在PSP和PS3游戏中工作时使用了此功能,因此我们可以加载纹理数据(旧GPU希望您以更友好的特殊格式加载纹理数据,现在GPU可以重新连接内存以解决此限制或使用已经旋转的纹理格式)。
二十年前,每个人都想制作自己的图形API,并通过专利来保护它,因此纹理压缩算法都获得了专利,几乎没有人愿意押注于开放的API。说实话,只有NVidia保持了OpenGL的启动,因为英特尔和AMD对它的支持是一团糟。因此,有很多相互竞争的纹理压缩格式(其中只有PVRTC是真正创新的IMO,但也获得了专利)。PC和游戏机通常支持S3TC,但在移动设备上,没有GPU制造商希望因S3专利而亏损,因此每个制造商都使用自己的压缩格式(或根本不压缩,如ARM MALI)。
对于Apple设备,PVRTC在某种程度上是标准的,但在Android上这是一团糟。谷歌试图通过使ETC成为所有Android设备的标准来改善这种情况,但这种压缩只涵盖了不透明的纹理。
前途
由于Godot 3.0将删除许多兼容性以换取许多改进,并且鉴于我们已经开始开发新的渲染器,这成为清理该类的绝佳机会。
许多格式和命名约定现在已经过时,新的格式变得普遍。因此,Image 正在进行清理:
发生了以下更改:
将所有格式重命名为更标准的约定,包括共振峰、元件和位深度。
丢弃的YUV(可能会回来,但我们正在慢慢转向使用本机API进行视频播放,或者使用内置库播放到纹理中)。
添加了浮点类型(浮点型和半浮点型)。
重命名BC以具有较少的Microsoft命名(我知道DXT也是Microsoft名称,但它是OpenGL扩展使用的名称)。
添加了 ETC2 格式,现在是 OpenGL 4.3、OpenGL ES 3.0 和 Vulkan 的标准格式。
删除了自定义格式,因为其用例不再相关。
当OpenGL ES 2.0和非基于Vulkan的设备和GPU变得足够过时时时,我们可能不得不再次重写这个API以删除所有额外的不必要的格式,但这在几年内不会发生。欢迎反馈!
为什么Godot使用服务器和RID?
作者:胡安·利涅茨基 24 九月 2016
服务器和 RID
建筑
如果你曾经潜伏在Godot源代码中,并试图遵循逻辑的流程,你很可能注意到大多数与场景,格式等相关的代码总是最终出现在一个巨大的服务器类中。这些非常大的类,Godot称之为服务器,通常抽象出一些实现或体系结构。
不存在真正的对象或类,而是对 RID 类型(代表资源 ID)的简单引用,并且所有函数都将这些对象作为其第一个参数(用于创建它们的对象除外)。
如果你是一个程序员,这很可能对你来说很奇怪,但是这背后有一个非常有趣的逻辑,主要与多线程有关。
多线程
我们以前开发的引擎(如Juan Linietsky和Ariel Manzur)并没有真正使用这种架构,一切都是通过具有继承和多态性的简单类提供的。
这很好,因为我们的引擎在单个线程中运行(这很常见,因为当时大多数CPU架构都是单核的)。然而,随着多核CPU进入大众市场,很明显,Godot必须采用多线程。
在针对多个线程进行优化之前,让我们先看一下游戏引擎主块的典型执行顺序。
这种事件顺序无法逃避,因为逻辑会影响物理场,渲染需要来自逻辑和物理的信息才能显示。
当时对多个线程的游戏引擎优化的研究产生了一种名为作业调度的新技术的文档和论文。如今,大多数流行的引擎都使用这种技术,这似乎是完全合乎逻辑的。
这种技术背后的想法不是改变序列顺序,而是使每个阶段尽可能平行。这是如何实现的?渲染虽然主要是一个顺序过程(GPU是顺序的),但可以在一些地方并行化,如视锥体剔除和(在Vulkan,Metal或DirectX12等现代API中)创建命令列表。
对于物理学来说,这有点困难。物理引擎将每帧的工作分为以下几个阶段:
- 力积分:计算重力和外力,并将其应用于速度
- 广泛阶段:查找成对的紧密对象
- 近相:生成重叠对象的碰撞信息
- 求解器:碰撞分辨率的迭代或 LCP 近似
- 速度积分:移动对象
其中,主要是近相和求解器步骤可以高度并行化。物理引擎通过创建岛屿来实现这一点,岛屿是独立的对象组,不与其他组交互。这允许并行处理它们。
如果我们把所有的东西放在一起,渲染一个具有多个线程的帧,在作业中拆分,就会变成这样:
不同的并行性
不幸的是,在戈多实施工作制度太具有挑战性了。虽然对于高端游戏引擎来说,这是有道理的,但可用性最终会受到严重影响。由于Godot的目标是成为一个易于使用的引擎,因此用户在这样的系统中会遇到太多挑战:
- 对于用户来说,踩踏当前正在单独线程中修改的一段代码太容易了,从而导致崩溃或未定义的行为。
- 为了避免这种情况,必须将锁定放在各处。这将使代码更加复杂,并且由于等待互斥体或信号量,可能仍会影响性能。
- 同步点会有所帮助,但它会为用户卸载更多复杂性。对于大型游戏中的自定义引擎,这可能是一个好处,但对我们来说,它会影响可用性。
所有这些都引出了一个问题:我们如何使Godot多线程,同时保持其易于使用?
这个难题的答案在于理解以下事实:
- 逻辑将信息设置为物理,但不需要从中检索数据。
- “逻辑"和"物理"都将信息设置为"渲染”。两者都不需要检索数据。
- 仅渲染就具有显示帧所需的所有信息,并且不需要等待它。
- 物理学需要将信息(移动和碰撞的物体)设置回逻辑层,但这可以在下一帧之前的任何时间完成。
如果我们把所有东西放在一起,很明显,所有3个任务都可以并行运行:
物理场将上一个固定帧中的信息同步到逻辑
- Logic 运行固定步骤,与 Physics 同步,然后在 Physics 开始工作时继续执行常规步骤。
- 物理将数据推送到渲染。
- 渲染完成它从上一帧开始执行的任何操作,同步(交换缓冲区),然后从 Logic 获取信息并开始处理新帧。
- 这会导致多线程化,其方式对程序员是透明的:
基本上,这种方法不再存在"帧时间"(在不到1/60秒的时间内完成所有事情)的概念。逻辑、物理和渲染有整个帧的时间,它们不会同步运行(即渲染将"稍后"处理帧,逻辑和物理将同时处理它们的帧,只花费一点同步)。
这在理论上听起来不错,但在实现中却是混乱的。这意味着物理和渲染都必须接收命令,并且需要以某种方式缓冲命令。使用传统的OOP和C++这是意大利面条代码的秘诀。在调用函数时传递可能无法执行函数的对象很奇怪。
服务器
为了简化这一过程,我们提出了服务器的概念。它们之所以这样称呼,是因为它们的要求:
- 包含所有信息和状态的实体执行处理并返回结果。
- 它并行运行,它可以在同一设备中,甚至可以在远程设备中运行。
- 用户没有直接访问权限。
- 所有通信都是通过单个通道上发送的命令完成的。
这显然是一种服务器模式!
由于这是一个面向命令的 API,因此它通过表示服务器的单个类公开。远程对象用 RID 表示。
服务器在Godot中运行良好,甚至允许一些额外的好东西:
- 线程上的后台加载和信息处理效果很好(例如生成 terrain),因为每个线程都可以创建内容,然后通过单个通道注册它。
- 只需检查命令数据,就很容易判断某些内容何时发生了变化。这允许Godot行为,例如如果没有更改,则不重绘编辑器屏幕。
- 在单线程服务器和多线程服务器之间切换很容易,因为它只需要一个提供命令缓冲的适配器服务器。
前途
对于Godot 3.0,我们正在努力改进服务器的某些方面。最主要的是优化RID,它现在还将缓存一个指向所用对象的不透明指针。在此之前,必须在哈希表中内部查找对象。
这样做的好处是性能更高,而明显的缺点是游戏在发布时可能会崩溃,并且会提供更少的信息。为避免这种情况,请始终检查调试版本中报告的错误!
加入哈克托啤酒节,为戈多做出贡献!
作者:Rémi Verschelde 1 十月 2016
10月1日,哈克托啤酒节现在开始,并将持续整个月!
什么是哈克托啤酒节?此活动(由DigitalOcean和GitHub运营)的目的是鼓励人们通过提出拉取请求来为开源项目做出贡献。激励措施?除了国际声誉,让世界变得更美好的光荣感觉以及项目社区的深刻认可之外,如果您在注册GitHub帐户后的一个月内提出四个拉取请求,您还有机会赢得一件很酷的T恤(可悲的是,还不是Godot的T恤)。
戈多在哪里发挥作用?作为一个托管在GitHub上的开源项目,我们存储库上的拉取请求也适用于Hacktoberfest,所以这是一个很好的机会来启动你的Godot贡献者职业生涯(或者如果你已经是常客,请确认一下)。
要做什么?对于这次活动,我们为我们的GitHub问题创建了一个hacktoberfest标签,这将是很好的候选者(好吧,说实话,它只是通常的初级工作标签,;)重命名)。不过,您不必将自己局限于这些问题,因为我们理解,任何项目的任何拉取请求都将计入获得T恤的贪婪目标。
特别要注意的是,在我们的文档或演示项目上完成的拉取请求也是有效的,因此即使您不熟悉C++,您也可以做出贡献。只要确保在有自述文件时阅读自述文件,并确保您的贡献是有用的 - 因为目的是它当然应该合并,所以它应该对项目有益。
所以,好的黑客,玩得开心!
我们的点击式框架终于出来了!
作者:阿里尔·曼祖尔 1 十月 2016
不久前,我们在Kickstarter上发布了《Dog Mendonça & Pizzaboy®的互动冒险》,在活动期间,我们承诺发布我们制作的框架,将游戏开发为一个独立的软件包。花了一段时间才完成游戏并找到一些时间来整理框架并发布它,但它终于来了:-)
Escoria,一个点击式图形冒险创作框架
Escoria是一组脚本,模板场景和对话脚本语言,旨在用于Godot Engine中创建经典的图形冒险游戏。它不是一个"封闭的产品",有自己的UI和工具,也不是一个"不用编程就做你的游戏"的解决方案。它利用了Godot编辑器,并且打算由团队用来制作游戏,而程序员的干预最少。它也旨在由您的团队"拥有";您将接管框架,并使其适应游戏的需求。
文档
因为Escoria没有任何向导或"用户友好"的UI,并且它被用来制作一个完整的产品,所以它有许多功能和文档对于完成任何事情都很重要。出于这个原因,在我上个月访问Gamescom之后,我花了一个星期的时间在法国雷恩的FLOSS Manuals法语版,创建了一本手册,解释了该框架的大部分功能。你可以在这里得到它:
使用埃斯科里亚创建点击游戏
我还将尝试为任何缺失的功能制作单独的文档,如果社区要求,可能会播放演示内容的视频。
如何获取
您可以从其GitHub页面下载框架:
https://github.com/godotengine/escoria
基本软件包包括一个测试场景和一些基本文档,因此请查看手册,以更深入地了解所有功能。
获取帮助
由于我们不知道有多少人(如果有任何:p)将使用它,因此我们将首先使用GitHub页面上的问题跟踪器,以及使用标签的Godot的问答网站。escoria
玩得愉快!
1 Juan Linietsky和Ariel Manzur,他们参与了该项目的开发。
使着色器更易于访问
作者:胡安·利涅茨基 6 十月 2016
关于着色器
对于大多数游戏开发人员来说,着色器是一种可怕的怪物,它呈现出如此的复杂性,以至于它似乎遥不可及。实际上,默认情况下着色器非常简单,并且添加的着色器越多,着色器就越复杂。
为了解释着色器的工作原理,让我们考虑一个非常简单的着色器,用于将子画面绘制到屏幕上。我们的 sprite 大小为 32x32 像素,必须在某个位置绘制。(免责声明:这不是一个教程,而只是为了让您了解如果不这样做,事情是如何工作的)。
以下 OpenGL 代码将子画面发送到着色器进行绘制:
OpenGL 命令
如您所见:
顶点/UV 通过属性发送。
配置参数通过制服发送。
纹理只是绑定到从 0 开始的绑定点,绑定点编号也通过属性发送。
调用后,顶点程序(在 DirectX 术语中也称为顶点着色器)在每个顶点执行一次(我们发送 4 个顶点)。每个顶点都是一对浮点数(我们通过 进行配置)。glDrawArraysglVertexAttribPointer()
顶点程序
此代码不再在 CPU 中运行,实际上它在 GPU 上运行!同样,它是按顶点执行的。顶点程序的输出必须适合大小为 -1 到 +1 的 X、Y 和 Z 的"框"。顶点变为基元(在本例中为三角形扇形,两个绘制为四边形的三角形),并且任何超出 -1 到 +1 范围的基元都将被裁剪。因此,这被称为"剪辑空间"。
我们需要知道的是,我们必须将屏幕坐标(屏幕尺寸为1024x768)转换为此空间,因此这样做的自然方法是:
将最终坐标除以屏幕尺寸
乘以 2
减法 (1, 1)
结果是 -1 到 +1 剪辑空间坐标中的子画面顶点。
然后将这些三角形绘制到屏幕上(请记住,屏幕可以是任何大小,但OpenGL将在-1 … +1范围内重新表示它以进行绘制)。
对于绘制到屏幕上的每个像素,OpenGL 将插值从顶点程序生成的输出,并使用它们来填充三角形。在本例中为 UV 坐标(用于读取纹理)。此过程在片段程序(DirectX 术语中的像素着色器)中完成。
片段程序
在片段程序中,输入是UV坐标(插值),输出是屏幕颜色。我们使用精灵纹理均匀来读取精灵像素。
正如你所看到的,它并不是那么复杂。
戈多中的着色器
当然,如果你正在开发一款游戏,那么还有更多的事情在发生。顶点必须在 3D 空间中变换,并且引擎为您提供了许多功能,例如:
处理法线、切线阵列等
通过骨架转换几何图形
执行照明、法线贴图、阴影贴图
在正向渲染、延迟、阴影等的基础和加法传递中正确绘制着色器(许多配置)
这变得非常混乱。不相信我?这是Godot的GLES 2.0默认3D着色器的长度:
它大约有1300行代码,你可以在这里阅读全部内容。
然而,事实是,到目前为止,程序员想要编写着色器,它只打算更改一些参数,例如纹理的绘制方式,更改颜色,材质属性等。因此,Godot附带了一种简化的着色器语言(非常松散地基于OpenGL ES 2.0着色语言)。用户可以使用大量预先存在的信息编写顶点、片段和光照着色器。
例如,要在 Godot 中绘制具有纹理的子画面,只需要这样做:
就这样,戈多负责精灵变换,对其应用光影,发送顶点等。这要简单得多,人们首先使用游戏引擎的原因:)。
为什么不是GLSL,HLSL,CG?
经常出现的一个问题是,为什么Godot选择不使用现有的着色器语言。关于我们为什么走目前的方式,有几个非常明确的原因:
我们希望着色器易于编写。删除 GLSL 的东西,如属性、颜色缓冲区管理等(Godot 已经处理好了)使语言更加连贯。
我们希望完全控制代码生成。其他游戏引擎迫使您自己为不同的渲染通道(例如延迟,前进基础,向前添加,阴影,前z通行证等)编写着色器。在Godot中,着色器只编写一次,不同版本的代码是从解析树中透明地动态生成的。
我们不希望用户指定必须如何绘制着色器(例如渲染队列位置、渲染类型(如 alpha 或不透明等)。Godot 检测某些变量是否被写入例如 alpha,并自动执行队列和渲染传递管理。
这样做的结果是着色器始终按预期工作,没有意外。
戈多 3.0 中的着色器
然而,许多开发人员抱怨Godot着色器语法太有限。因此,对于Godot 3.0,我们进行了以下更改:
该语言现在支持大多数 GLSL 3.0 着色器规范,并使用 OpenGL 数据类型和函数。
着色器现在是单个文件,因此它们可以保存到文件系统的文本中。
着色器现在还将提供提示,因此导出的参数更易于编辑。
着色器编辑器提供了完整的代码完成和参数提示,使编写它们变得轻而易举!
下面是它的外观示例:
请继续关注更多!
继续使用新的 3D 渲染器
作者:Rémi Verschelde 15 十一月 2016
正如那些密切关注开发工作的人已经注意到的那样,自从Godot 2.1发布时宣布的内容以来,我们对路线图进行了更改。
事实上,我们决定跳过计划中的2.2版本,直接进入Godot 3.0,这是期待已久的升级,应该会带来基于OpenGL ES 3.0(移动)和OpenGL 3.3(桌面)的全新2D和3D渲染器。
改变计划的动机
速度更快
改变路线图的主要动机是更快地发布Godot 3.0。在Godot开发团队中,我们的首要任务始终是致力于社区在给定时间点最需要的东西 - 在过去的一年半中,重点是大大提高编辑器的可用性,以及增强2D工具。如今,Godot是制作2D游戏的绝佳引擎,不断增长的社区的兴趣开始转向3D,并相应地需要改进。
一年多来,Godot 3.0一直被承诺作为将带来新的最先进的3D渲染器的版本(尽管与各种图形驱动程序兼容,因此我们暂时选择GLES 3.0而不是Vulkan),并解决用户就Godot 2.1中的当前3D渲染器制定的许多问题和要求。
通过跳过 2.2 版本,我们允许自己(主要是我们的渲染专家 Juan)避免在 2.x 功能上出现冗长的错误修复和稳定期。因此,我们的目标是在2017年初发布Godot 3.0,如果我们现在必须专注于2.2,这是不可能实现的。
破坏与 2.x 的兼容性
新的3D渲染器是一个对Godot的内部进行一些重要重构的机会。我们还希望利用这个机会来改进、同质化和增强API的某些部分,使Godot 3.0成为引擎和Godot游戏进一步开发的坚实基础。
这对用户意味着什么?从 Godot 2.x 迁移到 Godot 3.0 将需要移植现有项目,以考虑 API 更改,并在 3.0 中设置资源的新方式。
我们将提供工具来帮助转换以及广泛的文档,所以不用担心。您可以继续(或开始)使用Godot 2.x,因为大多数API和工作流程仍将保持不变,因此您在2.x中所做的98%仍然与3.0相关。
尽管如此,这种计划中的兼容性破坏和新的渲染器意味着Godot 2.2宣传的一些主要功能将在Godot 3.0中发生重大变化。特别是,已经在 master 分支中实现并计划在 2.2 中实现的可视化脚本功能将在 Godot 3.0 发布之前进行修改 - 因此,如果我们很快要发布 2.2,则使用该版本制作的可视化脚本将与 Godot 3.0 不兼容,因此我们希望避免人们在生产环境中使用它。不过,您可以在开发分支中随意使用它,我们总是需要有关新功能的反馈!
有效利用MOSS奖励的资金
最后但并非最不重要的一点是,您可能知道Mozilla授予了我们一大笔钱,作为其MOSS任务合作伙伴计划的一部分。该奖项旨在通过实施全新的WebGL 2.0和WebAssembly技术来帮助我们改进Godot的HTML5导出。由于前者与 GLES 3.0 基本相同,因此我们最好同时处理这两个 API,这样我们就可以确保 GLES 3.0 / GL 3.3 和 WebGL 2.0 的行为相似。
因此,我们决定与我们的非营利性家庭软件自由保护协会一起聘请Juan Linietsky全职工作6个月,以实现MOSS奖资助的目标。这尤其包括将在3.0中完成的新渲染器,以及在HTML5平台上的大量工作,这些工作可能部分为3.0完成,而完全为3.1完成。由于Juan是项目负责人,也是我们多产的贡献者,这将使Godot能够比过去几年更快地成长。
现有的2.2发展和从2.x的过渡呢?
你现在可能想知道这对你一直在等待的2.2开发意味着什么(例如.C#支持,可视化脚本,高级多人游戏),以及你将如何支持你的2.1项目,直到它们可以移植到Godot 3.0。
2.2 功能移至 3.0
Godot 2.2计划的所有功能都已移至3.0,这意味着您将不得不等待更长的时间才能使用它们。如果您迫切需要诸如已经实现的高级多人游戏API之类的功能,则可以使用主分支的自定义版本,因为它相对稳定。可视化脚本也可以在主分支中使用,但如上所述,我们建议不要在生产中使用它。至于C#支持,Ignacio仍在努力工作,但他的开发尚未集成到主分支中 - 当初始实现准备好进行测试时,我们肯定会写博客。
对 2.1.x 的扩展支持
至于Godot 2.0.x,我们计划为2.1分支制作维护版本(版本2.1.1应该很快就会发布)。由于在3.0发布之前的预期等待期很长,而且我们正在跳过2.2,我们将向后移植"安全"功能(例如,在现有功能中没有或几乎没有风险带来错误)到稳定分支。与往常一样,这包括许多可用性改进,但也包括全新的功能,例如用于寻路的新AStar API。
即使在Godot 3.0发布后,我们也可以考虑支持2.1.x一段时间,以确保用户在第1天没有准备好将他们的项目移植到Godot 3.0时仍然可以拥有维护版本的Godot。尽管如此,随着时间的流逝,维护稳定的分支变得越来越困难,并且它与主分支和开发重点不同,因此我们不能保证如果3.x中不需要2.1分支的错误修复将专门针对2.1分支进行修复。
支持较旧的 GLES 2.0 设备
Godot 2.1.x的当前渲染器将被删除,因为我们需要完全重写它以最好地利用GLES 3.0提供的可能性。
尽管如此,我们意识到,在移动市场上,仅限于GLES 2.0的设备仍然占据了市场份额的重要组成部分。因此,我们计划基于 GLES 3.0 重写一个与 GLES 2.0 兼容的渲染器 - 两者应该相对相似,前者的功能自然比后者少,性能更差,但硬件决定了这一点。
我们打算支持Godot 2.1.x,至少在发布之前,它将带来这个新的GLES 2.0兼容渲染器;目前还不确定它是否已经在Godot 3.0中,或者稍后在Godot 3.1中出现。通过扩展的 2.1.x 支持,我们希望确保您可以将游戏分发到要定位的市场。
生活在边缘
您已经可以在GitHub上的gles3分支中测试新的GLES 3.0渲染器的当前状态(目前它仅在Linux上编译,但在不久的将来会修复)。请记住,这是一项正在进行的工作,在撰写本文时,它不能被视为3D的功能 - 使用GLES 3.0的2D渲染器应该可以正常工作。
一旦分支足够成熟,它将合并到主分支中,并替换当前的 GLES 2.0 渲染器。
插图(全尺寸)由Jean-Manuel Clémençon提供,来自Godot 2.1中正在进行的3D游戏。这显示了使用我们当前的 GLES 2 渲染器可以实现的渲染类型 - 我们非常渴望看到它在 Godot 3.0 中的表现如何!
未完3篇
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)