שילוב PlayFab עבור צד שרת של משחק מובייל
תארו לעצמכם: אתם משחררים משחק מובייל, ושבוע לאחר מכן שחקנים מתחילים להתלונן שזהב נעלם, לוחות התוצאות לא מתעדכנים, והודעות push לא מגיעות. צד השרת לא יכול לעמוד בעומס, והתחזוקה שלו צורכת 50% מזמן הצוות. נשמע מוכר? נתקלנו בזה עשרות פעמים. מקרה ספציפי אחד: משחק RPG עם שיא של 10,000 CCU — השרת המותאם אישית קרס תוך שעה. המעבר ל-PlayFab פתר את הבעיה תוך שבוע, ועלויות התשתית ירדו פי 3, מ-$5,000 ל-$1,500 בחודש. הפתרון הוא PlayFab, BaaS ענני מבית Microsoft המותאם למשחקים.
PlayFab מכסה 80% מהצרכים הנפוצים של צד שרת למובייל ישירות מהקופסה: אימות, מלאי, מטבעות וירטואליים, חנות, לוחות תוצאות, התאמת שחקנים, הודעות push, ולוגיקת שרת באמצעות Cloud Script. אבל הסיכון הגדול ביותר אינו טכני. אם ארכיטקטורת הנתונים מעוצבת בצורה גרועה (מבנה של Title Data, Player Data, Catalog), תיקון מאוחר יותר הופך לכואב. כדאי להשקיע זמן בעיצוב מראש. רקורד העבודה שלנו — מעל 20 אינטגרציות מוצלחות — מבטיח שלא תיפלו למלכודת הזו.
למה PlayFab במקום צד שרת מותאם אישית?
השוואה: צד שרת מותאם אישית דורש פיתוח APIs, מסדי נתונים, לוגיקת שרת, פאנלים ניהוליים, וניטור. זה לפחות 3 חודשי עבודה עבור צוות של שני מפתחי צד שרת ומהנדס DevOps בעלות ממוצעת של $60,000. PlayFab מספק פתרונות מוכנים, ומקצר את הזמן ל-1–2 שבועות ומפחית את העלות הראשונית לפחות מ-$5,000. לפי הנתונים שלנו, שימוש ב-PlayFab מפחית את עלויות התשתית פי 2–3 וחוסך עד 40% מתקציב פיתוח צד השרת. PlayFab מוסמך על ידי Microsoft ועומד בתקני האבטחה SOC 2 ו-ISO 27001. בפרויקט אחד, החלפנו את Firebase ב-PlayFab — הביצועים השתפרו ב-30% הודות לתור הודעות אופטימלי.
| קריטריון | צד שרת מותאם אישית | PlayFab |
|---|---|---|
| זמן עד השקה | 3+ חודשים | 1–2 שבועות |
| עלות פיתוח | גבוהה (צוות של 2–3) | נמוכה (מנוי + אינטגרציה) |
| תמיכה וסקייל | דורש DevOps | אוטומטי |
| אבטחה | מוגדרת ידנית | מובנית (SOC 2, ISO 27001) |
| עלות שרת חודשית עבור 10k DAU | ~$5,000 | ~$300–$500 |
אינטגרציית PlayFab שלב אחר שלב
שלב 1: אתחול SDK ואימות
AddDailyReward שלב 2: הגדרת מטבעות וירטואליים ו-Cloud Script
PlayFab תומך בעד 10 מטבעות לכל Title. אנו מגדירים AddDailyReward (זהב), using PlayFab; using PlayFab.ClientModels; public class PlayFabManager : MonoBehaviour { public static PlayFabManager Instance { get; private set; } public string PlayFabId { get; private set; } void Awake() { PlayFabSettings.staticSettings.TitleId = "YOUR_TITLE_ID"; } // Анонимная авторизация через Device ID public void LoginAnonymous(Action onSuccess, Action<string> onError) { #if UNITY_IOS PlayFabClientAPI.LoginWithIOSDeviceID(new LoginWithIOSDeviceIDRequest { DeviceId = SystemInfo.deviceUniqueIdentifier, CreateAccount = true, InfoRequestParameters = new GetPlayerCombinedInfoRequestParams { GetPlayerProfile = true, GetUserInventory = true, GetUserVirtualCurrency = true } }, result => { PlayFabId = result.PlayFabId; ApplyPlayerData(result.InfoResultPayload); onSuccess?.Invoke(); }, error => onError?.Invoke(error.GenerateErrorReport())); #elif UNITY_ANDROID PlayFabClientAPI.LoginWithAndroidDeviceID(new LoginWithAndroidDeviceIDRequest { AndroidDeviceId = SystemInfo.deviceUniqueIdentifier, CreateAccount = true, InfoRequestParameters = new GetPlayerCombinedInfoRequestParams { GetPlayerProfile = true, GetUserInventory = true, GetUserVirtualCurrency = true } }, result => { PlayFabId = result.PlayFabId; ApplyPlayerData(result.InfoResultPayload); onSuccess?.Invoke(); }, error => onError?.Invoke(error.GenerateErrorReport())); #endif } } (יהלומים), GO (אנרגיה). טעינת מטבעות מתבצעת רק דרך Cloud Script:
using PlayFab;
using PlayFab.ClientModels;
public class PlayFabManager : MonoBehaviour
{
public static PlayFabManager Instance { get; private set; }
public string PlayFabId { get; private set; }
void Awake()
{
PlayFabSettings.staticSettings.TitleId = "YOUR_TITLE_ID";
}
// Анонимная авторизация через Device ID
public void LoginAnonymous(Action onSuccess, Action<string> onError)
{
#if UNITY_IOS
PlayFabClientAPI.LoginWithIOSDeviceID(new LoginWithIOSDeviceIDRequest
{
DeviceId = SystemInfo.deviceUniqueIdentifier,
CreateAccount = true,
InfoRequestParameters = new GetPlayerCombinedInfoRequestParams
{
GetPlayerProfile = true,
GetUserInventory = true,
GetUserVirtualCurrency = true
}
},
result =>
{
PlayFabId = result.PlayFabId;
ApplyPlayerData(result.InfoResultPayload);
onSuccess?.Invoke();
},
error => onError?.Invoke(error.GenerateErrorReport()));
#elif UNITY_ANDROID
PlayFabClientAPI.LoginWithAndroidDeviceID(new LoginWithAndroidDeviceIDRequest
{
AndroidDeviceId = SystemInfo.deviceUniqueIdentifier,
CreateAccount = true,
InfoRequestParameters = new GetPlayerCombinedInfoRequestParams
{
GetPlayerProfile = true,
GetUserInventory = true,
GetUserVirtualCurrency = true
}
},
result =>
{
PlayFabId = result.PlayFabId;
ApplyPlayerData(result.InfoResultPayload);
onSuccess?.Invoke();
},
error => onError?.Invoke(error.GenerateErrorReport()));
#endif
}
}רכישת פריט היא אטומית: PlayFab מנכה את המטבע ומוסיף את הפריט למלאי בקריאת שרת אחת, ומונע כפילויות או הונאה.
שלב 3: Title Data וקאשינג
Player Data מאחסן מידע לכל שחקן (התקדמות, הגדרות). Title Data מחזיק תצורות גלובליות (טבלאות איזון, לוחות זמנים לאירועים). אנו מאחסנים Title Data בקאש כדי להפחית קריאות רשת:
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest
{
FunctionName = "AddDailyReward",
FunctionParameter = new { rewardType = "daily_login" }
}, result =>
{
var newBalance = JsonUtility.FromJson<CurrencyResult>(result.FunctionResult.ToString());
CurrencyManager.Instance.UpdateBalance(newBalance);
}, error => { });אחסון Title Data בקאש בצד הלקוח ורענון כל 5 דקות מפחית קריאות API ב-90%.
מה כלול ביישום PlayFab?
| רכיב | פרטים |
|---|---|
| הגדרת Title ב-PlayFab | מטבעות, קטלוג, Title Data, מדיניות אימות |
| אינטגרציית SDK | Unity / iOS / Android, אימות (Device ID, Email, Google Play / Game Center) |
| Player Data | שמירה/טעינת התקדמות, סנכרון בין מכשירים |
| מלאי וחנות | מטבעות וירטואליים, רכישות דרך StoreKit 2 / Billing 6 |
| Cloud Script | תגמולים, משימות, יצירה, אימות רכישות |
| לוחות תוצאות וסטטיסטיקות | טבלאות ניקוד, צבירת מדדים |
| הודעות Push | APNs / FCM דרך PlayFab |
| התאמת שחקנים | חדרי מרובי משתתפים (אופציונלי) |
כמה זמן לוקחת אינטגרציית PlayFab?
יישום בסיסי (אימות + מלאי + לוחות תוצאות): 5–7 ימים. צד שרת מלא למשחק (משימות, יצירה, חנות, התאמת שחקנים): 3–6 שבועות. העלות מחושבת באופן אישי לפי מורכבות הארכיטקטורה. קבלו ייעוץ לאינטגרציית PlayFab — צרו קשר להערכת פרויקט חינמית.
מבוסס על תיעוד PlayFab הרשמי.







