godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)

时间:2024-04-04 19:51:09

Since Godot has no restrictions on project structure or filesystem usage, organizing files when learning the engine can seem challenging. This tutorial suggests a workflow which should be a good starting point. We will also cover using version control with Godot.

由于godot对项目结构或文件系统使用没有限制,学习引擎时组织文件看起来很有挑战性,本教程提出了一个工作流程,这应该是一个很好的起点,我们还将覆盖使用godot的版本控制

组织

Godot is scene-based in nature, and uses the filesystem as-is, without metadata or an asset database.

Unlike other engines, many resources are contained within the scene itself, so the amount of files in the filesystem is considerably lower.
Considering that, the most common approach is to group assets as close to scenes as possible; when a project grows, it makes it more maintainable.
As an example, one can usually place into a single folder their basic assets, such as sprite images, 3D model meshes, materials, and music, etc. They can then use a separate folder to store built levels that use them.

Godot 本身是基于场景的,并使用了文件系统,没有元数据或资源数据库。

不像其他的引擎,场景本身包含了大量资源,因此文件系统中的文件数量要少得多。

考虑到这一点,最常见的方法是将资源按照场景分组,当项目变大时,更易于维护。

例如,基本的精灵图像,3D 模型场景或网格,材质等通常可以组织到一起,使用单独的文件夹来存储它们,从而将它们用于构建关卡

/project.godot
/docs/.gdignore
/docs/learning.html
/models/town/house/house.dae
/models/town/house/window.png
/models/town/house/door.png
/characters/player/cubio.dae
/characters/player/cubio.png
/characters/enemies/goblin/goblin.dae
/characters/enemies/goblin/goblin.png
/characters/npcs/suzanne/suzanne.dae
/characters/npcs/suzanne/suzanne.png
/levels/riverdale/riverdale.scn
导入资源

Previously, importing assets in Godot 2.x required manual maintenance of a separate directory with source assets. Without doing this, it was impossible to specify how to convert and change import flags for textures, audio files, scenes, etc.
In Godot 3.0, we use a more modern approach to importing: Simply drop your assets (image files, scenes, audio files, fonts, etc) directly in the project folder (copy them manually with your OS file explorer). Godot will automatically import these files internally and keep the imported resources hidden in a res://.import folder.
This allows changing all the import parameters transparently

以前,在Godot 2.x中导入资源需要手动维护一个包含源资源的单独目录。 如果不这样做,就无法指定如何转换和更改纹理,音频,场景等的导入标志。

在Godot 3.0中,我们使用更现代的导入方法:只需将你的资源(图像文件,场景,音频,字体等)直接放到项目文件夹中(使用系统文件浏览器手动复制它们)。 Godot会自动在内部导入这些文件,并将导入的资源隐藏在res://.import文件夹中。

这允许透明地更改所有导入参数

在Godot中更改资源的导入参数(再次记住,导入参数仅存在于非内置的 Godot 资源类型中)很容易。 只需在文件系统面板中选择相关资源即可
godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)
并且在调整参数后,按下“重新导入”。 所使用的参数将仅用于此资源,并将用于未来的重新导入。

同时更改多个资源的导入参数也是可能的。 只需在资源面板中一起选择所有这些资源,当重新导入时, 所设置的参数将应用于它们。
当源资源的 MD5 校验发生变化时,Godot 将执行自动重新导入,应用为该特定资源配置的预设。
导入将添加一个额外的 .import 文件,其中包含导入配置。 确保将这些提交到您的版本控制系统!
godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)
此外,额外的资源将预设在隐藏的res://.import文件夹中:
godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)
一些源资源可以作为不同类型的资源导入。 为此,只需选择所需的相关资源类型并按“重新导入”即可
godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)
不同类型的游戏可能需要不同的默认值。 通过使用“Preset …”菜单可以更改每个项目的默认值。 除了某些提供预设的资源类型外,还可以保存和清除默认设置:
godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)

导入图像

在 Godot 3+ 中,图像文件不再是内置类型资源,它们必须被导入。
Godot 中的默认操作是将图像导入为纹理。 纹理存储在显存中,不能直接访问。 这就是使得绘制它们变得高效的原因
godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)

图像是游戏中最大的资源之一。为了有效地被处理, 需要压缩它们。根据用户的需求, Godot 提供了几种压缩方法。

