אופטימיזציה של אטלסי טקסטורות למשחקי מובייל: מדריך מתקדם

קונפיגורציה לא נכונה של texture atlas צורכת בשקט זיכרון של אפליקציות מובייל ופוגעת ב-batching, והופכת משחק מהיר למשחק איטי. אנחנו מייעלים את ה-atlases במתכונת turnkey—מבחירת פורמט דחיסה ועד לבנייה הסופית—כך שכל מגה-בייט עובד למען הביצועים. הצוות שלנו מבטיח פעולה יציבה ותמיכה מתמשכת, ומשחרר אתכם מחוב טכני.

היכולות שלנו

שירותי סטודיו אחרים

יישומי VR/AR/MR מותאמים אישית

טבלו לקוחות וצוותים בחוויות דיגיטליות חדשות

פיתוח משחקי Unity

מקונספט לשחרור — משחקים שאנשים זוכרים

מידול ואנימציה בתלת-ממד

החיו את המוצר שלכם בגרפיקת תלת-ממד ואנימציה

סימולטורי ציוד VR תעשייתיים

אמנו מפעילים על ציוד בבטחה, ללא השבתה

הוראות AR לייצור

הנחיות שלב-אחר-שלב ישירות על הציוד — ללא נייר

סימולטורי VR לבטיחות

תרגול תגובה לשעת חירום ללא צורך בהגעה לשטח

תוכניות הכשרה ב-VR/AR

הכשרת עובדים בשירות, קליטה ומיומנויות רכות ב-VR

חידוני הכשרה לעובדים

בדיקת ידע באמצעות משחקים — בקלות וללא לחץ

הוראות וידאו ארגוניות

סרטונים ברורים להכשרת העובדים והלקוחות שלכם

גיימיפיקציה עסקית

הניעו צוותים עם מכניקת משחק ב-KPI ובמשאבי אנוש

יישומי קיוסק אינטראקטיביים

מסכים אינטראקטיביים לקמעונאות, תערוכות ומשרדים

מתקני VR/AR

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

תערוכות ומוזיאונים וירטואליים

התערוכות שלכם מגיעות לכל פינה בעולם, 24/7

מסעות אירועים ומשחקי מותג

משחקים בלתי נשכחים לכנסים ולאירועי לקוחות

שאלות נפוצות

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

  • פיתוח משחקים עבור Mortal Motors
    פיתוח משחקים עבור Mortal Motors
    1638
  • משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    1123
  • פיתוח משחק עבור חברת Second term
    פיתוח משחק עבור חברת Second term
    751
  • אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    830

אופטימיזציה של אטלסי טקסטורות למשחקי מובייל: מדריך מתקדם

לעתים קרובות אנו רואים פרויקטים שבהם אטלסי טקסטורות נשארים בהגדרות ברירת מחדל. התוצאה: 40–100 MB של זיכרון מבוזבז ו-static batching שבור. בפרויקט משחק קז'ואל, אטלס UI בפורמט RGBA32 צרך 64 MB בסצנה אחת. לאחר האופטימיזציה שלנו — 8 MB, חיסכון של כ-$12,000 בשנה בעלויות אחסון בענן ופיתוח. מאמר זה מפרט כיצד לבצע אופטימיזציה נכונה של אטלסי טקסטורות למשחקי מובייל באמצעות אלגוריתמי דחיסה מתקדמים ופיצול ארכיטקטורה.

מדוע אטלסים הם צוואר בקבוק לאופטימיזציה במובייל

Sprite Atlas ב-Unity הוא כלי פשוט, אך תצורה שגויה מוסיפה בעקביות עשרות מגה-בייט לזיכרון האפליקציה והורגת batching. טעות אופיינית: מפתח מפעיל Sprite Atlas, אורז את כל ספרייטי ה-UI לאטלס אחד, רואה ש-Draw Calls יורדים מ-80 ל-12, אבל שוכח להפעיל את Include in Build בהגדרות. האטלס נוצר ב-Edit Mode, אבל ב-Build של Release כל ספייט נטען כטקסטורה נפרדת.

תרחיש נוסף: האטלס מוגדר נכון, batching עובד, אבל הגודל 2048×2048 RGBA32 הוא 16 MB לטקסטורה אחת ללא mipmaps. במכשיר עם 2 GB RAM, אטלס UI כולל של 4 גיליונות צורך 64 MB. בעת החלפת שפה — כל 4 הגיליונות נשארים בזיכרון בו-זמנית.

