site logo
zenn logo
【Bevyでゲーム作り】BevyとLDtkで2Dゲームを作る
2024年10月2日

【Bevyでゲーム作り】BevyとLDtkで2Dゲームを作る

この記事ではRustで作られたゲームエンジンBevyと、2DレベルエディタであるLDtkを組み合わせたゲームの作り方について解説しています。

この記事は?

bevy_ecs_ldtkパッケージを使えばいい感じにBevyでゲームを作れることは書いてたが、 Bevyでどうやってゲームの制御面を作れば良いかのことは探してもなかったので、 自分で書いてみました。

使用技術

今回ゲーム開発に使用した技術は以下の通り。

Bevy Engine
Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever!
Bevy Engine favicon https://bevyengine.org/
Bevy Engine
LDtk
LDtk (Level Designer Toolkit) is an open-source 2D level editor for indie devs, with a strong focus on user-friendliness.
LDtk favicon https://ldtk.io/
LDtk
GitHub - Trouv/bevy_ecs_ldtk: ECS-friendly ldtk plugin for bevy, leveraging bevy_ecs_tilemap
ECS-friendly ldtk plugin for bevy, leveraging bevy_ecs_tilemap - Trouv/bevy_ecs_ldtk
GitHub - Trouv/bevy_ecs_ldtk: ECS-friendly ldtk plugin for bevy, leveraging bevy_ecs_tilemap favicon https://github.com/Trouv/bevy_ecs_ldtk
GitHub - Trouv/bevy_ecs_ldtk: ECS-friendly ldtk plugin for bevy, leveraging bevy_ecs_tilemap

ソースコード

ソースコードはGitHubに保存しています。

GitHub - ittokunvim/bevy_ldtk_setup: ここではBevyとLDtkを組み合わせたゲームをセットアップしたコードが保存されています
ここではBevyとLDtkを組み合わせたゲームをセットアップしたコードが保存されています. Contribute to ittokunvim/bevy_ldtk_setup development by creating an account on GitHub.
GitHub - ittokunvim/bevy_ldtk_setup: ここではBevyとLDtkを組み合わせたゲームをセットアップしたコードが保存されています favicon https://github.com/ittokunvim/bevy_ldtk_setup
GitHub - ittokunvim/bevy_ldtk_setup: ここではBevyとLDtkを組み合わせたゲームをセットアップしたコードが保存されています

バージョン

バージョンが違うと多分動作しません。

bevy = "0.14.2"
bevy_ecs_ldtk = "0.10.0"

ディレクトリ構造

最終的なディレクトリ構造、ファイルは以下の通り。

bevy_ldtk_setup
├── Cargo.lock
├── Cargo.toml
├── LICENSE
├── README.md
├── assets
│   ├── bevy_ldtk_setup.ldtk
│   ├── fonts
│   │   ├── FiraMono-Medium.ttf
│   │   └── FiraSans-Bold.ttf
│   └── images
│       ├── player.png
│       ├── thumbnail.png
│       └── tileset.png
└── src
    ├── gameover.rs
    ├── ingame.rs
    ├── main.rs
    └── mainmenu.rs

ゲーム概要

迷路ゲームでプレイヤーを操作してゴールを目指すものとなっています。

ゲーム自体は以下のURLにあるチュートリアルをそのまま使用しています。

読むとbevy_ecs_ldtkの基本的な使い方を楽しく学ぶことができるので結構おすすめ。

Tile-based Game - bevy_ecs_ldtk Book
Tile-based Game - bevy_ecs_ldtk Book favicon https://trouv.github.io/bevy_ecs_ldtk/v0.10.0/tutorials/tile-based-game/index.html

仕組み

assetsディレクトリ下にフォントや画像、LDtkプロジェクトファイルが保存されています。

srcディレクトリ下にはゲームを動作させるためのソースコードが保存されており、 ゲームの状態ごとにファイルを分けています。

gameover.rsにはゲームがクリアされた時に実行されるコードが保存されています。 ここではゲームクリア画面の描画と、Rキーを押した時に最初からゲームを始められるようにしています。

ingame.rsにはゲームを動作させるためのコードが保存されています。 ここではbevy_ecs_ldtkのチュートリアルに、ゲームがクリアされた時にゲームの状態を遷移させるコードを追加しています。

main.rsにはゲームのセットアップなどが書かれています。

mainmenu.rsにはゲームのメインメニューを動作させるコードが保存されています。 ここではゲーム開始画面の描画と、画面をクリックするとゲームを開始できるようにしています。

ソースコードはこちらに保存しているので、 詳しく知りたい方はご確認ください。

まとめ

どうだったでしょうか?あまり記事を書くのは得意ではないので変な事書いてるかもしれませんが...

ソースコードは記事に載せたかったのですが、まとめるのも面倒だし、全部載せると長くなりすぎるので、URLだけにしました。

この記事が何かの役に立てたら嬉しいです。