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

# Born React Native Godot React Native Godot آپ کو React Native ایپس کے اندر Godot انجن کو ایمبیڈ کرنے دیتا ہے۔ یہ [Born](https://born.com) نے بنایا ہے اور [Migeran](https://migeran.com) کے تعاون سے تیار کیا گیا ہے۔ ## اہم خصوصیات * Android اور iOS کو سپورٹ کرتا ہے، [LibGodot](https://github.com/migeran/libgodot) پر مبنی۔ * Born کے ذریعے پروڈکشن میں استعمال ہوتا ہے، لاکھوں صارفین کی خدمت کرتا ہے۔ * Godot انجن کو اسٹارٹ، اسٹاپ، اور ری اسٹارٹ کریں؛ ہر ری اسٹارٹ ایک مختلف Godot پروجیکٹ لوڈ کر سکتا ہے۔ * چلنے والے Godot انسٹنس کو پاز اور ریزوم کریں۔ * Godot ایک علیحدہ تھریڈ پر چلتا ہے، جس سے UI اور React Native JavaScript تھریڈ ریسپانسیو رہتے ہیں۔ * Godot مین ونڈو اور اس کی ذیلی ونڈوز کو ایک ہی یا مختلف اسکرینوں پر ایمبیڈ کریں۔ * TypeScript/JavaScript سے مکمل Godot API تک رسائی: آبجیکٹ بنائیں، طریقے کالیں، پراپرٹیز حاصل/سیٹ کریں، سگنلز سے جڑیں، اور JS کال ایبلز کو Godot میں پاس کریں۔ ## مثال ایپ کے ساتھ شروع کرنا [مثال ایپ](example/) اہم خصوصیات کو ظاہر کرتی ہے۔ پیشگی شرائط انسٹال کرنے کے بعد (مثلاً ASDF کے ذریعے Node، Java، Gradle، Ruby کے لیے) اور Godot نمونے ایکسپورٹ کرنے کے بعد (`./export_godot_GodotTest.sh android|ios`، وغیرہ)، پہلے سے بنی لائبریریاں ڈاؤن لوڈ کریں اور `yarn ios` / `yarn android` کے ساتھ iOS یا Android پر معمول کے مطابق چلائیں۔ ایک آسان `update_deps.sh` اسکرپٹ سیٹ اپ کو سنبھالتا ہے۔ ## آپ کی پہلی React Native Godot ایپ 1. npm سے انسٹال کریں: `yarn add @borndotcom/react-native-godot` 2. پہلے سے بنی LibGodot پیکجز ڈاؤن لوڈ کریں: `yarn download-prebuilt` (npm کے ذریعے تقسیم نہیں کیا جاتا؛ یہ کسٹم بلڈز کی اجازت دیتا ہے)۔ 3. ویو کو امپورٹ اور استعمال کریں: `import { RTNGodot, RTNGodotView, runOnGodotThread } from "@borndotcom/react-native-godot"`۔ 4. `<RTNGodotView style={...}/>` شامل کریں (ڈیفالٹ Godot کے مین ونڈو پر ہوتا ہے)۔ 5. کمانڈ لائن آرگیومینٹس کے ساتھ `RTNGodot.createInstance([...])` کال کرکے Godot تھریڈ پر Godot کو انیشیالائز کریں۔ اہم نکات: - React Native میں ایمبیڈ کرنے کے لیے `--display-driver embedded` استعمال کریں۔ - Android پر، فولڈر کا راستہ پاس کریں (مثلاً `--path /main`) یا PCK؛ iOS پر، پیک فائل کے ساتھ `--main-pack` استعمال کریں۔ چھوٹے سائز اور آسان اپڈیٹس کے لیے Godot ایپس کو رن ٹائم پر ڈاؤن لوڈ کرنے کی سفارش کی جاتی ہے۔ 6. Godot تھریڈ پر `RTNGodot.destroyInstance()` سے روکیں؛ JS مین تھریڈ سے `RTNGodot.pause()` / `RTNGodot.resume()` کے ذریعے پاز/ریزوم کریں۔ اپنے Godot پروجیکٹ کو PCK یا ZIP کے طور پر ایکسپورٹ کریں؛ مثال میں مددگار اسکرپٹس شامل ہیں۔ ## Godot API استعمال `RTNGodot.API()` کے ذریعے API تک رسائی حاصل کریں: ```typescript let Godot = RTNGodot.API(); var engine = Godot.Engine; var vector = Godot.Vector2(); vector.x = 1.0; vector.y = 2.0; var sceneTree = engine.get_main_loop(); var root = sceneTree.get_root(); ``` سگنلز سے جڑنے کے لیے `.connect(function() { ... })` استعمال کریں، اور JS فنکشنز کو Callables کے طور پر Godot طریقوں میں پاس کریں (مثلاً کسٹم Node کے GDScript سے)۔ ## تھریڈنگ اور JavaScript Godot اپنے تھریڈ پر چلتا ہے۔ JavaScript سے تعامل کے لیے، لائبریری [react-native-worklets-core](https://github.com/margelo/react-native-worklets-core) استعمال کرتی ہے تاکہ `runOnGodotThread()` کے ذریعے Godot تھریڈ پر ورکلیٹائزڈ JS چلایا جا سکے۔ یہ تجویز کردہ طریقہ ہے؛ RN مین تھریڈ سے براہ راست کالز ممکن ہیں لیکن محدود ہیں (مثلاً Scene Tree تک رسائی تھریڈ سیف نہیں ہے) اور آبجیکٹ ریفرنسز مختلف سیاق و سباق کے درمیان قابل تبادلہ نہیں ہیں۔ ## اعلیٰ موضوعات * **کسٹم LibGodot بلڈز**: LibGodot کلون کریں (برانچ `libgodot_migeran_45`)، فراہم کردہ اسکرپٹس کے ساتھ بلڈ کریں، اور ماحولیاتی متغیرات (مثلاً `LIBGODOT_XCFRAMEWORK_PATH`) کے ذریعے ڈاؤن لوڈ کے راستے اوور رائیڈ کریں۔ * **مقامی کوڈ ڈیبگ کرنا**: iOS کے لیے، ڈیو LibGodot بنائیں اور Xcode میں بریک پوائنٹس سیٹ کریں؛ Android کے لیے، علامت ڈائریکٹریز شامل کریں اور اختیاری طور پر Godot سورس ٹری کو سم لنک کریں۔ * **Godot ایڈیٹر میں ریموٹ ڈیبگنگ**: `--remote-debug tcp://<host>:6007` پاس کریں اور Android پر `adb reverse` استعمال کریں؛ iOS پر ایڈیٹر کا ریموٹ ہوسٹ سیٹ کریں۔ ## لائسنس MIT لائسنس کے تحت جاری کیا گیا۔ ## سپورٹ تجارتی سپورٹ اور ترقی [Migeran](https://migeran.com) کی طرف سے پیش کی جاتی ہے۔ Born React Native انجینئرز کی بھرتی کر رہا ہے (دیکھیں [born.com](https://born.com))۔