প্রকল্প সম্পর্কে
# Born React Native Godot
React Native Godot আপনাকে React Native অ্যাপের ভিতরে গডোট ইঞ্জিন এমবেড করতে দেয়। এটি [Born](https://born.com) তৈরি করেছে এবং [Migeran](https://migeran.com) এর সাথে সহযোগিতায় উন্নয়ন করেছে।
## প্রধান বৈশিষ্ট্য
* Android এবং iOS সমর্থন করে, [LibGodot](https://github.com/migeran/libgodot) এর উপর নির্মিত।
* Born দ্বারা প্রোডাকশনে ব্যবহৃত, লক্ষ লক্ষ ব্যবহারকারীকে সেবা দেয়।
* গডোট ইঞ্জিন শুরু, বন্ধ এবং পুনরায় চালু করুন; প্রতিটি পুনরায় চালুতে ভিন্ন গডোট প্রজেক্ট লোড হতে পারে।
* চলমান গডোট ইনস্ট্যান্স পজ এবং রিজিউম করুন।
* গডোট আলাদা থ্রেডে চলে, UI এবং React Native JavaScript থ্রেড প্রতিক্রিয়াশীল রাখে।
* গডোটের মূল উইন্ডো এবং এর সাবউইন্ডো একই বা ভিন্ন স্ক্রিনে এমবেড করুন।
* TypeScript/JavaScript থেকে সম্পূর্ণ গডোট API অ্যাক্সেস করুন: অবজেক্ট ইনস্ট্যান্টিয়েট করুন, মেথড কল করুন, প্রপার্টি get/set করুন, সিগন্যালে সংযোগ করুন এবং JS কলেবল গডোটে পাস করুন।
## উদাহরণ অ্যাপ দিয়ে শুরু
[উদাহরণ অ্যাপ](example/) প্রধান বৈশিষ্ট্যগুলি প্রদর্শন করে। প্রয়োজনীয় প্রি-রিকুইজিট ইনস্টল করার পর (যেমন, Node, Java, Gradle, Ruby-এর জন্য ASDF ব্যবহার করে) এবং গডোট স্যাম্পল এক্সপোর্ট করার পর (`./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={...}/>` যোগ করুন (ডিফল্টভাবে গডোটের মূল উইন্ডো)।
5. কমান্ড-লাইন আর্গুমেন্ট সহ `RTNGodot.createInstance([...])` কল করে গডোট থ্রেডে গডোট ইনিশিয়ালাইজ করুন। মূল পয়েন্ট:
- React Native-এ এমবেড করতে `--display-driver embedded` ব্যবহার করুন।
- Android-এ, একটি ফোল্ডার পাথ (যেমন, `--path /main`) বা PCK পাস করুন; iOS-এ, প্যাক ফাইলের সাথে `--main-pack` ব্যবহার করুন। ছোট আকার এবং সহজ আপডেটের জন্য গডোট অ্যাপের রানটাইম ডাউনলোড সুপারিশ করা হয়।
6. গডোট থ্রেডে `RTNGodot.destroyInstance()` দিয়ে বন্ধ করুন; JS মূল থ্রেড থেকে `RTNGodot.pause()` / `RTNGodot.resume()` দিয়ে পজ/রিজিউম করুন।
আপনার গডোট প্রজেক্ট PCK বা ZIP হিসাবে এক্সপোর্ট করুন; উদাহরণে সহায়ক স্ক্রিপ্ট অন্তর্ভুক্ত রয়েছে।
## গডোট 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 ফাংশন Callable হিসাবে গডোট মেথডে পাস করুন (যেমন, কাস্টম Node-এর GDScript থেকে)।
## থ্রেডিং এবং JavaScript
গডোট নিজস্ব থ্রেডে চলে। JavaScript থেকে ইন্টারঅ্যাক্ট করতে, লাইব্রেরি [react-native-worklets-core](https://github.com/margelo/react-native-worklets-core) ব্যবহার করে `runOnGodotThread()` এর মাধ্যমে গডোট থ্রেডে ওয়ার্কলেটাইজড JS চালায়। এটি প্রস্তাবিত পদ্ধতি; RN মূল থ্রেড থেকে সরাসরি কল সম্ভব তবে সীমিত (যেমন, Scene Tree অ্যাক্সেস থ্রেড-নিরাপদ নয়) এবং অবজেক্ট রেফারেন্স প্রসঙ্গের মধ্যে বিনিময়যোগ্য নয়।
## উন্নত বিষয়
* **কাস্টম LibGodot বিল্ড**: LibGodot ক্লোন করুন (ব্রাঞ্চ `libgodot_migeran_45`), প্রদত্ত স্ক্রিপ্ট দিয়ে বিল্ড করুন, এবং পরিবেশ ভেরিয়েবলের মাধ্যমে ডাউনলোড পাথ ওভাররাইড করুন (যেমন, `LIBGODOT_XCFRAMEWORK_PATH`)।
* **নেটিভ কোড ডিবাগিং**: iOS-এর জন্য, একটি ডেভ LibGodot বিল্ড করুন এবং Xcode-এ ব্রেকপয়েন্ট সেট করুন; Android-এর জন্য, সিম্বল ডিরেক্টরি যোগ করুন এবং ঐচ্ছিকভাবে গডোট সোর্স ট্রি সিমলিংক করুন।
* **গডোট এডিটরে রিমোট ডিবাগিং**: `--remote-debug tcp://<host>:6007` পাস করুন এবং Android-এ `adb reverse` ব্যবহার করুন; iOS-এ এডিটরের Remote Host সেট করুন।
## লাইসেন্স
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.