以下 هو قائمة من العلامات الشائعة في MicroProfiler ، مقسمة حسب الفئة. تُعرف العلامات أيضًا بالتبادل بالمهام، أجهزة التوقيت، النطاقات، العمليات، والملصقات. مهما كان الاسم، فإنها تمثل وحدة من العمل.
يمكن أن يساعدك فهم هذه العلامات في تحديد الشفرات problematic في لعبتك. تحتوي الجداول على ملصق العلامة، الأوصاف، والنصائح لتحسين الأداء وتحسين لعبتك.
النوم
عندما لا تقوم الخيوط بأداء مهام نشطة، فإنها تدخل في حالة نوم، مع علامات لتشير إلى المدة التي كانت فيها الخيط نائماً. في أي وقت، من الشائع جداً أن تكون معظم خيوط العمل في حالة نوم.
التنقل
| التسمية | الوصف | نصائح الأداء |
|---|---|---|
| rasterizeTile | تحديث بلاطات التنقل اللازمة لطلب تحديد المسار، يتبعها عادةً computePath التي تتطلب أن تكون تلك البلاطات محدَّثة. يتبع NavigationJob/preprocess في الخيط الرئيسي. | قلل من عدد إبطال بلاطات تحديد المسار، حيث أن هذا يتسبب في الحاجة إلى إعادة حساب تلك المسارات. يحدث هذا بسبب تحركات المواضع غير القابلة للتنقل. |
| computePath | يحسب المسارات، عادةً بعد rasterizeTile. | قلل من عدد وامتداد العالم لاستدعاءات Path:ComputeAsync() . حاول إعادة استخدام المسارات للوكالات المتعددة إذا كان من المتوقع أن تبدأ/تنتهي من مواقع مشابهة تقريبًا. |
| preprocess/getPrimitivesOverlapping | يجمع هندسة العالم لكل بلاطة تحديد المسار ويحدد مهام التغريدة ليتم تنفيذها بواسطة الخيط المعني بتحديد المسار. | قلل من عدد الأجزاء. |
الرسوم المتحركة والهيكليات البشرية
| التسمية | الوصف | نصائح الأداء |
|---|---|---|
| Simulation/gameStepped | معالجة الكائنات المحددة للعبة مثل Humanoids، وAnimations واستدعاءات نبض القلب. | انظر علامات gameStepped أدناه. |
| Simulation/gameStepped/stepHumanoid | تغيرات حالة Humanoid والحركة. | قلل من عدد Humanoids أو قم بإيقاف تشغيل حالات Humanoid على NPCs التي لا تحتاجها، مثل Climbing أو Swimming. قلل من الاستدعاءات إلى Humanoid.StateChanged أو تغييرات الحالة مثل Running أو Died. |
| Simulation/gameStepped/stepAnimation | سوف يقوم Animators بالتقدم في الرسوم المتحركة التي يتم تشغيلها حاليًا. | قلل من عدد Animators أو المفاصل المتحركة لتقليل عبء العمل في هذه الخطوة. قلل من عدد الاستدعاءات إلى أحداث الرسوم المتحركة مثل AnimationTrack.KeyframeReached أو AnimationTrack.Ended. |
| Simulation/gameStepped/RunService.Stepped | تشغيل الوظائف المتصلة بحدث RunService.Stepped. | قلل من عدد أو عبء العمل لوظائف المتصلة بهذا الحدث. اعتبر تأخير أو استبدال الحسابات المكلفة أو توزيع حسابات عبر عدة إطارات. |
الصوت
| التسمية | الوصف | نصائح الأداء |
|---|---|---|
| الصوت | تعالج المحاكاة الصوتية وتحديث الأصوات في التشغيل النشط. | انظر علامات الصوت أدناه. |
| Sound/stepInstances | تحديث حجم الأصوات النشطة في مساحة العمل. | قلل من عدد الأصوات في التشغيل النشط. |
الشبكات
| التسمية | الوصف | نصائح الأداء |
|---|---|---|
| Net PacketReceive | يستقبل حزم الشبكة. إذا كانت هناك العديد من الكائنات أو الأحداث التي يتم نسخها، فإن هذه الخطوة تستغرق وقتًا أطول. | قم بنسخ عدد أقل من الكائنات أو الأحداث. |
| Replicator/ProcessPackets | تعالج محتويات حزم الشبكة، مثل الحركة، استدعاءات الأحداث وتغييرات الخصائص. | قلل من عدد أو حجم الكائنات التي يتم نسخها، أو قم بذلك على خطوات تدريجية. قد تزداد إذا زاد حجم الخريطة، حيث تميل الخرائط الأكبر إلى المزيد من النشاط العام. |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | يرسل بيانات حول النشاط في اللعبة. | قلل من عدد الكائنات المتحركة و/أو اللمسات. انظر الأقسام التالية. |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | يرسل المناطق المحددة المقابلة إلى عملاء محددين في ميزة البث. | قلل من الحد الأدنى والأهداف لنصف قطر البث. |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | يرسل تغييرات الخصائص، استدعاءات الأحداث البعيدة، تغييرات حالة Humanoid، تغييرات حالة الرسوم المتحركة، ونسخ مثيلات جديدة. | قلل من عدد التغييرات المنسوخة إلى نموذج البيانات. |
| Replicator SendCluster | يرسل بيانات Terrain إلى العملاء. | قلل من عدد أو حجم تغييرات التضاريس. |
| ModelCompleteness Mega Job | خادم فقط: الاكتمال هو مفهوم داخلي. عند إرسال النماذج بشكل كامل، يتم إرسال أحداث اكتمال النموذج. | أضف أو أزل عدد أقل من الحالات. |
| deserializePacket | معالجة حزمة الشبكة على مستوى منخفض. يُعد للتحضير لـ Replicator/ProcessPackets. | أرسل عددًا أقل من التحديثات أو أصغرها. |
الرسم
| التسمية | الوصف | نصائح الأداء |
|---|---|---|
| Prepare | تُجمع المعلومات من الخيط الرئيسي وتحديث هياكل البيانات المختلفة المستخدمة في العرض. | انظر علامات Prepare أدناه. |
| Prepare/Pass3dAdorn | يتعامل مع عرض مختلف زينة الكائنات، مثل تسميات النص فوق الكائنات. بالنسبة لعلامات Humanoid مع الانسداد، تتضمن هذه الخطوة القيام برفع الشعاع لتحديد ما إذا كانت تلك الكائنات مرئية. يشمل ذلك الأجزاء غير الشفافة لتسهيل تصورات التصحيح. | قلل من عدد الكائنات الزينة المرئية، مثل BillboardGuis، تسميات أسماء/صحة Humanoid، إلخ. قلل من عدد الأجزاء المرئية. |
| Prepare/Pass2d | يعد للعرض UI ثنائي الأبعاد (كلاً من اللاعب وواجهة Roblox). | قلل من عدد أو تعقيد عناصر الواجهة. |
| Prepare/UpdatePrepare/updateInvalidParts | تحديث الأجزاء التي تم تغيير أو إضافة خاصية لها. | قلل من عدد تغيرات الخصائص في العالم. إذا كان النص يحدّث مجموعة كبيرة من خصائص الكائن، فككها عبر إطارات. |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | يعد "الهندسيات السريعة" المستخدمة لعرض Humanoids والمدمجة MeshParts. تشير العلامات إلى عدد الأجزاء، والرؤوس، وحجم الرؤوس. | قلل من التغيرات المرئية للنماذج مع Humanoids أو MeshParts المدعمة. |
| Prepare/UpdatePrepare/updateDynamicParts | يعد Beams، ParticleEmitters، وHumanoids لعرضها. | قلل من عدد الكائنات المرئية Beams، ParticleEmitters، وHumanoids. |
| Prepare/UpdatePrepare/updateInstancedClusters | تحديث الهندسة التي تستخدم العرض المحدث مثل الأجزاء. تشير العلامات Clusters وInstances إلى عدد التحديثات. | قلل من العمل الذي يقوم ضمنياً بتحديث محيط الجزء، مثل BasePart.CFrame، BasePart.Size، أو Motor6D.Transform. تعديلات الخصائص الإبداعية مثل Bone.Transform يمكن أن تساعد. |
| Perform | عندما يتم إنشاء وإصدار أوامر العرض الفعلية. | انظر علامات Perform أدناه. |
| Perform/fillGuiVertices | تمتلئ الذاكرة المؤقتة برؤوس الواجهة للتحضير للرسم. تشير علامة عدد واجهة المستخدم إلى مقدار LayerCollectors المرئي في الإطار. | إذا كانت التكلفة مرتفعة، قلل من العدد، الكثافة، والمساحة التي تأخذها عناصر الواجهة. إذا كان هناك العديد من علامات Process GuiEffect، اعتبر تقليل استخدام UIGradient وUICorner على تسميات النص. |
| Perform/Scene/queryFrustumOrdered | تطبق تقليم الكاميرا حتى لا يتم عرض الكائنات غير المرئية. | إذا كانت التكلفة مرتفعة، فهذا يعني أن هناك العديد من العناصر. ربما استخدم بعض الأشكال الأكبر حيث يحتوي شكل واحد على مزيد من التفاصيل بدلاً من العديد من القطع الفردية الصغيرة. |
| Perform/Scene/computeLightingPerform | حساب الإضاءة بالقرب من الكاميرا. | تلاعب بعدد مصادر الإضاءة أو حرك الكاميرا بشكل أقل لتقليل الوقت الذي يستغرقه إعادة حساب الإضاءة. |
| Perform/Scene/computeLightingPerform/LightGridCPU | تحديث إضاءة الفوكسل، التي تُستخدم في مستويات الجودة المنخفضة. | إذا استغرقت تحديثات شغل الكتل وقتًا طويلاً، فكر في استخدام هندسة أدنى في الدقة، تقليل عدد الأجزاء، أو تثبيت الأجزاء. إذا استغرقت العلامات الأخرى وقتًا طويلاً، فكر في تقليل عدد الأضواء واستخدام هندسة غير ذات ظلال للكائنات التي تتحرك وتلغيoccupied. |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | تحديث خرائط الظلال. لا يتم تنفيذها عند مستويات الجودة تحت 4. | قلل من عدد الأضواء. يمكنك أيضًا استخدام Light.Shadows وBasePart.CastShadow لتعطيل الظلال للكائنات الأقل أهمية. انظر تحسين الأداء. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO, وSSAOSApply | عرض المعالجة اللاحقة. | قلل من عدد تأثيرات المعالجة اللاحقة. عادة ما تكون هذه ليست كبيرة. |
| Perform/Scene/UI | عرض واجهة المستخدم. في Id_Screen، هناك علامة مع عدد المجموعات، المواد وال triangles المستخدمة. | قلل من عدد عناصر واجهة المستخدم المرئية. استخدام CanvasGroups يمكن أن يساعد على حساب تكاليف استخدام الذاكرة الزائدة. |
| Perform/Scene/UpdateView/updateParticles، updateParticleBoundings | تحديث موضع الجسيمات وحدودها. | قلل من عدد ParticleEmitters، ومعدلات الانبعاث، والعمر، إلخ. قلل حركة المنبعثات. |
| Scene/Id_Opaque, RenderView/Id_Opaque | أجزاء في المشهد بوضوح إجمالي 0.01 أو أقل. | قلل من الاستخدام والكثافة للأجزاء. |
| Scene/Id_Transparent, RenderView/Id_Transparent | أجزاء في المشهد بوضوح إجمالي بين 0.01 و1. | قلل من استخدام الشفافية الجزئية. |
| Scene/Id_Decals, RenderView/Id_Decals | الملصقات في المشهد. | قلل من استخدام الملصقات على الشبكات المعقدة. |
| Scene/Shadows | إعادة حساب الظلال في المشهد، وعادة ما يتم تنفيذها على المشاهد الديناميكية ولعب الألعاب العادية. تلقي الأجزاء تحت افتراض أنهم يحتويون على ملصقات. لا يتم ذلك عند مستويات الجودة تحت 4. | إذا استغرقت هذه الخطوة وقتًا طويلاً، فكر في تعطيل BasePart.CastShadow للنماذج المعقدة، والأجزاء ذات الشفافية الجزئية العالية، وأجزاء أقل أهمية. يجب تعطيل BasePart.CastShadow للأجزاء الشفافة تمامًا التي ليس لديها ملصقات أو تحتاج إلى ظلال من الملصقات. انظر تحسين الأداء. |
| Perform/Present | تحيل إلى خيط GPU لتنفيذ أوامر العرض. | قلل من تعقيد المشهد بشكل عام. إذا كانت هذه الخطوة تستغرق وقتًا طويلاً، فقد تكون محدودًا بإمكانيات GPU. |
| Perform/Present/waitUntilCompleted | ينتظر حتى ينتهي GPU من رسم الإطار السابق. | إذا كان هذا يحدث بشكل متكرر، فإن عدد الأشياء المرسومة مرتفع جدًا. يساعد "مدير معدل الإطار" في توازن هذا، ولكن إذا ظل مرتفعًا، حاول اتباع نصائح الأداء من علامات Scene الفردية. |
| LoadImage | يحول الصور إلى تنسيق يمكن للمحرك استخدامه. | قلل من استخدام الصور الكبيرة. |
السكربتات
| التسمية | الوصف | نصائح الأداء |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | تشغيل الوظائف المتصلة بخطوة العرض عبر RunService:BindToRenderStep(). | تأكد من أن الوظائف المتصلة بهذا الحدث تؤدي أقل كمية ممكنة من العمل. |
| Render/PreRender/RunService.RenderStepped | تشغيل الوظائف المتصلة بحدث RunService.RenderStepped. | تأكد من أن الوظائف المتصلة بهذا الحدث تؤدي أقل كمية ممكنة من العمل. |
| WaitingHybridScriptJob | تستأنف السكربتات التي تنتظر باستخدام Instance:WaitForChild() أو Globals.Roblox.wait(). يتم تنفيذها عادة 30 مرة في الثانية. تحتوي هذه الخطوة على ميزانية زمنية لتنفيذ السكربتات المنتظرة. | إذا كان لديك الكثير من السكربتات المنتظرة أو السكربتات التي تستغرق وقتًا طويلاً قبل الاستسلام، فإن هذه الخطوة تتعرض لزيادة التحجيم وتنتظر لفترة أطول قبل أن تتمكن من التشغيل مرة أخرى. قلل من عدد الوظائف المرتبطة أو الحسابات الطويلة في هذه الخطوة. |
| GC | دورة جمع القمامة لـ Luau. | قم بتجمع الطاولات وغيرها من الكائنات القابلة للتجميع أو حاول تقليل إنشاء جداول مؤقتة. |
| Heartbeat/RunService.Heartbeat | تشغيل الوظائف المتصلة بحدث RunService.Heartbeat. | قلل من عدد أو عبء العمل للوظائف المتصلة بهذا الحدث. اعتبر تأخير أو استبدال الحسابات المكلفة أو توزيع الحساب عبر عدة إطارات. |
المحاكاة
| التسمية | الوصف | نصائح الأداء |
|---|---|---|
| ملكية الفيزياء الموزعة | تحدد ما إذا كان الخادم أو عميل ما يمتلك سلطة على بعض الحالات مثل الأجزاء. | قلل من عدد الأجزاء التي تتغير ملكيتها الشبكية بشكل متكرر، خاصة تلك التي تتفاعل بشكل شائع. |
| Simulation/assemble | تحديث شجرة الكائنات المتصلة (التجميعات) المستخدمة بواسطة محرك الفيزياء. | قلل من عدد المفاصل التي يتم إنشاؤها أو تدميرها. |
| Simulation/physicsSteppedTotal/physicsStepped | تشغيل محاكاة الفيزياء. | قلل من عدد وتعقيد الأجسام التي يتم محاكاتها فيزيائيًا. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | تحديث جزر المحاكاة، ترتيب الأجزاء وفقًا للملكية الشبكية، والمحاكاة المحلية. الجزر هي مجموعات غير متفاعلة من الأجزاء يمكن محاكاتها بشكل مستقل. | تجنب ضبط الملكية الشبكية بشكل متكرر. احتفظ بمجموعات الأجزاء بعيدًا عن بعضها على نحو كافٍ بحيث يمكن محاكاتها بشكل منفصل. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | تحديث الاتصالات بين الكائنات. | قلل من عدد الأجسام التي تتصادم في نفس الوقت أو استخدم صناديق تصادم أبسط. المكعبات أفضل من الشبكات المعقدة. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld OR stepWorldThrottled | تحل المعادلات الفيزيائية المتعلقة بالموصلات، الطفو وHumanoids. عند التحميل الزائد للمحرك وعدم القدرة على محاكاة كل شيء في الوقت الفعلي، قد يتم تحديد بعض الخطوات (stepWorldThrottled) ويتم محاكاة "التجميعات في الوقت الحقيقي" فقط مثل Humanoids. | يعتمد ذلك على المكان الذي يذهب إليه الوقت بناءً على المراحل الثلاث التالية: stepContacts: اختبارات هندسة اكتشاف التصادم في المرحلة الضيقة. Solver step: دمج الوقت وحل التصادمات والقيود الأخرى updateBroadphase: تحديث مواضع التجميعات في نظام اكتشاف التصادم والعثور على أزواج ضيقة قد تصدم. |
| notifyMovingAssemblies | يساعد على تتبع المدة التي كانت فيها المواد الأولية نائمة. | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | يتم تداخل التجميعات غير المتحكم بها من قبل اللاعب الحالي. | عين المالك الشبكي للأجزاء إلى اللاعب الحالي لتقليل ذلك؛ على الرغم من أن هذا سيؤدي عادةً إلى المزيد من العمل الفيزيائي يُنجز في مكان آخر. |
| Simulation/handleFallenParts | تزيل الأجزاء التي سقطت تحت Workspace.FallenPartsDestroyHeight. | قلل من ارتفاع التدمير أو قلل من عدد الأجزاء التي تسقط إلى ارتفاع التدمير. |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | الجزء الثاني من notifyMovingAssemblies. | |
| Heartbeat/RunService.Heartbeat | تشغيل الوظائف المتصلة بحدث RunService.Heartbeat للتواصل والمحاكاة. الوصف الحالي عام بما فيه الكفاية ليكون صحيحًا. | قلل من عدد أو عبء العمل لوظائف المتصلة بـ RunService.Heartbeat. |
| worldStep/stepContacts | يساعد محاكاة الفيزياء على خطوة العديد من الاتصالات في مرة واحدة. | قلل من عدد الأجسام المتصادمة. |
| SolveBatch | يساعد محاكاة الفيزياء على حل دفعات من حركة الأجسام. |
واجهة المستخدم
| التسمية | الوصف | نصائح الأداء |
|---|---|---|
| Render/PreRender/UpdateInput | تحديث وإشعال جميع الأحداث المتعلقة بإدخال المستخدم إذا كان المستخدم قد قام بإدخال منذ الإطار الأخير. | حاول عدم القيام بالكثير من العمل مباشرة عند الحصول على الإدخال. اعتبر القيام بحد أدنى من المعالجة للإدخال، يجب دفع العمليات الأكبر إلى خيط آخر يحدث لاحقًا. |
| Render/PreRender/TweenService | تحديث الكائنات التي يتم تغييرها باستخدام TweenService ويستدعي الدوال المنجزة، مثل تلك المستخدمة المقدمة إلى GuiObject:TweenSize() أو GuiObject:TweenPosition(). | قلل من عدد الكائنات التي يتم تغييرها باستخدام TweenService وتأكد من أن الدوال المنجزة تؤدي أقل قدر ممكن من العمل. |
| Heartbeat/TweenService | في الخادم، يعمل TweenService في RunService.Heartbeat بدلاً من RunService.PreRender. | قلل من عدد الكائنات التي يتم تغييرها باستخدام TweenService وتأكد من أن الدوال المنجزة تؤدي أقل قدر ممكن من العمل. |
| Render/PreRender/UpdateUILayouts | تحديث الموضع والحجم لعناصر الواجهة في جميع LayerCollectors المفعلة. | انظر علامات UpdateUILayouts أدناه. |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | ترتيب ترتيب Z لعناصر الواجهة (مصطلح داخلي لا ينبغي الخلط بينه وبين GuiObject.ZIndex) لمنع تمزق عناصر الواجهة. | قلل من عدد عناصر واجهة المستخدم التي تحمل نفس GuiObject.ZIndex. |
| Render/PreRender/UpdateUILayouts/Layout | تحديث الموضع والحجم لعناصر واجهة المستخدم في LayerCollector فردية. يمكن أن تحتوي على علامة بمعلومات حول واجهة المستخدم ذات الصلة، مع كمية إعادة تخطيط، وتحديثات وإعادة قياسات. | قلل من عدد عناصر الواجهة الإلكترونية التي يتم تغيير حجمها أو إعادة موضعها، مثل تلك المدارة بواسطة UILayout وتلك التي يتم تغييرها باستخدام TweenService، GuiObject:TweenSize()، أو GuiObject:TweenPosition(). اعتبر استخدام أحجام ثابتة لـ BillboardGuis. |