Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion manual/editor/advanced/asset-references.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ In *Content* window, *right-click* on an asset and select **Select actors using

![Show Asset References Graph](media/show-asset-references-graph.png)

In *Content* window, *right-click* on an asset and select **Show asset references graph** option. It will open a window with a graph containing visual representation of assets that reference this asset and assets references by this asset. The graph deep level is constrained to 4 and it doesn't diplsay duplicates (ie. if asset A references B and C but B references C too, then C won't be displayed 2nd time).
In *Content* window, *right-click* on an asset and select **Show asset references graph** option. It will open a window with a graph containing visual representation of assets that reference this asset and assets references by this asset. The graph deep level is constrained to 4 and it doesn't display duplicates (ie. if asset A references B and C but B references C too, then C won't be displayed 2nd time).

> [!NOTE]
> Searching for asset references can be a slow process if project is large or is located on HDD drive so be patient (loading progress is displayed in percentage).
Expand Down
2 changes: 1 addition & 1 deletion manual/editor/advanced/custom-engine.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ You can use *Flax.Build* for automated editor building with a custom engine for

* `PackagePlatforms.bat`/`PackagePlatforms.sh` - runs build tool to compile and package platforms data (executable files and platform data/tools). You can use Flax.Build arguments to specify the build parameters such as `-platform=Windows -arch=x64`.
* `PackageEditor.bat`/`PackageEditor.sh` - runs build tool to compile and package Editor (executable files and content). You can use Flax.Build arguments to specify the build parameters such as `-deployOutput=Output -arch=x64`.
* `GenerateProjectFiles.bat`/`GenerateProjectFiles.sh` - generates the script project files for the engine. You can run it with custom parameters to override some options such as: `-commpiler=v140 -vscode`.
* `GenerateProjectFiles.bat`/`GenerateProjectFiles.sh` - generates the script project files for the engine. You can run it with custom parameters to override some options such as: `-compiler=v140 -vscode`.

## Engine Registration

