Sistem operasi atau perangkat - versi Godot:
Linux - Ubuntu Mate 16.10 - Godot 2.1.2 stabil
Deskripsi masalah:
Saya menghadapi penggunaan RAM yang berlebihan dengan prototipe game Godot 2D saya, dan saya memutuskan untuk menemukan penyebabnya. Saya ingin melihat berapa banyak contoh PackedScene yang bisa ditangani Godot tanpa menghabiskan RAM saya.
Saya membangun adegan utama dengan arsitektur sederhana:
---> Node // Script attached here
+----> YSort
Saya juga membuat adegan yang disebut "Hexa.tscn", dengan arsitektur sederhana juga:
---> Area2D
+-----> Sprite
Dalam skrip yang dilampirkan ke simpul akar adegan utama, saya mencoba menambahkan sebanyak mungkin contoh adegan "Hexa" di YSort Node.js.
Jika saya menambahkan 14562 instance adegan Hexa, semuanya berjalan dengan baik (~3% penggunaan 1 CPU, ~115Mo penggunaan RAM, yang mewakili: 29655 Objek, 3 Sumber Daya, 29127 Node)
Tetapi jika saya menambahkan 14563 instance adegan Hexa, saya menemukan kesalahan buffer overflow, sebagai berikut:
Di tab Kesalahan debugger:
Type: Error
Description:
Time: 0:00:00:0458
C Error: Condition '(buffer_end+room_needed) >= buffer_size' is true. returned ERR_OUT_OF_MEMORY
C Source: core/message_queue.ccp:54
C function: push_call
Di tab Output dari debugger:
failed method: Sprite:_update_callback target ID: 29681
TOTAL BYTES: 1048560
NULL count: 0
CALL _sort_children: 14564
CALL_update_callback: 29126
Apakah ini bug?
Langkah-langkah untuk mereproduksi:
Jalankan proyek Godot terlampir di editor Godot untuk melihat kesalahan di debugger.
Tautan ke proyek contoh minimal:
memtest.tar.gz
Anda ingin menambah ukuran maksimum antrian pesan di:
project settings -> core -> message_queue_size_kb
ke sesuatu yang lebih tinggi.
Bagaimanapun saya akan menghindari membuat begitu banyak node karena alasan kinerja.
Hai @Faless !
Saya senang mengetahui bahwa masalah ini tampaknya bukan bug, tetapi hanya kesalahan konfigurasi pengaturan di pihak saya.
Terima kasih atas pencerahannya :)
Mungkinkah menarik untuk memperbaiki pesan kesalahan, untuk memberi tahu pengguna tentang penyetelan pengaturan message_queue_size_kb ini?
Saya ingin memberi tahu Anda bahwa di Godot 3.1 Alpha 2 pesan kesalahannya bahkan paling buruk:
Butuh beberapa waktu bagi saya untuk menyadari bahwa saya telah mencapai batas antrian pesan.
Komentar yang paling membantu
Hai @Faless !
Saya senang mengetahui bahwa masalah ini tampaknya bukan bug, tetapi hanya kesalahan konfigurasi pengaturan di pihak saya.
Terima kasih atas pencerahannya :)
Mungkinkah menarik untuk memperbaiki pesan kesalahan, untuk memberi tahu pengguna tentang penyetelan pengaturan message_queue_size_kb ini?