Open1

Bevy勉強ノート2025

funatsufumiyafunatsufumiya

Bevyの開発時のストレスを減らす方法。

ずっと疑問に思っていた、どうすればコンパイルするとき部分的にReleaseビルドっぽくしたりできるかがわかった。bevy-procedural/modeling のコードをいじっていて気付いた。

# Cargo.toml

# Enable a small amount of optimization in debug mode
[profile.fast-dev]
inherits = "dev"
opt-level = 1

# Enable high optimizations for dependencies (incl. Bevy), but not for our code:
[profile.fast-dev.package."*"]
inherits = "dev"
opt-level = 3

このコードでは、基本的には -O1 の最適化を適用しながらも、Bevyなどの依存関係には -O3 の最適化を適用することで、デバッグ時にも実行を速くし、バランスをとっている。

さらに以下の動画にある、Bevyの動的リンク機能を有効にすると次のようになる。こうすればさらにリンクが速くなり、開発がさらに高速化される。(動画中にあるように、これをdefaultのfeaturesにしてしまうと、Releaseビルド時にも適用されて都合が悪いので、開発時のみこのfeaturesを使うと良いとのこと。)

https://www.youtube.com/watch?v=5k66KB6DisI&t=258s

# Cargo.toml

[features]
dynamic_linking = ["bevy/dynamic_linking"]

# Enable a small amount of optimization in debug mode
[profile.fast-dev]
inherits = "dev"
opt-level = 1

# Enable high optimizations for dependencies (incl. Bevy), but not for our code:
[profile.fast-dev.package."*"]
inherits = "dev"
opt-level = 3

さらに動画中にあるように、rust-lldやmoldなどのリンカを使うとさらに開発が快適になる。

https://qiita.com/benki/items/decada107802657336d0

sccacheを使うとさらに快適になるのだけれど、実はこの一連の流れはBevyのSetupガイド (Getting Started)に書いてあるらしい。(なぜ知らなかった…。)

https://qiita.com/toyboot4e/items/2acba3d8ea4821bf0736