<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Godot Encyclopedia</title><description>A practical guide to 3D development in Godot 4.x for web developers.</description><link>https://cadmus.page/</link><language>en</language><item><title>Why a web developer should care about Godot</title><link>https://cadmus.page/en/godot/01-intro/01-zachem/</link><guid isPermaLink="true">https://cadmus.page/en/godot/01-intro/01-zachem/</guid><description>An open-source engine with a different philosophy — what it offers a developer coming from the TS/React world.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If Unity feels like a corporate IDE with a subscription (because it is), then Godot is something
else. MIT license, 0% royalties, a ~100 MB editor that launches faster than VS Code.
Its own ecosystem, its own language, and — for a web developer — a model that is far more intuitive in places.&lt;/p&gt;&lt;p&gt;This encyclopedia runs parallel to the Unity encyclopedia: the same concepts, the same &quot;through web analogies&quot;
approach, but a different engine. You can read both, or just one.&lt;/p&gt;&lt;p&gt;What Godot does differently&lt;/p&gt;&lt;p&gt;The main architectural difference from Unity: in Godot a scene is also a prefab. Any object
built i…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>The Godot stack and its ecosystem</title><link>https://cadmus.page/en/godot/01-intro/02-stack/</link><guid isPermaLink="true">https://cadmus.page/en/godot/01-intro/02-stack/</guid><description>Godot 4.x versions, GDScript vs C#, render pipelines, and key packages.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot has been on the 4.x branch since 2023 (the 4.0 release was March 2023). As of May 2026:&lt;/p&gt;&lt;p&gt;Godot 4.6.3 — the current stable (released May 20, 2026). The 4.6 minor branch was released in January
 2026, with patches 4.6.1 (Feb), 4.6.2 (Apr), 4.6.3 (May) — stabilizing Jolt physics and editor fixes.
 The headline features of 4.6: Jolt became the default physics for 3D, IK returned as a node-based system
 (TwoBoneIK3D, FABRIK3D, plus 5 more solvers), a new editor theme (Modern), unified docking,
 a rewritten SSR, LibGodot (the engine as an embedded library).
Godot 4.7 — in beta since April 2026…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>The Godot Editor, scenes, and nodes</title><link>https://cadmus.page/en/godot/02-3d/01-editor-stsena-uzly/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/01-editor-stsena-uzly/</guid><description>The scene tree and Node3D — the foundation of everything in Godot.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Editor: the main windows&lt;/p&gt;&lt;p&gt;The Godot Editor is an IDE for content. The main docks (draggable, as in Unity):&lt;/p&gt;&lt;p&gt;3D Viewport — the scene window where you fly around and place nodes. Switchers: 2D / 3D /
 Script / AssetLib.
Scene (top left) — the node tree of the current scene. An analog of the Unity Hierarchy.
FileSystem (bottom left) — the project&apos;s files. An analog of the Unity Project panel.
Inspector (right) — the properties of the selected node or resource.
Node (top right) — a tab for viewing/connecting the signals of this node. This is
 a separate thing relative to Unity.
Output / Debugger /…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>GDScript, lifecycle, and signals</title><link>https://cadmus.page/en/godot/02-3d/02-gdscript-lifecycle/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/02-gdscript-lifecycle/</guid><description>How Godot calls your code — _ready, _process, _physics_process, signals, await.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A GDScript file () usually starts with , specifying which node it inherits from:&lt;/p&gt;&lt;p&gt;The main methods Godot calls itself:&lt;/p&gt;&lt;p&gt;* — the object&apos;s constructor, even before the node is added to the tree.
— the node was added to the scene tree. Parent → children (top-down).
— all children are also ready. Children → parent (bottom-up). This is where you do
 initialization that depends on the children.
/ — every input event.
— a fixed tick. By default 60 Hz
 (Project Settings → Physics → Common → Physics Ticks Per Second).
