פיתוח משחקים למובייל ב-Cocos2d-x: מאב-טיפוס ועד שחרור

ללקוח נדרש שחרור בשתי פלטפורמות בלי שתי קבוצות ובלי פערים בגרסאות הבנייה. אנו מפתחים משחקים ב-cocos2d-x מהיסוד: מניתוח מכניקות ואב-טיפוס ועד מסירת קוד המקור ונוהל עדכונים. בסיס קוד אחיד מקצר את זמן הוצאת העדכונים ומסיר פערים בין הגרסאות.

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
פיתוח משחקים למובייל ב-Cocos2d-x: מאב-טיפוס ועד שחרור
בינוני
מ- 1 שבוע עד 3 חודשים

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

שאלות נפוצות

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

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

פיתוח משחקים עם cocos2d-x: היכן נשברת הקרוספלטפורמיות

פיתוח משחקים עם cocos2d-x מושך בכך שלוגיקת המשחק מתוארת פעם אחת ונבנית עבור שתי המערכות הניידות. בפועל, המשותף נשאר הליבה — סצנה, פיזיקה, עבודה עם משאבים — בעוד קלט, מערכת קבצים, טעינה ברקע ואירועי מחזור חיים של האפליקציה עוברים לשכבות פלטפורמה. שם בדיוק המשחק הקרוספלטפורמי מפסיק להיות בסיס קוד אחד ומתפצל לשני פרויקטים שחיים לפי כללים משלהם.

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

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

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

האפקט של בסיס קוד אחד: בנייה, עדכונים, כשלים

שכבת משחק משותפת על Cocos2d-x — זה סט אחד של סצנות, חוקים ומשאבים, שנבנה עבור שתי הפלטפורמות, ולא שני ענפים מקבילים. ניתן לבדוק את אפקט המעבר לפי נקודות מדידות — להלן מה שאנו מתעדים לפני ואחרי.

  • מחזור ריליס אחד במקום שניים. תיקון גיימפליי עובר ביקורת פעם אחת ונכנס לשתי הבניות, והעבודה הידנית עבור הפלטפורמה השנייה מצטמצמת משעות לדקות לריליס.
  • זמן הוצאת עדכון. פאץ' עם איזון ותוכן יוצא בחבילה אחת, ולא בשתיים שצריך לתאם לפי לוחות זמנים.
  • מחלקת כשלים שנמנעה. אי-סינכרון גרסאות ו"תיקון קיים רק בפלטפורמה אחת" נעלמים כקטגוריה: הלוגיקה חיה בשכבה המשותפת, וההבדלים — במתאם פלטפורמה דק.
  • יציבות במכשירים חלשים. תקציב פריים וטעינת משאבים מכוונים במקום אחד, ולכן נבדקים על סט תרחישים זהה.
  • יכולת שחזור תקלים. תרחיש שחזור אחד ולוגים משותפים — דוח מהתמיכה ישים לשתי הפלטפורמות בלי לבנות מחדש את ההקשר.
  • חזרה לגרסה קודמת. תג בנייה ו-hash משאבים אחידים לריליס, ולכן חזרה לגרסה קודמת — פעולה אחת לשתי הפלטפורמות.

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

אפשרויות מימוש משחק לשתי פלטפורמות ומגבלות

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

אפשרות מתי מתאימה מגבלות
פיתוח נייטיב לכל מערכת גרפיקה כבדה, נדרש גישה ליכולות החדשות ביותר של המכשיר נפח קוד כפול ושני מחזורי שחרור; התנהגות הבניות מתפצלת בהדרגה
שכבת משחק משותפת רוב הלוגיקה משותפת, ההבדלים — בקלט, ברכישות ובשירותי מערכת דורש משמעת בשכבת המתאמים, אחרת הבדלי פלטפורמות מחלחלים לגיימפליי
עטיפה היברידית של המשחק יש ליבה מוכנה בטכנולוגיות ווב, חשובה מהירות שחרור לשתי המערכות בבת אחת היענות השליטה נתקעת בעטיפה, הגישה לפונקציות מערכת מוגבלת
מודולי משחק מוכנים ז'אנר טיפוסי, לוחות זמנים חשובים יותר מייחודיות מכניקות תלות בקוד זר, קשה לשנות את ליבת הגיימפליי לפי כללים משלך