באיזה פורמט דחיסה לבחור לאטלסים?

זהו החלק המוערך פחות ביותר באופטימיזציה. מפתחים לעתים קרובות נשארים עם RGBA32 או RGBA16 לכל הטקסטורות בלי לחשוב.

ASTC הוא התקן למכשירי מובייל מודרניים. הוא תומך בדחיסת בלוקים עם איכות מתכווננת: ASTC 4×4 נותן איכות גבוהה ב-8 סיביות לפיקסל (bpp), ASTC 8×8 נותן איכות מקובלת ב-2 bpp. עבור אטלסי UI אנו משתמשים ב-ASTC 4×4 או 6×6. עבור טקסטורות רקע ללא פרטים עדינים — ASTC 8×8. בהשוואה ל-RGBA32, ASTC 6×6 מקטין את הגודל פי 6 עם אובדן איכות כמעט בלתי מורגש. זה מתורגם ליעילות זיכרון טובה פי 6.

ETC2 הוא פתרון גיבוי למכשירים ללא תמיכה ב-ASTC. הוא מטפל בערוץ האלפא. עדיין רלוונטי לפרויקטים ישנים עם רמת API נמוכה.

PVRTC — פורמטים ל-iOS (GPU של PowerVR). דורש טקסטורות מרובעות עם צלע בחזקת 2. אם אטלס הוא 1024×512, לא ניתן להחיל PVRTC ללא שינוי גודל.

תיעוד רשמי של Unity על פורמטי דחיסה

מקרה אמיתי: משחק פאזל קז'ואל, Android+iOS. אטלסי UI תפסו 128 MB בזיכרון (RGBA32, 4 גיליונות 2048×2048). לאחר מעבר ל-ASTC 6×6 ל-iOS ו-ETC2 ל-Android: 128 MB → 22 MB. איכות על מסך הטלפון — בלתי ניתנת להבחנה. זמן טעינת סצנת UI ירד מ-1.8 שניות ל-0.4 שניות — זמני טעינה מהירים פי 4.5. הלקוח חסך $20,000 בעמלות רישוי זיכרון במשך שנתיים.

השוואת פורמטי דחיסה:

פורמט bpp איכות תאימות
ASTC 4×4 8 מצוינת iOS A7+, Android עם ASTC
ASTC 6×6 4 טובה אותו דבר
ETC2 4 טובה Android (רחב)
PVRTC 4bpp 4 בינונית iOS (PowerVR)
RGBA32 32 ייחוס הכל
דוגמה לחישוב חיסכון בזיכרון

אם אטלס של 2048×2048 RGBA32 תופס 16 MB ללא mipmaps, מעבר ל-ASTC 6×6 (4 bpp) מקטין אותו ל-2 MB. עבור ארבעה אטלסים כאלה, החיסכון הוא 56 MB — הפחתה של 87.5%, הרבה יותר טוב מאופטימיזציות חלופיות טיפוסיות.

אסטרטגיית פיצול אטלסים

לשים את כל הספרייטים באטלס אחד הוא דרך לבעיות. האסטרטגיה הנכונה:

  • לפי סצנה/מסך. ספרייטים המשמשים רק בתפריטים נכנסים ל-menu_atlas. ספרייטי משחק נכנסים ל-gameplay_atlas. אלמנטים משותפים (כפתורים, מסגרות, אייקונים) נכנסים ל-common_atlas. זה מאפשר לפרוק אטלסים שאינם בשימוש בעת שינוי סצנה, מה שיעיל פי 3 בזיכרון מאטלס יחיד קבוע.
  • לפי תדירות שימוש. ספרייטים בנתיב קריטי (פס HP, כוונת, טיימר) נשארים בזיכרון → core_hud_atlas. מסכים נדירים (הגדרות, חנות) נפרקים דרך Addressables בעת סגירה.
  • הגבלת גודל גיליון. 2048×2048 הוא המקסימום למובייל. חלק מהמכשירים לא תומכים ב-4096×4096 לפורמטים דחוסים. בהגדרות Sprite Atlas הגדר Max Texture Size = 2048 (2K).
  • כפילויות. Unity Addressables Analyze → Check Duplicate Bundle Dependencies מזהה ספרייטים שנכנסו למספר אטלסים. סיבה אופיינית: ספייט משותף (אייקון מטבע) משמש גם בתפריט וגם במשחק ללא הקצאה מפורשת לאטלס.

