このプロジェクトについて

# 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/