— every frame (variable timestep, like Unity&apos;s Update).
— the node was removed from t…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Input — the Input Map and action-based system</title><link>https://cadmus.page/en/godot/02-3d/03-input/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/03-input/</guid><description>How to read the keyboard, mouse, gamepad, and touch through a single action system.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In Godot, input is a single system: you describe actions in Project Settings and access them
from any script. There are no two competing APIs as in Unity (legacy Input vs Input System).&lt;/p&gt;&lt;p&gt;Project → Project Settings → Input Map. You create an action (for example, ) and bind to it
any number of keys / gamepad buttons / mouse / touch:&lt;/p&gt;&lt;p&gt;This is the only configuration — there is nothing else to set up.&lt;/p&gt;&lt;p&gt;Polling input through Input&lt;/p&gt;&lt;p&gt;In a script, you read an action through the global (singleton):&lt;/p&gt;&lt;p&gt;input(event) and unhandledinput(event)&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Physics — Bodies, Collision, Jolt</title><link>https://cadmus.page/en/godot/02-3d/04-physics/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/04-physics/</guid><description>StaticBody3D, RigidBody3D, CharacterBody3D, Area3D — and why physics got faster in 4.6.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As of Godot 4.6, Jolt became the default physics engine for 3D — a high-performance engine
used in Death Stranding 2 and other AAA games. The old Godot Physics remains available as an option
and continues to be the default for 2D.&lt;/p&gt;&lt;p&gt;This means: predictable, scalable 3D physics out of the box. No need to integrate any third-party
engines.&lt;/p&gt;&lt;p&gt;Nodes inheriting from that form a physics object:&lt;/p&gt;&lt;p&gt;Area3D — an invisible region with / triggers. Equivalent to a
 Unity Collider with .
PhysicalBone3D — for ragdolls inside Skeleton3D.
SoftBody3D — soft bodies (cloth, flags, simple jelly-like objects). Uses me…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Camera and Phantom Camera</title><link>https://cadmus.page/en/godot/02-3d/05-camera/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/05-camera/</guid><description>Camera3D, first/third-person views, and a plugin equivalent of Cinemachine.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Camera3D — the main node&lt;/p&gt;&lt;p&gt;Camera3D is the node that &quot;looks&quot; into the scene. Only one Camera3D is active at any moment (if
you&apos;re not using separate viewports). A scene can have several cameras; the active one is the one
whose , or the one made active via .&lt;/p&gt;&lt;p&gt;* — (3D, with perspective) or (without, for isometric/2.5D).
— field of view in degrees, vertical. The FPS standard is 60–90°.
, — clipping planes. A large spread hurts Z-buffer precision (Z-fighting).
— a bitmask: which visual layers this camera renders.&lt;/p&gt;&lt;p&gt;The equivalent of Unity&apos;s SmoothDamp approach. Godot has no built-in , but it has :&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Rendering and Materials</title><link>https://cadmus.page/en/godot/02-3d/06-rendering-materials/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/06-rendering-materials/</guid><description>Forward+/Mobile/Compatibility, BaseMaterial3D, gdshader — how Godot draws a frame.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot picks a renderer when you create a project (you can change it later, but materials may
need adapting):&lt;/p&gt;&lt;p&gt;Project → Project Settings → Rendering → Renderer → Rendering Method.&lt;/p&gt;&lt;p&gt;Forward+ + Vulkan — desktop, serious 3D projects, high-end visuals.
Mobile + Vulkan/Metal — phones.
Compatibility + WebGL 2 — the browser (this is the only path for the web target that works
 everywhere without COOP/COEP headers).&lt;/p&gt;&lt;p&gt;Compatibility was declared feature-complete in 4.3: lights, shadows, GI (lightmaps), GPU particles —
