Skip to content

Get-Started Docs pass #133

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
16 changes: 9 additions & 7 deletions manual/get-started/create-a-project.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,28 @@

After you [get Flax](get-flax.md), navigate to the **Projects** page in the Flax Launcher. Here you can view your projects library. You can open existing projects by double clicking on them (the default engine version) and you can use the context menu (3 dots near its name label) to delete, unlink or view project location.

If it's your first time with Flax we recommend you click **Get Flax Samples** to download a collection of free projects that showcase various engine features and can be used as a base for your journey with Flax. Flax Samples are free and [available here](https://github.com/FlaxEngine/FlaxSamples).
If it's your first time with Flax we recommend you click **Get Flax Samples** to download a collection of free projects that showcase various engine features and can be used as a base for your journey with Flax. Flax Samples are free and the repository is [available here](https://github.com/FlaxEngine/FlaxSamples).

You can also add an existing project from your drive using the **Add Project** button. Simply pick the folder that contains the project and it will appear in your project's library.

To create a new project use the **New Project** button in the upper right corner of the page and follow the dialog instructions. You can pick a template, specify the project name and the target location. After that click the **Create Project** button and open it via double click or using the context menu (3 dots) in the projects library.

![New Flax Project Dialog](media/new-project-dialog.jpg)

Now it's time to [learn about Flax Editor](editor.md)...
Now it's time to [learn about the Flax Editor](editor.md)...

### Project from command line
## Project from command line

An alternative way to create a new project without using Flax Launcher is to run Flax Editor executable with `-new -project <new_project_path>` to create a new project inside a specified folder.
An alternative way to create a new project without using Flax Launcher is to run the Flax Editor executable with `-new -project <new_project_path>` to create a new project inside a specified folder.

## Next Step

<div class="frontpage">

<div class="frontpage-section">
<a href="editor.md"><img src="../editor/media/icon.jpg"></a>
<h3><a href="editor.md">Editor</a></h3>
<p>Learn how to work with Flax Editor.</p>
<a href="editor.md"><img src="../editor/media/icon.jpg" alt="a sample image of the editor"></a>
<h3><a href="editor.md">Editor</a></h3>
<p>Learn how to work with Flax Editor.</p>
</div>

</div>
13 changes: 1 addition & 12 deletions manual/get-started/distribute-a-game.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,7 @@ Now to prepare the final build. Remember to use **Release** mode and remove any

## 4. Distribute your game

Every platform has it's own building process and custom output data format but in most cases simply grab the files from the *Output* directory.
Every platform has it's own building process and custom output data format but in most cases simply grab the files from the *Output* directory.
How you distribute the game is up to you.

![Game Output](media/build-output.jpg)











13 changes: 6 additions & 7 deletions manual/get-started/editor.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,40 +12,39 @@ Follow these instructions to further your game development!
<div class="frontpage">

<div class="frontpage-section">
<a href="../editor/interface.md"><img src="../editor/media/layout-icon.jpg"></a>
<a href="../editor/interface.md"><img src="../editor/media/layout-icon.jpg" alt="a sample image of the Flax Editor interface"></a>
<h3><a href="../editor/interface.md">Interface</a></h3>
<p>Learn about Flax Editor interface and using dockable windows.</p>
</div>

<div class="frontpage-section">
<a href="../editor/play-in-editor.md"><img src="../editor/media/play-in-editor-icon.jpg"></a>
<a href="../editor/play-in-editor.md"><img src="../editor/media/play-in-editor-icon.jpg" alt="a sample image of the Flax Editor interface with play in-editor enabled"></a>
<h3><a href="../editor/play-in-editor.md">Play in-editor</a></h3>
<p>Test your game right in the editor.</p>
</div>

<div class="frontpage-section">
<a href="../editor/windows/index.md"><img src="../editor/windows/media/icon.jpg"></a>
<a href="../editor/windows/index.md"><img src="../editor/windows/media/icon.jpg" alt="a sample image of a Flax Editor window"></a>
<h3><a href="../editor/windows/index.md">Windows</a></h3>
<p>See the detailed documentation about editor windows.</p>
</div>

