প্রকল্প সম্পর্কে
# একটি Bevy গেম টেমপ্লেট
চমৎকার [Bevy ইঞ্জিন][bevy] ব্যবহার করে একটি গেমের টেমপ্লেট, যেখানে Windows, Linux, macOS, Web (Wasm), Android এবং iOS-এর জন্য রেডিমেড বিল্ড রয়েছে।
# এই টেমপ্লেট আপনাকে কী দেয়?
* ছোট উদাহরণ ["গেম"](https://niklasei.github.io/bevy_game_template/)
* [trunk] ব্যবহার করে ওয়েব বিল্ড চালানোর সহজ সেটআপ (`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`
* ওয়েব বিল্ড চালু করুন: `trunk serve`
* [trunk] প্রয়োজন: `cargo install --locked trunk`
* `wasm32-unknown-unknown` টার্গেট প্রয়োজন: `rustup target add wasm32-unknown-unknown`
* এটি `8080`-এ আপনার অ্যাপ পরিবেশন করবে এবং কোড পরিবর্তনের পরে স্বয়ংক্রিয়ভাবে রিবিল্ড + রিলোড করবে
* অ্যান্ড্রয়েড অ্যাপ চালু করুন: `cargo apk run -p mobile`
* [অ্যান্ড্রয়েড সেটআপের জন্য bevy উদাহরণ readme][android-instructions]-এর নির্দেশাবলী অনুসরণ করা প্রয়োজন
* iOS অ্যাপ চালু করুন ([iOS সেটআপ নির্দেশাবলীর জন্য bevy উদাহরণ readme][ios-instructions] দেখুন)
* অ্যাপ স্টোরের মাধ্যমে 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` বা লিনাক্স ব্যবহার করলে `create_icns_linux.sh` চালান (স্ক্রিপ্টটি `build/macos` ডিরেক্টরির ভিতরে চালাতে ভুলবেন না) - _দ্রষ্টব্য: `create_icns.sh`-এর জন্য একটি mac প্রয়োজন, এবং `create_icns_linux.sh`-এর জন্য imagemagick এবং png2icns প্রয়োজন_
2. `build/windows/icon.ico` প্রতিস্থাপন করুন (windows এক্সিকিউটেবল এবং ওয়েব-বিল্ডের 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. `build/android/res/mipmap-mdpi/icon.png`-কে `macos/AppIcon.iconset/icon_256x256.png` দিয়ে প্রতিস্থাপন করুন, কিন্তু এটির নাম `icon.png` করুন
### 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 তৈরি করতে পারে না। এই কারণেই দুটি অ্যান্ড্রয়েড সম্পর্কিত টুলের জন্য সেটআপ রয়েছে। [`mobile/Cargo.toml`](./mobile/Cargo.toml)-এ, `package.metadata.android` সেকশন `cargo-apk` কনফিগার করে, যেখানে [`mobile/manifest.yaml`](./mobile/manifest.yaml) `xbuild`-এর একটি কাস্টম ফর্ক কনফিগার করে যা `release-android-google-play` ওয়ার্কফ্লোতে AAB তৈরি করতে ব্যবহৃত হয়।
আমার ব্লগে [অ্যান্ড্রয়েড রিলিজ ওয়ার্কফ্লো কীভাবে সেটআপ করবেন সে সম্পর্কে একটি পোস্ট][workflow_bevy_android] আছে।
## iOS
সেটআপটি প্রায় Bevy মোবাইল উদাহরণের জন্য যা করে তাই।
আমার ব্লগে [iOS রিলিজ ওয়ার্কফ্লো কীভাবে সেটআপ করবেন সে সম্পর্কে একটি পোস্ট][workflow_bevy_ios] আছে।
# মোবাইল প্ল্যাটফর্ম সরানো
আপনি যদি Android বা iOS টার্গেট করতে না চান, আপনি শুধু `/mobile`, `/build/android`, এবং `/build/ios` ডিরেক্টরি মুছে ফেলতে পারেন।
তারপর `Cargo.toml` থেকে `[workspace]` সেকশন মুছে ফেলুন।
# ডেভেলপমেন্ট এনভায়রনমেন্ট
## Nix সাপোর্ট
nixgl শুধুমাত্র নন-NixOS লিনাক্স সিস্টেমে ব্যবহৃত হয়;
সেখানে চালানোর সময় আমাদের `--impure` ফ্ল্যাগ ব্যবহার করতে হবে:
```
nix develop --impure
```
nixgl ব্যবহার করলে, তাহলে যেমন `gl cargo run`, অন্যথায়
সাধারণভাবে `cargo` ব্যবহার করুন।
# Bevy দিয়ে শুরু করা
আপনার [রিসোর্সের লিঙ্কের জন্য][bevy-learn] Bevy ওয়েবসাইট এবং প্রচুর সহায়ক ডকুমেন্টেশন ও উদাহরণের জন্য [Bevy Cheat Book] দেখা উচিত। ডেভেলপমেন্টের সাথে আপ টু ডেট থাকতে এবং অন্যান্য Bevy ব্যবহারকারীদের কাছ থেকে সাহায্য পেতে আমি [অফিসিয়াল Bevy Discord সার্ভার][bevy-discord]-ও সুপারিশ করতে পারি।
# পরিচিত সমস্যা
ওয়েব-বিল্ডে অডিও কিছু ব্রাউজারে সমস্যা হতে পারে। এটি একটি সাধারণ পারফরম্যান্স সমস্যা বলে মনে হয় এবং অডিও নিজের কারণে নয় (দেখুন [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.