Một thư viện mới, React Native Godot, cho phép các nhà phát triển nhúng Godot Engine mã nguồn mở cho đồ họa 3D vào ứng dụng React Native.
Các nhóm phát triển doanh nghiệp thường phải cân bằng giữa hiệu quả đa nền tảng của các framework như React Native với nhu cầu ngày càng cao về đồ họa phong phú và tương tác.
Ứng dụng nghiệp vụ tiêu chuẩn phù hợp cho nhập liệu và quy trình làm việc, nhưng chúng tỏ ra kém hiệu quả khi đối mặt với trực quan hóa 3D phức tạp, mô phỏng vật lý hoặc module đào tạo dạng trò chơi.
Được phát triển bởiMigeran, phối hợp vớiBorn, React Native Godot kết hợp giao diện người dùng native tiêu chuẩn với nội dung 2D và 3D hiệu suất cao.
Thư viện này đã là một triển khai ổn định, được báo cáo là “phục vụ hàng triệu người dùng trong các ứng dụng của Born”.
Việc sử dụng trong môi trường sản xuất này cung cấp một minh chứng mạnh mẽ cho các doanh nghiệp đang cân nhắc chi phí duy trì hai codebase riêng biệt;
một cho ứng dụng nghiệp vụ và một cho engine đồ họa.
Các nhóm phát triển có thể tiếp tục sử dụng React Native cho phần lớn ứng dụng của họ – quản lý xác thực người dùng, gọi API và điều hướng – trong khi chuyển giao các tác vụ đòi hỏi đồ họa cao cho một instance Godot được nhúng bằng thư viện React Native Godot.
Ví dụ, trong ứng dụng dịch vụ hiện trường, một kỹ thuật viên có thể sử dụng giao diện React Native tiêu chuẩn để xem lệnh công việc, sau đó chạm vào một thành phần tải mô hình 3D tương tác của máy móc được render bởi Godot.
Chế độ xem nhúng này có thể cho phép xoay mô hình, tách biệt bộ phận và hướng dẫn sửa chữa dạng hoạt hình, mang lại trải nghiệm phong phú hơn nhiều so với hình ảnh tĩnh.
Logic tương tự áp dụng cho ứng dụng bán lẻ cần tính năng “thử đồ ảo” hoặc ứng dụng nội bộ doanh nghiệp, nơi đào tạo tuân thủ dạng trò chơi có thể chạy bên trong cổng thông tin nhân viên chính.
Thư viện hỗ trợ tính linh hoạt này bằng cách cho phép instance Godot được khởi động, dừng và thậm chí khởi động lại với cấu hình mới.
Ứng dụng không bị khóa vào một scene;
nó có thể “tải các file ứng dụng Godot khác nhau” một cách linh hoạt khi cần.
Tích hợp công cụ này đòi hỏi một cách tiếp cận kiến trúc cụ thể, chủ yếu liên quan đến xử lý luồng.
Một tính năng hiệu suất quan trọng là luồng chuyên dụng của Godot, một lợi ích lớn vì nó “không ảnh hưởng đến luồng chính của ứng dụng cũng như luồng JavaScript của React Native”.
Thiết kế này ngăn chặn việc render 3D phức tạp làm chặn cập nhật giao diện người dùng hoặc gây ra tình trạng chậm chạp trong ứng dụng chính.
Tuy nhiên, sự tách biệt này tạo ra một rào cản giao tiếp.
Để tương tác với engine Godot từ JavaScript, các nhà phát triển phải sử dụng thư việnreact-native-worklets-core.
Các hàm JavaScript dự định chạy trên luồng Godot phải được chỉ định rõ ràng bằng chỉ thị ‘worklet’.
React Native Godot cung cấp một trình trợ giúprunOnGodotThread()để thực thi các hàm này trong ngữ cảnh chính xác.
Tài liệu nêu rõ rằng việc cố gắng gọi API Godot trực tiếp từ luồng JS React Native chính “nhìn chung không được khuyến nghị”.
Các lệnh gọi như vậy sẽ được Godot coi là đến từ một luồng nền, hạn chế quyền truy cập vào các chức năng cốt lõi như Scene Tree.
Với mô hình đó, việc tích hợp rất toàn diện.
Toàn bộ API Godot có thể truy cập được từ TypeScript và JavaScript.
Điều này cho phép các nhà phát triển khởi tạo đối tượng Godot, gọi phương thức và quản lý thuộc tính trực tiếp từ mã React Native của họ.
Quyền truy cập đi sâu hơn, cho phép các hàm JS được đính kèm vào tín hiệu Godot hoặc được truyền vào Godot dưới dạng Callables.
Việc cài đặt cũng không phải là một gói npm tiêu chuẩn.
Trong khi các ràng buộc được thêm vào qua Yarn, các tệp nhị phân engine LibGodot cốt lõi “không được phân phối trên npm”.
Các nhà phát triển phải chạy lệnhyarn download-prebuiltriêng biệt để tải chúng.
Quy trình hai phần này là có chủ đích;
nó cho phép các nhóm cập nhật thư viện React Native và engine Godot một cách độc lập, hoặc thậm chí thay thế bằng các phiên bản LibGodot tùy chỉnh của riêng họ.
React Native Godot là một công cụ khả thi để hợp nhất các chức năng ứng dụng.
Nó thu hẹp khoảng cách giữa ứng dụng logic nghiệp vụ thông thường và đồ họa hiệu suất cao, giúp tránh được chi phí và độ phức tạp của việc xây dựng và duy trì hai ứng dụng riêng biệt.
Các nhóm phát triển xem xét lộ trình di động của họ giờ đây có thể xác định các cơ hội nơi nội dung tĩnh có thể được thay thế bằng trực quan hóa tương tác.
Thư viện cung cấp một con đường thực tế để thêm trình xem sản phẩm 3D, mô phỏng đào tạo hoặc trực quan hóa dữ liệu nâng cao vào codebase React Native hiện có.





![[Tự học C++] Số dấu phẩy động(float, double,…) trong C++](https://cafedev.vn/wp-content/uploads/2019/12/cafedevn_c_develoment-100x70.jpg)

