אופטימיזציית Draw Call למשחקי מובייל: Batching GPU ו-FPS

האם המשחק הנייד שלך סובל מפיגורים במכשירים בינוניים, עם FPS שנמוך מערכי היעד? הצוות שלנו מייעל draw calls באמצעות batching, GPU Instancing ו-texture atlases כדי להשיג משחקיות חלקה. אנחנו מספקים פתרונות turnkey—מביקורת ועד יישום—ומבטיחים ביצועים אמינים עם תמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
אופטימיזציית Draw Call למשחקי מובייל: Batching GPU ו-FPS
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

דמיינו שמשחק הנייד שלכם מגמגם על Adreno 506 למרות גרפיקה צנועה. ה-Frame Debugger מציג 350 Draw Calls לפריים ו-FPS יורד ל-35. היעד הוא 60 FPS יציב. אופטימיזציה של Draw Calls היא הצעד הראשון והיעיל ביותר. אנו מפחיתים את מספר הקריאות מ-300 בממוצע ל-150, ומעלים את ה-FPS ל-60 במכשירי ביניים ללא אובדן איכות. אנו משתמשים ב-batching, GPU Instancing ו-texture atlases. אופטימיזציה של מעל 30 פרויקטים בוצעה על ידינו. ביקורת האופטימיזציה הבסיסית שלנו מתחילה ב-$500, כוללת דוח מפורט ומפת דרכים.

למה Draw Calls הם קריטיים למשחקי נייד

ב-GPUs ניידים עם ארכיטקטורת אריחים (Mali, Adreno, Apple GPU), כל Draw Call נוסף יקר יותר מאשר במחשב שולחני בשל לחץ מוגבר על overdraw ו-fill rate. ה-CPU מבזבז זמן בהכנת נתונים, וה-GPU מבזבז מחזורים על מעברי הקשר. כתוצאה מכך, עם רינדור כאוטי, ה-FPS יורד מתחת ל-30 או 60 FPS הרצויים. אופטימיזציה של Draw Calls היא אחת הדרכים היעילות ביותר לשפר ביצועים ללא שינוי תוכן, ומשפיעה ישירות על תקציב זמן הפריים.

מקורות לקריאות נוספות

שלושה מקורות עיקריים.

חומרים שונים על אובייקטים דומים. כל חומר ייחודי שווה לפחות Draw Call אחד נפרד. אנו רואים לעתים קרובות פרויקטים שבהם מטבעות, אויבים ו-power-ups משתמשים בטקסטורות שונות (PNG בגדלים שונים) הארוזות באטלסים שונים. Batching הופך לבלתי אפשרי.

Dynamic batching נשבר בשקט. Unity מאגדת meshes רק אם יש להם פחות מ-900 קודקודים, הם משתמשים בחומר אחד, ואינם מסומנים כ-static. הפעלת Shadow Casting = On על אובייקט דינמי מוציאה אותו אוטומטית מה-batch — שובר ה-batching הזה אינו ברור מהתיעוד.

Skinned mesh ללא GPU Instancing. דמויות מונפשות עם SkinnedMeshRenderer אינן משתתפות ב-static batching או ב-dynamic batching. אם 20 אויבים עם אותו mesh על המסך ללא instancing חומרתי, זה 20 Draw Calls נפרדים.

איך להפחית Draw Calls ללא אובדן איכות?

Sprite Atlas ל-2D

למשחקי 2D, השתמשו ב-SpriteAtlas (לא ב-Sprite Packer הישן). שימו את כל הספיירים של שכבה אחת באטלס אחד, חומר אחד, Draw Call אחד לכל השכבה. האטלס חייב להיות Include in Build; אחרת, טקסטורות בודדות ייטענו בזמן ריצה. גודל האטלס המקסימלי בנייד הוא 2048×2048 עבור רוב המכשירים, 4096×4096 מותר עבור Android API 26+ ו-iOS 12+. אנו משתמשים ב-ASTC 6×6 לשניהם: דחיסה טובה (קטנה פי 2 מ-PNG) ללא חפצים נראים לעין.

GPU Instancing ל-3D

