Godot: Débordement de la mémoire tampon lors de l'instanciation de 14563 PackedScene.

Créé le 21 avr. 2017  ·  3Commentaires  ·  Source: godotengine/godot

Système d'exploitation ou appareil - Version Godot :
Linux - Ubuntu Mate 16.10 - Godot 2.1.2 stable

Description du problème:
J'étais confronté à une surutilisation de RAM avec mon prototype de jeu Godot 2D, et j'ai décidé d'en trouver la cause. Je voulais voir combien d'instances PackedScene Godot pouvait gérer sans exploser ma RAM.

J'ai construit une scène principale avec une architecture simple :

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

J'ai aussi construit une scène appelée "Hexa.tscn", avec une architecture simple aussi :

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

Dans un script attaché au nœud racine de la scène principale, j'essaie d'ajouter autant d'instances de scène "Hexa" que possible dans le nœud YSort.

Si j'ajoute 14562 instances de scène Hexa, tout se passe bien (~3% d'utilisation de 1 CPU, ~115Mo d'utilisation de RAM, cela représente : 29655 objets, 3 ressources, 29127 nœuds)

Mais si j'ajoute 14563 instances de scène Hexa, je rencontre une erreur de dépassement de mémoire tampon, comme suit :

Dans l'onglet Erreur du débogueur :

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

Dans l'onglet Sortie du débogueur :

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

Est-ce un bug ?

Étapes à reproduire :
Exécutez le projet Godot joint dans l'éditeur Godot pour voir l'erreur dans le débogueur.

Lien vers un exemple de projet minimal :
memtest.tar.gz

archived enhancement junior job core

Commentaire le plus utile

Salut @Faless !

Je suis heureux de savoir que ce problème n'est apparemment pas un bug, mais juste une mauvaise configuration d'un paramètre de ma part.

Merci pour vous pour l'éclairage :)

Serait-il intéressant d'améliorer le message d'erreur, afin d'informer l'utilisateur de ce réglage du paramètre message_queue_size_kb ?

Tous les 3 commentaires

Vous souhaitez augmenter la taille maximale de la file d'attente des messages dans :

project settings -> core -> message_queue_size_kb
à quelque chose de plus élevé.

J'éviterais en tout cas de créer autant de nœuds pour des raisons de performances.

Salut @Faless !

Je suis heureux de savoir que ce problème n'est apparemment pas un bug, mais juste une mauvaise configuration d'un paramètre de ma part.

Merci pour vous pour l'éclairage :)

Serait-il intéressant d'améliorer le message d'erreur, afin d'informer l'utilisateur de ce réglage du paramètre message_queue_size_kb ?

Je tiens à vous informer que dans Godot 3.1 Alpha 2 le message d'erreur est encore pire :

image

Il m'a fallu un certain temps pour réaliser que j'avais atteint les limites de la file d'attente de messages.

Cette page vous a été utile?
0 / 5 - 0 notes