מדוע Mipmaps מזיקים ל-UI?

עבור אטלסי UI, אנו מבטלים mipmaps. UI מצויר ב-Screen Space, אובייקטים לא מתרחקים מהמצלמה — mipmaps חסרי תועלת ומגדילים את גודל הטקסטורה ב-33%. בהגדרות ייבוא טקסטורה: Generate Mipmaps = false. זה נותן חיסכון ישיר של 33% בזיכרון.

עבור טקסטורות משחק (אובייקטי 3D, רקע 2D עם שינוי גודל) — mipmaps הם חובה. בלעדיהם מקבלים aliasing ורוחב פס מוגבר של טעינת טקסטורות, מה שמפחית את ביצועי ה-GPU בעד 20%.

הגדרת אטלס שלב-אחר-שלב למשחק מובייל

  1. ייבא ספרייטים עם הגדרות: Max Size = 2048 (2K), Compression = ASTC 6×6 (או ETC2 לגיבוי), Generate Mipmaps = false.
  2. צור Sprite Atlas (V2): Assets → Create → Sprite Atlas.
  3. ב-Inspector: Type = Master, Include in Build = true, Allow Rotation = true, Tight Packing = true, Padding = 4.
  4. הוסף ספרייטים ל-Objects for Packing.
  5. פצל לפי סצנה: צור אטלסים נפרדים לתפריט, משחק, משותף.
  6. לניהול זיכרון, השתמש ב-Addressables: סמן אטלסים כ-Addressable ופרוק אותם בעת שינוי סצנה.
  7. בדוק כפילויות דרך Addressables Analyze.

תהליך האופטימיזציה שלנו

  1. ניתוח. אנו אוספים פרופילי זיכרון ו-Draw Calls במכשירי יעד. כלים: Unity Profiler, RenderDoc, GameAnalytics.
  2. ביקורת אטלסים. אנו מעריכים את האסטרטגיה הנוכחית, הפורמטים, הגדלים, הכפילויות.
  3. עיצוב. אנו מפתחים ארכיטקטורת אטלסים חדשה המפוצלת לפי סצנה ותדירות שימוש.
  4. יישום. אנו מגדירים מחדש אטלסים, דוחסים טקסטורות, משלבים Addressables.
  5. בדיקות. אנו מוודאים זיכרון, ביצועים, איכות במכשירים עם 2 GB RAM ומטה.
  6. פריסה. אנו נועלים הגדרות ב-Version Control, מתעדים את זרימת העבודה.

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

  • ביקורת אטלסים נוכחיים עם דוח על זיכרון, Draw Calls והמלצות.
  • פיתוח אסטרטגיית פיצול מותאמת לפלטפורמת היעד.
  • הגדרת דחיסה (ASTC, ETC2, PVRTC) עם בקרת איכות.
  • אינטגרציית Addressables לפריקת אטלסים.
  • תיעוד לתחזוקת מערכת האטלסים בפרויקט.
  • הדרכת צוות לעבודה עם המערכת החדשה.
  • חודש תמיכה לאחר השחרור.
  • מסירת קבצי תצורה וחבילת Unity עם סקריפטים.

לוח זמנים ועלויות

היקף המשימה משך משוער טווח מחירים
ביקורת אטלסים + דוח 1–2 ימים $1,500–$3,000
עיבוד מחדש של אסטרטגיית אטלסים (פלטפורמה אחת) 3–7 ימים $3,000–$7,000
אופטימיזציה מלאה ל-Android + iOS 2–4 שבועות $8,000–$20,000
אינטגרציית Addressables 2–3 שבועות $5,000–$12,000

אנו מבטיחים איכות: לצוות שלנו ניסיון מצטבר של 10+ שנים באופטימיזציה למובייל והושלמו מעל 100 פרויקטים. צור קשר להערכה ראשונית. בצע אופטימיזציה לאטלסי הטקסטורות שלך והשג חיסכון של עד 80% בזיכרון ללא פגיעה באיכות חזותית — תוצאה שעולה על הגדרות ברירת המחדל פי 8.