all available, with some limitations.&lt;/p&gt;&lt;p&gt;Mesh, Material, Shader&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Lighting and Shadows</title><link>https://cadmus.page/en/godot/02-3d/07-lighting/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/07-lighting/</guid><description>DirectionalLight3D, OmniLight3D, SpotLight3D, lightmaps, and SDFGI.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Three built-in light types (plus the upcoming AreaLight3D in 4.7):&lt;/p&gt;&lt;p&gt;DirectionalLight3D — the sun. Parallel rays, infinitely far away. Usually one per scene.
OmniLight3D — point light (Unity&apos;s Point Light). Emits from a point in all directions with an attenuation radius.
SpotLight3D — a cone from a point with an angle and a radius.
AreaLight3D — an area light (since 4.7). A rectangular/disc source.&lt;/p&gt;&lt;p&gt;Key properties of each:
* — brightness.
— color.
— a multiplier for indirect light from this source (in GI).
— draw shadows.
, — shadow artifact settings.
— / (baked) / (real-time GI). In the Inspec…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Animation — AnimationPlayer and AnimationTree</title><link>https://cadmus.page/en/godot/02-3d/08-animation/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/08-animation/</guid><description>AnimationLibrary, state machine, blend spaces, root motion.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;AnimationPlayer — the main node&lt;/p&gt;&lt;p&gt;holds an AnimationLibrary with a set of resources and plays them.
A unique Godot feature — you can animate any property of any node (or even a
resource), not just Transform and Material:&lt;/p&gt;&lt;p&gt;Transform (position, rotation, scale)
Any property (sprite alpha, , numbers, colors)
Shader uniforms — via the property path 
Method calls (call a function on a timer in a track)
Audio (start an AudioStreamPlayer)
Nested animations of other AnimationPlayers&lt;/p&gt;&lt;p&gt;Recording animation in the editor&lt;/p&gt;&lt;p&gt;Select the AnimationPlayer in the scene → the Animation editor appears at the bottom.…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>3D Audio and AudioBus</title><link>https://cadmus.page/en/godot/02-3d/09-audio/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/09-audio/</guid><description>AudioStreamPlayer3D, routing through AudioBus, effects.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In Godot, audio is a separate server () with routing through AudioBus. A scene has
several player nodes; the project has a single mixer.&lt;/p&gt;&lt;p&gt;AudioStreamPlayer — no positioning. Music, UI sounds, dialogue.
AudioStreamPlayer2D — positional for 2D scenes (volume based on distance to the listener).
AudioStreamPlayer3D — 3D-positional with attenuation, Doppler, area reverb.&lt;/p&gt;&lt;p&gt;Key properties of AudioStreamPlayer3D:&lt;/p&gt;&lt;p&gt;* — an resource (AudioStreamOggVorbis, AudioStreamMP3, AudioStreamWAV).
— volume in decibels. 0 is the original, -10 is quieter, -80 is near silence.
— speed/pitch multiplier.
— attenuation…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>UI — Control Nodes and Containers</title><link>https://cadmus.page/en/godot/02-3d/10-ui-control/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/10-ui-control/</guid><description>Control, anchors, containers, Theme and StyleBox.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In Godot, UI consists of Control nodes. This is a separate hierarchy of descendants,
with its own layout engine, anchors, and events. Unlike Unity&apos;s uGUI / UI Toolkit, here there is a
single, built-in UI system.&lt;/p&gt;&lt;p&gt;All Control nodes have:
position + size — position and size in pixels.
anchors + offsets — anchoring to the parent (like Unity uGUI anchors or CSS absolute).
sizeflagshorizontal / sizeflagsvertical — behavior inside a container (,
 , , ...).
