במאמר הזה מופיעות תשובות לשאלות נפוצות בנושא ערכות SDK ופרסום ב-Google Play Games במחשב.
איך מוסיפים VPN?
למפתחים שרוצים לבדוק את המשחק שלהם באזורים שבהם Google Play Games במחשב לא נתמך, מומלץ להשתמש ב-VPN כדי לקבל כתובת IP מאזור נתמך.
מוודאים שהפעלתם מצב TUN ב-VPN. הוראות להפעלת מצב TUN ולהגדרת חומת האש מופיעות במדריך למשתמש של ספק ה-VPN.
אחרי שמפעילים את מצב TUN, מתקינים את Google Play Games במחשב ואת האמולטור למטרות בדיקה.
האם אפשר להשתמש בתהליך הרכישה בלי שרת קצה עורפי?
מנקודת מבט של אבטחה, בדרך כלל לא מומלץ לבצע עיבוד ללא שרת עורפי.
מידע נוסף זמין במאמר בנושא תהליך ללא שרת קצה עורפי.
איך מתחילים לפתח משחקים ל-Google Play Games במחשב ב-Unity או ב-UE Editor?
- מפעילים את מצב הפיתוח וממשיכים בבדיקה.
- מוסיפים את הקבצים
manifest.xmlו-.dll. מידע נוסף מופיע במסמכי התיעוד למפתחים. - לרשום מזהה GUID של שותף עם גישה מוקדמת למטרות בדיקה.
כשמתחילים משחק באמצעות אפליקציית Google Play Games, האם פרטי חשבון Google מסונכרנים
אחרי שמפעילים את המשחק דרך לקוח Google Play Games, החשבון מסתנכרן באופן אוטומטי ואין צורך להיכנס שוב דרך תהליך הכניסה לחשבון Google.
כששולחים Windows App Bundle (WAB) באמצעות מפעיל של צד שלישי, האם חבילת המשחק נדרשת לבדיקה?
אתם יכולים לשלוח רק את קובץ ההתקנה, ולא את חבילת המשחק כולה. הבודק יוכל להוריד את חבילת המשחק באמצעות קובץ ההתקנה.
אם שחקן משתמש ב-3P launcher במקום בלקוח Google Play, האם החשבון שלו ב-Play Games Services יסונכרן אוטומטית?
כדי שהפונקציות של ה-SDK יפעלו, צריך להפעיל את המשחק ישירות דרך לקוח Google Play Games. אם תהליך אחר, כמו תוכנת התקנה או אפליקציית הפעלה, מפעיל את המשחק, התהליך הזה חייב להיות מופעל מלקוח Google Play Games. המשחק צריך להעביר את כל הפרמטרים שהתקבלו מהלקוח לתהליך הלקוח.
איך ה-SDK מטפל בכניסה לחשבון Google עבור כמה מקרים או חשבונות?
כל הפעלה של משחק ב-Google Play Games נחשבת כ "סשן משחק", ולכל "סשן משחק" יכול להיות חשבון שמשויך אליו. יכול להיות שהם יהיו שונים. לכן, אם מפעילים את המשחק עם חשבון א', ואז עוברים לחשבון ב' ומפעילים מחדש את המשחק, שני החשבונות יכולים לפעול בו-זמנית.
האם יש מגבלות על גודל הקובץ של WAB (Windows App Bundle)?
אפשר להעלות קובץ WAB בגודל של עד 10GB.
האם מותר להשתמש במערכות תשלום קיימות שמבוססות על API אחרי שמשלבים את Google Play Games SDK במחשב?
כל התשלומים צריכים להתבצע באמצעות חיוב ב-Google Play דרך ה-SDK של Google Play Games במחשב. אי אפשר להשתמש באמצעי התשלום הקיים שמבוסס על API באותו משחק.
האם יש סביבות בדיקה פתוחות או סגורות שדומות לנייד?
נכון לעכשיו, אין ארגז חול ייעודי מקצה לקצה, אבל אנחנו מבינים שמפתחים צריכים סביבת בדיקה שדומה לסביבת הייצור. בקרוב נציע פתרון חזק יותר.
אנחנו לא יכולים לעבד בצורה תקינה רכישות שהתחילו במצב פיתוח?
צריך לבצע את צריכת הרכישה במצב פיתוח תוך 3 דקות, אחרת יכול להיות שהרכישה תוחזר.
האם יש הבדלים בין API (גרסה קודמת) לבין Google Play Games במחשב SDK?
- הגרסה הקודמת התמקדה רק בחיוב
- ערכת ה-SDK תתמוך בשירות Google Desktop (GDS) ובתכונות מלאות של מחשב
- ממשק SDK ידידותי למפתחים
- לא נדרשת כניסה לחשבון Google בדפדפן
האם יש דרך חלופית לאתחל את ה-SDK על ידי הפעלת המשחק ישירות באמצעות מרכז המשחקים, בלי לעבור דרך Google Play Games במחשב?
צריך להפעיל את המשחק דרך לקוח Google Play Games במחשב. פרטים נוספים מופיעים במסמכי התיעוד למפתחים
אין תמיכה במינויים או בתשלומים חוזרים. יש תוכניות להטמיע את האפשרות הזו?
אין לנו תוכניות להוסיף את אפשרויות הרכישה האלה מעבר לרכישה באפליקציה, אבל נשמח לקבל ממך משוב עם תרחישי שימוש ספציפיים.
האם הערך billingerror מגיע מהתחלה של תהליך רכישה או מתוצאת התשלום?
זו התגובה של תוצאת התשלום. הפונקציה LaunchPurchaseFlow תחזיר ערך באופן מיידי בלי לחסום, אבל צריך להאזין לקריאה החוזרת כדי לדעת מתי היא הסתיימה ולתעד את התוצאה.
יש דרך ליצור קיצור דרך לפתיחת המשחק ישירות?
כדי לפתוח את המשחק ישירות, אפשר להשתמש ב-URI הבא:
googleplaygames://launch/?pid=2&id=com.company.gamename
ה-URI תומך בזיהוי אם לקוח Google Play Games במחשב פתוח. אם הלקוח לא פתוח, לקוח Google Play Games ייפתח לפני שהמשחק או מרכז האפליקציות יפעלו. צריך לנהל את המשחק או את מרכז ההפעלה כדי למנוע הפעלה של כמה מופעים.
QueryProductDetails מגבלות על בקשות API
המספר המקסימלי של מוצרים שאפשר לשלוח לגביהם שאילתה בקריאה אחת ל-API של
QueryProductDetails
הוא 50. אם חורגים מהמגבלה הזו, צריך לפצל את הבקשה לכמה קריאות.
למה המשחק שלי לא מותקן או לא מופיע אחרי שהעליתי את קובץ ה-App Bundle הראשון שלי ל-Windows (WAB)?
אם המשחק שלכם מצורף ל-WAB בלי גרסה קיימת למחשב ('WAB בפעם הראשונה'), יכול להיות שהמערכת תעביר אותו באופן אוטומטי למצב המתנה של פרסום מנוהל. זה קורה כי אין בסיס קיים לעדכון. כדי להשיק את ה-WAB באופן מלא ולאפשר התקנה של המשחק, צריך לעבור אל Google Play Console ולהפעיל באופן ידני את פעולת הפרסום הנדרשת (לדוגמה, ללחוץ על 'פרסום שינויים').
איך מתבצעת האתחול אם Google Play Games מפעיל מרכז אפליקציות של משחקים של צד שלישי?
אין חובה לשלב את ה-SDK ישירות במרכז האפליקציות. עם זאת,
עליכם להעביר את כל הארגומנטים של שורת הפקודה שמתקבלים מה-launcher מלקוח Google Play Games ישירות לתהליך הצאצא שנוצר (קובץ ההפעלה של המשחק). אם האתחול נכשל (לדוגמה, אם מוחזרת השגיאה
kActionRequiredShutdownClientProcess), צריך להפסיק את כל התהליכים, כולל את תהליך ההפעלה, כדי ש-Google Play Games יוכל לנסות לשחזר ולהפעיל מחדש את המשחק באופן אוטומטי. פרטים נוספים מופיעים בשלב 5 במדריך ההגדרה.
האם שגיאת זמן קצוב לתפוגה צפויה אם משתמש סוגר את הדפדפן בלי לשלם במהלך תהליך רכישה?
כן, זו בעיה ידועה והתנהגות מכוונת בתהליך הנוכחי שמבוסס על דפדפן. Google פועלת באופן פעיל כדי ליצור תכונה לרכישה חלקה (מבוססת WebView) שתאפשר לבצע את תהליך התשלום בתוך המשחק ותפתור את הבעיה של זמן קצוב לתפוגה.
האם ה-SDK המקורי למחשב תומך בתווים מרובי-בייט בקובץ האישור (PEM)?
כן, ערכת ה-SDK תומכת בתווים מרובי-בייט לצורך אישור.
אילו פרמטרים נדרשים כשמתקשרים אל BillingClient::QueryPurchases או אל BillingClient::LaunchPurchaseFlow?
הפונקציה מקבלת את QueryPurchasesContinuation, שהיא פונקציית קריאה חוזרת עם החתימה std::function<void(QueryPurchasesResult)>. הקריאה החוזרת מעבירה לכם את התוצאה עם כל ה-ProductPurchaseDetails. המידע הזה זמין בקובצי הכותרת של ה-SDK בקובץ includes/billing/models.h.
הפונקציות ok() ו-code() מופיעות ב-launch_purchase_flow_result שמתקבל.
הפונקציה ok() מחזירה את התוצאה של התהליך. הפונקציה code() מחזירה את הערך BillingError enum (includes/billing/enums.h), שיש לו 10 מקרים אפשריים של שגיאות, כמו ביטול על ידי המשתמש או שגיאת רשת.
האם אפשר להעביר מספר הזמנה מותאם אישית כשמתקשרים אל BillingClient::LaunchPurchaseFlow()?
במבנה הנוכחי של ה-SDK, אין אפשרות להעביר מטען ייעודי משלך.
עם זאת, אפשר לספק כל שילוב של obfuscated_account_id ושל obfuscated_profile_id. אתם יכולים לא לציין אף אחת מהאפשרויות, לציין רק אחת מהן או לציין את שתיהן.
השדה offer_token הוא שדה חובה, והוא מציין את מבצע הרכישה שהמשתמש מנסה לרכוש בתהליך התשלום. בשלב הזה, לכל מק"ט ב-Google Play יש בדיוק מבצע אחד (לדוגמה, קונים פריט אחד ב-10$). בעתיד, צוות החיוב ב-Play יספק תמיכה בכמה מבצעים.
כדי לוודא שהמטא-נתונים ישויכו במקרה של שיבושים בתהליך הרכישה, צריך לאחסן את המטא-נתונים בשרת הבק-אנד לפני שמפעילים את תיבת הדו-שיח של הרכישה, ולשייך אותם למזהה החשבון של המשתמש, למק"ט שנרכש ולחותמת הזמן הנוכחית. מידע נוסף זמין במאמר בנושא שיוך רכישה לנתונים פנימיים.
האם השילוב של Play Install Referrer פועל?
הגרסה העדכנית של ה-SDK (25.5.409.0 ואילך) תומכת ב-Play Install Referrer API. מידע נוסף זמין במאמר בנושא Play Install Referrer API.
האם משתמש צריך להיכנס בנפרד לכל משחק כדי לבצע רכישה?
החשבון הפעיל ב-Google Play Games משמש לכל סשן משחק, כך שלא צריך להיכנס שוב. החשבון שבו אתם משתמשים ב-Google Play Games כשמתחילים לשחק הוא החשבון שממנו מתבצעות קריאות ל-API. כשמפעילים תהליך רכישה בדפדפן, צריך להיות מחוברים לחשבון שבו משתמשים בסשן המשחק. אם המשתמש מחובר לחשבון אחר, בתהליך האימות בדפדפן הוא יתבקש לעבור לחשבון אחר.
מהן הדרישות המוקדמות למעבר מחיוב דרך Google עם OAuth לחיוב דרך Google עם DLL?
המשחקים יכולים להמשיך להשתמש בכניסה באמצעות OAuth עם Google כדי לנהל את החשבון שאליו נכנסתם, אבל Google ממליצה להפסיק להשתמש בממשקי ה-API לחיוב מסוג REST מדור קודם. המעבר מממשקי ה-API לחיוב מסוג REST (עם כניסה באמצעות OAuth2) לתהליך של ה-SDK יכול להיות פעולה עם דגל תכונה, כך ששניהם יכולים להתקיים יחד למשך תקופה מסוימת בזמן שהמשחק עובר לממשקי ה-API החדשים.
האם בקשת התשלום API (LaunchPurchaseFlow) מעובדת דרך דפדפן אינטרנט?
כן, בשלב הזה העיבוד מתבצע דרך דפדפן. Google מתכננת להשלים את כל התהליך בלי לצאת מהמשחק, באמצעות ה-SDK.
האם אפשר לעשות שימוש חוזר בפרמטרים של ההפעלה כמה פעמים?
הפעולה הזו אפשרית כל עוד לקוח Google Play Games פועל ופרטי הכניסה תקפים. עם זאת, בתרחישים כמו זה שמתואר במדריך, כל התהליכים שהופעלו על ידי המשחק חייבים להסתיים כשהמשתמש סוגר את המשחק או כשהמשחק יוצא בגלל כשל בהפעלת ה-SDK, כמו kActionRequiredShutdownClientProcess.
האם אפשר להשתמש במפתחות רישום ב-HKEY_CURRENT_USER במקום ב-HKEY_LOCAL_MACHINE?
צריך ליצור מפתחות רישום על סמך כוורת הבסיס. אפשר להגדיר את hive הבסיסי כ-HKEY_LOCAL_MACHINE או כ-HKEY_CURRENT_USER בהתאם למטרה ולסוג הנתונים. הכוונה לHKEY_LOCAL_MACHINE hive שמשמש כדוגמה בהנחיות.
האם משחק יכול לתמוך בו-זמנית בערכת SDK מקורית ובמערכות תשלום מדור קודם?
מערכת התשלומים פועלת לפי מודל של זרימה כפולה, בהתאם לגרסה הבינארית של המשחק. משתמשים בגרסאות קודמות ממשיכים בתהליך הקיים, ומשתמשים בגרסאות חדשות עוברים לתשלומים שמבוססים על SDK. משתמשים בשני תהליכי התשלום יפעלו במקביל במהלך תקופת המעבר.
איך מעלים את ה-WAB לבדיקה פנימית?
משתפים עם Google את החשבונות ברשימת ההיתרים כדי ש-Google תוכל להפעיל אותם לבדיקות פנימיות. אחרי ש-Google מקבלת את הרשימה, היא מוודאת שהמשתמשים האלה נכללים בתהליך ההצטרפות.
איפה מוסיפים בודקים חדשים?
איש הקשר שלכם ב-Google יוצר קבוצת אימייל לכל פרויקט של PC, וצריך להוסיף אליה את חשבונות Google של הבודקים. רק חברים בקבוצת האימייל הזו מורשים להוריד את חבילות הבדיקה ב-Google Play Games.
לאן צריך להעלות את חבילת המחשב הרשמית לפני ההשקה הרשמית?
אפשר להעלות את חבילת ה-WAB למיקום שמוזכר בשאלה הראשונה. עם זאת, אי אפשר לפרסם אותו באופן ידני. עליכם לספק לצוות ה-backend של Google שעת UTC מדויקת (עד לרמת השעה). Google מגדירה את לוח הזמנים לפרסום ומוודאת שהספר יפורסם בזמן.
איך אתם מטפלים בשדרוגים ובתחזוקה אחרי ההשקה הרשמית?
שדרוגים ותחזוקה עתידיים צריכים להתבצע דרך מרכז האפליקציות. לקוח Google Play Games לא תומך בפונקציות עדכון, ולכן המשגר צריך להיות מסוגל לעדכן גם את המשחק וגם את עצמו.
מהן הדרישות לבדיקת חבילות למחשב על ידי Google?
חבילות למחשב עוברות סריקה לזיהוי תוכנות זדוניות, ולאחר מכן בודקים רק את תהליכי ההתקנה, ההפעלה וההסרה של המשחק.
האם צריך לשלב את כל ממשקי ה-API?
לא נדרשים ממשקי API אחרים, אבל הם מציעים יתרונות נוספים.
google::play::billing נדרש לרכישות מתוך האפליקציה ולמכירת תוכן דיגיטלי. ההרשאה google::play::games::recall נדרשת למעקב אחרי נתוני הפניות כדי להבין אילו מקורות תנועה שולחים הכי הרבה משתמשים להורדת האפליקציה. ההרשאה google::play::games::integrity נדרשת כדי להגן על האפליקציה מפני גורמים זדוניים באמצעות זיהוי של מכשירים שעלולים להיות מסוכנים ואמולטורים לא מוכרים.
למה חלק מתהליכי המשחק מסתיימים כשסוגרים את לקוח Google Play Games, ואחרים לא?
Google לא שולטת בתהליכי המשנה או בתהליכים של המשחק שפועל. ההתנהגות תלויה בשאלה אם המשחק הוא משחק שמופעל באמצעות אמולטור של Android או משחק מקורי למחשב. משחקים שמופעלים באמצעות אמולטור מותקנים בסביבה משלהם, ולכן ההתנהגות שלהם תלויה במידה רבה בהפעלה ובהשבתה של האמולטור.
האם כדאי להשתמש ביכולת ההסרה של Google Play Games או בכלי הסרה בהתאמה אישית?
Google ממליצה להשתמש ביכולת ההסרה של Google Play Games.