Skip to content
Data-oriented and data-driven game engine written in Rust
Branch: master
Clone or download
bors and 0x6273 Merge #1496
1496: Fix some clippy lint warnings r=LucioFranco a=0x6273

## Description

This fixes 68 warnings. (Only 121 more to go!)

## Modifications

- Various code style improvements.
- Fix a bug where objects would be needlessly allocated in .unwrap_or() and
  similar functions.

## PR Checklist

By placing an x in the boxes I certify that I have:

- [x] Ran `cargo test --all` locally if this modified any rs files.
- [x] Ran `cargo +stable fmt --all` locally if this modified any rs files.
- [x] Updated the content of the book if this PR would make the book outdated.
- [ ] Added a changelog entry if this will impact users, or modified more than 5 lines of Rust that wasn't a doc comment.
- [x] Added unit tests for new APIs if any were added in this PR.
- [x] Acknowledged that by making this pull request I release this code under an MIT/Apache 2.0 dual licensing scheme.

Co-authored-by: 0x40 <0x40@keemail.me>
Latest commit 8edc4e3 Mar 31, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.concourse Fix concourse testing Feb 12, 2019
.github
amethyst_animation Fix some clippy lint warnings Mar 30, 2019
amethyst_assets Fix some clippy lint warnings Mar 30, 2019
amethyst_audio rustfmt Feb 28, 2019
amethyst_config Fix some clippy lint warnings Mar 30, 2019
amethyst_controls Fix some clippy lint warnings Mar 30, 2019
amethyst_core
amethyst_derive rustfmt Feb 28, 2019
amethyst_error
amethyst_gltf Updated: env_logger, gfx Mar 8, 2019
amethyst_input Fix some clippy lint warnings Mar 30, 2019
amethyst_locale Showcasing crate re-export rename. Feb 12, 2019
amethyst_network rustfmt Feb 28, 2019
amethyst_renderer Merge #1496 Mar 30, 2019
amethyst_test
amethyst_ui Fix some clippy lint warnings Mar 30, 2019
amethyst_utils
book
docs
examples Merge #1484 Mar 28, 2019
src Fix some clippy lint warnings Mar 30, 2019
.gitattributes
.gitignore
.gitlab-ci.yml
.travis.yml
CODE_OF_CONDUCT.md
COPYING Move some files from the root directory into docs Mar 12, 2018
Cargo.toml
README.md Added reddit badge Mar 19, 2019
bors.toml
build.rs
rustfmt.toml

README.md

Amethyst

Build Status Crates.io docs page MIT/Apache Join us on Discord Community forum Reddit Lines of Code

What is Amethyst?

Amethyst is a data-driven and data-oriented game engine aiming to be fast and as configurable as possible.

Principles

These principles are what makes Amethyst unique and competitive in the world of game engines:

  • Massively parallel architecture.
  • Powered by a correct Entity Component System model.
  • Rapid prototyping with RON files for prefabs and an abstract scripting API.
  • Strong focus on encouraging reusability and clean interfaces.

Why Amethyst?

Extreme Multithreading

Amethyst is based over a very powerful parallel ECS called Specs. This allows games built with Amethyst to maximize the available processing power to run as smoothly and as quickly as possible, without the headaches of multi-threaded programming.

Clean

By design, the Amethyst engine encourages you to write clean and reusable code for your behaviours and data structures. This allows engine users to easily share useful components, thus reducing development time and cost.

Using the ECS architecture, the code of games can be cleanly divided between data and behaviour, making it easy to understand what is going on, even if the game is running on a massive 64-core processor.

Community

While we may not be feature-packed (yet!), we all strongly believe that the community-oriented side of Amethyst will thrive as we move forward!

Features

Please visit the features page for a list of features Amethyst provides.

Navigation

Usage

While the engine can be hard to use at times, we made a lot of documentation that will teach you everything you need to use Amethyst comfortably.

If you don't understand a part of the documentation, please let us know. Join us on Discord or open an issue; we are always happy to help!

Getting started

To compile any of the examples run:

$ cargo run --example name_of_example

All available examples are listed under the examples directory.

For a full-blown "Hello World" tutorial check out the Getting Started chapter in the book.

There are also many open source games and prototypes being made with Amethyst. See our showcase in the regularly updated Games Made With Amethyst thread on the community forum for some good sources of inspiration.

Dependencies

If you are compiling on Linux, make sure to install the dependencies below.

Additionally, make sure you have EGL installed. Since the package depends on your drivers, we cannot list it here.

Debian/Ubuntu

$ sudo apt install pkg-config libasound2-dev libssl-dev cmake libfreetype6-dev libexpat1-dev libxcb-composite0-dev

Fedora

$ sudo dnf install alsa-lib-devel openssl-devel cmake freetype-devel expat-devel libxcb-devel

Other

See your distribution-specific installation process for the equivalent dependencies.

Please note that you need to have a functional graphics driver installed. If you get a panic about the renderer unable to create the context when trying to run an example, a faulty driver installation could be the issue.

Building Documentation

You can build the book locally with:

$ cargo install mdbook
$ mdbook build book

If you're actively editing the book, it's easiest to run:

$ mdbook serve book

and navigate to http://localhost:3000. The text itself can be found in book/html/index.html. For more information, please see the mdBook project.

To generate the API documentation locally, do:

$ cargo doc

The API reference can be found in target/doc/amethyst/index.html.

Questions/Help

Amethyst supports only the latest stable release of Rust. Use the nightly and beta channels with this project at your own risk.

If you have a question, please check out the FAQ before asking. Chances are, the solution to your problem is already present there. If you still need help, feel free to ask on our Discord server.

Other places you might want to check out are r/rust_gamedev and the #rust-gamedev IRC.

Contributing

Note: Any interaction with the Amethyst project is subject to our Code of Conduct.

Amethyst is a community-based project that welcomes contributions from anyone. If you're interested in helping out, please read the contribution guidelines before getting started.

We have a good first issue category that groups all issues or feature requests that can be made without having an extensive knowledge of Rust or Amethyst. Working on those issues is a good, if not the best, way to learn.

If you think you are not ready to code yet, you can still contribute by reviewing code written by other members of the community. Code reviews ensure that code merged into Amethyst is of the highest quality as possible. Pull requests that are available for reviews can be found here.

If for some reason we don't have any open PRs in need of a review nor any good first issues (that would be a good thing), feel free to consult our issue tracker.

Backers

Thank you to all our backers! 🙏 Become a backer

Sponsors

Amethyst is supported by:

License

Amethyst is free and open source software distributed under the terms of both the MIT License and the Apache License 2.0.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

You can’t perform that action at this time.