Browse Source

Merge pull request #222 from CBID2/updating-documentation

Thank you @CBID2 🙂
Vaclav Elias 2 years ago
parent
commit
f8af5dca39

+ 1 - 1
en/diagnostics/STRDIAG002.md

@@ -6,7 +6,7 @@
 ## Explanation
 ## Explanation
 
 
 The [DataMemberMode.Content](xref:Stride.Core.DataMemberMode) mutates the object which is currently in the member.
 The [DataMemberMode.Content](xref:Stride.Core.DataMemberMode) mutates the object which is currently in the member.
-As this is not possible with the current serializers, only mutable types are supported for `DataMemberMode.Content`. Immutable types in this context are none reference types and string.
+As this is not possible with the current serializers, only mutable types are supported for `DataMemberMode.Content`. Immutable types in this context are not reference types and strings.
 
 
 ## Example
 ## Example
 
 

+ 1 - 2
en/diagnostics/STRDIAG004.md

@@ -34,11 +34,10 @@ public class STRDIAG004
 ```
 ```
 
 
 > [!WARNING]
 > [!WARNING]
-> There is an edge case with `internal`/`internal protected`, it will count as non visible when the @Stride.Core.DataMemberAttribute isn't applied.
+> There is an edge case with `internal`/`internal protected`, it will count as non visible when the @Stride.Core.DataMemberAttribute isn't applied. 
 > But when the attribute is applied then the getter counts as visible and therefore is correct.
 > But when the attribute is applied then the getter counts as visible and therefore is correct.
 
 
 ```csharp
 ```csharp
-// STRDIAG000.cs
 using Stride.Core;
 using Stride.Core;
 
 
 public class STRDIAG004
 public class STRDIAG004

+ 3 - 3
en/manual/animation/additive-animation.md

@@ -7,7 +7,7 @@
 
 
 ![Additive animations](media/animations-additive-sample.gif)
 ![Additive animations](media/animations-additive-sample.gif)
 
 
-In the example above, the leftmost animation is the *Walk* animation. The rightmost animation is the *Idle* animation. The two animations in the center are the *Walk* and *Idle* animations respectively, but have the *Reload* animation added to them. 
+In the example above, the leftmost animation is the *Walk* animation. The rightmost animation is the *Idle* animation. The two animations in the center are the *Walk* and *Idle* animations respectively, but have the *Reload* animation added to them.
 
 
 This means we only had to create three animations: *Walk*, *Idle*, and *Reload*. Additionally, we can add the *Reload* animation to other suitable animations (eg *Crouch*, *Strafe* or *Run*). This helps keep the memory budget and number of animations low.
 This means we only had to create three animations: *Walk*, *Idle*, and *Reload*. Additionally, we can add the *Reload* animation to other suitable animations (eg *Crouch*, *Strafe* or *Run*). This helps keep the memory budget and number of animations low.
 
 
@@ -22,7 +22,7 @@ Stride calculates the difference between the source and reference clips to creat
 We can use use the difference clip to blend the source and reference animations. We can also use the same difference clip to blend the source animation with **other** animations. If the animation you add it to is sufficiently similar to the original reference clip, then the animations blend effectively. For example, you could use it to add the reload animation to any animation that doesn't use the arms, such as crouching.
 We can use use the difference clip to blend the source and reference animations. We can also use the same difference clip to blend the source animation with **other** animations. If the animation you add it to is sufficiently similar to the original reference clip, then the animations blend effectively. For example, you could use it to add the reload animation to any animation that doesn't use the arms, such as crouching.
 
 
 >[!Note]
 >[!Note]
->Additive animations should use the same skinned mesh and skeleton. 
+>Additive animations should use the same skinned mesh and skeleton.
 
 
 ### Create a difference clip
 ### Create a difference clip
 
 
@@ -30,7 +30,7 @@ We can use use the difference clip to blend the source and reference animations.
 
 
 2. As we don't need a source for this animation, click **Cancel**.
 2. As we don't need a source for this animation, click **Cancel**.
 
 
-    Game Studio asks if you want to create an animation without a source file. 
+    Game Studio asks if you want to create an animation without a source file.
 
 
     ![Create animation without source file](media/create-animation-without-source-file.png)
     ![Create animation without source file](media/create-animation-without-source-file.png)
 
 

+ 1 - 1
en/manual/animation/custom-blend-trees.md

@@ -3,7 +3,7 @@
 <span class="badge text-bg-primary">Advanced</span>
 <span class="badge text-bg-primary">Advanced</span>
 <span class="badge text-bg-success">Programmer</span>
 <span class="badge text-bg-success">Programmer</span>
 
 