①VRAM 压缩:这是 3D 资源最常见的压缩模式。 磁盘上的文件减少,显存使用量也大大减少。 但对 3D 来说,它可能会因此出现不期望的失真。

②无损压缩:这是 2D 资源最常见的压缩。 这说明资源没有任何形式的失真,并且磁盘压缩率也不错。 不过,它将使用比 VRAM 更多的显存。

③有损压缩:对于拥有大量 2D 资源的游戏,有损压缩可能是一个不错的选择。 它有一些失真,但少于 VRAM ,文件大小几乎是无损压缩的十分之一。

④未压缩:仅适用于无法压缩的格式(如raw float)。

godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)
Godot支持高动态范围图像纹理(如 .HDR或 .EXR)。 这些图像作为高动态范围 EPR 投影全景天空是非常有用的,它取代了Godot 2.x的 Cubemaps 。 现代个人电脑支持 BC6H VRAM 格式,但仍有很多电脑不支持。

如果你希望 Godot 确保完全兼容各种纹理,请启用“强制 RGBE ”选项

法线贴图

当使用纹理作为法线贴图时,只需要红色和绿色通道。 鉴于常规纹理压缩算法产生的失真在法线贴图中看起来不太好,RGTC 压缩格式最适合这种数据。 将此选项强制为“已启用”将使Godot导入 RGTC 压缩的图像。 默认情况下,它被设置为“Detect”,这意味着如果纹理一旦被用作法线贴图,则会将其更改为“Enabled”并自动重新导入

FLags

根据使用情况,将图像作为纹理导入时可以切换很多设置

Repeat

这种设置在 3D 中比 2D 更常用(因此它通常在 2D 中禁用)。 它使得UV坐标超出了0,0 - 1,1范围“循环”。

可以选择将repeat设置为镜像模式。

Filter

当像素大于屏幕像素时,此选项可为它们启用线性插值。结果是更平滑的(更少块状)纹理。此设置可以在 2D 和 3D 中常用,但在制作像素匹配的游戏时通常会被禁用

Mipmaps

当像素变得比屏幕小时,mipmap 会启用。这有助于减少纹理收缩时的颗粒感效应。 请记住,在较老的硬件(GLES2,主要是移动设备)中,使用 mipmap 需要满足一些要求:
①纹理宽度和高度必须是2的幂
②必须启用Repeat

在制作手机游戏和应用程序时,希望完全兼容并使用 mipmap,请牢记以上内容。

在 3D 模式下,应该打开 mipmap,因为这也会提高性能(更小大小的纹理用于更远的对象)

Anisotropic

当纹理几乎与视图平行时(如地板),该选项通过减少模糊程度使它们具有更多细节

SRGB

渲染 3D 图像时,Godot使用线性颜色空间。 映射到 albedo (反照率)或细节通道的纹理需要打开此选项才能使颜色看起来正确。 当设置为“Detect”模式时,纹理将在反照率通道中使用时标记为 SRGB 。

Process

当作为纹理导入时, 某些特殊process可以应用于图像

Fix Alpha Border

这将周围相同颜色的像素从透明转换为非透明。 它有助于减轻从 Photoshop 等导出图像时的轮廓效果。
godot游戏引擎自学入门笔记--项目组织与图像导入,官方文档翻译(十二)
除非需要特定的值,否则最好在默认情况下保持开启

Premultiplied Alpha

修复黑暗边界的替代方法是使用 Premultiplied alpha。 通过启用此选项,纹理将转换为此格式。 请记住,在画布物体上使用Premultiplied ALPHA 混合模式需要创建一个材质

HDR as sRGB

一些 HDR 文件可能被破坏并包含 SRGB 颜色数据。 一般不建议使用它们,但在最坏的情况下,切换此选项将使它们看起来正确

Invert Color

反转图像的颜色。 例如,将外部程序生成的高度图转换为深度图以用于 空间材质 非常有用

Detect 3D

这个选项让 Godot 知道在 3D 中何时使用纹理(默认情况下导入为 2D )。 如果开启这个选项,设置会发生改变,所以纹理标记对 3D 更友好( mipmap ,Filter和repeat变为启用,压缩变为 VRAM )。 纹理也自动重新导入。