Expand Down
2 changes: 1 addition & 1 deletion manual/editor/advanced/custom-visject-surface.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ This asset type will be a [json asset](https://docs.flaxengine.com/api/FlaxEngin

## Asset Proxy

To create and open assets using the Flax Editor, an [asset proxy](https://docs.flaxengine.com/api/FlaxEditor.Content.AssetProxy.html) is required. Since it's an editor file, it needs to be in the editor assembly. To do so, create a new folder called `Editor`. In this folder, create a new asset proxy.
To create and open assets using the Flax Editor, an [asset proxy](https://docs.flaxengine.com/api/FlaxEditor.Content.JsonAssetProxy.html) is required. Since it's an editor file, it needs to be in the editor assembly. To do so, create a new folder called `Editor`. In this folder, create a new asset proxy.

```cs
public class ExpressionGraphProxy : JsonAssetProxy
Expand Down
2 changes: 1 addition & 1 deletion manual/editor/advanced/style.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Flax Editor supports editing the default UI style, colors and font via editor op

## Fonts

![Customzied Editor Fonts](media/editor-custom-font.png)
![Customized Editor Fonts](media/editor-custom-font.png)

Open **Interface** tab and in the section **Fonts** you can adjust the font assets and font sizes used for Editor UI. You can also adjust the visuals for a particular parts of the editor (eg. Debug Log, Output Log).
To see changes please restart editor.
Expand Down
2 changes: 1 addition & 1 deletion manual/editor/flax-build/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Build scripts are using C# 12 with full .NET 8 support. Additionally Flax.Build
* `CommandLine` attribute for command line parsing
* `Log` utility with info/errors logging capabilities (to log file and to console output)
* `Tokenizer` class for passing code as tokens
* `Utilities` class with many usefull tools (eg. `WriteFileIfChanged`, `ReplaceInFiles`, `Run`, `GetFileSize`..)
* `Utilities` class with many useful tools (eg. `WriteFileIfChanged`, `ReplaceInFiles`, `Run`, `GetFileSize`..)
* `Sdk` searching and caching tools (used for ex. `PS4Sdk`, `GDK`, `VulkanSdk`)
* `VCEnvironment` tool that can invoke *MSBuild* tool (works on Windows, Linux and Mac).

Expand Down
2 changes: 1 addition & 1 deletion manual/editor/game-settings/build-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ For editing and using presets see [Game Cooker window](../game-cooker/index.md)
| **Shaders No Optimize** | Disables shader compiler optimizations in the cooked game. Can be used to debug shaders on a target platform or to speed up the shaders compilation time. |
| **Shaders Generate Debug Data** | Enables shader debug data generation for shaders in cooked game (depends on the target platform rendering backend). |
| **Skip Default Fonts** | If checked, skips bundling default engine fonts for UI. Use if to reduce build size if you don't use default engine fonts but custom ones only. |
| **Max Mesh Position Error** | The maximum acceptable mesh vertex position error (in world units) for data quantization. Use `0` to disable this feature. Affects meshes during import (or reimpport). |
| **Max Mesh Position Error** | The maximum acceptable mesh vertex position error (in world units) for data quantization. Use `0` to disable this feature. Affects meshes during import (or reimport). |
|||
| **Skip .NET Runtime Packaging** | If checked, .NET Runtime won't be packaged with a game and will be required by user to be installed on system upon running game build. Available only on supported platforms such as Windows, Linux and macOS. |
| **Skip Unused .NET Runtime Libs Packaging** | If checked, .NET Runtime packaging will skip unused libraries from packaging resulting in smaller game builds. |
Expand Down
2 changes: 1 addition & 1 deletion manual/editor/game-settings/graphics-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ You can change most of these values at runtime using the [GraphicsQuality](https
|||
| **Fallback Fonts** | The list of fallback fonts used for text rendering. Ignored if empty. |
|||
| **Post Process Settings** | The default Post Process settings. Can be overriden by PostFxVolume on a level locally, per camera or for a whole map. |
| **Post Process Settings** | The default Post Process settings. Can be overridden by PostFxVolume on a level locally, per camera or for a whole map. |
4 changes: 2 additions & 2 deletions manual/editor/localization/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ Flax supports **importing translated strings** from `.po` files into Localized S

![Localized String Editor](media/localized-string.png)

**Localized String** is scripting type for easy texts localziation. It contains two fields: `Id` and `Value`. *Id* is the localized string identifier, *Value* is custom overriden text value (if *Value* is set, the *Id* won't be used).
**Localized String** is scripting type for easy texts localization. It contains two fields: `Id` and `Value`. *Id* is the localized string identifier, *Value* is custom overridden text value (if *Value* is set, the *Id* won't be used).

In Editor *Id* textfield contains utility button that shows a localized string picker from the Localization Settings. If *Value* field is empty then it will display watermark of the current text from the localization. You can also manually set *Value*. By using `+` button on the right side of the *Value* textfield you can add the text to the localization settigns for all locales in project (the inserted value will be passed to default `en` locale, rest of the cultures will have empty, missing text translation).
In Editor *Id* textfield contains utility button that shows a localized string picker from the Localization Settings. If *Value* field is empty then it will display watermark of the current text from the localization. You can also manually set *Value*. By using `+` button on the right side of the *Value* textfield you can add the text to the localization settings for all locales in project (the inserted value will be passed to default `en` locale, rest of the cultures will have empty, missing text translation).

`LocalizedString` is supported in both C++ and C# scripting API and can be used for texts localization instead of raw `String` type. It supports implicit conversion between in-built string type and can be serialized or deserialized.

Expand Down
2 changes: 1 addition & 1 deletion manual/editor/profiling/dot-trace.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ Then pick game executable (as shown above) to **Path** field. When launching Fla

![dotTrace profiler for Flax](media/dot-trace-profiler-flax.png)

dotTrace profiler snapshots provide various informations about the Flax game performance. Those can be used to deeply analyze and monitor the runtime. To learn more about it please visit official documentation [here](https://www.jetbrains.com/profiler/documentation/documentation.html).
dotTrace profiler snapshots provide various information about the Flax game performance. Those can be used to deeply analyze and monitor the runtime. To learn more about it please visit official documentation [here](https://www.jetbrains.com/profiler/documentation/documentation.html).
2 changes: 1 addition & 1 deletion manual/editor/profiling/profiler.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ PROFILE_GPU("MyFunction"); // or PROFILE_GPU_CPU to inject both CPU and GPU prof

The memory profiling mode focused on breaking down system memory allocations. This includes separate stats for native memory allocation and managed C# allocations. Below the charts there is a table with memory usage broken down into certain engine categories such as: physics, graphics, level, audio, scripting, etc.

Table contains 4 collumns:
Table contains 4 columns:
* name of the group,
* memory usage,
* peek of memory usage (since the start of the program),
Expand Down
2 changes: 1 addition & 1 deletion manual/editor/windows/scene-window.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ By typing in the search bar of the **Scene Window**, Actors can be filtered by n

### Additional Search Filters

Filters are not case sensitive and can be used together seperated by a `,`.
Filters are not case sensitive and can be used together separated by a `,`.

| Filter | Action |
|-------|-------|
Expand Down
2 changes: 1 addition & 1 deletion manual/get-started/get-flax.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The next step is to **log in** to the Flax Launcher.

# Installing The Flax Engine

After loging in go to the **Engine** page. Here you can download and manage engine installations. You can have different versions of Flax installed on your computer. To download updates and additional packgages, go to the **Engine** page.
After logging in go to the **Engine** page. Here you can download and manage engine installations. You can have different versions of Flax installed on your computer. To download updates and additional packages, go to the **Engine** page.

![Open Launcher](media/launcher-engine.png)

Expand Down
6 changes: 3 additions & 3 deletions manual/get-started/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

![Flax Engine Logo](media/flax-title.jpg)

Welcome to the Official Flax Engine Manual! In this section you will find everything you need to start creating games with Flax from scratch. Let's get started!
Welcome to the Official Flax Engine Manual! Whether you are migrating from another Game Engine or writing your first line of code, this comprehensive guide is designed to take you from installation to your first functional scene. Let's get started!

## The first steps
## Your first steps in Flax

<div class="frontpage">

Expand All @@ -28,7 +28,7 @@ Welcome to the Official Flax Engine Manual! In this section you will find everyt

</div>

## Migrate to Flax
## Migrating to Flax

<div class="frontpage">

Expand Down
2 changes: 1 addition & 1 deletion manual/get-started/project-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

All Flax projects have a unified structure. This strict organization helps with development and provides better standardization across all Flax games.

The Flax Editor can load projects located in any location on your drive. It's only required to place a valid **.flaxproj** file that describes the project (name, metadata). The Flax Editor will generate all project folders if they are missing (Cache, Content, Logs and Source directories) as well as C# projects and solution files.
The Flax Editor can load projects located in any location on your drive. It is only required to place a valid **.flaxproj** file that describes the project (name, metadata). The Flax Editor will generate all project folders if they are missing (Cache, Content, Logs and Source directories) as well as C# projects and solution files.

## Example .flaxproj

Expand Down
5 changes: 3 additions & 2 deletions manual/get-started/requirements.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Requirements

Flax Engine has specific hardware and software requirements for running the game or developing with the engine.
Flax Engine has specific hardware and software requirements for running the game or developing games with the engine.

### Hardware Requirements

Expand All @@ -20,7 +20,7 @@ For developers using Flax Editor on Linux platforms the requirements are [here](

For developers using Flax Editor on Mac platforms the requirements are [here](mac.md).

## Software Requirements
## Windows Software Requirements

Flax Engine requires **Visual C++ Redistributable for Visual Studio 2015** (or newer) to be installed on Windows in order to start.
The launcher will check and begin installation if it is missing, however if your game is targeting the Windows platform you should include the redistributable installer with it. You can download it [here](https://www.microsoft.com/download/details.aspx?id=48145).
Expand All @@ -37,5 +37,6 @@ You can download the free community edition [here](https://www.visualstudio.com/
Please ensure that you have the latest GPU drivers installed:
- [NVIDIA drivers](https://www.nvidia.com/Download/index.aspx)
- [AMD drivers](https://www.amd.com/support)
- [Intel drivers](https://www.intel.com/content/www/us/en/download-center/home.html)

For information about supported platforms, see [Platforms](../platforms/index.md).
2 changes: 1 addition & 1 deletion manual/scripting/advanced/access-game-window.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Access Game Window

Flax automatically creates the main window for the game. Some platforms allow to customzie it (eg. desktop) while on other platforms access to it is fixed (eg. consoles). Hovewer Flax supports API for creating custom windows (multi-window setup) and you can also access the pre-created window from your scripts.
Flax automatically creates the main window for the game. Some platforms allow to customize it (eg. desktop) while on other platforms access to it is fixed (eg. consoles). However Flax supports API for creating custom windows (multi-window setup) and you can also access the pre-created window from your scripts.

## Change window title

Expand Down
2 changes: 1 addition & 1 deletion manual/scripting/advanced/cert-store.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ ServicePointManager.ServerCertificateValidationCallback +=

### Cert Store plugin

The best solution is to use a collection of root certificates that are trusted widely across the Internet such as provided by Mozzila. The example plugin below implements caching trusted root certificates collection in `RawDataAsset`. At runtime, it loads the certificates from the data and adds them to the Root so the following SSL requests will be validated upon those certificates.
The best solution is to use a collection of root certificates that are trusted widely across the Internet such as provided by Mozilla. The example plugin below implements caching trusted root certificates collection in `RawDataAsset`. At runtime, it loads the certificates from the data and adds them to the Root so the following SSL requests will be validated upon those certificates.

Note that the first plugin start will take a few seconds because it will cache the newest certificates collection to the asset (stored in `Content/CertStore.flax`). Subsequential initializations take usually between 200-500ms. You can strip the certificates list for your needs to improve the setup time if needed.

Expand Down
2 changes: 1 addition & 1 deletion manual/scripting/advanced/code-on-load.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct Initializer
{
Initializer()
{
LOG(Info, "Helllo!");
LOG(Info, "Hello!");
}
};

Expand Down
2 changes: 1 addition & 1 deletion manual/scripting/advanced/custom-editor-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The full source code of the implemented editor plugin with options:
```cs
public class TestPlugin : EditorPlugin
{
// The custom options key used to idenify them
// The custom options key used to identify them
public const string SettingsName = "Test Plugin";

// Custom options object that defines the data layout
Expand Down
8 changes: 4 additions & 4 deletions manual/scripting/advanced/multithreading.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ There is no *great rule* whether use main thread or custom jobs. In most cases,
> [!TIP]
> To profile asynchronous code use in-built [Profiler](../../editor/profiling/profiler.md) or [Tracy](../../editor/profiling/tracy.md) profiler.

## Synchronziation
## Synchronization

One of the key elements of multi-threaded programming is synchronization. Work submissions and results fetching are important aspects of this area. Always try to implement your algorithms starting from designing the data that you want to process. For instance, if you generate voxel terrain, then you can generate geometry in async but the created model can be added to the scene only on the main thread, then you can use something like this: `Scripting.InvokeOnUpdate(() => model.Parent = mainScene)`.

Expand All @@ -29,7 +29,7 @@ Thread-safe concurrent collections you can use in C#

## Job System

Flax contains own **Job System** which is used by the engine to pararellize systems like particles, animations, content, etc. It can be also used by the game to execute code in paraller. It makes easier to optimize large data sets processing using multi-core. Job System uses one thread per CPU. Example usage of the job system that will trigger two async job dispatches and wait for the second one to finish before continuing.
Flax contains own **Job System** which is used by the engine to parallelize systems like particles, animations, content, etc. It can be also used by the game to execute code in parallel. It makes easier to optimize large data sets processing using multi-core. Job System uses one thread per CPU. Example usage of the job system that will trigger two async job dispatches and wait for the second one to finish before continuing.

```cs
using System;
Expand Down Expand Up @@ -58,7 +58,7 @@ class JobSystemTest : Script

## Task Graph

For more advanced gameplay systems that need to use dependencies and aim to improve CPU performance (better scheduling without gaps) the **Task Graph** is preferred. It's used by the engine to parallarize animations, particles, streaming and other systems update and can be used by the gameplay code. For instance, you can create own Task Graph System for a game that will calculate AI paths or perform player visibility checks or anything your project needs. The advantage of using Task Graph is that your async jobs will overlap with other jobs including engine async task which gives significant performance boost over traditional single-threaded gameplay programming.
For more advanced gameplay systems that need to use dependencies and aim to improve CPU performance (better scheduling without gaps) the **Task Graph** is preferred. It's used by the engine to parallelize animations, particles, streaming and other systems update and can be used by the gameplay code. For instance, you can create own Task Graph System for a game that will calculate AI paths or perform player visibility checks or anything your project needs. The advantage of using Task Graph is that your async jobs will overlap with other jobs including engine async task which gives significant performance boost over traditional single-threaded gameplay programming.

**TaskGraph** is a graph-based asynchronous tasks scheduler for high-performance computing and processing. It contains a list of systems to execute. You can create own graphs or use in-built ones to share CPU with engine systems.

Expand Down Expand Up @@ -182,7 +182,7 @@ class AsyncTest : Script
}
```

Also, when using `async` tasks you can use the `Scripting.MainThreadScheduler` to invoke task on a main thread during game *Update*. This can be usefull when chacing the async tasks with main thread tasks.
Also, when using `async` tasks you can use the `Scripting.MainThreadScheduler` to invoke task on a main thread during game *Update*. This can be useful when checking the async tasks with main thread tasks.

## Thread

Expand Down
2 changes: 1 addition & 1 deletion manual/scripting/advanced/tags.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Scripting API contains the structure `Tag` which holds index of the tag in a glo

## Actor Tags

Every actor contains list of tags (`Actor.Tags`) and various utilities for quick checking for a tag (`Actor.HasTag`). Actors can be marked with specific tags to be used by different gameplay systems. For example, player rigidbody and collider can be marked with a tag `Player` to distinguish them when processing collision events or when calculating hit damage in a shooter game.
Every actor contains list of tags (`Actor.Tags`) and various utilities for quick checking for a tag (`Actor.HasTag`). Actors can be marked with specific tags to be used by different gameplay systems. For example, player rigidBody and collider can be marked with a tag `Player` to distinguish them when processing collision events or when calculating hit damage in a shooter game.

## Tag Editor

Expand Down
Loading
Loading