-The [AnimationComponent](xref:Stride.Engine.AnimationComponent) has the property [AnimationComponent.BlendTreeBuilder](xref:Stride.Engine.AnimationComponent#Stride_Engine_AnimationComponent_BlendTreeBuilder). If you want absolute control over which animations are played, how are they blended and what weights they have, you can create a script which inherits from `IBlendTreeBuilder` and assign it to the BlendTreeBuilder under your animation component.
+The [AnimationComponent](xref:Stride.Engine.AnimationComponent) has the property [AnimationComponent.BlendTreeBuilder](xref:Stride.Engine.AnimationComponent#Stride_Engine_AnimationComponent_BlendTreeBuilder). If you want absolute control over which animations are played, how are they blended and what weights they have, you can create a script which implements from `IBlendTreeBuilder` and assign it to the BlendTreeBuilder under your animation component.
 
 
 When the animation component is updated, it calls `void BuildBlendTree(FastList<AnimationOperation> animationList)` on your script instead of updating the animations itself. This allows you to choose any combination of animation clips, speeds and blends, but is also more difficult, as all the heavy lifting is now on the script side.
 When the animation component is updated, it calls `void BuildBlendTree(FastList<AnimationOperation> animationList)` on your script instead of updating the animations itself. This allows you to choose any combination of animation clips, speeds and blends, but is also more difficult, as all the heavy lifting is now on the script side.
 
 

+ 1 - 1
en/manual/animation/import-animations.md

@@ -9,7 +9,7 @@ To animate a model, you need to use three kinds of assets together:
 * skeletons
 * skeletons
 * animations
 * animations
 
 
-You can import these assets from 3D model files. Stride supports the following model file types: ``.3ds``, ``.blend``, ``.dae``, ``.dxf``, ``.fbx``, ``.md2``, ``.md3``, ``.obj``, ``.x``
+Stride supports the following model file types: `.3ds`, `.blend`, `.dae`,`dxf`, `.fbx`, `.glb`, `.gltf`, `.md2`, `.md3`, `.obj`, `.ply`, `.stl`,`.stp`, `.x`.
 
 
 ## Import a model, skeleton, or animation from a model file
 ## Import a model, skeleton, or animation from a model file
 
 

+ 1 - 1
en/manual/audio/audio-listeners.md

@@ -19,7 +19,7 @@ To create an audio listener, attach an **audio listener component** to an entity
 
 
 2. In the **Property Grid**, click _Add Component_ and select [Audio listener component](xref:Stride.Audio.AudioListener):
 2. In the **Property Grid**, click _Add Component_ and select [Audio listener component](xref:Stride.Audio.AudioListener):
 
 
-    ![Add AudioListener Component](media/audio-add-audiolistener-component.png)
+    ![Add AudioListener component](media/audio-add-audiolistener-component.png)
 
 
     The entity is now an audio listener.
     The entity is now an audio listener.
 
 

+ 1 - 1
en/manual/audio/hrtf.md

@@ -21,7 +21,7 @@ To use HRTF, first enable it globally in the **Game Settings** asset, then enabl
 
 
 ### 1. Enable HRTF globally
 ### 1. Enable HRTF globally
 
 
-1. In the **Solution Explorer** (the bottom-left pane by default), select the **Assets folder**.
+1. In **Solution explorer** (the bottom-left pane by default), select the **Assets folder**.
 
 
     ![Select Assets folder asset](../game-studio/media/select-asset-folder.png)
     ![Select Assets folder asset](../game-studio/media/select-asset-folder.png)
 
 

+ 2 - 2
en/manual/audio/import-audio.md

@@ -21,7 +21,7 @@ You can import audio files to use as **audio assets** in your project. You can i
 
 
     * **Sound effect**: Recommended for smaller files that you want to play directly from memory.
     * **Sound effect**: Recommended for smaller files that you want to play directly from memory.
 
 
-    * **Spatialized sound**: Process the audio asset as [spatialized audio](spatialized-audio.md). Note that Stride processes audio files as mono (single-channel) audio. The source file is unaffected.
+    * **Spatialized audio*: Process the audio asset as [spatialized audio](spatialized-audio.md). Note that Stride processes audio files as mono (single-channel) audio. The source file is unaffected.
     
     
     * **Music**: Recommended for larger files that you want to stream from disk to save memory.
     * **Music**: Recommended for larger files that you want to stream from disk to save memory.
 
 
@@ -31,7 +31,7 @@ After you import an audio file, you can select it as an asset in the **Asset Vie
 
 
 You can also import a [video](../video/index.md) file and choose to import only the audio tracks from it.
 You can also import a [video](../video/index.md) file and choose to import only the audio tracks from it.
 
 
-1. In the **Asset View**, click **Add assett** and select **Media > Video**.
+1. In the **Asset View**, click **Add asset** and select **Media > Video**.
 
 
     ![Add video asset](../video/media/add-video-asset.png)
     ![Add video asset](../video/media/add-video-asset.png)
 
 

+ 8 - 8
en/manual/audio/non-spatialized-audio.md

@@ -27,14 +27,14 @@ To play non-spatialized audio at runtime, create an instance of it and define it
 
 
 The [SoundInstance](xref:Stride.Audio.SoundInstance) controls audio at runtime with the following properties:
 The [SoundInstance](xref:Stride.Audio.SoundInstance) controls audio at runtime with the following properties:
 
 
-| Property  | Function |
-|-------    |-------|
-| [IsLooping](xref:Stride.Audio.SoundInstance.IsLooping) | Gets or sets looping of the audio. |
-| [Pan](xref:Stride.Audio.SoundInstance.Pan)       | Sets the balance between left and right speakers. By default, each speaker a value of 0.5. |
-| [Pitch](xref:Stride.Audio.SoundInstance.Pitch)     | Gets or sets the audio pitch (frequency). |
-| [PlayState](xref:Stride.Audio.SoundInstance.PlayState)	| Gets the state of the [SoundInstance](xref:Stride.Audio.SoundInstance). |
-| [Position](xref:Stride.Audio.SoundInstance.Position)	| Gets the current play position of the audio. |
-| [Volume](xref:Stride.Audio.SoundInstance.Volume)	| Sets the audio volume. |
+| Property                                               | Function                                                                                 |
+|--------------------------------------------------------|------------------------------------------------------------------------------------------|
+| [IsLooping](xref:Stride.Audio.SoundInstance.IsLooping) | Gets or sets looping of the audio.                                                       |
+| [Pan](xref:Stride.Audio.SoundInstance.Pan)             | Sets the balance between left and right speakers. By default, each speaker a value of 0. |
+| [Pitch](xref:Stride.Audio.SoundInstance.Pitch)         | Gets or sets the audio pitch (frequency).                                                |
+| [PlayState](xref:Stride.Audio.SoundInstance.PlayState) | Gets the state of the [SoundInstance](xref:Stride.Audio.SoundInstance).                  |
+| [Position](xref:Stride.Audio.SoundInstance.Position)   | Gets the current play position of the audio.                                             |
+| [Volume](xref:Stride.Audio.SoundInstance.Volume)       | Sets the audio volume.                                                                   |
 
 
 For more details, see the [SoundInstance API documentation](xref:Stride.Audio.SoundInstance).
 For more details, see the [SoundInstance API documentation](xref:Stride.Audio.SoundInstance).
 
 

+ 7 - 7
en/manual/audio/play-a-range-within-an-audio-file.md

@@ -9,17 +9,17 @@ You can have Stride play only certain portions of an audio asset. This means, fo
 
 
 You can use the following properties, methods, and structures:
 You can use the following properties, methods, and structures:
 
 
-| Property, method, or structure | Function |
-|---------|-----------|
-| [TotalLength](xref:Stride.Audio.SoundBase.TotalLength) | The total length of the [sound](xref:Stride.Audio.Sound). |
-| [SoundInstance.SetRange(PlayRange)](xref:Stride.Audio.SoundInstance.SetRange(Stride.Media.PlayRange)) | Sets the time range to play within the audio asset. |
-| [PlayRange](xref:Stride.Media.PlayRange) | Time information, including the range's starting point and length. |
-| [SoundInstance.Position](xref:Stride.Audio.SoundInstance.Position) | Gets the current play position as **TimeSpan**. |
+| Property, method, or structure                                                                        | Function                                                           |
+|-------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
+| [TotalLength](xref:Stride.Audio.SoundBase.TotalLength)                                                | The total length of the [sound](xref:Stride.Audio.Sound).          |
+| [SoundInstance.SetRange(PlayRange)](xref:Stride.Audio.SoundInstance.SetRange(Stride.Media.PlayRange)) | Sets the time range to play within the audio asset.                |
+| [PlayRange](xref:Stride.Media.PlayRange)                                                              | Time information, including the range's starting point and length. |
+| [SoundInstance.Position](xref:Stride.Audio.SoundInstance.Position)                                    | Gets the current play position as **TimeSpan**.                    |
 
 
 For example:
 For example:
 
 
 ```cs
 ```cs
-//Assume sample length is 5 seconds.
+//Assume sample length is 4 seconds.
 var length = mySound.TotalLength;
 var length = mySound.TotalLength;
 var begin = TimeSpan.FromSeconds(2);
 var begin = TimeSpan.FromSeconds(2);
 var duration = TimeSpan.FromSeconds(2);
 var duration = TimeSpan.FromSeconds(2);

+ 1 - 1
en/manual/engine/entity-component-model/index.md → en/manual/engine/entity-component-system/index.md

@@ -2,7 +2,7 @@
 
 
 # Problem
 # Problem
 
 
-> `Dog` is a subclasses of `Animal`.
+> `Dog` is a subclass of `Animal`.
 
 
 This example is often used as an example of inheritance
 This example is often used as an example of inheritance
 in introductions to programming. However, when things get more complex,
 in introductions to programming. However, when things get more complex,

+ 0 - 0
en/manual/engine/entity-component-model/managing-entities.md → en/manual/engine/entity-component-system/managing-entities.md


+ 0 - 0
en/manual/engine/entity-component-model/media/7438984.png → en/manual/engine/entity-component-system/media/7438984.png


+ 0 - 0
en/manual/engine/entity-component-model/media/ecs-choice.jpg → en/manual/engine/entity-component-system/media/ecs-choice.jpg


+ 0 - 0
en/manual/engine/entity-component-model/usage.md → en/manual/engine/entity-component-system/usage.md


+ 1 - 1
en/manual/engine/index.md

@@ -4,7 +4,7 @@
 >This section is out of date. For now, you should only use it for reference.
 >This section is out of date. For now, you should only use it for reference.
 
 
 - [Asset](assets/index.md)
 - [Asset](assets/index.md)
-- [Entity-component model](entity-component-model/index.md)
+- [Entity-component system](entity-component-system/index.md)
 - [File system](file-system.md)
 - [File system](file-system.md)
 
 
 # See also
 # See also

+ 2 - 2
en/manual/engine/resources.md

@@ -2,6 +2,6 @@
 
 
 [!INCLUDE [stride-studio-note](../../includes/under-construction-note.md)]
 [!INCLUDE [stride-studio-note](../../includes/under-construction-note.md)]
 
 
-Resources are images, texture ([```.dds```](https://en.wikipedia.org/wiki/DirectDraw_Surface) files and entity images used in your game. Resources are stored in the **Resources** folder of a game application.
+Resources are images, texture [```.dds```](https://en.wikipedia.org/wiki/DirectDraw_Surface) files and entity images used in your game. Resources are stored in the **Resources** folder of a game application.
 
 
->**Note:** As a best practice, all data resources should be placed inside the **Resources** folder to enable easy movement of your project. If resources are placed outside the project, moving the project breaks the links and compiler issues can occur.
+>**Note:** As a best practice, all data resources should be placed inside the **Resources** folder to enable easy movement of your project. If resources are placed outside the project, moving the project breaks the links and compiler issues can occur.

+ 1 - 1
en/manual/files-and-folders/cached-files.md

@@ -14,7 +14,7 @@ You might want to clean the cache if:
 
 
     ![Clean solution](media/clean-solution.png)
     ![Clean solution](media/clean-solution.png)
 
 
-2. If you have the [Stride Visual Studio extension](../get-started/visual-studio-extension.md) installed, you can also clean the asset cache. To do this, under **Stride**, select **Clean intermediate assets for Solution**.
+2. If you have the [Stride Visual Studio extension](../get-started/visual-studio-extension.md) installed, you can also clean the asset cache. **Using VS 2022**: To do this, under Extensions > **Stride**, select **Clean intermediate assets for Solution**.
 
 
     ![Clean solution](media/clean-assets.png)
     ![Clean solution](media/clean-assets.png)
 
 

+ 1 - 1
en/manual/files-and-folders/distribute-a-game.md

@@ -53,7 +53,7 @@ In the release folder in your project bin folder (eg *MyGame/Bin/MyPlatform/Rele
 
 
 * `.xml` files (API documentation)
 * `.xml` files (API documentation)
 
 
-* files that contain `vshost` in their filenames (eg `MyGame.vshost.exe` and `MyGame5.vshost.exe.manifest`) 
+* files that contain `vshost` in their filenames (eg `MyGame5.vshost.exe` and `MyGame5.vshost.exe.manifest`) 
 
 
 * folders other than the `x64`, `x86`, or `data` folders
 * folders other than the `x64`, `x86`, or `data` folders
 
 

+ 3 - 3
en/manual/index.md

@@ -5,7 +5,7 @@
 These pages contain information about how to use Stride, an open-source C# game engine.
 These pages contain information about how to use Stride, an open-source C# game engine.
 
 
 > [!Note]
 > [!Note]
-> The Stride manual is under construction and updated regularly with new content. Follow [Stride on Twitter](https://twitter.com/stridedotnet?lang=en) for documentation updates.
+> The Stride manual is under construction and updated regularly with new content. Follow [Stride on X](https://x.com/stridedotnet?s=20) for documentation updates.
 
 
 ## Latest documentation
 ## Latest documentation
 
 
@@ -13,8 +13,8 @@ These pages contain information about how to use Stride, an open-source C# game
 - <span class="badge text-bg-info">Updated</span> [Linux - Setup and requirements](platforms/linux/setup-and-requirements.md) - Fedora OS option added
 - <span class="badge text-bg-info">Updated</span> [Linux - Setup and requirements](platforms/linux/setup-and-requirements.md) - Fedora OS option added
 - <span class="badge text-bg-success">New</span> [Scripts - Serialization](scripts/serialization.md) - Serialization explained
 - <span class="badge text-bg-success">New</span> [Scripts - Serialization](scripts/serialization.md) - Serialization explained
 - <span class="badge text-bg-info">Updated</span> [Scripts - Public properties and fields](scripts/public-properties-and-fields.md) - Content improvements and additions
 - <span class="badge text-bg-info">Updated</span> [Scripts - Public properties and fields](scripts/public-properties-and-fields.md) - Content improvements and additions
-- <span class="badge text-bg-success">New</span> [Engine - Entity Component model - Usage](engine/entity-component-model/usage.md) - ECS usage explained
-- <span class="badge text-bg-info">Updated</span> [Engine - Entity Component model](engine/entity-component-model/index.md) - Content improvements
+- <span class="badge text-bg-success">New</span> [Engine - Entity Component model - Usage](engine/entity-component-system/usage.md) - ECS usage explained
+- <span class="badge text-bg-info">Updated</span> [Engine - Entity Component model](engine/entity-component-system/index.md) - Content improvements
 - <span class="badge text-bg-info">Updated</span> [Stride for Unity® developers](stride-for-unity-developers/index.md) - Content improvements
 - <span class="badge text-bg-info">Updated</span> [Stride for Unity® developers](stride-for-unity-developers/index.md) - Content improvements
 
 
 ### Previous updates
 ### Previous updates

+ 536 - 536
en/manual/toc.yml

@@ -1,568 +1,568 @@
 pdf: true
 pdf: true
 pdfFileName: stride-manual.pdf
 pdfFileName: stride-manual.pdf
 items:
 items:
-- name: Manual
-  href: index.md
-- name: Requirements
-  href: requirements/index.md
-- name: Stride for Unity® developers
-  href: stride-for-unity-developers/index.md
-# - name: Stride for Godot developers
-#   href: stride-for-godot-developers/index.md
-- name: Stride Launcher
-  href: stride-launcher/index.md
+  - name: Manual
+    href: index.md
+  - name: Requirements
+    href: requirements/index.md
+  - name: Stride for Unity® developers
+    href: stride-for-unity-developers/index.md
+  # - name: Stride for Godot developers
+  #   href: stride-for-godot-developers/index.md
+  - name: Stride Launcher
+    href: stride-launcher/index.md
 
 
-- name: Get started
-  href: get-started/index.md
-  items:
-  - name: Install Stride
-    href: get-started/install-stride.md
-  - name: Visual Studio extension
-    href: get-started/visual-studio-extension.md
-  - name: Launch Stride
-    href: get-started/launch-stride.md
-  - name: Create a project
-    href: get-started/create-a-project.md
-  - name: Game Studio
-    href: game-studio/index.md
-  - name: Assets
-    href: game-studio/assets.md
+  - name: Get started
+    href: get-started/index.md
     items:
     items:
-    - name: Create assets
-      href: game-studio/create-assets.md
-    - name: Use assets
-      href: game-studio/use-assets.md
-  - name: Scenes
-    href: game-studio/scenes.md
-    items:
-    - name: Create a scene
-      href: game-studio/create-a-scene.md
-    - name: Add entities
-      href: game-studio/add-entities.md
-    - name: Manage entities
-      href: game-studio/manage-entities.md
-    - name: Navigate in the Scene Editor
-      href: game-studio/navigate-in-the-scene-editor.md
-  - name: Launch a game
-    href: get-started/launch-a-game.md
-
-- name: Animation
-  href: animation/index.md
-  items:
-  - name: Import animations
-    href: animation/import-animations.md
-  - name: Animation properties
-    href: animation/animation-properties.md
-  - name: Set up animations
-    href: animation/set-up-animations.md
-  - name: Preview animations
-    href: animation/preview-animations.md
-  - name: Animation scripts
-    href: animation/animation-scripts.md
-  - name: Additive animation
-    href: animation/additive-animation.md
-  - name: Procedural animation
-    href: animation/procedural-animation.md
-  - name: Custom blend trees
-    href: animation/custom-blend-trees.md
-  - name: Model node links
-    href: animation/model-node-links.md
-  - name: Custom attributes
-    href: animation/custom-attributes.md
+      - name: Install Stride
+        href: get-started/install-stride.md
+      - name: Visual Studio extension
+        href: get-started/visual-studio-extension.md
+      - name: Launch Stride
+        href: get-started/launch-stride.md
+      - name: Create a project
+        href: get-started/create-a-project.md
+      - name: Game Studio
+        href: game-studio/index.md
+      - name: Assets
+        href: game-studio/assets.md
+        items:
+          - name: Create assets
+            href: game-studio/create-assets.md
+          - name: Use assets
+            href: game-studio/use-assets.md
+      - name: Scenes
+        href: game-studio/scenes.md
+        items:
+          - name: Create a scene
+            href: game-studio/create-a-scene.md
+          - name: Add entities
+            href: game-studio/add-entities.md
+          - name: Manage entities
+            href: game-studio/manage-entities.md
+          - name: Navigate in the Scene Editor
+            href: game-studio/navigate-in-the-scene-editor.md
+      - name: Launch a game
+        href: get-started/launch-a-game.md
 
 
-- name: Audio
-  href: audio/index.md
-  items:
-  - name: Import audio
-    href: audio/import-audio.md
-  - name: Audio asset properties
-    href: audio/audio-asset-properties.md
-  - name: Non-spatialized audio
-    href: audio/non-spatialized-audio.md
-  - name: Spatialized audio
-    href: audio/spatialized-audio.md
+  - name: Animation
+    href: animation/index.md
     items:
     items:
-    - name: Audio emitters
-      href: audio/audio-emitters.md
-    - name: Audio listeners
-      href: audio/audio-listeners.md
-    - name: HRTF
-      href: audio/hrtf.md
-  - name: Stream audio
-    href: audio/stream-audio.md
-  - name: Global audio settings
-    href: audio/global-audio-settings.md
-  - name: Play a range within an audio file
-    href: audio/play-a-range-within-an-audio-file.md
-  - name: Custom audio data
-    href: audio/custom-audio-data.md
-  - name: Set an audio device
-    href: audio/set-an-audio-device.md
+      - name: Import animations
+        href: animation/import-animations.md
+      - name: Animation properties
+        href: animation/animation-properties.md
+      - name: Set up animations
+        href: animation/set-up-animations.md
+      - name: Preview animations
+        href: animation/preview-animations.md
+      - name: Animation scripts
+        href: animation/animation-scripts.md
+      - name: Additive animation
+        href: animation/additive-animation.md
+      - name: Procedural animation
+        href: animation/procedural-animation.md
+      - name: Custom blend trees
+        href: animation/custom-blend-trees.md
+      - name: Model node links
+        href: animation/model-node-links.md
+      - name: Custom attributes
+        href: animation/custom-attributes.md
 
 
-- name: Engine
-  href: engine/index.md
-  items:
-  - name: Assets
-    href: engine/assets/index.md
+  - name: Audio
+    href: audio/index.md
     items:
     items:
-    - name: Asset bundles
-      href: engine/assets/asset-bundles.md
-    - name: Asset control
-      href: engine/assets/asset-control.md
-  - name: Entity component model
-    href: engine/entity-component-model/index.md
-    items:
-    - name: Usage
-      href: engine/entity-component-model/usage.md
-    - name: Manage entities
-      href: engine/entity-component-model/managing-entities.md
-  - name: File system
-    href: engine/file-system.md
-
-- name: Files and folders
-  href: files-and-folders/index.md
-  items:
-  - name: Project structure
-    href: files-and-folders/project-structure.md
-  - name: Cached files
-    href: files-and-folders/cached-files.md
-  - name: Version control
-    href: files-and-folders/version-control.md
-  - name: Distribute a game
-    href: files-and-folders/distribute-a-game.md
+      - name: Import audio
+        href: audio/import-audio.md
+      - name: Audio asset properties
+        href: audio/audio-asset-properties.md
+      - name: Non-spatialized audio
+        href: audio/non-spatialized-audio.md
+      - name: Spatialized audio
+        href: audio/spatialized-audio.md
+        items:
+          - name: Audio emitters
+            href: audio/audio-emitters.md
+          - name: Audio listeners
+            href: audio/audio-listeners.md
+          - name: HRTF
+            href: audio/hrtf.md
+      - name: Stream audio
+        href: audio/stream-audio.md
+      - name: Global audio settings
+        href: audio/global-audio-settings.md
+      - name: Play a range within an audio file
+        href: audio/play-a-range-within-an-audio-file.md
+      - name: Custom audio data
+        href: audio/custom-audio-data.md
+      - name: Set an audio device
+        href: audio/set-an-audio-device.md
 
 
-- name: Game Studio
-  href: game-studio/index.md
-  items:
-  - name: Scenes
-    href: game-studio/scenes.md
-    items:
-    - name: Create and open a scene
-      href: game-studio/create-a-scene.md
-    - name: Navigate in the Scene Editor
-      href: game-studio/navigate-in-the-scene-editor.md
-    - name: Manage scenes
-      href: game-studio/manage-scenes.md
-    - name: Load scenes
-      href: game-studio/load-scenes.md
-    - name: Add entities
-      href: game-studio/add-entities.md
-    - name: Manage entities
-      href: game-studio/manage-entities.md
-  - name: Assets
-    href: game-studio/assets.md
-    items:
-    - name: Create assets
-      href: game-studio/create-assets.md
-    - name: Manage assets
-      href: game-studio/manage-assets.md
-    - name: Use assets
-      href: game-studio/use-assets.md
-    - name: Archetypes
-      href: game-studio/archetypes.md
-  - name: Prefabs
-    href: game-studio/prefabs/index.md
+  - name: Engine
+    href: engine/index.md
     items:
     items:
-    - name: Create a prefab
-      href: game-studio/prefabs/create-a-prefab.md
-    - name: Use prefabs
-      href: game-studio/prefabs/use-prefabs.md
-    - name: Edit prefabs
-      href: game-studio/prefabs/edit-prefabs.md
-    - name: Nested prefabs
-      href: game-studio/prefabs/nested-prefabs.md
-    - name: Override prefab properties
-      href: game-studio/prefabs/override-prefab-properties.md
-    - name: Prefab models
-      href: game-studio/prefabs/prefab-models.md
-  - name: Game settings
-    href: game-studio/game-settings.md
-    items:
-    - name: Splash screen
-      href: game-studio/splash-screen.md
-  - name: World units
-    href: game-studio/world-units.md
+      - name: Assets
+        href: engine/assets/index.md
+        items:
+          - name: Asset bundles
+            href: engine/assets/asset-bundles.md
+          - name: Asset control
+            href: engine/assets/asset-control.md
+      - name: ECS (Entity Component System)
+        href: engine/entity-component-system/index.md
+        items:
+          - name: Usage
+            href: engine/entity-component-system/usage.md
+          - name: Manage entities
+            href: engine/entity-component-system/managing-entities.md
+      - name: File system
+        href: engine/file-system.md
 
 
-- name: Graphics
-  href: graphics/index.md
-  items:
-  - name: Cameras
-    href: graphics/cameras/index.md
-    items:
-    - name: Camera slots
-      href: graphics/cameras/camera-slots.md
-    - name: Animate a camera with a model file
-      href: graphics/cameras/animate-a-camera-with-a-model-file.md
-  - name: Materials
-    href: graphics/materials/index.md
-    items:
-    - name: Material maps
-      href: graphics/materials/material-maps.md
-    - name: Attributes
-      href: graphics/materials/material-attributes.md
-      items:
-      - name: Geometry attributes
-        href: graphics/materials/geometry-attributes.md
-      - name: Shading attributes
-        href: graphics/materials/shading-attributes.md
-      - name: Misc attributes
-        href: graphics/materials/misc-attributes.md
-      - name: Clear-coat shading
-        href: graphics/materials/clear-coat-shading.md
-    - name: Layers
-      href: graphics/materials/material-layers.md
-    - name: Slots
-      href: graphics/materials/material-slots.md
-    - name: Materials for developers
-      href: graphics/materials/materials-for-developers.md
-  - name: Textures
-    href: graphics/textures/index.md
-    items:
-    - name: Normal maps
-      href: graphics/textures/normal-maps.md
-    - name: Compression
-      href: graphics/textures/compression.md
-    - name: Streaming
-      href: graphics/textures/streaming.md
-    - name: Skyboxes and backgrounds
-      href: graphics/textures/skyboxes-and-backgrounds.md
-  - name: Lights and shadows
-    href: graphics/lights-and-shadows/index.md
-    items:
-    - name: Add a light
-      href: graphics/lights-and-shadows/add-a-light.md
-    - name: Point lights
-      href: graphics/lights-and-shadows/point-lights.md
-    - name: Ambient lights
-      href: graphics/lights-and-shadows/ambient-lights.md
-    - name: Directional lights
-      href: graphics/lights-and-shadows/directional-lights.md
-    - name: Skybox lights
-      href: graphics/lights-and-shadows/skybox-lights.md
-    - name: Spot lights
-      href: graphics/lights-and-shadows/spot-lights.md
-    - name: Light probes
-      href: graphics/lights-and-shadows/light-probes.md
-    - name: Light shafts
-      href: graphics/lights-and-shadows/light-shafts.md
-    - name: Shadows
-      href: graphics/lights-and-shadows/shadows.md
-    - name: Voxel Cone Tracing GI
-      href: graphics/lights-and-shadows/voxel-cone-tracing-gi.md
-  - name: Post effects
-    href: graphics/post-effects/index.md
-    items:
-    - name: Anti-aliasing
-      href: graphics/post-effects/anti-aliasing.md
-    - name: Ambient occlusion
-      href: graphics/post-effects/ambient-occlusion.md
-    - name: Bloom
-      href: graphics/post-effects/bloom.md
-    - name: Bright filter
-      href: graphics/post-effects/bright-filter.md
-    - name: Color transforms
-      href: graphics/post-effects/color-transforms/index.md
-      items:
-      - name: Film grain
-        href: graphics/post-effects/color-transforms/film-grain.md
-      - name: Gamma correction
-        href: graphics/post-effects/color-transforms/gamma-correction.md
-      - name: ToneMap
-        href: graphics/post-effects/color-transforms/tonemap.md
-      - name: Vignetting
-        href: graphics/post-effects/color-transforms/vignetting.md
-      - name: Custom color transforms
-        href: graphics/post-effects/color-transforms/custom-color-transforms.md
-    - name: Depth of field
-      href: graphics/post-effects/depth-of-field.md
-    - name: Lens flare
-      href: graphics/post-effects/lens-flare.md
-    - name: Light streaks
-      href: graphics/post-effects/light-streaks.md
-    - name: Local reflections
-      href: graphics/post-effects/local-reflections.md
-  - name: Graphics compositor
-    href: graphics/graphics-compositor/index.md
-    items:
-    - name: Scene renderers
-      href: graphics/graphics-compositor/scene-renderers.md
-      items:
-      - name: Custom scene renderers
-        href: graphics/graphics-compositor/custom-scene-renderers.md
-    - name: Debug renderers
-      href: graphics/graphics-compositor/debug-renderers.md
-    - name: Render textures
-      href: graphics/graphics-compositor/render-textures.md
-    - name: Render group and masks
-      href: graphics/graphics-compositor/render-groups-and-masks.md
-  - name: Effects and shaders
-    href: graphics/effects-and-shaders/index.md
+  - name: Files and folders
+    href: files-and-folders/index.md
     items:
     items:
-    - name: Effect language
-      href: graphics/effects-and-shaders/effect-language.md
-    - name: Shading language
-      href: graphics/effects-and-shaders/shading-language/index.md
-      items:
-      - name: Classes, mixins and inheritance
-        href: graphics/effects-and-shaders/shading-language/shader-classes-mixins-and-inheritance.md
-      - name: Composition
-        href: graphics/effects-and-shaders/shading-language/composition.md
-      - name: Templates
-        href: graphics/effects-and-shaders/shading-language/templates.md
-      - name: Automatic shader stage input/output
-        href: graphics/effects-and-shaders/shading-language/automatic-shader-stage-input-output.md
-      - name: Shader stages
-        href: graphics/effects-and-shaders/shading-language/shader-stages.md
-    - name: Custom shaders
-      href: graphics/effects-and-shaders/custom-shaders.md
-    - name: Compile shaders
-      href: graphics/effects-and-shaders/compile-shaders.md
-  - name: Low-level API
-    href: graphics/low-level-api/index.md
-    items:
-    - name: Textures and render textures
-      href: graphics/low-level-api/textures-and-render-textures.md
-    - name: Pipeline state
-      href: graphics/low-level-api/pipeline-state.md
-    - name: Resource binding
-      href: graphics/low-level-api/resources.md
-    - name: Draw vertices
-      href: graphics/low-level-api/draw-vertices.md
-    - name: SpriteBatch
-      href: graphics/low-level-api/spritebatch.md
-    - name: SpriteFont
-      href: graphics/low-level-api/spritefont.md
-  - name: Rendering pipeline
-    href: graphics/rendering-pipeline/index.md
-    items:
-    - name: Render features
-      href: graphics/rendering-pipeline/render-features.md
-    - name: Render stages
-      href: graphics/rendering-pipeline/render-stages.md
-  - name: Sprite fonts
-    href: graphics/sprite-fonts.md
+      - name: Project structure
+        href: files-and-folders/project-structure.md
+      - name: Cached files
+        href: files-and-folders/cached-files.md
+      - name: Version control
+        href: files-and-folders/version-control.md
+      - name: Distribute a game
+        href: files-and-folders/distribute-a-game.md
 
 
-- name: Input
-  href: input/index.md
-  items:
-  - name: Gamepads
-    href: input/gamepads.md
-  - name: Gestures
-    href: input/gestures.md
-  - name: Keyboards
-    href: input/keyboards.md
-  - name: Mouse
-    href: input/mouse.md
-  - name: Pointers
-    href: input/pointers.md
-  - name: Sensors
-    href: input/sensors.md
-  - name: Virtual buttons
-    href: input/virtual-buttons.md
-
-- name: Navigation
-  href: navigation/index.md
-  items:
-  - name: Navigation groups
-    href: navigation/navigation-groups.md
-  - name: Navigation meshes
-    href: navigation/navigation-meshes.md
-  - name: Navigation bounding boxes
-    href: navigation/navigation-bounding-boxes.md
-  - name: Navigation components
-    href: navigation/navigation-components.md
-  - name: Dynamic navigation
-    href: navigation/dynamic-navigation.md
+  - name: Game Studio
+    href: game-studio/index.md
+    items:
+      - name: Scenes
+        href: game-studio/scenes.md
+        items:
+          - name: Create and open a scene
+            href: game-studio/create-a-scene.md
+          - name: Navigate in the Scene Editor
+            href: game-studio/navigate-in-the-scene-editor.md
+          - name: Manage scenes
+            href: game-studio/manage-scenes.md
+          - name: Load scenes
+            href: game-studio/load-scenes.md
+          - name: Add entities
+            href: game-studio/add-entities.md
+          - name: Manage entities
+            href: game-studio/manage-entities.md
+      - name: Assets
+        href: game-studio/assets.md
+        items:
+          - name: Create assets
+            href: game-studio/create-assets.md
+          - name: Manage assets
+            href: game-studio/manage-assets.md
+          - name: Use assets
+            href: game-studio/use-assets.md
+          - name: Archetypes
+            href: game-studio/archetypes.md
+      - name: Prefabs
+        href: game-studio/prefabs/index.md
+        items:
+          - name: Create a prefab
+            href: game-studio/prefabs/create-a-prefab.md
+          - name: Use prefabs
+            href: game-studio/prefabs/use-prefabs.md
+          - name: Edit prefabs
+            href: game-studio/prefabs/edit-prefabs.md
+          - name: Nested prefabs
+            href: game-studio/prefabs/nested-prefabs.md
+          - name: Override prefab properties
+            href: game-studio/prefabs/override-prefab-properties.md
+          - name: Prefab models
+            href: game-studio/prefabs/prefab-models.md
+      - name: Game settings
+        href: game-studio/game-settings.md
+        items:
+          - name: Splash screen
+            href: game-studio/splash-screen.md
+      - name: World units
+        href: game-studio/world-units.md
 
 
-- name: Particles
-  href: particles/index.md
-  items:
-  - name: Create particles
-    href: particles/create-particles.md
-  - name: Emitters
-    href: particles/emitters.md
+  - name: Graphics
+    href: graphics/index.md
     items:
     items:
-    - name: Shapes
-      href: particles/shapes.md
-      items:
-      - name: Ribbons and trails
-        href: particles/ribbons-and-trails.md
-    - name: Materials
-      href: particles/materials.md
-    - name: Spawners
-      href: particles/spawners.md
-    - name: Initializers
-      href: particles/initializers.md
-    - name: Updaters
-      href: particles/updaters.md
-  - name: Tutorials
-    href: particles/tutorials/index.md
+      - name: Cameras
+        href: graphics/cameras/index.md
+        items:
+          - name: Camera slots
+            href: graphics/cameras/camera-slots.md
+          - name: Animate a camera with a model file
+            href: graphics/cameras/animate-a-camera-with-a-model-file.md
+      - name: Materials
+        href: graphics/materials/index.md
+        items:
+          - name: Material maps
+            href: graphics/materials/material-maps.md
+          - name: Attributes
+            href: graphics/materials/material-attributes.md
+            items:
+              - name: Geometry attributes
+                href: graphics/materials/geometry-attributes.md
+              - name: Shading attributes
+                href: graphics/materials/shading-attributes.md
+              - name: Misc attributes
+                href: graphics/materials/misc-attributes.md
+              - name: Clear-coat shading
+                href: graphics/materials/clear-coat-shading.md
+          - name: Layers
+            href: graphics/materials/material-layers.md
+          - name: Slots
+            href: graphics/materials/material-slots.md
+          - name: Materials for developers
+            href: graphics/materials/materials-for-developers.md
+      - name: Textures
+        href: graphics/textures/index.md
+        items:
+          - name: Normal maps
+            href: graphics/textures/normal-maps.md
+          - name: Compression
+            href: graphics/textures/compression.md
+          - name: Streaming
+            href: graphics/textures/streaming.md
+          - name: Skyboxes and backgrounds
+            href: graphics/textures/skyboxes-and-backgrounds.md
+      - name: Lights and shadows
+        href: graphics/lights-and-shadows/index.md
+        items:
+          - name: Add a light
+            href: graphics/lights-and-shadows/add-a-light.md
+          - name: Point lights
+            href: graphics/lights-and-shadows/point-lights.md
+          - name: Ambient lights
+            href: graphics/lights-and-shadows/ambient-lights.md
+          - name: Directional lights
+            href: graphics/lights-and-shadows/directional-lights.md
+          - name: Skybox lights
+            href: graphics/lights-and-shadows/skybox-lights.md
+          - name: Spot lights
+            href: graphics/lights-and-shadows/spot-lights.md
+          - name: Light probes
+            href: graphics/lights-and-shadows/light-probes.md
+          - name: Light shafts
+            href: graphics/lights-and-shadows/light-shafts.md
+          - name: Shadows
+            href: graphics/lights-and-shadows/shadows.md
+          - name: Voxel Cone Tracing GI
+            href: graphics/lights-and-shadows/voxel-cone-tracing-gi.md
+      - name: Post effects
+        href: graphics/post-effects/index.md
+        items:
+          - name: Anti-aliasing
+            href: graphics/post-effects/anti-aliasing.md
+          - name: Ambient occlusion
+            href: graphics/post-effects/ambient-occlusion.md
+          - name: Bloom
+            href: graphics/post-effects/bloom.md
+          - name: Bright filter
+            href: graphics/post-effects/bright-filter.md
+          - name: Color transforms
+            href: graphics/post-effects/color-transforms/index.md
+            items:
+              - name: Film grain
+                href: graphics/post-effects/color-transforms/film-grain.md
+              - name: Gamma correction
+                href: graphics/post-effects/color-transforms/gamma-correction.md
+              - name: ToneMap
+                href: graphics/post-effects/color-transforms/tonemap.md
+              - name: Vignetting
+                href: graphics/post-effects/color-transforms/vignetting.md
+              - name: Custom color transforms
+                href: graphics/post-effects/color-transforms/custom-color-transforms.md
+          - name: Depth of field
+            href: graphics/post-effects/depth-of-field.md
+          - name: Lens flare
+            href: graphics/post-effects/lens-flare.md
+          - name: Light streaks
+            href: graphics/post-effects/light-streaks.md
+          - name: Local reflections
+            href: graphics/post-effects/local-reflections.md
+      - name: Graphics compositor
+        href: graphics/graphics-compositor/index.md
+        items:
+          - name: Scene renderers
+            href: graphics/graphics-compositor/scene-renderers.md
+            items:
+              - name: Custom scene renderers
+                href: graphics/graphics-compositor/custom-scene-renderers.md
+          - name: Debug renderers
+            href: graphics/graphics-compositor/debug-renderers.md
+          - name: Render textures
+            href: graphics/graphics-compositor/render-textures.md
+          - name: Render group and masks
+            href: graphics/graphics-compositor/render-groups-and-masks.md
+      - name: Effects and shaders
+        href: graphics/effects-and-shaders/index.md
+        items:
+          - name: Effect language
+            href: graphics/effects-and-shaders/effect-language.md
+          - name: Shading language
+            href: graphics/effects-and-shaders/shading-language/index.md
+            items:
+              - name: Classes, mixins and inheritance
+                href: graphics/effects-and-shaders/shading-language/shader-classes-mixins-and-inheritance.md
+              - name: Composition
+                href: graphics/effects-and-shaders/shading-language/composition.md
+              - name: Templates
+                href: graphics/effects-and-shaders/shading-language/templates.md
+              - name: Automatic shader stage input/output
+                href: graphics/effects-and-shaders/shading-language/automatic-shader-stage-input-output.md
+              - name: Shader stages
+                href: graphics/effects-and-shaders/shading-language/shader-stages.md
+          - name: Custom shaders
+            href: graphics/effects-and-shaders/custom-shaders.md
+          - name: Compile shaders
+            href: graphics/effects-and-shaders/compile-shaders.md
+      - name: Low-level API
+        href: graphics/low-level-api/index.md
+        items:
+          - name: Textures and render textures
+            href: graphics/low-level-api/textures-and-render-textures.md
+          - name: Pipeline state
+            href: graphics/low-level-api/pipeline-state.md
+          - name: Resource binding
+            href: graphics/low-level-api/resources.md
+          - name: Draw vertices
+            href: graphics/low-level-api/draw-vertices.md
+          - name: SpriteBatch
+            href: graphics/low-level-api/spritebatch.md
+          - name: SpriteFont
+            href: graphics/low-level-api/spritefont.md
+      - name: Rendering pipeline
+        href: graphics/rendering-pipeline/index.md
+        items:
+          - name: Render features
+            href: graphics/rendering-pipeline/render-features.md
+          - name: Render stages
+            href: graphics/rendering-pipeline/render-stages.md
+      - name: Sprite fonts
+        href: graphics/sprite-fonts.md
+
+  - name: Input
+    href: input/index.md
     items:
     items:
-    - name: Particle materials
-      href: particles/tutorials/particle-materials.md
-    - name: Inheritance
-      href: particles/tutorials/inheritance.md
-    - name: Lasers and lightning
-      href: particles/tutorials/lasers-and-lightning.md
-    - name: Create a trail
-      href: particles/tutorials/create-a-trail.md
-    - name: Custom particles
-      href: particles/tutorials/custom-particles.md
+      - name: Gamepads
+        href: input/gamepads.md
+      - name: Gestures
+        href: input/gestures.md
+      - name: Keyboards
+        href: input/keyboards.md
+      - name: Mouse
+        href: input/mouse.md
+      - name: Pointers
+        href: input/pointers.md
+      - name: Sensors
+        href: input/sensors.md
+      - name: Virtual buttons
+        href: input/virtual-buttons.md
 
 
-- name: Physics
-  href: physics/index.md
-  items:
-  - name: Colliders
-    href: physics/colliders.md
+  - name: Navigation
+    href: navigation/index.md
     items:
     items:
-    - name: Static colliders
-      href: physics/static-colliders.md
-    - name: Rigidbodies
-      href: physics/rigid-bodies.md
-    - name: Kinematic rigidbodies
-      href: physics/kinematic-rigid-bodies.md
-    - name: Characters
-      href: physics/characters.md
-    - name: Collider shapes
-      href: physics/collider-shapes.md
-    - name: Triggers
-      href: physics/triggers.md
-    - name: Constraints
-      href: physics/constraints.md
-  - name: Raycasting
-    href: physics/raycasting.md
-  - name: Simulation
-    href: physics/simulation.md
-  - name: Tutorials
-    href: physics/tutorials.md
+      - name: Navigation groups
+        href: navigation/navigation-groups.md
+      - name: Navigation meshes
+        href: navigation/navigation-meshes.md
+      - name: Navigation bounding boxes
+        href: navigation/navigation-bounding-boxes.md
+      - name: Navigation components
+        href: navigation/navigation-components.md
+      - name: Dynamic navigation
+        href: navigation/dynamic-navigation.md
+
+  - name: Particles
+    href: particles/index.md
     items:
     items:
-    - name: Create a bouncing ball
-      href: physics/create-a-bouncing-ball.md
-    - name: Script a trigger
-      href: physics/script-a-trigger.md
+      - name: Create particles
+        href: particles/create-particles.md
+      - name: Emitters
+        href: particles/emitters.md
+        items:
+          - name: Shapes
+            href: particles/shapes.md
+            items:
+              - name: Ribbons and trails
+                href: particles/ribbons-and-trails.md
+          - name: Materials
+            href: particles/materials.md
+          - name: Spawners
+            href: particles/spawners.md
+          - name: Initializers
+            href: particles/initializers.md
+          - name: Updaters
+            href: particles/updaters.md
+      - name: Tutorials
+        href: particles/tutorials/index.md
+        items:
+          - name: Particle materials
+            href: particles/tutorials/particle-materials.md
+          - name: Inheritance
+            href: particles/tutorials/inheritance.md
+          - name: Lasers and lightning
+            href: particles/tutorials/lasers-and-lightning.md
+          - name: Create a trail
+            href: particles/tutorials/create-a-trail.md
+          - name: Custom particles
+            href: particles/tutorials/custom-particles.md
 
 
-- name: Platforms
-  href: platforms/index.md
-  items:
-  - name: Linux
-    href: platforms/linux/index.md
+  - name: Physics
+    href: physics/index.md
     items:
     items:
-    - name: Setup and requirements
-      href: platforms/linux/setup-and-requirements.md
-    - name: Create a Linux game
-      href: platforms/linux/create-a-linux-game.md
-  - name: UWP
-    href: platforms/uwp/index.md
+      - name: Colliders
+        href: physics/colliders.md
+        items:
+          - name: Static colliders
+            href: physics/static-colliders.md
+          - name: Rigidbodies
+            href: physics/rigid-bodies.md
+          - name: Kinematic rigidbodies
+            href: physics/kinematic-rigid-bodies.md
+          - name: Characters
+            href: physics/characters.md
+          - name: Collider shapes
+            href: physics/collider-shapes.md
+          - name: Triggers
+            href: physics/triggers.md
+          - name: Constraints
+            href: physics/constraints.md
+      - name: Raycasting
+        href: physics/raycasting.md
+      - name: Simulation
+        href: physics/simulation.md
+      - name: Tutorials
+        href: physics/tutorials.md
+        items:
+          - name: Create a bouncing ball
+            href: physics/create-a-bouncing-ball.md
+          - name: Script a trigger
+            href: physics/script-a-trigger.md
+
+  - name: Platforms
+    href: platforms/index.md
     items:
     items:
-    - name: Xbox Live
-      href: platforms/uwp/xbox-live.md
-  - name: iOS
-    href: platforms/ios.md
-  - name: Add or remove a platform
-    href: platforms/add-or-remove-a-platform.md
-  - name: Set the graphics platform
-    href: platforms/set-the-graphics-platform.md
+      - name: Linux
+        href: platforms/linux/index.md
+        items:
+          - name: Setup and requirements
+            href: platforms/linux/setup-and-requirements.md
+          - name: Create a Linux game
+            href: platforms/linux/create-a-linux-game.md
+      - name: UWP
+        href: platforms/uwp/index.md
+        items:
+          - name: Xbox Live
+            href: platforms/uwp/xbox-live.md
+      - name: iOS
+        href: platforms/ios.md
+      - name: Add or remove a platform
+        href: platforms/add-or-remove-a-platform.md
+      - name: Set the graphics platform
+        href: platforms/set-the-graphics-platform.md
 
 
-- name: Scripts
-  href: scripts/index.md
-  items:
-  - name: Types of script
-    href: scripts/types-of-script.md
-  - name: Create a script
-    href: scripts/create-a-script.md
-  - name: Use a script
-    href: scripts/use-a-script.md
-  - name: Public properties and fields
-    href: scripts/public-properties-and-fields.md
-  - name: Serialization
-    href: scripts/serialization.md
-  - name: Scheduling and priorities
-    href: scripts/scheduling-and-priorities.md
-  - name: Events
-    href: scripts/events.md
-  - name: Debugging
-    href: scripts/debugging.md
-  - name: Preprocessor variables
-    href: scripts/preprocessor-variables.md
-  - name: Create a model from code
-    href: scripts/create-a-model-from-code.md
+  - name: Scripts
+    href: scripts/index.md
+    items:
+      - name: Types of script
+        href: scripts/types-of-script.md
+      - name: Create a script
+        href: scripts/create-a-script.md
+      - name: Use a script
+        href: scripts/use-a-script.md
+      - name: Public properties and fields
+        href: scripts/public-properties-and-fields.md
+      - name: Serialization
+        href: scripts/serialization.md
+      - name: Scheduling and priorities
+        href: scripts/scheduling-and-priorities.md
+      - name: Events
+        href: scripts/events.md
+      - name: Debugging
+        href: scripts/debugging.md
+      - name: Preprocessor variables
+        href: scripts/preprocessor-variables.md
+      - name: Create a model from code
+        href: scripts/create-a-model-from-code.md
 
 
-- name: Sprites
-  href: sprites/index.md
-  items:
-  - name: Import sprite sheets
-    href: sprites/import-sprite-sheets.md
-  - name: Edit sprites
-    href: sprites/edit-sprites.md
+  - name: Sprites
+    href: sprites/index.md
     items:
     items:
-    - name: Set sprite borders
-      href: sprites/set-sprite-borders.md
-  - name: Use sprites
-    href: sprites/use-sprites.md
+      - name: Import sprite sheets
+        href: sprites/import-sprite-sheets.md
+      - name: Edit sprites
+        href: sprites/edit-sprites.md
+        items:
+          - name: Set sprite borders
+            href: sprites/set-sprite-borders.md
+      - name: Use sprites
+        href: sprites/use-sprites.md
 
 
-- name: UI
-  href: ui/index.md
-  items:
-  - name: Pages
-    href: ui/ui-pages.md
-  - name: Libraries
-    href: ui/ui-libraries.md
-  - name: Editor
-    href: ui/ui-editor.md
-  - name: Add a UI to a scene
-    href: ui/add-a-ui-to-a-scene.md
-  - name: Layout system
-    href: ui/layout-system.md
+  - name: UI
+    href: ui/index.md
+    items:
+      - name: Pages
+        href: ui/ui-pages.md
+      - name: Libraries
+        href: ui/ui-libraries.md
+      - name: Editor
+        href: ui/ui-editor.md
+      - name: Add a UI to a scene
+        href: ui/add-a-ui-to-a-scene.md
+      - name: Layout system
+        href: ui/layout-system.md
 
 
-- name: Video
-  href: video/index.md
-  items:
-  - name: Set up a video
-    href: video/set-up-a-video.md
-  - name: Video properties
-    href: video/video-properties.md
-  - name: Use a video as a skybox
-    href: video/use-a-video-as-a-skybox.md
+  - name: Video
+    href: video/index.md
+    items:
+      - name: Set up a video
+        href: video/set-up-a-video.md
+      - name: Video properties
+        href: video/video-properties.md
+      - name: Use a video as a skybox
+        href: video/use-a-video-as-a-skybox.md
 
 
-- name: Virtual reality
-  href: virtual-reality/index.md
-  items:
-  - name: Enable VR
-    href: virtual-reality/enable-vr.md
-  - name: Preview a scene in VR
-    href: virtual-reality/preview-a-scene-in-vr.md
-  - name: Overlays
-    href: virtual-reality/overlays.md
+  - name: Virtual reality
+    href: virtual-reality/index.md
     items:
     items:
-    - name: Display a UI in an overlay
-      href: virtual-reality/display-a-UI-in-an-overlay.md
-  - name: VR sickness
-    href: virtual-reality/vr-sickness.md
+      - name: Enable VR
+        href: virtual-reality/enable-vr.md
+      - name: Preview a scene in VR
+        href: virtual-reality/preview-a-scene-in-vr.md
+      - name: Overlays
+        href: virtual-reality/overlays.md
+        items:
+          - name: Display a UI in an overlay
+            href: virtual-reality/display-a-UI-in-an-overlay.md
+      - name: VR sickness
+        href: virtual-reality/vr-sickness.md
 
 
-- name: NuGet
-  href: nuget/index.md
-  items:
-  - name: Consume Packages
-    href: nuget/consume-packages.md
-  - name: Create Packages
-    href: nuget/create-packages.md
+  - name: NuGet
+    href: nuget/index.md
+    items:
+      - name: Consume Packages
+        href: nuget/consume-packages.md
+      - name: Create Packages
+        href: nuget/create-packages.md
 
 
-- name: Troubleshooting
-  href: troubleshooting/index.md
-  items:
-  - name: Logging
-    href: troubleshooting/logging.md
-  - name: Debug text
-    href: troubleshooting/debug-text.md
-  - name: Profiling
-    href: troubleshooting/profiling.md
-  - name: Stride doesn't run
-    href: troubleshooting/stride-doesnt-run.md
-  - name: Default value changes ignored at runtime
-    href: troubleshooting/default-value-changes-ignored-at-runtime.md
-  - name: Lights don't cast shadows
-    href: troubleshooting/lights-dont-cast-shadows.md
-  - name: Full call stack not available
-    href: troubleshooting/full-call-stack-not-available.md
-  - name: "Error: A SceneCameraRenderer in use has no camera assigned to its [Slot]. Make sure a camera is enabled and assigned to the [Slot]"
-    href: troubleshooting/error-a-scenecamerarenderer-in-use-has-no-camera-set.md
+  - name: Troubleshooting
+    href: troubleshooting/index.md
+    items:
+      - name: Logging
+        href: troubleshooting/logging.md
+      - name: Debug text
+        href: troubleshooting/debug-text.md
+      - name: Profiling
+        href: troubleshooting/profiling.md
+      - name: Stride doesn't run
+        href: troubleshooting/stride-doesnt-run.md
+      - name: Default value changes ignored at runtime
+        href: troubleshooting/default-value-changes-ignored-at-runtime.md
+      - name: Lights don't cast shadows
+        href: troubleshooting/lights-dont-cast-shadows.md
+      - name: Full call stack not available
+        href: troubleshooting/full-call-stack-not-available.md
+      - name: "Error: A SceneCameraRenderer in use has no camera assigned to its [Slot]. Make sure a camera is enabled and assigned to the [Slot]"
+        href: troubleshooting/error-a-scenecamerarenderer-in-use-has-no-camera-set.md