אם אתם משתמשים ב-C או ב-C++ כדי לפתח או להתאים אישית מנוע משחק, הדרישות הבאות קריטיות לשילוב תמיכה ב-Android במנוע המשחק.
- שימוש בכלים לפיתוח ל-Android
- בניית פעילות
- שרטוט על המסך
- עיבוד אירועי קלט
- פלט אודיו
- ניהול הזיכרון
- בדיקה וליטוש
- פרסום ב-Google Play
הדרישות שמתוארות בדף הזה לא מסבירות איך לפתח מנוע משחק מאפס, אלא מזהות את התחומים שבהם Android ייחודית יחסית בהשוואה לפלטפורמות אחרות.
שימוש בכלים לפיתוח ל-Android
Android Studio כולל כלים שאפשר להשתמש בהם כדי:
- הגדרת הפרויקט
- פיתוח, ניפוי באגים ואריזה של המשחק
- בדיקת הביצועים של המשחק באמצעות פרופילים של המערכת, המעבד (CPU) והזיכרון
- בדיקת התוכן של חבילת המשחק או חבילת האפליקציה
- שילוב תכונות נוספות של Android SDK ו-NDK
Android Graphics Inspector יכול לאפיין את ביצועי העיבוד של המשחק ולעזור לכם לבדוק את הפרטים של מסגרות שעברו עיבוד באמצעות פרופיל מסגרות.
אם אתם משתמשים בעיקר ב-Microsoft Visual Studio, אתם יכולים להשתמש ב-Android Game Development Extension (AGDE) כדי להוסיף יעד Android לפרויקטים קיימים. AGDE תומך בניפוי באגים מקורי ב-Visual Studio וכולל גרסאות עצמאיות של הרבה כלי פרופיל מ-Android Studio.
בניית פעילות
המשחק צריך ליצור Activity
ולקיים איתו אינטראקציה. כדי להבין מתי נוצרת פעילות, מתי היא מתחילה, מתי היא ממשיכה, מתי היא מושהית, מתי היא נעצרת ומתי היא נמחקת, אפשר לקרוא על מחזור החיים של פעילות ב-Android.
אפשר לקרוא על ספריית GameActivity
, שמשולבת במנועי משחקים מקוריים ב-C או ב-C++ ועונה על הצרכים שקשורים ל-Activity
(חלון המשחק, מחזור החיים, רינדור, טיפול באירועים).
שרטוט על המסך
המשחק צריך לצייר אובייקטים וספרייטים על המסך. מידע על Android SurfaceView
ועל הגדרת גרפיקה במנוע המשחק
מכשירי Android תומכים בקצב רענון שונה של המסך. מידע נוסף על רינדור ב-game loops כדי למנוע ירידות בפריימים ושיבושים ב-frame buffers.
כאן אפשר לקרוא על השגת קצב פריימים קבוע כדי להבטיח רינדור חלק ב-OpenGL וב-Vulkan. אופטימיזציה של קצב הפריימים באמצעות Performance Tuner.
כדי לשפר את איכות העיבוד, אפשר להשתמש בטכנולוגיית MSAA (החלקה למניעת שינון עם דגימה מרובה). אפשר להשתמש ב-MSAA עם תקורה נמוכה מאוד. מידע נוסף זמין בפוסט בבלוג Multisampled Anti-aliasing For Almost Free — On Tile-Based Rendering Hardware (החלקת קצוות עם דגימה מרובה כמעט בחינם – בציוד לעיבוד מבוסס-משבצות).
עיבוד אירועי קלט
מנוע משחק מקבל אירועי קלט ממגוון מקורות. כדי ליהנות מחוויית משחק סוחפת, כדאי ללמוד איך לתמוך במקורות קלט שונים ב-Android:
פלט אודיו
מנוע המשחק צריך להפיק פלט אודיו במכשירים שונים ובגרסאות שונות של Android. כדאי לקרוא על Oboe, ספריית האודיו שלנו ב-C++ עם קוד פתוח, כדי ללמוד איך לשלב אודיו באיכות גבוהה במשחק.
כדאי להשתמש ב-Oboe כדי להשיג את זמן האחזור הנמוך ביותר, להימנע מבאגים ספציפיים באודיו ולבחור אוטומטית את הספרייה המקורית הזמינה הטובה ביותר (כמו AAudio או OpenSL ES).
ניהול הזיכרון
במכשירי Android, המערכת מנסה להשתמש בכמה שיותר זיכרון מערכת (RAM) ומבצעת אופטימיזציות שונות של הזיכרון כדי לפנות מקום כשצריך. איך מנהלים את השימוש בזיכרון כדי למנוע האטה או יציאה מהמשחק.
בדיקה וליטוש
אפליקציית Android קורסת בכל פעם שמתרחשת יציאה לא צפויה שנגרמת על ידי חריגה או אות שלא טופלו. במאמר הזה מוסבר איך לזהות קריסות ולבצע אבחון שלהן, לקרוא דוחות קריסות, חריגות בזיכרון וברשת, איך להשתמש ב-logcat ואיך להבין שגיאות ספציפיות ל-Java ול-Kotlin.
פרסום ב-Google Play
שחקנים מורידים את המשחק שלכם במכשירי Android שונים במדינות שונות, בתנאי רשת שונים ובתוכניות נתונים שונות. במאמר הזה נסביר איך להשתמש ב-Google Play כדי להעביר חבילות App Bundle וחבילות נכסים למשחקים גדולים, וליהנות מהיתרונות של רשת להעברת תוכן.