<div class="frontpage-section">
<a href="../editor/game-settings/index.md"><img src="../editor/game-settings/media/icon.jpg"></a>
<a href="../editor/game-settings/index.md"><img src="../editor/game-settings/media/icon.jpg" alt="a sample image of the Flax Editor settings window"></a>
<h3><a href="../editor/game-settings/index.md">Game Settings</a></h3>
<p>Learn about your game configuration and build settings.</p>
</div>

<div class="frontpage-section">
<a href="../editor/game-cooker/index.md"><img src="../editor/game-cooker/media/icon.jpg"></a>
<a href="../editor/game-cooker/index.md"><img src="../editor/game-cooker/media/icon.jpg" alt="a sample image of the Flax Editor Game cooker"></a>
<h3><a href="../editor/game-cooker/index.md">Game Cooker</a></h3>
<p>Cook your game files and produce ready to deploy files.</p>
</div>

<div class="frontpage-section">
<a href="../editor/advanced/index.md"><img src="../editor/advanced/media/icon.jpg"></a>
<a href="../editor/advanced/index.md"><img src="../editor/advanced/media/icon.jpg" alt="a sample image of using an advanced feature of the Flax Editor"></a>
<h3><a href="../editor/advanced/index.md">Advanced</a></h3>
<p>Learn some advanced stuff about using Flax Editor.</p>
</div>

</div>

18 changes: 10 additions & 8 deletions manual/get-started/flax-for-godot-devs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ Flax Editor and Godot Editor are very similar. You can see the color-coded, high

This section contains the most common terms used in Godot and their Flax equivalents (or rough equivalents). Flax keywords link directly to more in-depth information inside the documentation.

| Godot | Flax |
|--------|--------|
| **Node** | [Actor](../scenes/actors.md) |
| **Script** | [Script](../../scripting/index.md) |
| **Scene** | [Scene Window](../../editor/windows/scene-window.md) |
| **Inspector** | [Properties Window](../../editor/windows/properties-window.md) |
| **FileSystem** | [Content Window](../../editor/windows/content-window.md) |
| Godot | Flax |
| -------------- | -------------------------------------------------------------- |
| **Node** | [Actor](../scenes/actors.md) |
| **Script** | [Script](../../scripting/index.md) |
| **Scene** | [Scene Window](../../editor/windows/scene-window.md) |
| **Inspector** | [Properties Window](../../editor/windows/properties-window.md) |
| **FileSystem** | [Content Window](../../editor/windows/content-window.md) |

## Project

Expand Down Expand Up @@ -59,11 +59,12 @@ If you want to create multiple instances of compound object you can use [Prefabs
## Scripting

> [!Tip]
> Scripting in C# and C\+\+ is feature-complete and production-ready in Flax (compared to Godot). Also, Visual Scripting offers far more tools and features.
> Scripting in C# and C\+\+ is fully feature-complete and production-ready in Flax (in contrast to Godot). Also, Visual Scripting offers far more tools and features.

When it comes to game scripting, Flax supports Visual, C# and C\+\+ scripts (similar to Godot). The are some differences in C# API. In fact, the whole C# API is an open-source project and can be found [here](https://github.com/FlaxEngine/FlaxEngine). All contributions are welcome.

* Godot

```cs
public class MyScript : Node
{
Expand All @@ -75,6 +76,7 @@ public class MyScript : Node
```

* Flax

```cs
public class MyScript : Script
{
Expand Down
18 changes: 9 additions & 9 deletions manual/get-started/flax-for-ue4-devs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,39 +37,39 @@ This section contains the most common terms used in UE4 and their Flax equivalen

![Flax Project](../media/project-structure.png)

Flax projects structure is similar to UE4 projects. The editor uses **Cache** folder to keep temporary data. Also, **Content** folder works the same way as in Unreal (assets-only), while **Source** directory is used to keep all C# and C\+\+ scripts.
Flax projects structure is similar to UE4 projects. The editor uses the **Cache** folder to keep temporary data. Also, **Content** folder works the same way as in Unreal (assets-only), while **Source** directory is used to keep all C# and C\+\+ scripts.

Flax also generates a solution and project files for your game scripts.
Flax also generates a solution file and project files for your game scripts.

See [Flax projects structure](../project-structure.md) page to learn more about the projects in Flax Engine.
See the [Flax projects structure](../project-structure.md) page to learn more about the projects in Flax Engine.

## Assets

Flax also uses binary asset files with extension `.flax` (instead of `.uasset`). We are using our own binary format that is well optimized for scalability and streaming. Other assets are usually stored in `Json` format (scenes, settings, etc.).

Flax supports the most popular asset files formats (for 3D models and textures) so you can import your game content.

See [Assets](../assets/index.md) page to learn more about importing and using game assets.
See the [Assets](../assets/index.md) page to learn more about importing and using game assets.

## Scenes and Actors

Flax doesn't use components to build scene objects logic. We only use [Actors](../scenes/actors.md). Each Actor has its own type (e.g. point light, box collider) and a collection of attached scripts. This means, in Flax the scene object hierarchy is created with Actors.
Flax doesn't use components to build scene objects logic. We only use [Actors](../scenes/actors.md). Each Actor has its own type (e.g. point light, box collider) and a collection of attached scripts. This mean that in Flax, the scene object hierarchy is created with Actors.

However, you can still use the entity-component design with your scripts because every actor can have scripts.
You can use `GetChild<T>()`/`GetScript<T>()` methods in your scripts to access the other objects.

In Flax, Scene object is also an Actor so you can access it like any other Actor. This means that Scenes can have their own scripts and be transformed like other objects.

Also, multiple actors can have the same name and you can also move assets whenever you like because Flax uses unique IDs of the objects for tracking. This unlocks your development speed. We don't want to constrain your development to some ancient-design but to allow you to iterate faster and create beautiful games even easier.
Also, multiple actors can have the same name and you can also move assets whenever you like because Flax uses unique IDs of the objects for tracking. This unlocks your development speed. We don't want to constrain your development to some ancient design but to allow you to iterate faster and create beautiful games even easier.

## Scripting

When it comes to game scripting, there is a significant difference between Unreal and Flax.
Firstly, we support both C\+\+ and C# languages to write game code and Visual Scripting as an addition.
Using Visual Scripts or C# helps with rapid game development and simplifies the development while writing parts of the gameplay in C\+\+ can benefit the performance.
Firstly, we support both C\+\+ and C# languages to write game code, as well as Visual Scripting.
Using Visual Scripts or C# helps with rapid game development and simplifies development while writing parts of the gameplay in C\+\+ can benefit performance.
The Flax Engine core itself is written in C++, while Flax Editor is mostly written in C#.

You can create C# and C\+\+ files with script classes that provide a gameplay logic. Then scripts can be attached to the actors and used in a game. Our scripting C# API is an open-source project and can be found [here](https://github.com/FlaxEngine/FlaxEngine). All contributions are welcome.
You can create C# and C\+\+ files with script classes that provide gameplay logic. Then, scripts can be attached to the actors and used in a game. Our scripting C# API is an open-source project and can be found [here](https://github.com/FlaxEngine/FlaxEngine). All contributions are welcome.

Here is an example script that has been written for Unreal and Flax which prints the next number every frame.

Expand Down
21 changes: 12 additions & 9 deletions manual/get-started/flax-for-unity-devs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

![Unity to Flax](media/title.jpg)

Flax and Unity have many similarities (C# scripting, physics engine) and share many concepts, however there are a few differences. This page helps Unity Engine developers to translate their existing Unity experience into the world of Flax Engine.
Flax and Unity have many similarities (such as C# scripting, physics engine) and share many concepts, however there are a few differences. This page helps Unity Engine developers to translate their existing Unity experience into the world of Flax Engine.

> [!Warning]
> Warning! You will love the direction and development speed of this engine!
Expand Down Expand Up @@ -39,23 +39,23 @@ This section contains the most common terms used in Unity and their Flax equival

![Flax Project](../media/project-structure.png)

Flax projects structure is similar to Unity projects. Instead of **Library** folder, editor uses **Cache** folder. Also **Assets** folder from Unity is splitted into two separate parts: **Content** and **Source**. All C# script files are located in the source directory so there is less mess with assets and scripts.
Flax projects structure is similar to Unity projects. Instead of a **Library** folder, editor uses the **Cache** folder. Also the **Assets** folder from Unity is split into two separate parts: **Content** and **Source**. All C# script files are located in the source directory so there is less mess with assets and scripts.

Flax also generates a solution and project files for your game C# scripts.
Flax also generates a solution file and project files for your game C# scripts.

See [Flax projects structure](../project-structure.md) page to learn more about the projects in Flax Engine.
See the [Flax projects structure](../project-structure.md) page to learn more about the projects in Flax Engine.

## Assets

Flax doesn't use `.meta` files. Instead, every asset contains all required metadata information and is a self contained file. Files with the extension `.flax` are using our own binary format that is well optimized for scalability and streaming. Other assets are usually stored in `Json` format (scenes, settings, etc.).

Flax supports the most popular asset file formats (for 3D models and textures) so you can import your game content.

See [Assets](../assets/index.md) page to learn more about importing and using game assets.
See the [Assets](../assets/index.md) page to learn more about importing and using game assets.

## GameObject vs Actor

Flax doesn't use components to build scene objects logic. We use [Actors](../scenes/actors.md). Each Actor has its own type (e.g. point light, box collider) and a collection of attached scripts. Also there is no *TransformComponent* but Actors have built-in transformation (less objects, more optimized design for bigger games). This means, in Flax the scene objects hierarchy is created with Actors, not by Transforms like in Unity.
Flax doesn't use components to build scene objects logic. We use [Actors](../scenes/actors.md). Each Actor has its own type (e.g. point light, box collider) and a collection of attached scripts. Also there is no *TransformComponent*, but Actors have built-in transformation (less objects, more optimized design for bigger games). This means that in Flax, the scene object hierarchy is created with Actors, not by Transforms like in Unity.

However, you can still use the entity-component design with your scripts because every actor can have scripts like in Unity.
Just instead of using `GetComponent<T>()` in your scripts, write `GetChild<T>()`/`GetScript<T>()`.
Expand All @@ -67,13 +67,14 @@ In Flax, a Scene object is also an Actor so you can access it like any other Act

## MonoBehaviour vs Script

When it comes to game scripting, Unity and Flax are very similar. There are some differences in C# API (Flax has bigger math library, is more performance-oriented and uses new C# 11 via .NET 7). In fact, the whole C# editor and C++ engine including scripting API is open and can be found [here](https://github.com/FlaxEngine/FlaxEngine). All contributions are welcome.
When it comes to game scripting, Unity and Flax are very similar. There are some differences in C# API (Flax has a bigger math library, is more performance-oriented and uses new C# 11 via .NET 7). In fact, the whole C# editor and C++ engine including scripting API is open and can be found [here](https://github.com/FlaxEngine/FlaxEngine). All contributions are welcome.

Also, Flax support native **[C++](../../scripting/cpp/index.md)** scripting and **[Visual Scripting](../../scripting/visual/index.md)** as a built-in feature. We don't want to limit our developers to just one programming language for the game development as using C\+\+ and Visual Scripting together with C# can benefit.
Also, Flax support native **[C++](../../scripting/cpp/index.md)** scripting and **[Visual Scripting](../../scripting/visual/index.md)** as built-in features. We don't want to limit our developers to just one programming language for game development as using C\+\+ and Visual Scripting together with C# can be beneficial.

If you write C# scripts simply replace `MonoBehaviour` with `Script` as it makes more sense (and is shorter to write).
If you write C# scripts simply replace `MonoBehaviour` with `Script`. It makes more sense (and is shorter to write).

* Unity

```cs
public class MyScript : MonoBehaviour
{
Expand All @@ -85,6 +86,7 @@ public class MyScript : MonoBehaviour
```

* Flax

```cs
public class MyScript : Script
{
Expand All @@ -100,6 +102,7 @@ See [Scripting](../../scripting/index.md) documentation to learn more about C# s
## Cool things in the C# API

If you're a programmer here is a list of new cool things in Flax C# API that may be useful:

* You can use the latest .NET 7 and new C# 11
* Engine and Editor are open with full source code ([link](https://github.com/FlaxEngine/FlaxEngine))
* You can edit all input settings at runtime ([link](https://docs.flaxengine.com/api/FlaxEngine.Input.html))
Expand Down
Loading