| Crates.io | bevy_cards |
| lib.rs | bevy_cards |
| version | 0.16.0 |
| created_at | 2025-06-01 13:06:43.817673+00 |
| updated_at | 2025-06-01 13:06:43.817673+00 |
| description | A simple, no dependency bevy plugin for making card games |
| homepage | |
| repository | https://github.com/atomicptr/bevy_cards |
| max_upload_size | |
| id | 1697148 |
| size | 132,642 |
A simple, no dependency bevy plugin for making card games
use bevy::prelude::*;
use bevy_cards::prelude::*;
const CARD_WIDTH: u32 = 100;
const CARD_HEIGHT: u32 = 144;
fn main() -> AppExit {
App::new()
.add_plugins(DefaultPlugins)
// add the plugin with the default card size
.add_plugins(BevyCardsPlugin::new(CARD_WIDTH as f32, CARD_HEIGHT as f32))
.add_systems(Startup, setup)
.run()
}
fn setup(mut commands: Commands) {
commands.spawn(Camera2d);
// spawn a green card
commands.spawn((
Card,
Draggable, // to drag & drop the card, we need to add the "Draggable" component
Sprite {
color: Color::srgb(0.0, 1.0, 0.0),
custom_size: Some(Vec2::new(CARD_WIDTH as f32, CARD_HEIGHT as f32)),
..default()
},
Transform::from_xyz(-100.0, 0.0, 0.0),
));
// spawn a blue card, thats somewhat smaller
commands.spawn((
Card,
Draggable,
CardSize(Vec2::new(CARD_WIDTH as f32 * 0.8, CARD_HEIGHT as f32 * 0.8)),
Sprite {
color: Color::srgb(0.0, 0.0, 1.0),
custom_size: Some(Vec2::new(CARD_WIDTH as f32 * 0.8, CARD_HEIGHT as f32 * 0.8)),
..default()
},
Transform::from_xyz(100.0, 0.0, 0.0),
));
}
Run this example using cargo run --example readme


Run this example using cargo run --example slots
Card is a component enabling your entity to be hovered, dragged and dropped around
Slots are places your card can be dropped into
bevy_cards is not using semver, every release uses the same major and minor versions as bevy while the patch part is reserved
for all kinds of changes, be it bug fixes or feature updates.
| bevy | bevy_pixcam | branch |
|---|---|---|
| 0.16.x | 0.16.x | master |
MIT