عن المشروع
# 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)).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.