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

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

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

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

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

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

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

שאלות נפוצות

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

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

פיתוח משחקי מובייל: היכן הפרויקט נשבר כבר בהתחלה

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

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

ליבת חוקים אחת בתוספת בנייה חוצת-פלטפורמות ממקור אחד מסירות את אי-ההתאמה — מתקנים מימוש אחד במקום שניים.

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

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

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

מה משתנה לאחר העברת הלוגיקה לליבה משותפת

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

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

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

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

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

פורמטים של מולטיפלייר: השוואת גישות ומגבלות

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

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

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

שלבי העבודה: מביקורת אב-טיפוס ועד מסירה לצוות

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

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

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

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

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

  • תיאור ארכיטקטורה — שכבות הלקוח, מצב סשן המשחק, לוגיקת השרת ונקודות הרחבה. תרשים מודולים עם גבולות ברורים: היכן מוסיפים מצב חדש בלי לפגוע בשכבת הרשת ובמתמטיקת האיזון.
  • תרשימי זרימות רשת — רצפים של handshake, סנכרון מצב והתחברות מחדש בעת ניתוק. בנפרד — מה רואה הלקוח בעת אי-סנכרון וכיצד נפתרים קונפליקטים בין שחקנים.
  • קונפיגורציות סביבות — dev, staging, production עם רשימת משתנים, מגבלות ותלויות חיצוניות. הקמת סביבה חוזרת מאפס לפי הוראות, בלי «לשאול את מי שהגדיר».
  • מדיניות גישה וסודות — תפקידים במאגר ובענן, עקרון הרשאות מינימליות, רוטציה של מפתחות אינטגרציות תשלום ואנליטיקה, איסור סודות בקוד.
  • תקנון הוצאת עדכונים — הסתעפות, בדיקות חובה, סדר פריסה לקבוצות בדיקה, קריטריוני Rollback וזמני ניתוח תקלות עם תיעוד סיבה.
  • כלי בנייה ושחרור — בנייה ניתנת לשחזור, העלאה אוטומטית לחנויות, ניהול גרסאות ואחסון מפות קוד לניתוח קריסות בפרודקשן.
  • תיעוד נתונים — תרשים אחסון התקדמות, מטריקות ופרופילים, כללי מיגרציה בעת שינוי פורמט, כדי שעדכון לא יאפס את התקדמות השחקנים.
  • תוכנית מסירה — ניתוחים משותפים עם הצוות שלכם, גישות, סדר ליווי הגרסאות הראשונות ואיש קשר לשאלות דחופות.

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

מקרה בוחן: סנכרון משחקים ויריבי AI בקרב

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

מה שינו

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

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

תוצאה

שיעור המשחקים שנקטעו ירד מ-18% ל-2%, זמן ההתחברות למשחק — מ-6–9 שניות ל-1.5–2 שניות בזכות לקוח קל ותמונת פתיחה קצרה.

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

מה עושים אם המשחק כבר יצא לאור בשרת שלכם?

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

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

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

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

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

ספקות טכניים: Rollback, צ'יטים, עומס, פרטיות

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

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

מה קורה בעת ניתוק קשר במשחק?

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

כיצד מוגנות תוצאות המשחקים?

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

כיצד מחושבת עומס שיא?

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

כיצד נשמרים נתוני השחקנים וכיצד מתבצע Rollback של גרסה?

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

נדון במשימה: מה לצרף לבקשה להערכה

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

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

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