Bevy の始め方

Uncategorized
611 words

Bevy は、Rust言語で開発されたゲームエンジンのことです。

環境

  • Windows 11 Home 23H2
  • Rust 1.76.0
  • Bevy 0.12.1

Cargo プロジェクトの作成

Bevy は Cargo でプロジェクトを管理します。

新しいプロジェクトを作成するには、ターミナルに以下コマンドを入力して実行します。

1
cargo new hello-rust

Bevy の依存関係を追加

プロジェクトディレクトリで以下コマンドを実行して Bevy を依存関係に追加します。

1
cargo add bevy

cargo add コマンドを実行すると、最新バージョンのパッケージが自動的に検索され Cargo.toml に 依存関係が追加されます。

Cargo.toml

1
2
3
4
5
6
7
8
9
[package]
name = "hello-rust"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
bevy = "0.12.1"

ゲームのコードを書く

src/main.rs ファイルを開き、以下のように編集して Bevy の基本的な構造を作成します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// ライブラリのインポート
// Bevyエンジンから必要なコンポーネントをインポート
// 今回は、アプリケーション構築、アセット管理、3Dカメラの設定、物理ベースのレンダリング(PBR)、メッシュとマテリアルのハンドリング、数学関数をインポート
use bevy::app::App;
use bevy::app::Startup;
use bevy::asset::Assets;
use bevy::core_pipeline::core_3d::Camera3dBundle;
use bevy::DefaultPlugins;
use bevy::ecs::system::Commands;
use bevy::ecs::system::ResMut;
use bevy::math::Quat;
use bevy::math::Vec3;
use bevy::pbr::PbrBundle;
use bevy::pbr::PointLight;
use bevy::pbr::PointLightBundle;
use bevy::pbr::StandardMaterial;
use bevy::render::color::Color;
use bevy::render::mesh::Mesh;
use bevy::render::mesh::shape;
use bevy::transform::components::Transform;
use bevy::utils::default;

fn main() {
// Bevyアプリケーションの設定
// デフォルトプラグインの追加
// アプリケーション起動時に実行されるsetup関数の登録
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, setup)
.run();
}

fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {

// 円形メッシュの作成
// 白色のマテリアルを適用
// X軸を90度回転
commands.spawn(PbrBundle {
mesh: meshes.add(shape::Circle::new(4.0).into()),
material: materials.add(Color::WHITE.into()),
transform: Transform::from_rotation(Quat::from_rotation_x(-std::f32::consts::FRAC_PI_2)),
..default()
});

// 立方体メッシュの作成
// RGB色のマテリアルを適用
commands.spawn(PbrBundle {
mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })),
material: materials.add(Color::rgb_u8(124, 144, 255).into()),
transform: Transform::from_xyz(0.0, 0.5, 0.0),
..default()
});

// 点光源の追加
// 影の有効化
commands.spawn(PointLightBundle {
point_light: PointLight {
intensity: 1500.0,
shadows_enabled: true,
..default()
},
transform: Transform::from_xyz(4.0, 8.0, 4.0),
..default()
});

// 3Dカメラをシーンに追加
// シーンの中心を見下ろすように設定
commands.spawn(Camera3dBundle {
transform: Transform::from_xyz(-2.5, 4.5, 9.0).looking_at(Vec3::ZERO, Vec3::Y),
..default()
});
}

アプリケーションのビルドと実行

ターミナルで以下のコマンドを実行して、アプリケーションをビルド実行します。

初回は依存関係の構築があるため、実行に時間がかかるが、次回以降はすぐに実行されます。

1
cargo run

しばらく待つと、ゲーム画面が表示される。

参考

https://bevyengine.org/learn/quick-start/getting-started/