bevy/README.md

61 lines
3.9 KiB
Markdown
Raw Normal View History

2020-05-01 20:12:47 +00:00
# [![Bevy](assets/branding/bevy_logo_light_small.svg)](https://bevyengine.org)
2020-01-22 04:00:24 +00:00
[![Crates.io](https://img.shields.io/crates/v/bevy.svg)](https://crates.io/crates/bevy)
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/bevyengine/bevy/LICENSE)
[![Crates.io](https://img.shields.io/crates/d/bevy.svg)](https://crates.io/crates/bevy)
## What is Bevy?
2019-12-10 07:29:52 +00:00
Bevy is an open-source modular game engine built in Rust, with a focus on developer productivity and performance.
2019-12-10 07:29:52 +00:00
2020-01-22 04:13:08 +00:00
## WARNING
2020-01-22 04:00:24 +00:00
Bevy is still in the _very_ early stages of development. APIs can and will change. Important features are missing. Documentation is non-existent. Please don't build any serious projects in Bevy unless you are prepared to be broken by api changes constantly.
2020-01-22 04:00:24 +00:00
2020-01-21 11:11:38 +00:00
## Design Goals
2020-05-16 02:30:02 +00:00
* Provide a first class developer experience for both 2D and 3D games.
2020-01-21 11:11:38 +00:00
* Easy for newbies to pick up, but infinitely flexible for power users.
2020-01-22 04:00:24 +00:00
* Fast iterative compile times. Ideally less than 1 second for small to medium sized projects.
* Data-first game development using ECS (Entity Component System)
2020-04-07 05:11:28 +00:00
* Modular design: use only what you need ... replace what you don't like
2020-01-21 11:11:38 +00:00
* High performance and parallel architecture
* Use the latest and greatest rendering technologies and techniques
## About
2020-01-21 11:11:38 +00:00
* **[Features](https://bevyengine.org/learn/book/introduction/features):** A quick overview of Bevy's features.
* **[Roadmap](https://bevyengine.org/learn/book/contributing/roadmap):** The Bevy team's development plan.
2020-01-21 11:11:38 +00:00
## Docs
2020-02-22 23:01:11 +00:00
2020-05-30 20:10:20 +00:00
* **[The Bevy Book](https://bevyengine.org/learn/book/introduction):** Bevy's official documentation. The best place to start learning Bevy.
* **[Bevy Rust API Docs](https://docs.rs/bevy):** Bevy's Rust API docs, which are automatically generated from the doc comments in this repo.
2020-02-22 23:01:11 +00:00
## Getting Started
2020-01-21 11:11:38 +00:00
2020-05-30 20:10:20 +00:00
We recommend checking out [The Bevy Book](https://bevyengine.org/learn/book/introduction) for a full tutorial. You can quickly try out the [examples](/examples) by cloning this repo and running the following command:
```sh
# Runs the "scene" example
2020-04-06 22:54:17 +00:00
cargo run --example scene
2020-01-21 11:11:38 +00:00
```
### Nightly Compiler
2020-04-06 22:54:17 +00:00
Bevy requires nightly rust right now. It currently uses [specialization](https://github.com/rust-lang/rfcs/blob/master/text/1210-impl-specialization.md) features, which are unstable. If specialization goes stable soon then we can go back to a stable compiler. [There is actually good forward progress happening here](https://github.com/rust-lang/rust/pull/68970). In the meantime, we will try our best to remove specialization usage so we can go back to stable.
2020-01-21 11:11:38 +00:00
## Libraries Used
Bevy is only possible because of the hard work put into these foundational technologies:
* [wgpu-rs](https://github.com/gfx-rs/wgpu-rs): modern / low-level / cross platform graphics library inspired by Vulkan
* [legion](https://github.com/TomGillen/legion): a feature rich high performance ECS library
* [glam-rs](https://github.com/bitshifter/glam-rs): a simple and fast 3D math library for games and graphics
* [winit](https://github.com/rust-windowing/winit): cross platform window creation and management in Rust
2020-01-22 04:00:24 +00:00
* [legion_transform](https://github.com/AThilenius/legion_transform): A hierarchical space transform system, implemented using Legion ECS
2020-02-18 03:31:33 +00:00
* [shaderc](https://github.com/google/shaderc-rs): compiles GLSL and HLSL shaders to SPIR-V binaries
* [spirv-reflect](https://github.com/gwihlidal/spirv-reflect-rs): Reflection API in rust for SPIR-V shader byte code
2020-01-22 04:00:24 +00:00
Additionally, we would like to thank the [Amethyst](https://github.com/amethyst/amethyst), [coffee](https://github.com/hecrj/coffee), [ggez](https://github.com/ggez/ggez), and [Piston](https://github.com/PistonDevelopers/piston) projects for providing solid examples of game engine development in Rust. If you are looking for a Rust game engine, it is worth considering all of your options. Each engine has different design goals and some will likely resonate with you more than others.