שילוב שמירה בענן והישגים: ללא אובדן נתונים

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

היכולות שלנו

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

יישומי 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 רמות באייפון, העביר את המשחק לאייפד – ההתקדמות נמחקה. לפי מספר אולפני מובייל, אובדן התקדמות בהתקנה מחדש הוא בין 3 הסיבות המובילות לביקורות שליליות ונטישת שחקנים (כ-28% מהמשתמשים נוטשים לאחר אירוע כזה). iCloud או Google Play Games Services פותרים זאת – אך אינטגרציה נכונה דורשת יותר מאשר קריאה למתודה אחת. אנו מציעים אינטגרציה מקצועית של שמירות ענן והישגים עם ערבויות לשלמות נתונים וארכיטקטורה חזקה שלא תיכשל באלפי מכשירים.

מלכודות ייצור נסתרות

קונפליקטים במיזוג שמירות

משתמש שיחק במצב לא מקוון בשני מכשירים. כששניהם מתחברים – מקבלים שני תצלומי התקדמות שאינם תואמים. Apple Game Center ו-Google Play Games לא פותרים קונפליקטים עבורך: הם מחזירים את שני התצלומים ומחכים שהלקוח יבחר את המנצח. לפי סטטיסטיקות, כ-30% מהמשתמשים נתקלים בקונפליקטים כאלה כשהם משתמשים במספר מכשירים באופן פעיל. ללא פתרון קונפליקטים מיושם כראוי עם ממשק משתמש ברור ("ההתקדמות שלך במכשיר זה: 43 רמות / בענן: 38 רמות – מה לשמור?") המשתמש יאבד נתונים – וזהו מקור מרכזי לביקורות שליליות.

גודל תצלום ותדירות כתיבה

Google Play Saved Games מגביל כל תצלום ל-3 מגה-בייט, ואת סך השמירות לחשבון ל-10 מגה-בייט (ברירת מחדל). אם שמירה כוללת נתוני מלאי עם אלפי רשומות – יש לסריאליזציה רק את הדלתא או לייעל את הפורמט. שמירות אוטומטיות תכופות (לאחר כל פעולה) יוצרות תור כתיבה שבתנאי קישוריות ירודים מצטבר וגורם ל-GooglePlayGames.SavedGame.ISavedGameClient timeouts. בפועל, זה מוביל לסנכרון לסירוגין ולתסכול של השחקן.

Apple iCloud Keychain לעומת CloudKit

למשחקים פשוטים, NSUbiquitousKeyValueStore מספיק – הוא מסנכרן עד 1 מגה-בייט של זוגות מפתח-ערך. להתקדמות מורכבת יש צורך בCloudKit עם CKContainer ו-CKRecord. ל-Unity אין קישור מקורי ל-CloudKit – אינטגרציה דורשת כתיבת תוסף ב-Objective-C/Swift או שימוש בפתרון צד שלישי כמו CloudSave מ-Unity Gaming Services. בנינו תוספים כאלה לפרויקטים עם למעלה ממיליון משתמשים – נוכל לחלוק את הניסיון הזה.

כיצד לטפל נכון בקונפליקטי שמירה

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

למה מגבלות גודל חשובות

חריגה מהמגבלות גורמת לשגיאות CloudSaveValidationException וחוסמת כתיבות. מומלץ: סריאליזציה של שדות שהשתנו בלבד ודחיסת נתונים. ב-Unity Cloud Save, גודל מסמך מקסימלי הוא 1 מגה-בייט – לנפחים גדולים יותר יש לפצל למספר מסמכים. אנו משתמשים בסריאליזציה בינארית עם protobuf כדי לחסוך מקום – זה מקטין את גודל התצלום ב-40-60% בהשוואה ל-JSON.

Unity Gaming Services Cloud Save

לפרויקטים חוצי-פלטפורמות (iOS + Android + PC) הנתיב האופטימלי הוא Unity Cloud Save מהחבילה com.unity.services.cloudsave. הוא מאחסן מסמכי JSON עד 1 מגה-בייט, עובד דרך Unity Authentication (חשבונות אנונימיים או זהות מאוחדת), ותומך באימות בצד השרת דרך Cloud Code.

נקודה מרכזית: CloudSaveService.Instance.Data.Player.SaveAsync() הוא אסינכרוני, זורק CloudSaveValidationException בחריגה ממכסת CloudSaveException בשגיאות רשת. טיפול בחריגות אלה בייצור הוא חובה – בלעדיו, חיבור שאבד במהלך שמירה שובר את המטמון המקומי ללא אבחון.

ארכיטקטורה: שמירה מקומית (PlayerPrefs או קובץ JSON מותאם ב-Application.persistentDataPath) + שמירת ענן כמראה עם תג גרסה. בטעינה – השווה updatedAt ממטא-נתונים של תצלום הענן עם חותמת הזמן המקומית. אם יש אי-התאמה – התחל תהליך פתרון קונפליקטים.

השוואת פלטפורמות ענן

פלטפורמה גודל מקסימלי פתרון קונפליקטים פלטפורמות
iCloud (KVStore) 1 מגה-בייט Last-write-wins iOS, macOS
Google Play Games 3 מגה-בייט לתצלום ידני (שני תצלומים) Android, iOS
Unity Cloud Save 1 מגה-בייט למסמך ידני (דרך קוד) iOS, Android, PC, Web
טעויות אינטגרציה נפוצות
  • התעלמות מטיפול ב-CloudSaveException.
  • אין גיבוי לשמירה מקומית כשהענן לא זמין.
  • שימוש ב-last-write-wins ללא ממשק קונפליקטים.
  • חריגה ממגבלות גודל תצלום ללא דחיסה.
  • אי-התחשבות בפעולות שמירה אסינכרוניות.

הישגים

Google Play Games Achievements ו-Apple Game Center Achievements – API שונים, מגבלות שונות, לוגיקת פתיחה שונה. הפשטה נכונה: IAchievementService עם מתודות Unlock(achievementId), Increment(achievementId, steps), Report(achievementId, percent) – יישום ספציפי לפלטפורמה מוסתר מאחורי הממשק.

חשוב: הישגים מצטברים ב-Google Play דורשים הגדרת totalSteps ב-Play Console מראש. אם השלבים משתנים (למשל, הישג "הרוג 100 אויבים" שונה ל-"הרוג 50") – לא ניתן לשנות את סך השלבים מבלי לאפס את ההתקדמות של כל המשתמשים הקיימים. זו החלטה ארכיטקטונית שיש לקבל לפני השקה. אנו עוזרים לתכנן הישגים כדי להימנע מבעיות כאלה.

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

מה כלול

  1. ביקורת על הארכיטקטורה הנוכחית של שמירות והישגים.
  2. בחירת ספק אופטימלי (iCloud, Google Play, Unity Cloud Save).
  3. יישום ממשק פתרון קונפליקטים וטיפול בחריגות.
  4. בדיקות על מכשירים אמיתיים עם שגיאות רשת מדומות.
  5. תיעוד לתחזוקה והרחבה.

לוחות זמנים

פלטפורמה/תרחיש משך
Google Play Games (הישגים + שמירות), פלטפורמה אחת 4–7 ימים
Apple Game Center (הישגים + iCloud KVStore) 4–7 ימים
Unity Cloud Save (חוצה-פלטפורמות) + ממשק פתרון קונפליקטים 1.5–2 שבועות
אינטגרציה מלאה iOS + Android + PC עם backend מותאם 3–5 שבועות

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