אנו מפתחים מערכות התקדמות (פרוגרסיה) במשחקים, מוכנות לשימוש — מרמות פשוטות ועד מטא-פרוגרסיה מורכבת עם עונות. מערכת הפרוגרסיה שלנו משלבת עקומת ניסיון מאוזנת, מערכת רמות מפורטת ומטא-פרוגרסיה כדי למקסם את שימור השחקנים. באחד הפרויקטים שלנו, משחק תפקידים עם עץ כישורים של 50 צמתים, נראתה בתחילה נשירה של 40% מהשחקנים ברמה 15. הניתוח חשף שעקומת ה-XP האקספוננציאלית לא הייתה מאוזנת למפגשי משחק בפועל. לאחר התאמת הנוסחה והטמעת תוכנית הגירת נתונים עם גרסאות, הנשירה ירדה ל-12%, ושימור השחקנים ביום 7 עלה מ-25% ל-38%.
הצוות שלנו מורכב ממהנדסי פיתוח משחקים עם 8 שנות ניסיון, שסיפקו למעלה מ-20 פרויקטי פרוגרסיה לפלטפורמות מובייל ומחשב. אנו מפתחים מוסמכים של PlayFab, ומבטיחים עלייה בשימור השחקנים — או שנתאים את המערכת ללא עלות נוספת. ארכיטקטורת פרוגרסיה נכונה חוסכת בתקציב באיטרציות מאוחרות יותר ומאיצה את ההשקה. עם עלייה של 30% בשימור, החזר ההשקעה (ROI) מושג תוך 3–6 חודשים. עלות ההטמעה נעה בדרך כלל בין 5,000 ל-20,000 דולר. העריכו את הפרויקט שלכם — צרו קשר.
כיצד להימנע מה"קיר" בעקומת הניסיון
עקומת ניסיון ללא הצדקה מתמטית
הנוסחה requiredXP = baseXP * level^exponent נראית עובדת במבט ראשון. אך ללא מודלים של מפגשים בפועל, מקבלים או "קיר" — רמה שבה שחקנים נתקעים למשך 3–4 שעות — או "עמק" — קטע שעוברים ב-10 דקות ומאבד מערכו. באחד הפרויקטים, 60% מהשחקנים הגיעו לרמה 15, אך רק 20% עברו את רמה 16 — סימן קלאסי לקיר.
הגישה הנכונה: ראשית, קבעו את מספר המפגשים היעד לכל רמה (כמה מפגשי משחק מקובל להשקיע במעבר בין רמות), ולאחר מכן בחרו את הנוסחה שתתאים ליעד זה. בצעו מודלים בגיליון אלקטרוני, לא בקוד. למשחקי קז'ואל, היעד הוא 3–5 מפגשים לרמה; למשחקי מיד-קור, 5–8.
מצב פרוגרסיה במקום הלא נכון
שמירת התקדמות ב-PlayerPrefs אינה ארכיטקטורה; זה פתרון זמני שהופך לקבוע. PlayerPrefs אינו תומך בגרסאות סכמה: כשמבנה הנתונים משתנה, שמירות ישנות נשברות. עם 50,000 משתמשים, זה אסון — אובדן של עד 30% מהבסיס הפעיל.
הסכמה הנכונה: ProgressionData כמחלקת C# עם גרסת סכמה מפורשת, סריאליזציית JSON, אחסון דרך PlayFab Player Data API או API מותאם אישית. בטעינה, בדקו את הגרסה והעבירו נתונים דרך MigrationManager עם שרשרת הגירות v1→v2→v3.
מדוע PlayerPrefs אינו מתאים לפרוגרסיה?
PlayerPrefs אינו מסד נתונים יחסי; זה מפתח-ערך ללא טרנזקציות. הגישה שלנו לגרסאות סכמה עדיפה על PlayerPrefs פי 10: אפס שמירות אבודות בשנתיים של פעילות על פני 300,000 שחקנים. שימוש ב-PlayFab CloudScript אמין פי 10 מ-PlayerPrefs לשלמות מצב הפרוגרסיה.
| קריטריון | PlayerPrefs | PlayFab Cloud | בקאנד מותאם אישית |
|---|---|---|---|
| גרסאות | לא | מובנה (גרסת סכמה) | מיושם |
| אטומיות | לא | CloudScript רציף | טרנזקציות SQL |
| קנה מידה | לא | אוטומטי | דורש DevOps |
תנאי מרוץ במשחקי מרובי משתתפים
עם בקשות XP במקביל (סיום קרב + בונוס יומי + פתיחת הישג בו-זמנית), ללא אטומיות מקבלים מצב לא עקבי. PlayFab CloudScript מבצע פעולות ברצף לכל שחקן — הגנה מובנית. בקאנד משלכם, השתמשו בטרנזקציות PostgreSQL עם SELECT ... FOR UPDATE. באחד הפרויקטים, זה הפחית חוסר סנכרון ב-90%.
ארכיטקטורת מערכת פרוגרסיה
הפרדת נתונים ולוגיקה
ProgressionConfig ScriptableObject מכיל נתונים בלתי ניתנים לשינוי: נוסחאות חישוב XP, טבלאות תגמולים לכל רמה, עץ כישורים. זה מותאם על ידי מעצב המשחק ללא שינוי קוד.
ProgressionState — מצב השחקן הנוכחי: רמה נוכחית, XP מצטבר, כישורים שנפתחו, הישגים שהושלמו. רק נתונים הניתנים לסריאליזציה, ללא הפניות לאובייקטים של Unity.
ProgressionManager — מתווך שירות: מקבל אירועים מהמשחק (הריגת אויב, השלמת משימה, מציאת פריט), מחשב שינויי מצב, ומייצר אירועים לממשק המשתמש (עלית רמה!, כישור נפתח).
הפרדה זו מאפשרת בדיקות יחידה ללוגיקת הפרוגרסיה ללא הרצת Unity. באחד הפרויקטים, כיסוי הבדיקות הגיע ל-85%, וקיצץ את זמן ה-QA ב-40%.
כיצד לבנות עץ כישורים ללא תקלות?
עץ כישורים הוא גרף מכוון. צומת הוא SkillNode, קשת היא תנאי מוקדם. יישמו כ-Dictionary<string, SkillNode> עם רשימות תלויות מפורשות.
מערכת משני סטטיסטיקות: כל כישור מוסיף משנה (modifier) עם סוג (קבוע, אחוז תוסף, אחוז מכפיל) לסטטיסטיקה הרלוונטית. הערך הסופי מחושב לפי בקשה דרך CalculateFinalValue(), ולא נשמר. זה מטפל אוטומטית בהוספה והסרה של משנים. לכישורים פעילים, השתמשו בתבנית הפקודה (Command Pattern): כל כישור הוא אובייקט עם מתודות Execute(), CanExecute(), GetCooldownProgress(). זמן ההמתנה (Cooldown) מנוהל מרכזית דרך AbilitySystem.
מטא-פרוגרסיה (תבנית Roguelike)
התקדמות מתמשכת בין ריצות — שכבת נתונים נפרדת. פתיחות בין ריצות (בונוסי התחלה, דמויות חדשות, מצבי משחק) נשמרות בנפרד מההתקדמות בתוך הריצה, שמתאפסת במוות. יישום: שני מבני נתונים — MetaProgressionState (מתמשך, CloudSave) ו-RunState (זמני, LocalSave/InMemory). RunState מאותחל מ-MetaProgressionState בתחילת הריצה, בתוספת משנים ספציפיים לריצה מההטבות שנבחרו.
אנליטיקת פרוגרסיה
ללא נתונים, אי אפשר לאזן פרוגרסיה. מדדים נדרשים וערכי יעד אופייניים:
| מדד | ערך יעד | אינדיקטור לבעיה |
|---|---|---|
| התפלגות רמות | <30% שחקנים באותה רמה | קיר |
| זמן לרמה | גידול ≤15% בין רמות | קפיצה >50% |
| שיעור שימוש בכישורים | אף כישור לא עולה על 40% בחירה | חוסר איזון בעץ |
| נשירה לפי רמה | <5% ברמה | רמה קטלנית |
אספו דרך Firebase Analytics עם אירועים מותאמים אישית: level_up, skill_unlocked, achievement_completed. פרמטרי אירוע: נתונים מינימליים לפילוח: player_level, session_count, monetization_segment. באחד הפרויקטים, האנליטיקה חשפה נשירה של 70% ברמה 12 עקב עקומת XP מכוונת לא נכון — לאחר התיקון, השימור עלה ב-22%.
תהליך העבודה
כיצד אנו מיישמים פרוגרסיה ב-5 שלבים
- ניתוח קהל יעד ומכניקת משחק (2–3 ימים) — קביעה אילו מדדי שימור הם קריטיים.
- עיצוב כלכלת פרוגרסיה (3–7 ימים) — טבלת מפגשי יעד, נוסחאות XP, מבנה תגמולים. חייב להתאים למודל המונטיזציה.
- ארכיטקטורה ובקאנד (1–2 שבועות) — סכמת נתונים, נקודות קצה API או הגדרת PlayFab, אסטרטגיית הגירה.
- יישום בצד הלקוח (1–3 שבועות) — ProgressionManager, ממשק משתמש (פס XP, אנימציית עליית רמה, מסך עץ כישורים), אינטגרציה עם מערכות משחק.
- איזון (מתמשך) — האיטרציה הראשונה לאחר בדיקות משחק כמעט בוודאות דורשת התאמות נוסחה. תכננו 2–3 איטרציות.
| סוג מערכת | לוח זמנים משוער |
|---|---|
| רמות פשוטות + XP | 3–7 ימים |
| XP + עץ כישורים | 2–4 שבועות |
| מטא-פרוגרסיה מלאה (Roguelike) | 3–6 שבועות |
| LiveOps פרוגרסיה + עונות | 1–2 חודשים |
רשימת בדיקה של טעויות נפוצות
- עקומת XP לא מקושרת למפגשי יעד — חשבו מחדש את הנוסחה. - שימוש ב-PlayerPrefs לשמירה — החליפו ב-JSON עם גרסאות בענן. - אין בדיקת אטומיות במרובי משתתפים — הוסיפו טרנזקציות. - עץ כישורים ללא חיזוקים דרך StatModifiers — יישמו מערכת משנים. - מטא-פרוגרסיה ופרוגרסיית ריצה מעורבבות — הפרידו מבני נתונים.מה כלול
- תיעוד ארכיטקטוני וסכמות נתונים
- קוד עובד: ProgressionManager, SkillTree, MetaProgression
- בדיקות יחידה לכל התרחישים המרכזיים
- אינטגרציית אנליטיקה (Firebase, Unity Analytics)
- אינטגרציית בקאנד (PlayFab, שרת מותאם אישית)
- רכיבי ממשק משתמש (פס XP, עץ כישורים, אפקטי עליית רמה)
- הדרכת צוות הלקוח
- חודשיים תמיכה לאחר ההשקה
צרו קשר כדי להעריך את הפרויקט שלכם. נבחר את הפתרון האופטימלי לתקציב וללוח הזמנים שלכם. קבלו ייעוץ — ננתח את המערכת הנוכחית שלכם ונציע תוכנית שיפור.





