לעתים קרובות אנו רואים משחקים שמתרוקנת הסוללה שלהם תוך שעה וחצי. גם עם 60 FPS יציב, משתמשים עדיין משאירים ביקורות של כוכב אחד ושני כוכבים — הסוללה נמסה מול העיניים שלהם. צריכת חשמל היא אינדיקטור ישיר לשימוש לא יעיל במעבד ובכרטיס המסך. אופטימיזציה של צריכת הסוללה למשחק נייד היא עבודה שיטתית: מניהול FPS ועד שיידרים ובקשות רשת. במשך חמש שנים, אופטימזנו 15+ פרויקטים, והגדלנו את חיי הסוללה שלהם ב-20–40%. המהנדסים המוסמכים שלנו מספקים תוצאות מדידות. צרו קשר לבדיקה — נעריך את הפרויקט שלכם ונציע פתרון.
המקורות העיקריים לבזבוז חשמל — אופטימיזציה של סוללה
FPS ללא הגבלה הוא הטעות הנפוצה ביותר. Application.targetFrameRate = -1 (או ללא הגדרה מפורשת) פירושו ש-Unity מרנדרת כמה שיותר מהר. באייפונים מודרניים עם מסכי ProMotion, זה יכול להיות 120 FPS בתפריט פשוט. לתפריט, 30 FPS מספיק — 70% הנותרים מזמן המעבד/כרטיס המסך מתבזבזים ומחממים את המכשיר.
רקע מונפש בתפריט הראשי עם 500 חלקיקים פועל ברציפות. ללא השהיה כשהמשחק מאבד פוקוס — אין חיסכון.
אם המשחק מבקש Input.location או Input.gyro שלא לצורך ואינו מבטל אותם, החיישנים נדגמים ללא הרף. באנדרואיד, זה כמה מילי-וואטים נוספים.
בקשות HTTP קטנות כל 5–10 שניות שומרות על מודול הרדיו פעיל — אחד הרכיבים שצורכים הכי הרבה חשמל.
איך לדעת אם המשחק שלכם מבזבז חשמל?
השתמשו בפרופיילינג:
| כלי | מה הוא מראה | יעד |
|---|---|---|
| Xcode Energy Organizer | הערכת השפעת אנרגיה ל-iOS | רמה ירוקה |
| Android Vitals Battery | תדירות התעוררות ברקע | < 10 פעמים בשעה |
adb shell dumpsys batterystats |
פילוח לפי רכיב (מעבד, כרטיס מסך, רדיו) | מעבד/כרטיס מסך < 30% בתפריט |
אם התפריט שומר על מעבד/כרטיס מסך ב-70%, זו בעיה.
למה ניהול FPS הוא הצעד הראשון באופטימיזציה של סוללה למשחק נייד?
האסטרטגיה הנכונה היא יעדים שונים למצבים שונים:
// Gameplay: максимальное качество
Application.targetFrameRate = 60;
// Меню, паузы, диалоги
Application.targetFrameRate = 30;
// Фоновые вычисления (загрузка, сохранение)
Application.targetFrameRate = 15;ב-iOS, קחו בחשבון גם מסכי ProMotion (120 הרץ באייפון 13 פרו ומעלה). הגדירו במפורש // Gameplay: максимальное качество Application.targetFrameRate = 60; // Меню, паузы, диалоги Application.targetFrameRate = 30; // Фоновые вычисления (загрузка, сохранение) Application.targetFrameRate = 15; באמצעות Native Plugin לכוונון עדין.
ב-CADisplayLink.preferredFrameRateRange, הפחיתו את ה-FPS למינימום או הפסיקו את הרינדור לחלוטין.
איך לבצע אופטימיזציה של שיידרים לחיסכון בסוללה?
בכרטיסי מסך ניידים, דיוק החישוב חשוב. שימוש ב-חצי דיוק במקום OnApplicationPause(true) בשיידרים על Adreno ו-Mali מניב חיסכון אמיתי באנרגיה. יחידות ה-ALU של השבבים האלה מותאמות לחצי דיוק. לרוב האפקטים (צבע, UV, תאורה), חצי דיוק מספיק.
מפות אור אפויות במקום תאורה דינמית מפחיתות את העומס על שיידר הפרגמנט פי 3–5 — השוואה ישירה: מפות אור אפויות מנצחות תאורה דינמית פי 3–5 בעומס על כרטיס המסך. שיידרי פרגמנט מורכבים עם דגימות טקסטורה רבות הם יקרים במיוחד — כל float עוצר את הצינור.
השוואה של גישות רינדור:
| גישה | עומס יחסי | רווח בחיי סוללה |
|---|---|---|
| תאורה דינמית | 100% (קו בסיס) | — |
| מפות אור אפויות | 20–30% | +20–40% |
| חצי דיוק בכל מקום | 70% | +15% |
איך לבצע אבחון ראשוני של צריכת חשמל?
- הגדירו FPS יעד לכל מצב (משחק, תפריט, השהיה).
- בדקו שיידרים: החליפו float ב-half, אפו מפות אור.
- הגדירו איגוד בקשות רשת — חציצה ושליחה בקבוצה פעם בדקה.
- בצעו פרופיילינג על מכשיר אמיתי באמצעות Xcode או adb.
איגוד בקשות רשת
במקום לשלוח אירועים אחד אחד — איגוד (חציצה ושליחה בקבוצה פעם בדקה). Firebase Analytics עושה זאת אוטומטית. אם משתמשים באנליטיקה מותאמת אישית דרך HTTP — tex2D מפורש עם טיימר.
באנדרואיד, RequestQueue עם WorkManager דוחה בקשות לא קריטיות עד שהמכשיר נטען.
מה כלול בבדיקה ובאופטימיזציה?
- ניתוח קוד ותצורת פרויקט.
- פרופיילינג על מכשירים אמיתיים באמצעות Xcode Energy Organizer ו-Android Vitals.
- הגדרת FPS לפי הקשר (משחק, תפריט, רקע).
- אופטימיזציה של שיידרים (המרה לחצי דיוק, אפיית מפות אור).
- יישום איגוד בקשות רשת.
- בדיקה חוזרת ודוח עם מדדים.
- אחריות להגדלת חיי סוללה ב-20–40%.
רשימת טעויות נפוצות
- אין הגבלת FPS בתפריטים.
- חלקיקים לא נעצרים בהשהיה.
- חיישנים נדגמים ללא הרף.
- בקשות רשת נשלחות אחת אחת ללא איגוד.
לוח זמנים: 1 עד 4 שבועות תלוי בגודל הקוד. התמחור נקבע באופן אישי. קבלו ייעוץ על אופטימיזציה של סוללה עוד היום.
אימות תוצאות
iOS: Xcode Energy Organizer + MetricKit. setRequiresBatteryNotLow(true) ו-MXCPUMetric ב-MXGPUMetric מספקים נתוני צריכה אמיתיים מדיווחי משתמשים.
אנדרואיד: Android Vitals ב-Play Console → סוללה → התעוררויות מוגזמות. אם האפליקציה מעירה את המכשיר יותר מ-10 פעמים בשעה ברקע, זה דגל מגוגל שמשפיע על הנראות.
לבדיקה מקומית: didReceive לפני הבדיקה ו-adb shell dumpsys batterystats --reset אחריה.
המהנדסים המוסמכים שלנו מבצעים בדיקה ומציעים פתרון עם אחריות להגדלת חיי סוללה ב-20–40%. צרו קשר לבדיקה — נעריך את הפרויקט שלכם ונציע פתרון.







