Amethyst offers a well-documented design for beginners, but its development is halted so it’s not advisable for commercial projects. Bevy, however, is constantly evolving, prioritizing community contribution. It’s fast, robust, supports major platforms and is geared towards game enthusiasts and indie studios, making it an optimal choice.

Bevy vs Amethyst comparison

Key Differences Between Bevy and Amethyst

  • Development Progress: Bevy is consistently updated and active; Amethyst’s development is paused.
  • Suitable Audience: Bevy targets indie studios and enthusiasts; Amethyst primarily serves beginners.
  • Platform Support: Bevy supports all significant platforms and anticipates Android; Amethyst details unavailable.
  • Project Feasibility: Amethyst is considered pre-release, not suitable for commercial projects; Bevy caters to both small and potential larger studios.
Comparison Bevy Engine Amethyst Engine
Design Philosophy Data-oriented, Entity Component System (ECS) Data-driven, Data-oriented, Entity Component System (ECS)
Key Features 2D & 3D rendering, UI functionality, Sound loading, Hot reloading Multithreading, Rapid prototyping, Reusability, Clean interfaces
Platform Support Windows, MacOS, Linux, Web, iOS (with future Android support) Rust version 1.47
Community Support Discord, subreddit, GitHub Discussions, Bevy Assets collection Discord
Development Stage Ongoing, with regular updates and community feedback Development has been halted, considered pre-release
Target Audience Indies, Enthusiasts (Short-term), Larger studios (Long-term) Beginners, Not recommended for large, commercial projects

What Is Bevy and Who’s It For?

Bevy is a high-performance, data-driven game engine built in Rust designed with a focus on data-oriented architecture using the Entity Component System (ECS) paradigm. The engine is fully equipped with 2D and 3D rendering, robust user interface (UI) functionality, sound loading and hot reloading for real-time feedback. Designed with compatibility in mind, Bevy works seamlessly across a range of major platforms like Windows, MacOS, Linux, Web, and iOS, with Android compatibility anticipated. Strictly intended for development enthusiasts, Bevy is commonly sought by independent creators and is envisioned to eventually appeal to larger studios.

Colorful 3D rendering of a gaming world on a Bevy engine, in a modern developer workspace

Pros of Bevy

  • Wide range of features including 2D/3D rendering and sound loading.
  • Quick compile time (0.8-3.0 seconds with ‘fast compiles’).
  • Open-source with community support.
  • Customizable functionality via cargo features.

Cons of Bevy

  • Dependence on Rust language improvements can lead to API changes.
  • Anticipated features like wasm, webgpu and Android support yet to be implemented.
  • Development is currently aiming at smaller users, could limit larger-studio appeal.

What Is Amethyst and Who’s It For?

Amethyst is a data-driven, data-oriented game engine, originally built with a highly parallel architecture and the Entity Component System (ECS). Designed for rapid prototyping and beginner-friendly experiences, the engine runs concurrently on Rust version 1.47, offering clean interfaces and reusable assets. Although development of Amethyst has been suspended, it was envisioned to cater to developers in the creation of both 2D and 3D games and not intended for large-scale commercial projects due to its current developmental stage.

Colorful game created with Amethyst engine on a designer's computer screen

Pros of Amethyst

  • Data-driven approach for creative flexibility.
  • Open-source with community support.
  • Parallel architecture for improved performance.
  • Reusability and clean interface design.

Cons of Amethyst

  • Development has been halted.
  • Not suitable for large, commercial projects.
  • Criticized for being general-purpose without a defined game application.

Bevy vs Amethyst: Pricing

The striking difference between Bevy and Amethyst is that while Bevy is absolutely free, the pricing specifics for Amethyst aren’t readily available.

Bevy

As a free and open-source technology, Bevy allows users unrestricted access to a range of modern game development tools. It operates under flexible MIT or Apache 2.0 licenses, offering tremendous value without a single penny exchanged.

Amethyst

Amethyst, on the other hand, doesn’t list explicit pricing information. Given its continued development and status as a pre-release product, it fails to provide clear cost expectations for users. Importantly, it holds corporate sponsorship from businesses like DigitalOcean and Sentry, signalling the potential for a cost-based pricing structure in the future.

Code Examples for Bevy & Amethyst

Bevy

This code snippet showcases how to create a simple sprite animation in Bevy. This assumes you have the appropriate dependencies in your project and the sprite sheet is correctly set up.

use bevy::prelude::*;
struct Animation {
  frame: u32,
}
fn main() {
    App::build()
        .add_plugins(DefaultPlugins)
        .add_startup_system(setup.system())
        .add_system(animate_sprite.system())
        .run();
}
fn setup(commands: &Commands, asset_server: Res<assetserver>) {
    let texture_handle = asset_server.load("spritesheet.png");
    commands.spawn(Camera2dBundle::default())
        .spawn(SpriteBundle {
            texture: texture_handle,
            ..Default::default()
        })
            .with(Animation { frame: 0 });
}
fn animate_sprite(time: Res<time>, mut query: Query<(&mut TextureAtlasSprite, &Animation)>) {
    for (mut sprite, animation) in query.iter_mut() {
        sprite.index = (animation.frame + (time.seconds_since_startup() as u32 * 8) % 8) as u16;
    }
}</time></assetserver>

Amethyst

The following Amethyst code demonstrates how to set up a simple 2D game. Dependencies involving amethyst::prelude, Paddle and Pong components are necessary for effective code execution.

use amethyst::prelude::*;
struct Paddle;
struct Pong;
impl SimpleState for Pong {}
fn main() {
   let game_data = GameDataBuilder::default()
       .with(PaddleSystem, "paddle_system", &[]);
   let mut game = CoreApplication::<_, GameData>::build("/", Pong)?.build(game_data)?;
   game.run();
}
struct PaddleSystem;
impl<'s> System<'s> for PaddleSystem {
   type SystemData = ();
   fn run(&mut self, (): Self::SystemData) {}
}

So, Bevy or Amethyst: Which Tailors to Your Tech-stitch?

Between Bevy’s data-driven dynamics and Amethyst’s pliable parallel architecture, your choice boils down to your specific needs and ambitions. Let’s dive deeper.

For Developers: Pragmatic Programmers

Bevy edges forward for its consistent updates and dynamic community involvement. Rust’s compatibility garners positive views with its fast compile times. However, developers need to anticipate API-breaking changes due to Rust’s constant improvements.

focused developer, immersed in data-driven design, navigating through Bevy, appreciating its fast compile times and user-focused community

For Game Creators: Design Dreamers

Amethyst could be a better fit for creators seeking a beginner-friendly interface. Despite its development halt, it offers a rich field for rapid prototyping, powered by well-curated documentation and a robust Developer Community.

aspiring game creator, tapping into Amethysts rapid prototyping and beginner-friendly features, dreaming about a successful game

For Tech Curators: Future-focused Tech Enthusiasts

Bevy’s forward-looking plans of integrating modern web standards such as wasm and webgpu make it the future-oriented choice. Moreover, its stated vision of catering to larger studios set it as the one to watch.

tech enthusiast, eyes bright with visions of future tech pioneering, considering Bevy's web standards

When it boils down to Bevy vs Amethyst, Bevy stands out with its dynamic updates, faster compile times and robust community. However, for beginners and rapid prototypers, Amethyst remains a viable option, despite halted updates.

Grant Sullivan

Content writer @ Aircada and self proclaimed board game strategist by day, AI developer by night.