עבור אובייקטים חוזרים (אויבים, עצים, כדורים), הפעילו Enable Instancing על החומר והשתמשו ב-shader עם #pragma multi_compile_instancing. עם Unity 2022+ ניתן להשתמש ב-BatchRendererGroup לשליטה מלאה. GPU Instancing יעיל פי 3–5 מ-dynamic batching בנייד. זה לא עובד עם אנימציה מונעת CPU — עבור אויבים מונפשים, יש ליישם GPU skinning דרך AnimationInstancing או vertex shaders עם אנימציות אפויות. Static batching משתמש בפי 2 יותר זיכרון מ-GPU Instancing, אבל הוא יעיל עבור גיאומטריה סטטית.

Static Batching

סמנו אובייקטים סטטיים (פלטפורמות, קירות) כ-Static, והפעילו Static Batching ב-Player Settings. Unity מאגדת meshes בזמן בנייה. עלות: זיכרון מוגבר, אז אל תסמנו הכל כ-static.

הסרת Shadow Casters מיותרים

צללים יקרים בשל מורכבות ה-shader. בנייד, אנו לעתים קרובות מבטלים צללים בזמן אמת ומחליפים אותם ב-blob shadows (ספייר עיגול כהה פשוט מתחת לאובייקט). אם יש צורך בצללים, הגבילו את המרחק ועברו למפת צל אחת עם cascades במקום ארבע.

מדדי יעד

מכשיר מקסימום Draw Calls מומלץ
Android נמוך (Adreno 505) 80–120
Android בינוני (Adreno 618) 150–200
iPhone 12 / A14 200–300
iPhone 15 / A17 300–400

המספרים האלה הם עבור 60 FPS עם VSync מופעל. אם היעד הוא 30 FPS, התקציב גמיש פי שניים בערך. GPU Instancing יעיל פי 3–5 מ-Dynamic Batching בנייד.

השוואת שיטות Batching

שיטה ישימות שימוש בזיכרון מורכבות הגדרה
Dynamic Batching אובייקטים <900 קודקודים, חומר אחד נמוך מינימלית
Static Batching אובייקטים סטטיים גבוה נמוכה
GPU Instancing אובייקטים חוזרים בינוני בינונית

איך לאבחן צווארי בקבוק?

Unity Frame Debugger (תיעוד) הוא הצעד הראשון. הוא מציג כל Draw Call בפריים עם הסבר למה batching לא התרחש. השתמשו ב-Frame Debugger כדי לנתח draw calls ולזהות שוברי batching. Snapdragon Profiler (עבור Android על Adreno) ו-Xcode GPU Frame Capture (iOS) נותנים תמונה מפורטת על חומרה אמיתית, כולל זמן לכל draw call. RenderDoc מיועד לניתוח עמוק של מורכבות shader ו-overdraw.

טעויות נפוצות באופטימיזציה של Draw Calls
  • לא לבדוק על מכשיר אמיתי — האמולטור לא יציג ארכיטקטורת אריחים.
  • לשכוח לבטל צללים כשבדקים batching.
  • להשתמש באטלס ענק אחד במקום כמה לכל שכבה.
  • לנסות לאגד אובייקטים מונפשים ללא GPU Instancing.

מה כלול בעבודה

  • ביקורת באמצעות Frame Debugger ו-Snapdragon Profiler
  • יישום Sprite Atlas ו-GPU Instancing
  • אופטימיזציה של צללים ו-static batching
  • גישה לרישיונות תוכנת profiling למשך העבודה
  • הדרכת מפתחים (שעתיים) על שמירה על אופטימיזציות
  • 3 חודשים של תמיכה בדוא"ל עבור התאמות לאחר השקה
  • בדיקות על 5+ מכשירים אמיתיים (נמוכים, בינוניים)
  • דוח סופי ומסירה
  • אחריות ביצועים ל-6 חודשים (מינימום 20% עלייה ב-FPS במכשירים נמוכים)

תהליך

  1. ניתוח מצב נוכחי (יום אחד)
  2. תיעדוף בעיות (יום אחד)
  3. יישום אטלסים/instancing/batching (2–5 ימים תלוי במורכבות)
  4. בדיקות על מכשירים נמוכים ובינוניים (יום אחד)
  5. דוח סופי ומסירה

לוח הזמנים תלוי בהיקף: משחק arcade 2D פשוט לוקח יומיים עד שלושה; משחק 3D עם דמויות מונפשות לוקח שבוע או יותר. אנו נעריך את הפרויקט שלכם בתוך יום עבודה אחד. צרו קשר לייעוץ והצעה מסחרית.