הטמעת מכניקת Battle Pass במשחקי מובייל
אנו מפתחים מכניקת Battle Pass — אחד מאלמנטי המונטיזציה התובעניים ביותר מבחינה טכנית. בפרויקט אחד עבור משחק RPG נייד עם 500 אלף משתמשים פעילים יומיים, הטמענו מערכת התקדמות בת חמישה שלבים. הגרסה הראשונה הובילה לכך ש-30% מהשחקנים השלימו אותה בשבוע הראשון, מה שחייב חישוב מחדש של עקומת ה-XP. בהתבסס על ניסיון זה, בנינו ארכיטקטורה ניתנת לשימוש חוזר וניתנת להרחבה.
ההטמעה שלנו מכסה יותר מסתם רשימת פרסים: זו מערכת עונתית עם התקדמות, שני מסלולים, טיימר, רכישת IAP וסנכרון התקדמות בין מכשירים. אנו מבטיחים פעילות יציבה גם בעומס גבוה ומספקים תיעוד מלא.
כיצד לאזן התקדמות Battle Pass
שאלה מרכזית היא הבחירה בין XP קבוע ל-XP משתנה. XP קבוע פשוט יותר אך מסתכן בכך ששחקנים כבדים יסיימו בשבוע הראשון, ויאבדו מוטיבציה לשלם. XP משתנה שומר על עניין אך יכול להפוך לאגרסיבי מדי.
קנה מידה ליניארי עם רמה קבועה עובד היטב: 20 הרמות הראשונות זולות, רמות 21–80 עולות בהדרגה, ולרמות 81–100 יש עלות גבוהה קבועה לפרפקציוניסטים. שחקן מזדמן ללא דילוג מגיע לרמה 70–75 בסוף העונה — איזון טוב. אנו מתכננים את טבלת ה-XP בגיליון אלקטרוני: מגדירים XP צפוי מפעילויות שונות (השלמת רמה, משימה יומית, אירוע) ומחשבים כמה ימים שחקן מזדמן צריך כדי להשלים כל רמה.
| רמות | XP לכל רמה | הערות |
|---|---|---|
| 1–20 | 100 | התחלה מהירה |
| 21–80 | 100 + 10*(רמה-20) | צמיחה יציבה |
| 81–100 | 800 | רמה קבועה |
ארכיטקטורת נתונים ואינטגרציה
המודל בצד השרת כולל לפחות שלוש ישויות:
- עונה — העונה הנוכחית עם תאריכי התחלה/סיום, רשימת רמות (50–100) עם פרסים למסלולים חינמיים ופרימיום.
- PlayerSeasonProgress — התקדמות אישית: רמה נוכחית, XP מצטבר, דגל
isPremium, רשימתclaimedRewards. - SeasonXPTransaction — יומן של צבירת XP: מקור (level_complete, daily_quest, mission), כמות, חותמת זמן. נדרש לביקורת ואנטי-צ'יט.
struct BattlePassLevel: Codable {
let level: Int
let xpRequired: Int
let freeReward: Reward?
let premiumReward: Reward?
}
struct PlayerSeasonProgress: Codable {
let seasonId: String
let currentLevel: Int
let currentXP: Int
let isPremium: Bool
let claimedRewards: [String] // "level_\(n)_free", "level_\(n)_premium"
} כיצד לשלב IAP עבור Battle Pass
ניתן למכור Battle Pass כמוצר חד-פעמי או כמנוי מתחדש אוטומטית. רכישה חד-פעמית לעונה פשוטה יותר לשחקן וקלה יותר ליישום. מנוי עם חידוש אוטומטי מניב הכנסה יציבה, אך דורש ניהול קפדני באמצעות StoreKit 2 (iOS) או Google Play Billing Library 6+.
לפי תיעוד StoreKit 2, אימות עסקאות בצד השרת הוא חובה עבור תוכן פרימיום. הלקוח שולח struct BattlePassLevel: Codable { let level: Int let xpRequired: Int let freeReward: Reward? let premiumReward: Reward? } struct PlayerSeasonProgress: Codable { let seasonId: String let currentLevel: Int let currentXP: Int let isPremium: Bool let claimedRewards: [String] // "level_\(n)_free", "level_\(n)_premium" } , והשרת מאמת אותו באמצעות App Store Server API או Google Play Developer API.
ב-iOS עם StoreKit 2:
let products = try await Product.products(for: ["battle_pass_season_1"])
guard let battlePass = products.first else { return }
let result = try await battlePass.purchase()
switch result {
case .success(let verification):
let transaction = try verification.payloadValue
await transaction.finish()
await unlockPremiumTrack(for: transaction.id)
case .pending:
break
case .userCancelled:
break
}הקונספט של Battle Pass מתואר בוויקיפדיה, אך ההטמעה שלנו כוללת מספר תכונות נוספות.
מתי להשתמש במנוי במקום רכישה חד-פעמית
רכישה חד-פעמית מתאימה למודל הקלאסי. מנוי מתחדש אוטומטית מגדיל את ה-LTV פי 2 בהשוואה לרכישה חד-פעמית — שיפור משמעותי — אך דורש הטמעה יסודית: טיפול נכון בביטולים, חידושים והחזרים. הניסיון שלנו מראה שמנוי מספק הכנסה צפויה יותר.
| פרמטר | מוצר חד-פעמי | מנוי מתחדש אוטומטית |
|---|---|---|
| סוג הכנסה | חד-פעמית | חוזרת |
| LTV | נמוך יותר | גבוה פי 2 |
| מורכבות הטמעה | נמוכה | גבוהה (ניהול מנויים) |
דוגמה לחישוב XP לשחקן מזדמן
עם 10,000 XP ליום (יומי + משימה), שחקן מזדמן עובר 20 רמות בכ-7 ימים, ו-50 רמות ב-20 ימים.דילוג על רמות, מתנות ותמחור
דילוג על רמות (דילוג על רמות תמורת מטבע פרימיום) מייצר הכנסה נוספת. בדרך כלל, רמה אחת = 100–150 יהלומים, חבילה של 10 רמות עם הנחה קטנה (לדוגמה, $1.99 עבור 10 דילוגים). טכנית: IAP חד-פעמי או ניכוי מהארנק עם אימות בצד השרת.
מתן Battle Pass במתנה לחבר היא תכונה שמבוקשים לעיתים קרובות אך ממעטים ליישם. היא דורשת תמיכה ב-Gift Purchase מהפלטפורמה: iOS תומך בכך דרך StoreKit, ואנדרואיד חלקית דרך Google Play Gifting API (בבטא מאז 2023).
ממשק משתמש וטיימר עונה
ממשק המשתמש הסטנדרטי הוא גלילה אופקית עם רמות, הרמה הנוכחית במרכז, ופרסים מעל/מתחת למסלולים חינמיים/פרימיום. כפתור "קבל" פעיל רק עבור פרסים שהושגו ולא נאספו.
מצבי ממשק מרכזיים לכל רמה:
- נעול (עדיין לא הושג)
- הושג, לא נאסף (הושג, הפרס לא נאסף)
- נאסף (נאסף)
- פרימיום נעול (פרימיום בלבד, השחקן לא רכש)
אנימציית איסוף פרס — מסך מלא עם חלקיקים. זהו רגע שימור: השחקן צריך להרגיש סיפוק מההתקדמות.
טיימר ספירה לאחור יוצר תחושת דחיפות. מוצג בתפריט הראשי ובמסך ה-Battle Pass. 3 ימים לפני הסיום — הודעת push: "נשארו 3 ימים לעונה, נותרו לך X רמות."
בתום העונה: ההתקדמות נשמרת בארכיון, פרסים שלא נאספו פגים (עם אזהרה של 7 ימים), והעונה הבאה מתחילה אוטומטית. נתונים מעונות קודמות נשמרים להיסטוריית פרופיל.
הטמעה שלב אחר שלב ולוחות זמנים
- עיצוב עקומת XP – הגדרת מספר רמות, XP לכל רמה והתקדמות צפויה של שחקנים.
- הקמת backend – יצירת מודלים של Season, PlayerSeasonProgress ו-SeasonXPTransaction.
- הטמעת IAP – הגדרת מוצרים ב-App Store / Google Play, שילוב תהליך רכישה עם אימות שרת.
- בניית ממשק משתמש – פיתוח גלילה אופקית עם מצבי רמות ואנימציות איסוף.
- הוספת טיימר עונה – הטמעת ספירה לאחור ולוגיקת סיום עונה.
- בדיקות ואיזון – הרצת סימולציות כדי להבטיח קצב נכון והתאמת XP במידת הצורך.
- השקה עם אנליטיקה – מעקב אחר התקדמות שחקנים, המרות ומעורבות.
הטמעה בסיסית (ללא מנוי, דילוג על רמות) — 5 ימים. מערכת מלאה עם מנוי, דילוג על רמות, מתנות ואנליטיקה — 2–3 שבועות. אנו מבטיחים מסירה בזמן ודיווח שקוף.
מה כלול ולמה לבחור בנו
במהלך ההטמעה, אנו מספקים:
- תיעוד API מלא בצד השרת
- קוד אינטגרציה ללקוח ב-Swift וב-Kotlin
- הוראות הגדרת IAP לקונסולות App Store ו-Google Play
- תמיכה של 30 יום לאחר השחרור
עם ניסיון של למעלה מ-5 שנים, יותר מ-30 פרויקטים שהושלמו ונוכחות חזקה בשוק משחקי המובייל, אנו מספקים מערכות Battle Pass חזקות ששומרות על שחקנים ומגדילות הכנסות. הגישה שלנו מהירה בכ-40% מבנייה פנימית, וחוסכת זמן וכסף. לדוגמה, מערכת המנויים שלנו משיגה LTV גבוה פי 2 בהשוואה לרכישות חד-פעמיות, ומתעלה על פתרונות מתחרים רבים.
השאירו פנייה כדי לדון בפרויקט שלכם — נעזור להטמיע Battle Pass ששומר על שחקנים ומגדיל הכנסות.