שכבת משחק משותפת על Cocos2d-x ברוב הפרויקטים מתבררת כפשרה עובדת: גיימפליי, פיזיקה, סצנות ומשאבים נמצאים בעץ מקור אחד, והבדלי המערכות מוצאים למתאם דק — קלט, רכישות, התראות, אחסון מקומי.

פיתוח משחקים עם Cocos2d-x בארכיטקטורה כזו נותן מחזור ריליס אחד במקום שניים, אבל קריאה ישירה לספריית פלטפורמה מתוך לוגיקת המשחק שוברת את הבנייה במערכת השנייה.

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

שלבי עבודה: מניתוח מכניקות ועד מסירת בניות

העבודה על משחק ב-Cocos2d-x בנויה כרצף של שלבים, שכל אחד מהם נשען על תוצאה מאומתת של הקודם. כך אב-טיפוס לא הופך לריליס עם הנחות מצטברות, ותיקוני איזון בסוף לא דורשים שכתוב של שכבת המשחק.

  1. ניתוח מכניקות ומכשירי יעד — מתעדים את ליבת מחזור המשחק, מספר האובייקטים על המסך בו-זמנית, הגבול התחתון של מכשירים שהמשחק חייב לעבוד עליהם.
  2. סכמת שכבת המשחק — מפרקים את הסצנה לשכבות, קובעים סדר רינדור ואת הגבול בין לוגיקה לתצוגה, כך ששינויי חוקים לא יפגעו בחלק החזותי.
  3. אב-טיפוס של מכניקות משחק — מרכיבים שליטה, קצב ומשוב על גרפיקה זמנית; לפני השקעה בארט בודקים שהמכניקה מחזיקה קשב.
  4. הגדרת בנייה — קונפיגורציות לפלטפורמות, סטים של משאבים, בנייה אוטומטית של גרסאות ריליס, כך שהשחרור ייקח דקות ולא מעברים ידניים.
  5. בדיקות על מכשירים — מטריצת דגמים אמיתיים, חומרה חלשה, סשנים ארוכים, מזעור האפליקציה, קטיעה בשיחה, התאוששות אחרי כשל.
  6. אופטימיזציה לפי מדידות — זמן עלייה, צריכת זיכרון, יציבות תמונה בסצנות עמוסות; עובדים רק עם צווארי בקבוק שנמצאו במכשירים.
  7. מסירת הפרויקט לצוות — קוד מקור עם היסטוריה, סכמת שכבות, סקריפטים לבנייה ולפריסה, הדרכת מהנדסי הלקוח והוצאת העדכון הראשון במשותף.

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

קוד מקור, בניות, תיעוד ותקנון עדכונים

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

  • מאגר עם היסטוריה מלאה: ענפים, תגי ריליס, קומיטים — בלי קטעים "מנוקים" ותיקונים שחיים מחוץ לבקרת גרסאות.
  • בניות מוגדרות לכל פלטפורמה: קונפיגורציות, פרופילי חתימה וסקריפט שבונה ארטיפקט ריליס בפקודה אחת.
  • תיעוד לפרויקט המשחק: סצנות, גרף אובייקטים, מחזור המשחק, טבלאות איזון ורמות — עריכת תוכן לא דורשת קריאה של כל הקוד.
  • רשימת תלויות חוץ עם גרסאות ורישיונות: תוספים, מודולי אנליטיקה, ספריות סאונד.
  • תקנון הוצאת עדכונים: שלבים מענף ועד פרסום בחנויות, נקודות תיאום, סדר חזרה לגרסה קודמת.
  • כללי גישה ותפקידים: מי ממזג שינויים לענף הראשי, מי מפרסם, היכן נשמרים מפתחות חתימה וכיצד הם מוחלפים.
  • הוראות פריסת סביבה על מכונה נקייה: תלויות, משתנים, בדיקת תקינות הבנייה.

סט כזה מסיר את הסיכון העיקרי — שבעוד חצי שנה איש מלבד המחברים לא יוכל להוציא עדכון. פרויקט ב-Cocos2d-x אנו מוסרים במצב שבו צוות הלקוח בונה ומפתח אותו בעצמו.

מקרה בוחן: שתי פלטפורמות, מחזור ריליס אחד — מדדים לפני ואחרי

מה היה לפני תחילת העבודה

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

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

מה שינינו ומה יצא

איחדנו את ענפי הפלטפורמה לשכבת משחק משותפת על Cocos2d-x: חוקי קרב, התקדמות, סריאליזציה של מצב וטבלאות איזון הועברו למודול אחד, ואת הבדלי הפלטפורמה — רכישות, התראות, איסוף אנליטיקה — השארנו בעטיפות דקות. קונפיגורציות הרמות הועברו לפורמט טקסט אחד, כדי שמעצב המשחק יוכל לתקן איזון בלי לבנות מחדש.

