Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
c6d357c
Added Stride CLI
ferafiks Jun 30, 2026
5f2bd19
slnx
ferafiks Jun 30, 2026
457919b
Updating
ferafiks Jun 30, 2026
ce9db2f
launcher
ferafiks Jun 30, 2026
cb32598
Stride CLI polish
ferafiks Jun 30, 2026
8dc2eae
Updated file structure graphics with .slnx
ferafiks Jun 30, 2026
82ec6e2
Improvements to the cli page
ferafiks Jun 30, 2026
a9481b6
Visual Studio extension
ferafiks Jun 30, 2026
fbfa5c0
Added .Game to all main proejct package names
ferafiks Jun 30, 2026
3fa8457
Small fix
ferafiks Jun 30, 2026
4cbcfca
Polished update stride
ferafiks Jun 30, 2026
da932ba
Added a native AOT page
ferafiks Jun 4, 2026
ea3719e
Improvements'
ferafiks Jun 4, 2026
84edeaf
Misc changes
ferafiks Jul 1, 2026
5ef167f
Glossary
ferafiks Jul 1, 2026
335c912
Updated graphics API
ferafiks Jul 1, 2026
b884035
Removed outdated csproj from graphics api
ferafiks Jul 2, 2026
af8b30d
Fixups
ferafiks Jul 2, 2026
f48bf61
Fixups
ferafiks Jul 3, 2026
34fe704
Fixed alignment on some file structure images
ferafiks Jul 3, 2026
ddde52d
Added a badge to the Native AOT page
ferafiks Jul 3, 2026
22e0025
Added a note to building setup about changing the icon
ferafiks Jul 3, 2026
a707744
Added new commands to the sdk page (`stride sdk available` and `strid…
ferafiks Jul 4, 2026
be55425
Removed unused image
ferafiks Jul 5, 2026
28d963b
Small change to stride-cli
ferafiks Jul 5, 2026
ad6f1f1
Another small change
ferafiks Jul 5, 2026
ef622b9
Updated images
ferafiks Jul 7, 2026
23e2c99
Updated select platforms image
ferafiks Jul 7, 2026
50271ee
Removed solution page
ferafiks Jul 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 0 additions & 20 deletions en/manual/engine/solution.md

This file was deleted.

1 change: 1 addition & 0 deletions en/manual/files-and-folders/building-the-game/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ When you launch a game from **Game Studio** or your **IDE**, it gets built in th
## In this section

* [Setup](setup.md)
* [Native AOT](native-aot.md)
* [Building](building.md)
* [Cleaning up](cleaning-up.md)
* [Build file structure](build-file-structure.md)
Expand Down
38 changes: 38 additions & 0 deletions en/manual/files-and-folders/building-the-game/native-aot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Native AOT

<span class="badge text-bg-primary">Intermediate</span>

C# and other languages from the .NET ecosystem are compiled into **Common Intermediate Language** (CIL), which can't be executed by a computer directly. Instead, it requires an additional piece of software called the **.NET Runtime**, which uses a **Just-In-Time** (JIT) compiler to translate it into native machine code.

This approach has it's benefits and drawbacks:

* 🟩 Your code can run on any platform supported by the **.NET Runtime**
* 🟩 Some high-level language features require it to work (e.g. reflections)
* 🟩 Compiled projects take up less disk space
* 🟥 Some platforms do not support it (mainly iOS and consoles)
* 🟥 Creates additional overhead, slightly decreasing performance
* 🟥 Requires a user to install additional software (unless the app is made to be [self contained](setup.md#self-contained))

An alternative to this is to use **Native Ahead-Of-Time** (AOT) compilation to skip the CIL entirely, creating a native application. Doing this can decrease startup time and improve overall performance, but comes at the cost of all previously listed standard JIT compiled .NET application benefits.

## Preparation

Before enabling Native AOT, you will have to make sure your project can support it.

1. Make sure that additional libraries your project is using support **Native AOT**.
2. Make sure your project doesn't use reflections.
3. Make sure your project doesn't use any other Native AOT incompatible features.

## Enable Native AOT in a project

1. Locate the `.csproj` file of the [platform package](../project-packages/index.md#platform-packages) you want to enable **Native AOT** for (e.g. `MyGame.Windows.csproj`).

2. Add the following line to the `PropertyGroup`:

```xml
<PublishAot>true</PublishAot>
```

## Further reading

For more information about native AOT development with .NET, read the [Microsoft article](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/).
19 changes: 19 additions & 0 deletions en/manual/files-and-folders/building-the-game/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ In the `.csproj` file, change the value of `<ApplicationIcon>Resources\Icon.ico<

---

> [!WARNING]
> After changing the icon, you will have to delete `/bin` in the platform package's directory for it to update.

## Self contained

Making an application **self contained** removes the requirement for a user to have the **.NET runtime** installed on their machine.
Expand Down Expand Up @@ -126,6 +129,22 @@ In the `.csproj` file, add `<PublishSingleFile>true</PublishSingleFile>` and `<I

---

## Native AOT

Stride supports building games using **Native AOT**. For more information, read [Native AOT](native-aot.md).

### [Visual Studio](#tab/visual-studio)

To enable **Native AOT**, double click on the platform package and add `<NativeAot>true</NativeAot>` to the `<Property Group>`.

![](media/visual-studio-csproj.webp)

### [Manual](#tab/manual)

In the `.csproj` file, add `<NativeAot>true</NativeAot>` to the `<Property Group>`.

---

## The output directory

There are two paths which can be configured:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This is a guide on how to use external NuGet packages with Stride.

An external NuGet package can be added **as a dependency of another project package** (for .NET developers: as a dependency of another C# project).

In most cases, you would add this to the **main non-platform project package** (e.g. **MyGame**, not **MyGame.Windows**), which contains the majority of code and assets.
In most cases, you would add this to the **main non-platform project package** (e.g. **MyGame.Game**, not **MyGame.Windows**), which contains the majority of code and assets.

## Finding NuGet packages

Expand Down
1 change: 1 addition & 0 deletions en/manual/files-and-folders/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ This section explains how a Stride project is structured, how it works and how t
* [Cached files](cached-files.md)
* [Building the game](building-the-game/index.md)
* [Setup](building-the-game/setup.md)
* [Native AOT](building-the-game/native-aot.md)
* [Building](building-the-game/building.md)
* [Cleaning up](building-the-game/cleaning-up.md)
* [Build file structure](building-the-game/build-file-structure.md)
Expand Down
4 changes: 2 additions & 2 deletions en/manual/files-and-folders/media/file-structure.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions en/manual/files-and-folders/media/file-structure.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 21 additions & 6 deletions en/manual/files-and-folders/project-packages/package-properties.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,25 @@

<span class="badge text-bg-primary">Advanced</span>

Every project package contains it's own set of properties, that can be customized.
Every project package contains it's own set of properties, that can be customized. They are split into two files `NameOfPackage.sdpkg` and `NameOfPackage.csproj`.

## Editing properties in Game Studio

Game Studio allows you to modify some properties of project packages, but for more advanced features, you will have to manually edit their files.

![](media/project-package-properties.webp)

| Property | Description |
| :-- | :-- |
| Graphics API | The graphics API the game is built and run with. Default uses the platform default. |
| Contains asset types | Whether this project's assembly defines types used in assets (scripts, components, custom asset types), so the editor and asset compiler load it and packing declares it to consumers. Unset, libraries are loaded and other projects are not. |
| Effect Compiler | Indicates whether effect compile should be allowed, and if yes, should it be done locally (if possible) or remotely. |
| Record used effects | Indicates whether effect compile (local or remote) should be recorded and sent to effect compile server for GameStudio notification. |

> [!NOTE]
> Currently there is no way to change project package properties via **Game Studio** - you have to **modify the `.sdpkg` file directly**.
> Depending on the type of project package, different properties will be displayed

## `.sdpkg` properties

| Property | Description |
| :-- | :-- |
Expand All @@ -17,16 +32,15 @@ Every project package contains it's own set of properties, that can be customize
| Bundles | List of bundles and their metadata. For more information read [Asset Bundles](../../engine/assets/asset-bundles.md). |
| TemplateFolders | List of directory paths containing custom templates in the `.sdtpl` format. For more information read [Custom Assets](../../scripts/custom-assets.md#adding-a-section-for-the-add-asset-menu-inside-the-editor). |
| RootAssets | List of root assets (assets that will always be included with the build). |
| AssetAssemblies | A list of paths to external assemblies (`.dll` files) containing custom assets. |

## Example

Here is an example `.sdpkg` file for the library "MyGame" that has two asset folders "Assets" and "Effects" and a single resource folder "Resources".
Here is an example `.sdpkg` file for the project package "MyGame.Game" that has two asset folders "Assets" and "Effects" and a single resource folder "Resources".

```yaml
!Package
SerializedVersion: {Assets: 3.1.0.0}
Meta:
Name: MyGame
Name: MyGame.Game
Version: 1.0.0
Authors: []
Owners: []
Expand All @@ -46,3 +60,4 @@ RootAssets: []
## See also

* [Create a package](create-a-package.md)
* [Graphics API](../../graphics/graphics-api.md)
8 changes: 4 additions & 4 deletions en/manual/files-and-folders/project-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ This page explains in detail how a Stride project's files are structured.

## Overview

A Stride project is a **standard C# solution**, consisting of a single [solution file](https://learn.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file) (`.sln`) and multiple [project package](#project-packages) folders, which contain code, assets and resources.
A Stride project is a **standard C# solution**, consisting of a single [solution file](https://learn.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file) (`.slnx`/`.sln`) and multiple [project package](#project-packages) folders, which contain code, assets and resources.

![](media/file-structure.webp)

* **Bin** - folder containing build files. For more information visit [this section](#project-bin-folder).
* **NameOfGame**, **NameOfGame.PlatformName** - project package folders.
* **`.sln` file** - the solution file used by C# and Game Studio for opening the project.
* **NameOfGame.Game**, **NameOfGame.PlatformName** - project package folders.
* **`.slnx`/`.sln` file** - the solution file used by C# and Game Studio for opening the project.

## Project packages

Expand All @@ -21,7 +21,7 @@ At the root, a Stride project is comprised of multiple [project packages](projec
**For .NET developers:** a Stride project package is a standard C# project.

By default, there are at least 2 project packages in a Stride project:
* **NameOfGame** - contains most code, assets and resources for the game.
* **NameOfGame.Game** - contains most code, assets and resources for the game.
* **NameOfGame.PlatformName** (e.g. NameOfGame.Windows) - dedicated package for a given platform, contains the [**entry point**](project-packages/index.md#entry-point) and other files specific to the platform (such as the window icon).

A project package may contain:
Expand Down
2 changes: 1 addition & 1 deletion en/manual/files-and-folders/version-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Cache/
```

> [!WARNING]
> This file should be placed at the root of the Stride project, next to the `.sln` file. If your git repository isn't initialized at the root, the `.gitignore` file will still be detected.
> This file should be placed at the root of the Stride project, next to the `.slnx`/`.sln` file. If your git repository isn't initialized at the root, the `.gitignore` file will still be detected.
>
> ![](media/version-control-gitignore-location.webp)

Expand Down
Loading