🐈

Rust/BEVY入門メモ

2024/04/10に公開

Rust/BEVY入門メモ

BEVYがどんな感じか見てみたくなったので、自分用にメモを取りながら試してみる。
目標としては、BEVYで簡単なゲームを作り、html5デプロイできるところまで確認したい。

Rust入門

https://doc.rust-jp.rs/book-ja/
を読みながら進める。

curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

~/.zshrc に以下を追加

export PATH=$HOME/.cargo/bin:$PATH
source ~/.zshrc
rustc --version
rustup update
mkdir rusttmp
cd rusttmp
mkdir hello_world
cd hello_world
nvim main.rs
fn main() {
    println!("Hello, world!");
}
rustc main.rs
./main
cargo --version
cd ..
cargo new hello_cargo
cd hello_cargo
cargo build
./target/debug/hello_cargo
cargo run
cargo check
cargo build --release
./target/release/hello_cargo

雑だが最小限の使い方は把握した。
言語としてのRustの方はリファレンス見ながらやればなんとかなるだろう…。

BEVY入門

https://bevyengine.org/learn/quick-start/getting-started/
を見ながらやる。

cd ~/rusttmp
git clone https://github.com/bevyengine/bevy
cd bevy
git checkout latest
cargo run --example breakout

ブロック崩しが動いた。ゲームとしての出来はとても不安になるが(マウス対応なし、ゲームオーバーなし、クリアもなし)、動作自体は問題なさそうだ。

自分にとって重要なのはこれをhtml5デプロイしたらどうなるかなので、ここのgetting startedは一旦中断し、html5デプロイの方を見ながらやってみる。
https://github.com/bevyengine/bevy/tree/latest/examples#wasm

rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli
cargo build --release --example lighting --target wasm32-unknown-unknown
wasm-bindgen --out-name wasm_example \
  --out-dir examples/wasm/target \
  --target web target/wasm32-unknown-unknown/release/examples/lighting.wasm

npx http-server examples/wasm -p 3002

別窓で

open http://localhost:3002

デモのレイトレーシング的3Dオブジェクトをキーボード操作できるやつが動いた。動作はよさそうに見える。
ただ、生成された wasm_example_bg.wasm のサイズが37Mで、これはちょっと自分の用途には大きすぎる…。他の奴でもそうだけど、wasm使う場合はどうしてもサイズ肥大は避けられないのか?うーん…。

とりあえず手元でhtml5ビルドして動かして満足したので一旦終了。

Discussion