Hướng dẫn khắc phục lỗi Crash WebGL/GPU trong RPG Maker MZ trên Android

Hướng dẫn khắc phục lỗi Crash WebGL/GPU trong RPG Maker MZ trên Android

Lưu ý: Lỗi này thường xuất hiện khi chạy ứng dụng trong các trình giả lập (VD: LDPlayer) nhưng không xảy ra trên điện thoại thật. Hướng dẫn dưới đây giúp bạn kiểm tra và khắc phục để phát triển ổn định.


1. Nguyên nhân chính

  • Trình giả lập LDPlayer 9 (x86_64) sử dụng GPU emulation không ổn định, gây glGetError exceededSIGTRAP trong quá trình render WebGL.
  • Live2D và các hiệu ứng WebGL yêu cầu GPU thật (ARM) để hoạt động đúng.
  • Log lỗi mẫu (đã xem trong error.txt) cho thấy:
    Renderer process (4974) crash detected (code 5)
    Fatal signal 5 (SIGTRAP), code 128 (SI_KERNEL)
    glGetError exceeded.
          

2. Kiểm tra trên thiết bị thật

Đầu tiên, hãy cài APK lên một điện thoại Android thực (ARM) và kiểm tra:

  1. Khởi động game.
  2. Kiểm tra xem Live2D có hiển thị đúng không.
  3. Nếu không có crash, vấn đề chỉ nằm ở môi trường giả lập.

3. Giải pháp cho môi trường phát triển

3.1. Dùng Android Studio Emulator (ARM64)

Android Studio cho phép tạo AVD với hệ thống ARM64‑v8a. Các bước:

  1. Mở Android Studio → AVD ManagerCreate Virtual Device.
  2. Chọn một thiết bị (Pixel, Nexus …) → Next.
  3. Trong System Image chọn tab Other Images → tìm ARM64‑v8a (API level bạn đang dùng) → DownloadFinish.
  4. Khởi chạy AVD, cài APK và kiểm tra.

3.2. Nếu vẫn muốn dùng LDPlayer

Chỉ nên dùng để kiểm tra UI, không dùng để test Live2D/WebGL.

// Thêm vào MainActivity.kt (chỉ cho debug trên emulator)
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);   // Vô hiệu hoá hardware acceleration

Nhớ gỡ bỏ đoạn code này trước khi build bản phát hành, vì sẽ làm giảm hiệu năng.

3.3. Các trình giả lập khác hỗ trợ ARM

4. Kiểm tra lại sau khi thay đổi

  1. Build lại dự án (./gradlew assembleDebug).
  2. Cài lên thiết bị (hoặc emulator ARM).
  3. Mở game, vào màn hình có Live2D – nếu không còn crash, vấn đề đã được giải quyết.
  4. Kiểm tra logcat để chắc chắn không còn glGetError exceeded hoặc SIGTRAP.

5. Tổng kết nhanh

  • Crash chỉ xảy ra trên giả lập x86_64 (VD: LDPlayer).
  • Kiểm tra trên điện thoại thật để xác nhận.
  • Dùng Android Studio Emulator (ARM64) hoặc thiết bị thật cho việc test Live2D/WebGL.
  • Nếu phải dùng LDPlayer, tạm thời tắt hardware acceleration trong WebView.

Chúc bạn phát triển suôn sẻ! Nếu còn thắc mắc nào khác, cứ comment lại nhé. 🎮