theme + themeoverrides — styling.&lt;/p&gt;&lt;p&gt;Anchors — the Essentials&lt;/p&gt;&lt;p&gt;An anchor is a point on the parent to which a side of the current Control is &quot;glued.…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>PackedScene and Resource</title><link>https://cadmus.page/en/godot/02-3d/11-packedscene-resource/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/11-packedscene-resource/</guid><description>A universal scene/prefab container and data-only assets.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;PackedScene — Scene and Prefab in One&lt;/p&gt;&lt;p&gt;Godot&apos;s key architectural feature: a scene and a prefab are the same entity. A file
stores a tree of nodes; this file can be opened as the project&apos;s root scene or instantiated as a
child in another scene. Inside the engine, both variants are a resource.&lt;/p&gt;&lt;p&gt;In the Inspector, has the same nodes and components as . Any scene is a
template that can be embedded.&lt;/p&gt;&lt;p&gt;In the editor: right-click a node → Instantiate Child Scene → choose a . Or drag-and-drop
from the FileSystem into the Scene.&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Practice — a First-Person Controller</title><link>https://cadmus.page/en/godot/02-3d/12-fps-controller/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/12-fps-controller/</guid><description>CharacterBody3D, move_and_slide, RayCast3D — a playable FPS skeleton.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We are building a playable FPS character: it walks, looks with the mouse, jumps, and shoots a ray.
We use CharacterBody3D (an analog of Unity&apos;s CharacterController, but with a more feature-rich
).&lt;/p&gt;&lt;p&gt;The Head ↔ Player split matters: yaw (horizontal rotation) is applied to the Player (it turns the
whole body and the movement direction), while pitch (vertical) is applied only to the Head (so the
collider does not tilt).&lt;/p&gt;&lt;p&gt;In Project Settings → Input Map create:
(W, ↑)
(S, ↓)
(A, ←)
(D, →)
(Space)
(Mouse Left)
(Escape) — usually present by default&lt;/p&gt;&lt;p&gt;player.gd — the Main Script&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Navigation — NavigationServer and AI</title><link>https://cadmus.page/en/godot/02-3d/13-navigation/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/13-navigation/</guid><description>NavigationRegion3D, NavigationAgent3D — pathfinding and a chasing enemy.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Navigation in Godot 4 consists of NavigationServer3D (the low-level server) and three high-level
nodes: NavigationRegion3D, NavigationAgent3D, NavigationLink3D.&lt;/p&gt;&lt;p&gt;A NavigationMesh is a simplified polygonal &quot;walkability map.&quot; It is baked from the scene&apos;s
collisions. Agents pathfind across this map (A under the hood).&lt;/p&gt;&lt;p&gt;Baking the NavigationMesh&lt;/p&gt;&lt;p&gt;Assemble the static geometry.
Add a NavigationRegion3D node to the scene.
In the Inspector, create a new NavigationMesh resource on this node.
The Bake NavigationMesh button in the top toolbar → baking.&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Particles — GPUParticles3D and CPUParticles3D</title><link>https://cadmus.page/en/godot/02-3d/14-particles/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/14-particles/</guid><description>ParticleProcessMaterial, emitters, sub-emitters, collision.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot has two particle nodes with a similar API:&lt;/p&gt;&lt;p&gt;GPUParticles3D — on the GPU, up to millions of particles.
CPUParticles3D — on the CPU, a fallback for weak hardware and the web.&lt;/p&gt;&lt;p&gt;Rule of thumb: GPU where you can, CPU where you must.&lt;/p&gt;&lt;p&gt;ParticleProcessMaterial&lt;/p&gt;&lt;p&gt;The main difference from Unity&apos;s Particle System: particle behavior is defined not in the node&apos;s
inspector, but in a separate resource. This is convenient — you can save
it, reuse it, and override it per instance.&lt;/p&gt;&lt;p&gt;The main sections of ParticleProcessMaterial:&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Multiplayer — MultiplayerAPI and RPC</title><link>https://cadmus.page/en/godot/02-3d/15-multiplayer/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/15-multiplayer/</guid><description>ENet/WebSocket/WebRTC peers, RPC, MultiplayerSpawner and Synchronizer.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot has built-in high-level multiplayer: MultiplayerAPI + transports + Spawner/Synchronizer nodes.
It is the analog of Unity Netcode for GameObjects.&lt;/p&gt;&lt;p&gt;works on top of . Transports:&lt;/p&gt;&lt;p&gt;ENetMultiplayerPeer — UDP, the main one for native platforms.
WebSocketMultiplayerPeer — TCP/WebSocket, the only path for the web target.
WebRTCMultiplayerPeer — peer-to-peer, NAT traversal via STUN/TURN.
OfflineMultiplayerPeer — a stub for single-player.&lt;/p&gt;&lt;p&gt;The standard model is an authoritative server: one peer with ID=1 (the server), the rest are
clients with ID &amp;gt;= 2.&lt;/p&gt;&lt;p&gt;Starting a server and a client&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Resource loading — preload, load, threaded</title><link>https://cadmus.page/en/godot/02-3d/16-resource-loading/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/16-resource-loading/</guid><description>How Godot loads assets — synchronously, asynchronously, with progress.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot has no separate system like Unity Addressables — the built-in mechanism covers most
scenarios through a few APIs.&lt;/p&gt;&lt;p&gt;preload — static, at parse time&lt;/p&gt;&lt;p&gt;is a GDScript compiler directive. The resource is loaded when the script itself is
loaded (once, then cached). It&apos;s the fastest way at instantiation time.&lt;/p&gt;&lt;p&gt;Pro: zero stutters at runtime.
Con: the asset is always in memory as long as the script lives. Not suitable for heavy geometry
that isn&apos;t always needed.&lt;/p&gt;&lt;p&gt;load — dynamic, synchronous&lt;/p&gt;&lt;p&gt;blocks the thread until it finishes loading. Suitable for lightweight resources at moments
where the pause…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Building and optimization</title><link>https://cadmus.page/en/godot/02-3d/17-build-optimization/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/17-build-optimization/</guid><description>Export Presets, Profiler, the web target and WASM, a release checklist.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In Godot a build is an Export Preset (a per-platform config) + an Export Template (the engine
binary without the editor). First-party platforms: Windows, macOS, Linux, Android, iOS, Web,
visionOS (since 4.5).&lt;/p&gt;&lt;p&gt;opens a window with the configs. Add a preset for the platform you need:&lt;/p&gt;&lt;p&gt;Platform (Windows Desktop, Android, Web, ...).
Bundle Identifier / Package Name (for mobile/Mac/iOS).
Icon and Splash.
Permissions (Android — camera, location, etc.).
Encryption — encrypt the pack file.
Export Mode — All resources / Resources from group / By files.
Debug / Release — release produces an optimized bu…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Practice — a third-person platformer with a NavMesh enemy</title><link>https://cadmus.page/en/godot/02-3d/18-tps-platformer/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/18-tps-platformer/</guid><description>PhantomCamera FreeLook, CharacterBody3D, double jump, coyote time, a chasing enemy, checkpoints.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The second practical Godot capstone — a parallel to the Unity TPS chapter. We&apos;re building a
third-person platformer: a character runs, jumps (with double jump and coyote time), is chased by an
AI enemy along a NavMesh, and on death the player respawns at a checkpoint.&lt;/p&gt;&lt;p&gt;We&apos;ll use what we covered earlier: CharacterBody3D with , NavigationAgent3D, the
Phantom Camera plugin for the third-person view, and a Resource as a ScriptableObject analog.&lt;/p&gt;&lt;p&gt;playermotor.gd — the controller&lt;/p&gt;&lt;p&gt;Phantom Camera for third-person&lt;/p&gt;&lt;p&gt;Install the Phantom Camera plugin (AssetLib → &quot;Phantom Camera&quot; → Install → activate in P…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>gdshader in depth — vertex, fragment, light</title><link>https://cadmus.page/en/godot/02-3d/19-gdshader-deep/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/19-gdshader-deep/</guid><description>Spatial shader structure, built-in functions, uniforms, varyings, optimization steps.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the rendering chapter we saw a basic ShaderMaterial. Here, in more detail: the structure of a 3D
shader, what the vertex/fragment/light functions are, and how to write your own lighting.&lt;/p&gt;&lt;p&gt;Full structure of a spatial shader&lt;/p&gt;&lt;p&gt;What&apos;s inside:
* — this is for a 3D mesh. For 2D use , for a skybox use , and so on.
— flags: (transparency), (culling), (Z-buffer),
 (diffuse lighting model), (specular), (no lighting).
— a parameter visible in the material Inspector and accessible from code via
 .
— a variable passed from vertex to fragment (interpolated across the triangle).
— modifies vertices before…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Path3D, PathFollow3D and splines</title><link>https://cadmus.page/en/godot/02-3d/20-path-splines/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/20-path-splines/</guid><description>Curve3D, Path3D, PathFollow3D — movement along a spline, AI patrols, camera cutscenes.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot has built-in Path3D and PathFollow3D for movement along a spline. The curve is stored
in a resource. No plugins required — it&apos;s part of the core engine.&lt;/p&gt;&lt;p&gt;Path3D — a container node with a resource. Describes a curve in space.
PathFollow3D — a child node of Path3D. Holds a or property from
 which Godot computes the position along the curve. Anything placed inside PathFollow3D travels
 along the spline.
Curve3D — a resource with an array of points, each having a position + in/out tangents (for Bezier).&lt;/p&gt;&lt;p&gt;Creating a Path3D in the editor&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>GridMap — modular levels</title><link>https://cadmus.page/en/godot/02-3d/21-gridmap/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/21-gridmap/</guid><description>MeshLibrary + GridMap for assembling locations from reusable blocks.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;GridMap is a built-in Godot node for assembling levels from modular blocks on a 3D grid.
Think: Minecraft, a Dungeon Crawler, Cities Skylines — where the world consists of reusable
tile-sized &quot;bricks&quot;.&lt;/p&gt;&lt;p&gt;Make a MeshLibrary resource — a set of meshes with predefined CollisionShape3D.
Assign it to a GridMap node.
In the Scene View you &quot;paint&quot; with a brush over the 3D grid — each cell gets the mesh selected from the library.
Godot renders the whole GridMap with one draw call per mesh type (internal instancing).&lt;/p&gt;&lt;p&gt;This is both faster and more compact than ten thousand separate nodes.&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Threading — WorkerThreadPool and Thread</title><link>https://cadmus.page/en/godot/02-3d/22-threading/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/22-threading/</guid><description>Parallel tasks in Godot — map generation, data processing, long operations without freezing the UI.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In Godot the main thread handles rendering, physics, and scripts. If you procedurally generate a
world map in , the game will freeze for a second or two. Threading is the way to move
heavy work to background threads.&lt;/p&gt;&lt;p&gt;Three levels of tools&lt;/p&gt;&lt;p&gt;appeared in Godot 4 and is the main path. It manages the threads for you; you just
submit tasks.&lt;/p&gt;&lt;p&gt;WorkerThreadPool — basic example&lt;/p&gt;&lt;p&gt;Task: procedurally generate a 1024×1024 heightmap.&lt;/p&gt;&lt;p&gt;The main methods:
— submit, returns a .
— check whether it&apos;s done.
— block the main thread until it finishes (called
 after for cleanup).
— a parallel &quot;for each&quot;.&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Decals — stickers in 3D</title><link>https://cadmus.page/en/godot/02-3d/23-decals/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/23-decals/</guid><description>The Decal node for bullet holes, graffiti, dirt masks, footprints, and other overlays on geometry.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Decal is a node in Godot that projects a texture onto the surfaces beneath it. It&apos;s the classic
technique for:&lt;/p&gt;&lt;p&gt;Bullet holes on a wall
Dirt on the floor, puddles
Graffiti, posters
Tire tracks
Cracks, blood, scorch marks from explosions&lt;/p&gt;&lt;p&gt;It is implemented as a separate render pass and does not sit on the geometry — so you can &quot;stick&quot;
it onto any surface without modifying meshes.&lt;/p&gt;&lt;p&gt;Add a Decal node to the scene.
In the Inspector, set * — the main texture.
(Optional) — a normal map for relief.
(Optional) — an Occlusion/Roughness/Metallic mask.
Rotate and scale the node: the decal&apos;s bounding box de…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>@tool and EditorPlugin — extending the editor</title><link>https://cadmus.page/en/godot/02-3d/24-tool-editor-plugin/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/24-tool-editor-plugin/</guid><description>Tool scripts, custom inspectors, EditorPlugin, adding nodes and docks to the Godot editor.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot is written entirely in its own language for the UI — this means that the editor itself can be
extended with GDScript code. No C++ plugins, no rebuilds.&lt;/p&gt;&lt;p&gt;Two levels of extension:
scripts — ordinary nodes with behavior in the editor. For example, a script that
 automatically places trees along a spline.
EditorPlugin — a real plugin: adds nodes, custom docks, inspectors, gizmos.&lt;/p&gt;&lt;p&gt;@tool — the script runs in the editor&lt;/p&gt;&lt;p&gt;A regular GDScript runs only in Play Mode. Add on the first line — and the script will
run right in the Scene View.&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>TileMap (2D) — modular 2D levels</title><link>https://cadmus.page/en/godot/02-3d/25-tilemap-2d/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/25-tilemap-2d/</guid><description>TileMapLayer, TileSet, terrains, autotile, navigation for 2D projects in Godot 4.x.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This encyclopedia is about 3D, but Godot has a first-class 2D pipeline, and TileMap is the main
tool for modular levels (platformers, top-down RPGs, dungeon crawlers, city builders).&lt;/p&gt;&lt;p&gt;TileMap architecture in Godot 4.x&lt;/p&gt;&lt;p&gt;With Godot 4.3 an important change happened: the classic node is deprecated in favor of
nodes.&lt;/p&gt;&lt;p&gt;In a new project, use . One node = one layer (for example, background → details → objects).&lt;/p&gt;&lt;p&gt;TileSet — a with a list of all available tiles (sprite + collision + nav data).
TileMapLayer — a that draws tiles from a TileSet on a coordinate grid.
Tile — a cell of the TileSet: sprite sour…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>XR / OpenXR — VR applications in Godot</title><link>https://cadmus.page/en/godot/02-3d/26-xr-openxr/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/26-xr-openxr/</guid><description>XROrigin3D, XRCamera3D, XRController3D — a basic VR scene for Meta Quest and SteamVR.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot has built-in OpenXR support right in the core, without separate packages. Compared to Unity
this is especially nice: launching a VR project in Godot is literally a few nodes.&lt;/p&gt;&lt;p&gt;OpenXR in Godot — built in&lt;/p&gt;&lt;p&gt;OpenXR is the Khronos Group&apos;s open standard for VR/AR. It replaces the SDKs from Oculus, SteamVR, Vive Wave.
In Godot 4.x OpenXR is part of the engine, activated in Project Settings → XR.&lt;/p&gt;&lt;p&gt;Project Settings → XR → OpenXR → Enabled = true.
Choose interaction profiles: Oculus Touch, Khronos Simple, Valve Index. By default
 the main ones are enabled.
For Android (Quest): Build Profile → Andr…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>GDExtension — native plugins in C++ and Rust</title><link>https://cadmus.page/en/godot/02-3d/27-gdextension/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/27-gdextension/</guid><description>godot-cpp, gdext (Rust), when native extensions are needed and how they work.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;GDScript is good for most gameplay logic, but sometimes you need to go lower:
A voxel engine with millions of blocks
Custom real-time shading with complex CPU math
Integration with an existing C/C++ library (physics, NN inference, audio DSP)
A performance hot path where even statically-typed GDScript isn&apos;t enough&lt;/p&gt;&lt;p&gt;GDExtension is the modern way to extend Godot at the native level. It replaced GDNative as of
Godot 4.0.&lt;/p&gt;&lt;p&gt;You write code in C++ (via ) or Rust (via ).
You compile it into a dynamic library ( / / ).
You create a manifest that Godot loads at startup.
In the editor your classes appear a…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>C# in Godot — practice and nuances</title><link>https://cadmus.page/en/godot/02-3d/28-csharp-godot/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/28-csharp-godot/</guid><description>Godot .NET edition, differences from GDScript, migration, gotchas for developers coming from the Unity world.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;GDScript is a great language, but if you come from Unity (or a serious .NET project), you&apos;ll want to
work in C#. Godot supports this via a separate build — the Godot .NET edition.&lt;/p&gt;&lt;p&gt;How the .NET edition differs&lt;/p&gt;&lt;p&gt;Download the .NET variant from godotengine.org/download. The Steam version
has a separate SKU &quot;Godot Engine (.NET)&quot;.&lt;/p&gt;&lt;p&gt;Key differences from Unity:&lt;/p&gt;&lt;p&gt;* — mandatory (the code generator adds code for signals).
instead of — the attribute for Inspector visibility.
instead of — a different syntax.
— signals are declared as delegates with the suffix.
, (PascalCase) — not , .
— you need to explic…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Save / Load — persisting progress</title><link>https://cadmus.page/en/godot/02-3d/29-save-load/</link><guid isPermaLink="true">https://cadmus.page/en/godot/02-3d/29-save-load/</guid><description>FileAccess, ConfigFile, ResourceSaver, JSON, encryption, user:// paths.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Godot has several built-in ways to save progress. Each fits its own task.&lt;/p&gt;&lt;p&gt;Paths and the user:// schema&lt;/p&gt;&lt;p&gt;In Godot there is a special path for all user data — *. On different
platforms it points to the right place:&lt;/p&gt;&lt;p&gt;Windows: 
macOS: 
Linux: 
Android: 
iOS: 
Web: via a virtual filesystem&lt;/p&gt;&lt;p&gt;The main rule: never write to (it&apos;s read-only after the build). All user data
goes into .&lt;/p&gt;&lt;p&gt;ConfigFile — for settings&lt;/p&gt;&lt;p&gt;saves in INI format (like Windows .ini files). Ideal for a player config:
volume, resolution, key bindings.&lt;/p&gt;&lt;p&gt;This is readable, version-controllable, easy to edit by hand — ideal for settings whe…&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item><item><title>Glossary — Godot terms and parallels</title><link>https://cadmus.page/en/godot/03-glossary/01-terms/</link><guid isPermaLink="true">https://cadmus.page/en/godot/03-glossary/01-terms/</guid><description>Short definitions with web analogies and parallels to Unity.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A consolidated list of the key Godot terms mentioned in the encyclopedia. In parentheses — the Unity equivalent,
if there is one.&lt;/p&gt;&lt;p&gt;Node — the base class of everything in the scene tree. Derived classes: , ,
, . (Unity: GameObject, but without a stack of components — one script per node.)&lt;/p&gt;&lt;p&gt;Node3D (formerly Spatial) — a node with a 3D transform. (Unity: GameObject + Transform.)&lt;/p&gt;&lt;p&gt;Control — the base class of UI nodes. With anchors, offsets, layout. (Unity: RectTransform / Control in uGUI.)&lt;/p&gt;&lt;p&gt;Scene Tree — the hierarchy of live nodes in a running game. Accessed via .&lt;/p&gt;</content:encoded><author>Konstantin Ryzhov</author></item></channel></rss>