Sobre o projeto
# Um modelo de jogo Bevy
Modelo para um jogo usando a incrível [Bevy engine][bevy] com builds prontos para Windows, Linux, macOS, Web (Wasm), Android e iOS.
# O que este modelo oferece?
* pequeno exemplo ["jogo"](https://niklasei.github.io/bevy_game_template/)
* configuração fácil para executar o build web usando [trunk] (`trunk serve`)
* execute a versão nativa com `cargo run`
* fluxo de trabalho para GitHub actions criando lançamentos para Windows, Linux, macOS e Web (Wasm) prontos para distribuição
* o mesmo fluxo cria builds de desenvolvimento para plataformas móveis (dois fluxos separados podem enviar para as lojas após [alguma configuração](#deploy-mobile-platforms))
* envie uma tag no formato `v[0-9]+.[0-9]+.[0-9]+*` (ex.: `v1.1.42`) para acionar o fluxo
* fluxo de CI que verifica seu aplicativo em todas as plataformas nativas a cada push
AVISO: se você trabalha em um repositório privado, esteja ciente de que os runners macOS e Windows custam mais minutos de build.
**Para repositórios públicos, os runners do fluxo são gratuitos!**
# Como usar este modelo?
1. Clique em "Use this template" na página do repositório
2. Procure por `ToDo` para usar seu próprio nome de jogo em todos os lugares
3. [Atualize os ícones conforme descrito abaixo](#updating-the-icons)
4. Comece a codificar :tada:
* Inicie o aplicativo nativo: `cargo run`
* Inicie o build web: `trunk serve`
* requer [trunk]: `cargo install --locked trunk`
* requer o alvo `wasm32-unknown-unknown`: `rustup target add wasm32-unknown-unknown`
* isso servirá seu aplicativo na porta `8080` e reconstruirá + recarregará automaticamente após mudanças no código
* Inicie o aplicativo Android: `cargo apk run -p mobile`
* requer seguir as instruções no [readme de exemplo do Bevy para configuração Android][android-instructions]
* Inicie o aplicativo iOS (veja o [readme de exemplo do Bevy para instruções de configuração iOS][ios-instructions])
* Instale o Xcode pela app store
* Abra o Xcode e instale o simulador iOS (marque a caixa no primeiro início, ou instale via `Preferences > Platforms` depois)
* Instale os alvos Rust iOS e simulador iOS com `rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim`
* execute `make run` dentro do diretório `/mobile`
Você deve manter o diretório `credits` atualizado. O fluxo de lançamento inclui automaticamente o diretório em cada build.
### Atualizando os ícones
1. Substitua `build/macos/icon_1024x1024.png` por um ícone png de `1024` por `1024` pixels e execute `create_icns.sh` ou `create_icns_linux.sh` se você usar linux (certifique-se de executar o script dentro do diretório `build/macos`) - _Nota: `create_icns.sh` requer um mac, e `create_icns_linux.sh` requer imagemagick e png2icns_
2. Substitua `build/windows/icon.ico` (usado para o executável Windows e como favicon para os builds web)
* Você pode criar um arquivo `.ico` para Windows seguindo estes passos:
1. Abra `macos/AppIcon.iconset/icon_256x256.png` no [Gimp](https://www.gimp.org/downloads/)
2. Selecione o item de menu `File > Export As`.
3. Mude a extensão do arquivo para `.ico` (ou clique em `Select File Type (By Extension)` e selecione `Microsoft Windows Icon`)
4. Salve como `build/windows/icon.ico`
3. Substitua `build/android/res/mipmap-mdpi/icon.png` com `macos/AppIcon.iconset/icon_256x256.png`, mas renomeie para `icon.png`
### Implantar build web no GitHub pages
1. Acione o fluxo `deploy-github-page`
2. Ative [GitHub pages](https://pages.github.com/) para seu repositório
1. Fonte da branch `gh-pages` (criada pela ação recém-executada)
3. Após alguns minutos, seu jogo estará disponível em `http://username.github.io/repository`
Para implantar versões mais recentes, basta executar o fluxo `deploy-github-page` novamente.
# Implantar plataformas móveis
Para informações gerais sobre suporte móvel, você pode dar uma olhada em [um dos meus posts de blog sobre desenvolvimento móvel com Bevy][mobile_dev_with_bevy_2] que é relevante para a configuração atual.
## Android
Atualmente, `cargo-apk` é usado para executar o aplicativo de desenvolvimento. Mas APKs não podem mais ser publicados na loja e `cargo-apk` não pode produzir o AAB necessário. É por isso que há configuração para duas ferramentas relacionadas ao Android. Em [`mobile/Cargo.toml`](./mobile/Cargo.toml), a seção `package.metadata.android` configura `cargo-apk` enquanto [`mobile/manifest.yaml`](./mobile/manifest.yaml) configura um fork personalizado de `xbuild` que é usado no fluxo `release-android-google-play` para criar um AAB.
Há um [post sobre como configurar o fluxo de lançamento Android][workflow_bevy_android] no meu blog.
## iOS
A configuração é basicamente o que o Bevy faz para o exemplo móvel.
Há um [post sobre como configurar o fluxo de lançamento iOS][workflow_bevy_ios] no meu blog.
# Removendo plataformas móveis
Se você não quiser segmentar Android ou iOS, basta excluir os diretórios `/mobile`, `/build/android` e `/build/ios`.
Depois, exclua a seção `[workspace]` do `Cargo.toml`.
# Ambientes de desenvolvimento
## Suporte Nix
nixgl é usado apenas em sistemas Linux não-NixOS;
ao executar lá, precisamos usar o sinalizador `--impure`:
```
nix develop --impure
```
Se usar nixgl, então, por exemplo, `gl cargo run`, caso contrário, use
`cargo` normalmente.
# Começando com Bevy
Você deve verificar o site do Bevy para [links para recursos][bevy-learn] e o [Bevy Cheat Book] para um monte de documentação e exemplos úteis. Também posso recomendar o [servidor oficial do Discord do Bevy][bevy-discord] para acompanhar o desenvolvimento e obter ajuda de outros usuários do Bevy.
# Problemas conhecidos
Áudio em builds web pode ter problemas em alguns navegadores. Isso parece ser um problema geral de desempenho e não devido ao áudio em si (veja [bevy_kira_audio/#9][firefox-sound-issue]).
# Licença
Este projeto é licenciado sob [CC0 1.0 Universal](LICENSE), exceto algum conteúdo de `assets` e os ícones do Bevy no diretório `build` (veja [Credits](credits/CREDITS.md)). Vá em frente e sinta-se à vontade para me mostrar o que você construir com isso ([@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 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.