这个项目能做什么

# 一个Bevy游戏模板 使用出色的[Bevy引擎][bevy]创建游戏的模板,支持Windows、Linux、macOS、Web(Wasm)、Android和iOS的开箱即用构建。 # 这个模板能给你什么? * 一个小示例["游戏"](https://niklasei.github.io/bevy_game_template/) * 使用[trunk]轻松设置运行Web构建(`trunk serve`) * 使用`cargo run`运行原生版本 * 用于GitHub Actions的工作流,为Windows、Linux、macOS和Web(Wasm)创建可分发版本 * 同一工作流为移动平台创建开发构建(两个单独的工作流可以在[一些设置](#deploy-mobile-platforms)后推送到应用商店) * 推送形式为`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示例readme中的Android设置说明][android-instructions] * 启动iOS应用(参见[bevy示例readme中的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. 用`1024`乘`1024`像素的png图标替换`build/macos/icon_1024x1024.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构建的favicon) * 你可以按照以下步骤为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. 用`macos/AppIcon.iconset/icon_256x256.png`替换`build/android/res/mipmap-mdpi/icon.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。这就是为什么有两个与Android相关工具的设置。在[`mobile/Cargo.toml`](./mobile/Cargo.toml)中,`package.metadata.android`部分配置了`cargo-apk`,而[`mobile/manifest.yaml`](./mobile/manifest.yaml)配置了`xbuild`的自定义分支,用于在`release-android-google-play`工作流中创建AAB。 我的博客上有一篇关于如何设置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 Discord服务器][bevy-discord]以了解最新开发动态并从其他Bevy用户那里获得帮助。 # 已知问题 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/