منصوبے کے بارے میں

# ایک 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 مثال کے ریڈمی][android-instructions] میں دی گئی ہدایات پر عمل کرنا درکار ہے * iOS ایپ شروع کریں ([iOS سیٹ اپ ہدایات کے لیے bevy مثال کا ریڈمی دیکھیں][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` تبدیل کریں (ونڈوز ایگزیکیوٹیبل کے لیے اور ویب بلڈز کے فیویکون کے طور پر استعمال ہوتا ہے) * آپ ان مراحل پر عمل کرتے ہوئے ونڈوز کے لیے `.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] دیکھ سکتے ہیں جو موجودہ سیٹ اپ سے متعلق ہے۔ ## اینڈرائیڈ فی الحال، ڈیولپمنٹ ایپ چلانے کے لیے `cargo-apk` استعمال ہوتا ہے۔ لیکن APKs اب اسٹور میں شائع نہیں کیے جا سکتے اور `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/