عن المشروع

# Born React Native Godot React Native Godot يتيح لك تضمين محرك ألعاب Godot داخل تطبيقات React Native. تم إنشاؤه بواسطة [Born](https://born.com) وتم تطويره بواسطة [Migeran](https://migeran.com) بالتعاون. ## الميزات الرئيسية * يدعم Android وiOS، مبني على [LibGodot](https://github.com/migeran/libgodot). * مستخدم في الإنتاج بواسطة Born، ويخدم ملايين المستخدمين. * بدء وإيقاف وإعادة تشغيل محرك Godot؛ يمكن لكل إعادة تشغيل تحميل مشروع Godot مختلف. * إيقاف مؤقت واستئناف مثيل Godot قيد التشغيل. * يعمل Godot على خيط منفصل، مما يحافظ على استجابة واجهة المستخدم وخيط JavaScript في React Native. * تضمين النافذة الرئيسية لـ Godot ونوافذه الفرعية على نفس الشاشة أو شاشات مختلفة. * الوصول الكامل لواجهة برمجة تطبيقات Godot من TypeScript/JavaScript: إنشاء كائنات، استدعاء طرق، الحصول/تعيين الخصائص، الاتصال بالإشارات، وتمرير دوال JavaScript قابلة للاستدعاء إلى Godot. ## البدء مع التطبيق المثال [التطبيق المثال](example/) يوضح الميزات الرئيسية. بعد تثبيت المتطلبات الأساسية (مثل عبر ASDF لـ Node وJava وGradle وRuby) وتصدير عينات Godot (`./export_godot_GodotTest.sh android|ios`، إلخ)، قم بتنزيل المكتبات المبنية مسبقًا وتشغيلها على iOS أو Android كالمعتاد باستخدام `yarn ios` / `yarn 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. قم بتهيئة Godot على خيط Godot عن طريق استدعاء `RTNGodot.createInstance([...])` مع وسائط سطر الأوامر. نقاط رئيسية: - استخدم `--display-driver embedded` لتضمينه في React Native. - على Android، مرر مسار مجلد (مثل `--path /main`) أو PCK؛ على iOS، استخدم `--main-pack` مع ملف حزمة. يُوصى بتنزيل تطبيقات Godot في وقت التشغيل لحجم أصغر وتحديثات أسهل. 6. أوقف باستخدام `RTNGodot.destroyInstance()` على خيط Godot؛ إيقاف مؤقت/استئناف من خيط JavaScript الرئيسي عبر `RTNGodot.pause()` / `RTNGodot.resume()`. صدّر مشروع Godot الخاص بك كـ PCK أو ZIP؛ يتضمن المثال سكربتات مساعدة. ## استخدام واجهة برمجة تطبيقات Godot الوصول إلى الواجهة عبر `RTNGodot.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() { ... })`، وتمرير دوال JavaScript ككائنات قابلة للاستدعاء إلى طرق Godot (مثل من GDScript لعقدة مخصصة). ## الخيوط وJavaScript يعمل Godot على خيط خاص به. للتفاعل من JavaScript، تستخدم المكتبة [react-native-worklets-core](https://github.com/margelo/react-native-worklets-core) لتشغيل JavaScript مُحوَّل إلى worklet على خيط Godot عبر `runOnGodotThread()`. هذا هو الأسلوب الموصى به؛ الاستدعاءات المباشرة من خيط React Native الرئيسي ممكنة ولكنها محدودة (مثل الوصول إلى Scene Tree ليس آمنًا للخيوط) ومراجع الكائنات غير قابلة للتبادل بين السياقات. ## مواضيع متقدمة * **بناءات LibGodot مخصصة**: استنسخ LibGodot (فرع `libgodot_migeran_45`)، وقم بالبناء باستخدام السكربتات المقدمة، وتجاوز مسارات التنزيل عبر متغيرات البيئة (مثل `LIBGODOT_XCFRAMEWORK_PATH`). * **تصحيح أخطاء الكود الأصلي**: لنظام iOS، قم ببناء LibGodot للتطوير واضبط نقاط توقف في Xcode؛ لنظام Android، أضف أدلة الرموز واختياريًا أنشئ روابط رمزية لشجرة مصدر Godot. * **تصحيح الأخطاء عن بُعد في محرر Godot**: مرر `--remote-debug tcp://<host>:6007` واستخدم `adb reverse` على Android؛ اضبط المضيف البعيد في المحرر على iOS. ## الترخيص صدر تحت رخصة MIT. ## الدعم الدعم التجاري والتطوير مقدمان من [Migeran](https://migeran.com). Born توظف مهندسي React Native (انظر [born.com](https://born.com)).