Godot: Переполнение буфера при создании экземпляра 14563 PackedScene.

Созданный на 21 апр. 2017  ·  3Комментарии  ·  Источник: godotengine/godot

Операционная система или устройство - версия Годо:
Linux - Ubuntu Mate 16.10 - Godot 2.1.2 стабильная

Описание проблемы:
Я столкнулся с чрезмерным использованием оперативной памяти в моем прототипе 2D-игры Godot, и я решил найти причину этого. Я хотел посмотреть, сколько экземпляров PackedScene может обработать Godot, не перегружая мою оперативную память.

Я построил основную сцену с простой архитектурой:

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

Я также построил сцену под названием «Hexa.tscn», тоже с простой архитектурой:

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

В скрипте, прикрепленном к корневому узлу основной сцены, я стараюсь добавить как можно больше экземпляров сцены "Hexa" в узел YSort.

Если я добавлю 14562 экземпляра сцены Hexa, все пойдет хорошо (использование 1 ЦП ~ 3%, использование ОЗУ ~ 115 МБ, что составляет: 29655 объектов, 3 ресурса, 29127 узлов)

Но если я добавлю 14563 экземпляра сцены Hexa, я обнаружу ошибку переполнения буфера, как показано ниже:

На вкладке Ошибка отладчика:

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

На вкладке «Вывод» отладчика:

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

Это ошибка?

Действия по воспроизведению:
Запустите прикрепленный проект Godot в редакторе Godot, чтобы увидеть ошибку в отладчике.

Ссылка на минимальный пример проекта:
memtest.tar.gz

archived enhancement junior job core

Самый полезный комментарий

Привет @Faless !

Я рад узнать, что эта проблема, по-видимому, не является ошибкой, а просто неправильной конфигурацией параметра с моей стороны.

Спасибо за озарение :)

Может быть интересно улучшить сообщение об ошибке, чтобы проинформировать пользователя о настройке этого параметра message_queue_size_kb?

Все 3 Комментарий

Вы хотите увеличить максимальный размер очереди сообщений в:

project settings -> core -> message_queue_size_kb
к чему-то более высокому.

В любом случае я бы избегал создания такого количества узлов по соображениям производительности.

Привет @Faless !

Я рад узнать, что эта проблема, по-видимому, не является ошибкой, а просто неправильной конфигурацией параметра с моей стороны.

Спасибо за озарение :)

Может быть интересно улучшить сообщение об ошибке, чтобы проинформировать пользователя о настройке этого параметра message_queue_size_kb?

Я хотел бы сообщить вам, что в Godot 3.1 Alpha 2 сообщение об ошибке еще хуже:

image

Мне потребовалось некоторое время, чтобы понять, что я достиг пределов очереди сообщений.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги