Bevy / Rust

Getting Started with Bevy: A Rust Game Engine Adventure

My first steps into game development with Bevy, exploring ECS architecture and building a simple 2D game.

Getting Started with Bevy

After spending years in web development, I decided to venture into game development. Bevy caught my attention as a data-driven game engine written in Rust, and here’s what I learned.

Why Bevy?

Bevy stands out for several reasons:

  • Pure Rust: No C++ bindings, just clean Rust code
  • ECS Architecture: Entity Component System makes game logic modular and performant
  • Hot Reloading: See changes without recompiling everything
  • Modern Design: Built with modern Rust patterns

Setting Up Your First Project

Creating a new Bevy project is straightforward:

cargo new my_game
cd my_game

Then add Bevy to your Cargo.toml:

[dependencies]
bevy = "0.14"

Your First Bevy App

Here’s the classic “Hello World” in Bevy:

use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .add_systems(Update, greet_system)
        .run();
}

fn setup(mut commands: Commands) {
    commands.spawn(Camera2d::default());
}

fn greet_system() {
    println!("Hello from Bevy!");
}

Understanding ECS

The Entity Component System is the heart of Bevy:

  • Entities: Just IDs, like a unique identifier
  • Components: Data attached to entities (position, velocity, health)
  • Systems: Functions that operate on entities with specific components
// Components
#[derive(Component)]
struct Position { x: f32, y: f32 }

#[derive(Component)]
struct Velocity { x: f32, y: f32 }

// System that moves entities
fn movement_system(mut query: Query<(&mut Position, &Velocity)>) {
    for (mut pos, vel) in query.iter_mut() {
        pos.x += vel.x;
        pos.y += vel.y;
    }
}

Next Steps

This is just the beginning! In future posts, I’ll explore:

  • Sprites and 2D rendering
  • Input handling
  • Physics with Rapier
  • State management

The Bevy ecosystem is growing rapidly, and it’s an exciting time to learn game development with Rust!