🎮

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

2024/09/27に公開

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

この記事は?

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

使用技術

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

https://bevyengine.org/

https://ldtk.io/

https://github.com/Trouv/bevy_ecs_ldtk

ソースコード

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

https://github.com/ittokunvim/bevy_ldtk_setup

バージョン

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

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の基本的な使い方を楽しく学ぶことができるので結構おすすめ。

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だけにしました。

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

GitHubで編集を提案

Discussion