Godot: Desbordamiento del búfer al crear instancias de 14563 PackedScene.

Creado en 21 abr. 2017  ·  3Comentarios  ·  Fuente: godotengine/godot

Sistema operativo o dispositivo - versión Godot:
Linux - Ubuntu Mate 16.10 - Godot 2.1.2 estable

Descripcion del problema:
Estaba enfrentando un uso excesivo de RAM con mi prototipo de juego Godot 2D, y decidí encontrar la causa. Quería ver cuántas instancias de PackedScene podía manejar Godot sin quemar mi RAM.

Construí una escena principal con una arquitectura simple:

---> Node // Script attached  here
       +----> YSort

También construí una escena llamada "Hexa.tscn", con una arquitectura simple también:

---> Area2D
       +-----> Sprite

En un script adjunto al nodo raíz de la escena principal, trato de agregar tanta instancia de escena "Hexa" como sea posible en el nodo YSort.

Si agrego 14562 instancias de escena Hexa, todo va bien (~ 3% de uso de 1 CPU, ~ 115Mo de uso de RAM, que representa: 29655 objetos, 3 recursos, 29127 nodos)

Pero si agrego 14563 instancias de escena Hexa, encuentro un error de desbordamiento de búfer, como sigue:

En la pestaña Error del 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

En la pestaña Salida del depurador:

failed method: Sprite:_update_callback target ID: 29681
TOTAL BYTES: 1048560
NULL count: 0
CALL _sort_children: 14564
CALL_update_callback: 29126

¿Es esto un error?

Pasos para reproducir:
Ejecute el proyecto Godot adjunto en el editor Godot para ver el error en el depurador.

Enlace al proyecto de ejemplo mínimo:
memtest.tar.gz

archived enhancement junior job core

Comentario más útil

Hola @Faless !

Me alegra saber que este problema aparentemente no es un error, sino solo una configuración incorrecta de una configuración de mi parte.

Gracias por ti por la iluminación :)

¿Podría ser interesante mejorar el mensaje de error para informar al usuario sobre este ajuste de configuración message_queue_size_kb?

Todos 3 comentarios

Quiere aumentar el tamaño máximo de la cola de mensajes en:

project settings -> core -> message_queue_size_kb
a algo más alto.

En cualquier caso, evitaría crear tantos nodos por razones de rendimiento.

Hola @Faless !

Me alegra saber que este problema aparentemente no es un error, sino solo una configuración incorrecta de una configuración de mi parte.

Gracias por ti por la iluminación :)

¿Podría ser interesante mejorar el mensaje de error para informar al usuario sobre este ajuste de configuración message_queue_size_kb?

Me gustaría informarles que en Godot 3.1 Alpha 2 el mensaje de error es aún peor:

image

Me tomó bastante tiempo darme cuenta de que llegué al límite de la cola de mensajes.

¿Fue útil esta página
0 / 5 - 0 calificaciones