Sistema operacional ou dispositivo - versão Godot:
Linux - Ubuntu Mate 16.10 - Godot 2.1.2 estável
Descrição do problema:
Eu estava enfrentando um uso excessivo de RAM com meu protótipo de jogo Godot 2D e decidi descobrir a causa disso. Eu queria ver quantas instâncias do PackedScene Godot poderia controlar sem estourar minha RAM.
Construí uma cena principal com uma arquitetura simples:
---> Node // Script attached here
+----> YSort
Também construí uma cena chamada "Hexa.tscn", com uma arquitetura também simples:
---> Area2D
+-----> Sprite
Em um script anexado ao nó raiz da cena principal, tento adicionar o máximo de instância de cena "Hexa" possível no nó YSort.
Se eu adicionar 14562 instâncias de cena Hexa, tudo correrá bem (~ 3% de uso de 1 CPU, ~ 115Mo de uso de RAM, que representa: 29655 objetos, 3 recursos, 29127 nós)
Mas se eu adicionar 14563 instâncias de cena Hexa, encontro um erro de estouro de buffer, conforme a seguir:
Na guia Erro do depurador:
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
Na guia Output do depurador:
failed method: Sprite:_update_callback target ID: 29681
TOTAL BYTES: 1048560
NULL count: 0
CALL _sort_children: 14564
CALL_update_callback: 29126
Isso é um inseto ?
Passos para reproduzir:
Execute o projeto Godot anexado no editor Godot para ver o erro no depurador.
Link para projeto de exemplo mínimo:
memtest.tar.gz
Você deseja aumentar o tamanho máximo da fila de mensagens em:
project settings -> core -> message_queue_size_kb
para algo mais alto.
Em qualquer caso, eu evitaria criar tantos nós por motivos de desempenho.
Oi @Faless !
Fico feliz em saber que esse problema aparentemente não é um bug, mas apenas uma configuração incorreta de uma configuração de minha parte.
Obrigado por você pela iluminação :)
Seria interessante melhorar a mensagem de erro, a fim de informar o usuário sobre esse ajuste de configuração de message_queue_size_kb?
Gostaria de informar que no Godot 3.1 Alpha 2 a mensagem de erro é ainda pior:
Levei algum tempo para perceber que atingi o limite da fila de mensagens.
Comentários muito úteis
Oi @Faless !
Fico feliz em saber que esse problema aparentemente não é um bug, mas apenas uma configuração incorreta de uma configuração de minha parte.
Obrigado por você pela iluminação :)
Seria interessante melhorar a mensagem de erro, a fim de informar o usuário sobre esse ajuste de configuração de message_queue_size_kb?