מדד לפני אחרי
חלק הקוד במודול המשותף ~40% ~80%
זמן הוצאת עדכון 2-3 שבועות 3-4 ימים
כשלים לריליס עד 11 2-3
תיקון איזון בשתי בניות באחת

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

במה cocos2d-x שונה מבוני משחקים ויזואליים

בוני משחקים ויזואליים מרכיבים מוצר מבלוקים מוכנים: סצנות, ספרייטים, פיזיקה, מסכי ממשק טיפוסיים, פרסום בחנויות אפליקציות. זה נותן התחלה מהירה של אב-טיפוס בלי מהנדס, אבל השכבה שקובעת את התנהגות המשחק נשארת זרה — את הלוגיקה שלה קובע העורך, לא הקוד שלך. cocos2d-x — גישה הפוכה: אתה מקבל קוד, לא סט של בלוקים.

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

ב-cocos2d-x המחזור, מנהלי המשאבים והרינדור פתוחים: המהנדס שולט בקצב הלוגיקה, בשימוש חוזר באובייקטים ובסדר הרינדור — מכאן התנהגות צפויה במכשירים חלשים.

הפער השני — תיקונים בצד הלקוח. פרויקט ב-cocos2d-x נבנה בקו רגיל: מאגר, בדיקות אוטומטיות, ריליסים שחזירים, ענפים נפרדים לפלטפורמות. פרויקט של בונה חי בתוך העורך, וכל התערבות בליבה יש לחזור עליה מחדש אחרי עדכון הכלי.

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

שאלות טכניות ששואלים לפני תחילת העבודה

לפני ההתחלה הלקוח בודק שלושה דברים: מה יקרה לגרסת המשחק הנוכחית, כמה קוד קיים יצטרכו לשכתב ומי אחראי לשחרור בחנויות. להלן תשובות לכל סעיף; הן זהות גם למשחק חדש וגם לפרויקט ב-Cocos2d-x שכבר חי בפרודקשן.

מה יהיה עם משחק שכבר שוחרר ומביא שחקנים?

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

כמה קוד יצטרכו לשכתב?

לא משכתבים הכול: הקוד מתחלק לשכבה לשימוש חוזר — כלכלה, איזון, רשת — ולחלק שתלוי במאפייני הפלטפורמה. את שיעור השכתוב מעריכים לפי מודולים בהתחלה ומקבעים, כדי שהנפח לא יגדל באופן שרירותי תוך כדי.

איך בודקים את המשחק במכשירים שונים?

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

מי אחראי לפרסום בחנויות האפליקציות?

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

נדון במשימה ונחזור עם הערכה ותוכנית

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

הרשימה שלהלן עוזרת לאסוף במהירות את הנתונים הראשוניים. אם בסעיף כלשהו אין עדיין החלטה — זה בסדר, חלק מהשאלות ננתח יחד ונקבע בתוכנית.

  • ז'אנר, אנלוגים קרובים ופלטפורמות שהמשחק צריך לעבוד עליהן קודם כל.
  • מחזור המשחק העיקרי: מה השחקן עושה בדקות הראשונות ולשם מה הוא חוזר.
  • מונטיזציה והתקדמות: פרסום, רכישות פנימיות, אירועים עונתיים.
  • ארט וסאונד: מה כבר מוכן, באיזה פורמט, מה צריך ליצור מאפס.
  • חלק אונליין: טבלאות מובילים, חשבונות, שמירות בענן, התראות.
  • גישות: חשבונות בחנויות אפליקציות, מאגר, אנליטיקה — עד תחילת העבודה.
  • מגבלות: לוחות זמנים, מכשירים בעדיפות, דרישות לגודל הבנייה.

לפי הנתונים הראשוניים האלה נחזור עם תוכנית שלבי פיתוח: אב-טיפוס, חתך אנכי עם מכניקת המפתח, מילוי תוכן, שחרור ותמיכה אחרי ריליס — עם זמנים והרכב צוות לכל שלב.

נדון בפיתוח המשחק בשיחה; נתחיל את העבודה על המשחק אחרי אישור התוכנית, ואת פרמטרי הבנייה עבור Cocos2d-x או מנוע אחר נתאים למכשירים שלכם.