Godot: تجاوز سعة المخزن المؤقت عند تركيب 14563 PackedScene.

تم إنشاؤها على ٢١ أبريل ٢٠١٧  ·  3تعليقات  ·  مصدر: godotengine/godot

نظام التشغيل أو الجهاز - إصدار Godot:
Linux - Ubuntu Mate 16.10 - Godot 2.1.2 مستقر

وصف المشكلة:
كنت أواجه استخدامًا مفرطًا لذاكرة الوصول العشوائي مع النموذج الأولي للعبة Godot 2D ، وقررت معرفة سبب ذلك. كنت أرغب في معرفة عدد حالات PackedScene التي يمكن أن يتعامل معها Godot دون تفجير ذاكرة الوصول العشوائي الخاصة بي.

قمت ببناء مشهد رئيسي بهندسة معمارية بسيطة:

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

لقد أنشأت أيضًا مشهدًا يسمى "Hexa.tscn" ، بهندسة معمارية بسيطة أيضًا:

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

في نص برمجي متصل بالعقدة الجذرية للمشهد الرئيسي ، أحاول إضافة أكبر قدر ممكن من مثيل مشهد "Hexa" في عقدة YSort.

إذا قمت بإضافة 14562 Hexa مشهد ، كل شيء يسير على ما يرام (~ 3٪ استخدام وحدة المعالجة المركزية ، 115Mo استخدام ذاكرة الوصول العشوائي ، وهذا يمثل: 29655 كائن ، 3 موارد ، 29127 عقدة)

ولكن إذا أضفت حالات مشهد Hexa 14563 ، فقد واجهت خطأ تجاوز سعة المخزن المؤقت ، على النحو التالي:

في علامة التبويب خطأ في مصحح الأخطاء:

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 التقييمات