mirror of
https://github.com/FyroxEngine/Fyrox.git
synced 2026-10-12 02:02:20 +00:00
## Why To have faster/easier learning curve and not go through docs, would be nice to have README explain how to get started
300 lines
10 KiB
Markdown
300 lines
10 KiB
Markdown
<div align="center">
|
|
<a href="https://fyrox.rs/">
|
|
<img src="pics/logo.png" width="128" height="128" alt="Fyrox" />
|
|
</a>
|
|
<h1>Fyrox - a modern Rust game engine</h1>
|
|
</div>
|
|
|
|
[](https://github.com/FyroxEngine/Fyrox/blob/master/LICENSE.md)
|
|
[](https://github.com/FyroxEngine/Fyrox/actions/workflows/ci.yml)
|
|
[](https://github.com/FyroxEngine/Fyrox/actions/workflows/audit.yml)
|
|
[](https://deps.rs/repo/github/FyroxEngine/Fyrox)
|
|
[](https://crates.io/crates/fyrox)
|
|
[](https://docs.rs/Fyrox/)
|
|
[](https://discord.gg/xENF5Uh)
|
|
[](https://github.com/FyroxEngine/Fyrox)
|
|
|
|
A feature-rich, production-ready, general purpose 2D/3D game engine written in Rust with a scene editor.
|
|
_Formerly known as rg3d_
|
|
|
|
## Support
|
|
|
|
If you want to support the development of the project, click the link below. Preferrable way is to use [Boosty](https://boosty.to/fyrox) - this way the money
|
|
will be available for the development immediately. Alternatively you can can use [Patreon](https://www.patreon.com/mrdimas), but in this case the money will
|
|
be on-hold for unknown period of time ([details are here](https://github.com/FyroxEngine/Fyrox/issues/363)).
|
|
|
|
## Community
|
|
|
|
[Join the Discord server](https://discord.gg/xENF5Uh)
|
|
|
|
## [Learning materials](https://fyrox-book.github.io/)
|
|
|
|
[Read the official Fyrox book here.](https://fyrox-book.github.io/) It is in early development stage, but it should
|
|
help you start using the engine, also the book contains a series of tutorials that should help you to create your
|
|
first game.
|
|
|
|
## Features
|
|
|
|
[](https://www.youtube.com/watch?v=N8kmZ9aBtZs)
|
|
|
|
### General
|
|
|
|
- Exceptional safety, reliability, and speed.
|
|
- PC (Windows, Linux, macOS) and [Web (WebAssembly) support](https://fyrox.rs/assets/webexample/index.html).
|
|
- Modern 3D rendering pipeline.
|
|
- Comprehensive [documentation](https://docs.rs/Fyrox).
|
|
- [Guide book](https://fyrox-book.github.io)
|
|
- 2D support.
|
|
- [Scene editor](https://github.com/FyroxEngine/Fyrox/tree/master/editor).
|
|
- Fast iterative compilation.
|
|
- Classic object-oriented design.
|
|
- Lots of examples.
|
|
|
|
### Rendering
|
|
|
|
- Custom shaders, materials, and rendering techniques.
|
|
- Physically-based rendering.
|
|
- Metallic workflow.
|
|
- High dynamic range (HDR) rendering.
|
|
- Tone mapping.
|
|
- Color grading.
|
|
- Auto-exposure.
|
|
- Gamma correction.
|
|
- Deferred shading.
|
|
- Directional light.
|
|
- Point lights + shadows.
|
|
- Spotlights + shadows.
|
|
- Screen-Space Ambient Occlusion (SSAO).
|
|
- Soft shadows.
|
|
- Volumetric light (spot, point).
|
|
- Batching.
|
|
- Instancing.
|
|
- Fast Approximate Anti-Aliasing (FXAA).
|
|
- Normal mapping.
|
|
- Parallax mapping.
|
|
- Render in texture.
|
|
- Forward rendering for transparent objects.
|
|
- Sky box.
|
|
- Deferred decals.
|
|
- Multi-camera rendering.
|
|
- Lightmapping.
|
|
- Soft particles.
|
|
- Fully customizable vertex format.
|
|
- Compressed textures support.
|
|
- High-quality mip-map on-demand generation.
|
|
|
|
### Scene
|
|
|
|
- Multiple scenes.
|
|
- Full-featured scene graph.
|
|
- Level-of-detail (LOD) support.
|
|
- GPU Skinning.
|
|
- Various scene nodes:
|
|
- Pivot.
|
|
- Camera.
|
|
- Decal.
|
|
- Mesh.
|
|
- Particle system.
|
|
- Sprite.
|
|
- Multilayer terrain.
|
|
- Rectangle (2D Sprites)
|
|
- Rigid body + Rigid Body 2D
|
|
- Collider + Collider 2D
|
|
- Joint + Joint 2D
|
|
|
|
### Sound
|
|
|
|
- [High quality binaural sound with HRTF support](https://github.com/FyroxEngine/Fyrox/tree/master/fyrox-sound).
|
|
- Generic and spatial sound sources.
|
|
- Built-in streaming for large sounds.
|
|
- Raw samples playback support.
|
|
- WAV/OGG format support.
|
|
- HRTF support for excellent positioning and binaural effects.
|
|
- Reverb effect.
|
|
|
|
### Serialization
|
|
|
|
- Powerful serialization system
|
|
- Almost every entity of the engine can be serialized
|
|
- No need to write your own serialization.
|
|
|
|
### Animation
|
|
|
|
- Animation blending state machine - similar to Mecanim in Unity Engine.
|
|
- Animation retargetting - allows you to remap animation from one model to another.
|
|
|
|
### Asset management
|
|
|
|
- Advanced asset manager.
|
|
- Fully asynchronous asset loading.
|
|
- PNG, JPG, TGA, DDS, etc. textures.
|
|
- FBX models loader.
|
|
- WAV, OGG sound formats.
|
|
- Compressed textures support (DXT1, DXT3, DTX5).
|
|
|
|
### Artificial Intelligence (AI)
|
|
|
|
- A* pathfinder.
|
|
- Navmesh.
|
|
- Behavior trees.
|
|
|
|
### User Interface (UI)
|
|
|
|
- [Advanced node-based UI](https://github.com/FyroxEngine/Fyrox/tree/master/fyrox-ui) with lots of widgets.
|
|
- More than 32 widgets
|
|
- Powerful layout system.
|
|
- Full TTF/OTF fonts support.
|
|
- Based on message passing.
|
|
- Fully customizable.
|
|
- GAPI-agnostic.
|
|
- OS-agnostic.
|
|
- Button widget.
|
|
- Border widget.
|
|
- Canvas widget.
|
|
- Color picker widget.
|
|
- Color field widget.
|
|
- Check box widget.
|
|
- Decorator widget.
|
|
- Drop-down list widget.
|
|
- Grid widget.
|
|
- Image widget.
|
|
- List view widget.
|
|
- Popup widget.
|
|
- Progress bar widget.
|
|
- Scroll bar widget.
|
|
- Scroll panel widget.
|
|
- Scroll viewer widget.
|
|
- Stack panel widget.
|
|
- Tab control widget.
|
|
- Text widget.
|
|
- Text box widget.
|
|
- Tree widget.
|
|
- Window widget.
|
|
- File browser widget.
|
|
- File selector widget.
|
|
- Docking manager widget.
|
|
- NumericUpDown widget.
|
|
- `Vector3<f32>` editor widget.
|
|
- Menu widget.
|
|
- Menu item widget.
|
|
- Message box widget.
|
|
- Wrap panel widget.
|
|
- Curve editor widget.
|
|
- User defined widget.
|
|
|
|
### Physics
|
|
|
|
- Advanced physics (thanks to the [rapier](https://github.com/dimforge/rapier) physics engine)
|
|
- Rigid bodies.
|
|
- Rich set of various colliders.
|
|
- Joints.
|
|
- Ray cast.
|
|
- Many other useful features.
|
|
- 2D support.
|
|
|
|
## Screenshots
|
|
|
|
These screenshots are from [Station Iapetus](https://github.com/mrDIMAS/StationIapetus) which is a commercial project
|
|
made with the engine.
|
|
|
|

|
|
|
|

|
|
|
|
These screenshots are from [rusty-shooter](https://github.com/mrDIMAS/rusty-shooter) which is a big demo for the engine.
|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|
## [Examples](https://github.com/FyroxEngine/Fyrox/tree/master/examples)
|
|
|
|
There are many examples covering various aspects of the engine. Also don't hesitate to create an issue or ask on Discord if you need help!
|
|
|
|
## Quick start
|
|
To start new project and use [Editor](https://github.com/FyroxEngine/Fyrox/tree/master/editor), run:
|
|
```sh
|
|
fyrox-template init --name fyrox_test --style 2d
|
|
cd fyrox_test
|
|
cargo run --package editor --release
|
|
```
|
|
[](https://github.com/FyroxEngine/Fyrox/tree/master/editor)
|
|
|
|
## Dependencies
|
|
|
|
### Linux
|
|
|
|
On Linux Fyrox needs the development files for the following libraries: `libxcb-shape0`, `libxcb-xfixes0`, `libxcb1`, `libxkbcommon`, `libasound2`.
|
|
|
|
For Debian based distros like Ubuntu, they can be installed like below
|
|
|
|
```shell
|
|
sudo apt install libxcb-shape0-dev libxcb-xfixes0-dev libxcb1-dev libxkbcommon-dev libasound2-dev
|
|
```
|
|
|
|
|
|
## Contributing
|
|
|
|
Contributions are very welcome! Feel free to open Issues and Pull Requests.
|
|
|
|
Check the [good first issue](https://github.com/FyroxEngine/Fyrox/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) label to see where you can help.
|
|
|
|
## Sponsors
|
|
|
|
The engine is supported by very generous people, their donations provides sustainable development of the engine:
|
|
|
|
### Bronze patrons
|
|
|
|
[Brandon Thomas](https://www.patreon.com/user?u=34951681)
|
|
[Taylor C. Richberger](https://www.patreon.com/user/creators?u=60141723)
|
|
|
|
### Patrons
|
|
|
|
[Avery Wagar](https://www.patreon.com/user?u=41863848)
|
|
[George Atkinson](https://www.patreon.com/user?u=61771027)
|
|
[Erlend Sogge Heggen](https://www.patreon.com/amethystengine/creators)
|
|
[Mitch Skinner](https://www.patreon.com/user/creators?u=60141723)
|
|
[ozkriff](https://www.patreon.com/ozkriff)
|
|
[Taylor Gerpheide](https://www.patreon.com/user/creators?u=32274918)
|
|
[zrkn](https://www.patreon.com/user/creators?u=23413376)
|
|
[Aleks Row](https://www.patreon.com/user/creators?u=51907853)
|
|
[Edward L](https://www.patreon.com/user/creators?u=53507198)
|
|
[L.apz](https://www.patreon.com/user/creators?u=5448832)
|
|
[Luke Jones](https://www.patreon.com/flukejones)
|
|
[toyboot4e](https://www.patreon.com/user/creators?u=53758973)
|
|
[Vish Vadlamani](https://www.patreon.com/user/creators?u=42768509)
|
|
[Alexey Kuznetsov](https://www.patreon.com/user?u=39375025)
|
|
[Daniel Simon](https://www.patreon.com/user/creators?u=43754885)
|
|
[Jesper Nordenberg](https://www.patreon.com/jesnor)
|
|
[Kornel](https://www.patreon.com/user?u=59867)
|
|
[Parham Gholami](https://www.patreon.com/user?u=33009238)
|
|
[Yuki Ishii](https://www.patreon.com/user/creators?u=9564103)
|
|
[Joseph Catrambone](https://www.patreon.com/user?u=4738580)
|
|
[MGlolenstine](https://github.com/MGlolenstine)
|
|
[zamar lomax](https://www.patreon.com/user?u=65928523)
|
|
[Gheorghe Ugrik](https://www.patreon.com/user?u=54846813)
|
|
[Anton Zelenin](https://www.patreon.com/user?u=62378966)
|
|
[Barugon](https://www.patreon.com/user?u=11344465)
|
|
|
|
### Former patrons
|
|
|
|
[Tom Leys](https://www.patreon.com/user?u=222856)
|
|
[Jay Sistar](https://www.patreon.com/user?u=284041)
|
|
[tc](https://www.patreon.com/user?u=11268466)
|
|
[false](https://www.patreon.com/user?u=713537)
|
|
[BlueSkye](https://www.patreon.com/EmotionalSnow)
|
|
[Ben Anderson](https://www.patreon.com/user/creators?u=14436239)
|
|
[Thomas](https://www.patreon.com/user?u=317826)
|
|
[Iulian Radu](https://www.patreon.com/user?u=8698230)
|
|
[Vitaliy (ArcticNoise) Chernyshev](https://www.patreon.com/user?u=2601918)
|
|
|
|
### JetBrains
|
|
|
|
JetBrains provided an open-source all-products license for their products which drastically helps in development of the engine.
|
|
|
|
<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png" alt="JetBrains logo." width="200" height="200">
|
|
|
|
_Copyright © 2000-2021 [JetBrains](https://jb.gg/OpenSource) s.r.o. JetBrains and the JetBrains logo are registered trademarks of JetBrains s.r.o._
|