このプロジェクトについて
# Bevyゲームテンプレート
素晴らしい[Bevyエンジン][bevy]を使用したゲーム用のテンプレートで、Windows、Linux、macOS、Web(Wasm)、Android、iOS向けのビルドがすぐに利用できます。
# このテンプレートで得られるもの
* 小さなサンプル[「ゲーム」](https://niklasei.github.io/bevy_game_template/)
* [trunk]を使用したWebビルドの簡単なセットアップ(`trunk serve`)
* `cargo run`でネイティブ版を実行
* Windows、Linux、macOS、Web(Wasm)向けの配布可能なリリースを作成するGitHub Actionsワークフロー
* 同じワークフローがモバイルプラットフォーム向けの開発ビルドも作成([いくつかのセットアップ](#deploy-mobile-platforms)後、2つの別々のワークフローがストアにプッシュ可能)
* `v[0-9]+.[0-9]+.[0-9]+*`(例:`v1.1.42`)形式のタグをプッシュするとフローがトリガーされます
* すべてのネイティブプラットフォームでアプリケーションをチェックするCIワークフロー(プッシュのたびに実行)
警告:プライベートリポジトリで作業する場合、macOSおよびWindowsランナーはより多くのビルド時間を消費することに注意してください。
**パブリックリポジトリの場合、ワークフローランナーは無料です!**
# このテンプレートの使い方
1. リポジトリのページで「Use this template」をクリック
2. `ToDo`を検索して、ゲーム名を自分のものに置き換える
3. [以下の説明に従ってアイコンを更新](#updating-the-icons)
4. コーディングを開始:tada:
* ネイティブアプリを起動:`cargo run`
* Webビルドを起動:`trunk serve`
* [trunk]が必要:`cargo install --locked trunk`
* `wasm32-unknown-unknown`ターゲットが必要:`rustup target add wasm32-unknown-unknown`
* これによりアプリが`8080`で提供され、コード変更後に自動的に再ビルドおよびリロードされます
* Androidアプリを起動:`cargo apk run -p mobile`
* [bevyのAndroidセットアップ手順][android-instructions]に従う必要があります
* iOSアプリを起動([bevyのiOSセットアップ手順][ios-instructions]を参照)
* App StoreからXcodeをインストール
* Xcodeを起動し、iOSシミュレータをインストール(初回起動時にチェックボックスをオンにするか、後で`Preferences > Platforms`からインストール)
* `rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim`でiOSおよびiOSシミュレータのRustターゲットをインストール
* `/mobile`ディレクトリ内で`make run`を実行
`credits`ディレクトリは最新の状態に保つ必要があります。リリースワークフローはすべてのビルドにこのディレクトリを自動的に含めます。
### アイコンの更新
1. `build/macos/icon_1024x1024.png`を`1024`×`1024`ピクセルのpngアイコンに置き換え、`create_icns.sh`またはLinuxを使用している場合は`create_icns_linux.sh`を実行(`build/macos`ディレクトリ内でスクリプトを実行してください)- _注:`create_icns.sh`はMacが必要で、`create_icns_linux.sh`はimagemagickとpng2icnsが必要です_
2. `build/windows/icon.ico`を置き換え(Windows実行ファイルとWebビルドのファビコンとして使用)
* 以下の手順でWindows用の`.ico`ファイルを作成できます:
1. [Gimp](https://www.gimp.org/downloads/)で`macos/AppIcon.iconset/icon_256x256.png`を開く
2. `File > Export As`メニュー項目を選択
3. ファイル拡張子を`.ico`に変更(または`Select File Type (By Extension)`をクリックして`Microsoft Windows Icon`を選択)
4. `build/windows/icon.ico`として保存
3. `build/android/res/mipmap-mdpi/icon.png`を`macos/AppIcon.iconset/icon_256x256.png`に置き換えるが、`icon.png`に名前を変更
### WebビルドをGitHub Pagesにデプロイ
1. `deploy-github-page`ワークフローをトリガー
2. リポジトリで[GitHub pages](https://pages.github.com/)を有効化
1. ソースを`gh-pages`ブランチ(実行されたアクションによって作成)から選択
3. 数分後、ゲームは`http://username.github.io/repository`で公開されます
新しいバージョンをデプロイするには、`deploy-github-page`ワークフローを再度実行するだけです。
# モバイルプラットフォームのデプロイ
モバイルサポートの一般的な情報については、現在のセットアップに関連する[Bevyでのモバイル開発に関するブログ記事][mobile_dev_with_bevy_2]を参照できます。
## Android
現在、開発アプリの実行には`cargo-apk`が使用されています。ただし、APKはストアで公開できなくなり、`cargo-apk`は必要なAABを生成できません。そのため、2つのAndroid関連ツールのセットアップがあります。[`mobile/Cargo.toml`](./mobile/Cargo.toml)の`package.metadata.android`セクションは`cargo-apk`を設定し、[`mobile/manifest.yaml`](./mobile/manifest.yaml)は`release-android-google-play`ワークフローでAABを作成するために使用される`xbuild`のカスタムフォークを設定します。
Androidリリースワークフローの設定方法については、[ブログ記事][workflow_bevy_android]があります。
## iOS
セットアップは、Bevyがモバイルの例で行うものとほぼ同じです。
iOSリリースワークフローの設定方法については、[ブログ記事][workflow_bevy_ios]があります。
# モバイルプラットフォームの削除
AndroidまたはiOSをターゲットにしない場合は、`/mobile`、`/build/android`、`/build/ios`ディレクトリを削除するだけです。
次に、`Cargo.toml`から`[workspace]`セクションを削除します。
# 開発環境
## Nixサポート
nixglは非NixOS Linuxシステムでのみ使用されます。
そこで実行する場合は、`--impure`フラグを使用する必要があります:
```
nix develop --impure
```
nixglを使用する場合は、例えば`gl cargo run`を使用し、それ以外は通常どおり`cargo`を使用します。
# Bevy入門
Bevyのウェブサイトで[リソースへのリンク][bevy-learn]と、役立つドキュメントや例が豊富な[Bevy Cheat Book]を確認してください。また、開発の最新情報を把握し、他のBevyユーザーから助けを得るために[公式Bevy Discordサーバー][bevy-discord]もお勧めします。
# 既知の問題
Webビルドでのオーディオは、一部のブラウザで問題が発生する可能性があります。これはオーディオ自体の問題ではなく、一般的なパフォーマンスの問題のようです([bevy_kira_audio/#9][firefox-sound-issue]を参照)。
# ライセンス
このプロジェクトは[CC0 1.0 Universal](LICENSE)の下でライセンスされていますが、`assets`の一部のコンテンツと`build`ディレクトリ内のBevyアイコンは除きます([Credits](credits/CREDITS.md)を参照)。自由に使用し、このテンプレートで作成したものをぜひ見せてください([@nikl_me][nikl-twitter] / [@nikl_me@mastodon.online][nikl-mastodon])。
[bevy]: https://bevyengine.org/
[bevy-learn]: https://bevyengine.org/learn/
[bevy-discord]: https://discord.gg/bevy
[nikl-twitter]: https://twitter.com/nikl_me
[nikl-mastodon]: https://mastodon.online/@nikl_me
[firefox-sound-issue]: https://github.com/NiklasEi/bevy_kira_audio/issues/9
[Bevy Cheat Book]: https://bevy-cheatbook.github.io/introduction.html
[trunk]: https://github.com/trunk-rs/trunk
[android-instructions]: https://github.com/bevyengine/bevy/blob/latest/examples/README.md#setup
[ios-instructions]: https://github.com/bevyengine/bevy/blob/latest/examples/README.md#setup-1
[mobile_dev_with_bevy_2]: https://www.nikl.me/blog/2023/notes_on_mobile_development_with_bevy_2/
[workflow_bevy_android]: https://www.nikl.me/blog/2023/github_workflow_to_publish_android_app/
[workflow_bevy_ios]: https://www.nikl.me/blog/2023/github_workflow_to_publish_ios_app/
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.