गेम के आंकड़े, आपके गेम के कुल आंकड़े होते हैं. इन्हें खिलाड़ी अपनी गेमर प्रोफ़ाइल पर देख सकते हैं. इन आंकड़ों से खिलाड़ियों को, गेम में अब तक की अपनी प्रोग्रेस को ट्रैक करने, हाइलाइट किए गए पलों को देखने, और अन्य खिलाड़ियों से तुलना करने में मदद मिलती है. साथ ही, ये आंकड़े Google Play की सुविधाओं को बेहतर बनाने में मदद करते हैं. जैसे, आने वाले समय में क्वेस्ट, सोशल चैलेंज वगैरह.
इंटिग्रेशन का तरीका
गेम के आंकड़ों के एपीआई का इस्तेमाल करके, खिलाड़ी के इवेंट के तौर पर डेटा भेजें. इससे बार-बार दिखने वाले आंकड़ों और प्रोग्रेशन के आंकड़ों के लिए पहले से तय किए गए इवेंट progressUpdate को भेजा जा सकता है. आपको गेमर प्रोफ़ाइल पर दिखने वाले आंकड़ों और उनके डिसप्ले की जानकारी को कैलकुलेट करने के लिए लॉजिक भी कॉन्फ़िगर करना होगा.
खिलाड़ी के इवेंट, गेम में होने वाले अलग-अलग इवेंट, गेम लूप पूरे होने या प्रोग्रेशन से जुड़ी उपलब्धियों को दिखाते हैं.
किसी प्लेयर इवेंट को इस तरह से तय और मॉडल किया जाता है:
- इवेंट, खिलाड़ी की किसी खास कार्रवाई को दिखाता है. जैसे, मैच पूरा करना, रन पूरा करना, चेस्ट अनलॉक करना या किसी इलाके में प्रोग्रेस सेव करना.
- हर कार्रवाई के कुछ नतीजे होते हैं या उनमें कुछ खास बातें होती हैं. इन्हें इवेंट प्रॉपर्टी के तौर पर मॉडल किया जाता है. इनसे इवेंट और उसके खास नतीजों के बारे में जानकारी मिलती है. उदाहरण के लिए, मैच टाइप, उस रन के दौरान इकट्ठा किए गए सिक्के, मैच का नतीजा या हेडशॉट की संख्या.
इंटिग्रेशन में ये चरण शामिल हैं:
- रॉ डेटा स्कीमा का एलान करें: Play Console में CSV फ़ाइल अपलोड करके, प्लेयर इवेंट तय करें. CSV फ़ाइल के दिशा-निर्देश देखें.
- Game Stats API के साथ इंटिग्रेट करें: खिलाड़ी के रॉ डेटा को, बताए गए फ़ॉर्मैट में भेजें. इससे, खिलाड़ी के इवेंट और
progressUpdateइवेंट को आसानी से मैनेज किया जा सकेगा.- क्लाइंट साइड या सर्वर साइड इंटिग्रेशन का इस्तेमाल करके, तय किए गए सभी इवेंट भेजें.
ज़्यादा जानकारी के लिए, लचीले इवेंट और
progressUpdateइवेंट के उदाहरण देखें.
- क्लाइंट साइड या सर्वर साइड इंटिग्रेशन का इस्तेमाल करके, तय किए गए सभी इवेंट भेजें.
ज़्यादा जानकारी के लिए, लचीले इवेंट और
- ZIP फ़ाइल अपलोड करें: तीन CSV फ़ाइलें और सभी आइकॉन इमेज फ़ाइलें उपलब्ध कराएं. इनमें पांच बार-बार दिखने वाले आंकड़े और खिलाड़ी की प्रोग्रेशन लेवल की जानकारी होनी चाहिए.
ज़्यादा जानकारी के लिए, ZIP फ़ाइल से जुड़े दिशा-निर्देश देखें.
यह जानकारी शामिल करें:
- बार-बार दिखने वाले आंकड़ों के लिए CSV फ़ाइल:
- यह आंकड़े का यूनीक आईडी होता है.
- आंकड़े की गिनती के लिए इस्तेमाल किया जाने वाला इवेंट लेबल तय करें. यहां
progressUpdateइवेंट लेबल का इस्तेमाल नहीं किया जा सकता.- आंकड़े की गिनती के लिए इस्तेमाल किए जाने वाले प्रॉपर्टी लेबल की जानकारी दें. यह तय किए गए इवेंट की प्रॉपर्टी होनी चाहिए.
- चुनी गई प्रॉपर्टी के लेबल पर आंकड़े कैलकुलेट करने का तरीका तय करने के लिए, एग्रीगेशन टाइप (SUM, MAX, MIN या COUNT) तय करें.
- शर्त पूरी होने पर ही लॉजिक की गणना करने के लिए, फ़िल्टर करने की कोई वैकल्पिक शर्त तय करें. प्रॉपर्टी और इवेंट लेबल, ऑपरेटर (=, < या >) और थ्रेशोल्ड वैल्यू तय करें.
- बूलियन फ़्लैग शामिल करें, ताकि यह पता चल सके कि इस आंकड़े का इस्तेमाल, प्रतिस्पर्धी सुविधाओं के लिए किया जा सकता है या नहीं.
- अगर इस सुविधा का इस्तेमाल, प्रतिस्पर्धी सुविधाओं के लिए किया जा सकता है, तो असली प्लेयर के लिए हर घंटे इस्तेमाल करने की कम से कम और ज़्यादा से ज़्यादा सीमाएं. इसका इस्तेमाल हम उन खिलाड़ियों की पहचान करने के लिए करेंगे जो लीग और सोशल चैलेंज जैसी सुविधाओं में हिस्सा लेते समय, इनका गलत इस्तेमाल कर सकते हैं.
- उस आंकड़े के लिए कोई यूनीक डिसप्ले नेम डालें जो खिलाड़ियों को दिखेगा.
- आंकड़े के बारे में खास जानकारी देने वाला टेक्स्ट डालें. इस जानकारी से यह पता चलना चाहिए कि खिलाड़ी को यह उपलब्धि कैसे मिली.
- CSV फ़ाइल में आइकॉन का सही नाम डालकर, आंकड़े को दिखाने वाला यूनीक आइकॉन उपलब्ध कराएं.
- सीक्वेंस का क्रम तय करें, ताकि यह तय किया जा सके कि किसी खिलाड़ी को उसकी गेमर प्रोफ़ाइल में आंकड़े किस क्रम में दिखेंगे
- वैकल्पिक इनपुट दें. इससे यह पता चलेगा कि खिलाड़ी के लिए वैल्यू बढ़ाना या घटाना बेहतर है. इस इनपुट का इस्तेमाल, खिलाड़ी की गतिविधियों को हाइलाइट करने के लिए किया जाएगा.
- आंकड़े के लिए, मेज़रमेंट की कोई वैकल्पिक इकाई दें. जैसे, किलोमीटर, मील, और सेकंड.
- खिलाड़ी की प्रोग्रेशन से जुड़ी जानकारी वाली CSV फ़ाइल:
- प्लेयर की प्रोग्रेस के लिए, कोई यूनीक डिसप्ले नेम डालें. यह नाम खिलाड़ियों को दिखेगा.
- आंकड़े को दिखाने वाला कोई यूनीक आइकॉन दें.
- प्रोग्रेशन स्टैट के बारे में जानकारी दें.
- यह जानकारी दें कि खिलाड़ी के लिए, बढ़ती हुई वैल्यू या घटती हुई वैल्यू में से कौनसी वैल्यू बेहतर है. हालांकि, यह जानकारी देना ज़रूरी नहीं है. इस इनपुट का इस्तेमाल, सिर्फ़ तब प्लेयर की गतिविधियों को हाइलाइट करने के लिए किया जाएगा, जब
currentProgressप्रॉपर्टी का टाइप INT हो. - आंकड़े के लिए, मेज़रमेंट की कोई वैकल्पिक इकाई दें. जैसे, किलोमीटर, मील, सेकंड.
- स्थानीय भाषा में अनुवाद की गई CSV फ़ाइल: सभी आंकड़ों के लिए, स्थानीय भाषा में अनुवाद किए गए डिसप्ले नेम दें.
- हर स्थानीय भाषा के लिए एक लाइन जोड़ें.
- पिछले CSV में जोड़े गए आंकड़ों के डिसप्ले नेम स्ट्रिंग का इस्तेमाल करें, ताकि उस आंकड़े की पहचान की जा सके जिसके लिए स्थानीय भाषा में अनुवाद जोड़ा जा रहा है.
- भाषा कोड की सूची से भाषा चुनें.
- चुनी गई भाषा में डिसप्ले नेम के लिए स्थानीय भाषा में अनुवाद जोड़ें.
- तय की गई भाषा में, आंकड़े के ब्यौरे के लिए स्थानीय भाषा जोड़ें.
- बार-बार दिखने वाले आंकड़ों के लिए CSV फ़ाइल:
इवेंट के लिए CSV फ़ाइल से जुड़े दिशा-निर्देश
PlayerGameEvent.csv फ़ाइल का इस्तेमाल करके, इवेंट इंपोर्ट किए जा सकते हैं.
| फ़ाइल का नाम | ज़रूरी है या ज़रूरी नहीं है |
| PlayerGameEvent.csv | ज़रूरी है |
PlayerGameEvent.csv फ़ॉर्मैट
इस CSV फ़ाइल में, इवेंट और उसकी प्रॉपर्टी को कॉमा लगाकर अलग की गई वैल्यू के तौर पर, इस क्रम में शामिल किया जाता है:
Event Name,Property Name,Property Type
अगर आपने progressUpdate इवेंट के लिए progressionStat भेजा है, तो इस इवेंट के लिए एक लाइन जोड़ें. इस इवेंट में कम से कम एक currentProgress प्रॉपर्टी होनी चाहिए, जिसका टाइप INT या STRING हो. साथ ही, इसमें वे सभी प्रॉपर्टी होनी चाहिए जिन्हें आपको भेजना है.
उदाहरण के लिए टेबल
| इवेंट का नाम | प्रॉपर्टी का नाम | प्रॉपर्टी किस तरह की है |
|---|---|---|
| matchCompleted | कुल समय | DOUBLE |
| matchCompleted | किल | INT |
| matchCompleted | isWinner | बूलियन |
| matchCompleted | matchType | STRING (UTF-8) |
| itemCollected | coinsAmount | INT |
| itemCollected | weaponType | STRING (UTF-8) |
| progressUpdate | currentProgress | INT |
आंकड़ों के लिए ZIP फ़ाइल से जुड़े दिशा-निर्देश
ZIP फ़ाइल का इस्तेमाल करके, एक बार में आंकड़े इंपोर्ट किए जा सकते हैं. अपनी ZIP फ़ाइल में इस्तेमाल करने के लिए, फ़ाइल के सटीक नामों की टेबल देखें:
| फ़ाइल का नाम | ज़रूरी या वैकल्पिक | स्वीकार की जाने वाली वैल्यू |
|---|---|---|
RepetitiveStatsConfig.csv
|
ज़रूरी है | कई इवेंट के लिए मेटाडेटा. |
ProgressionStatConfig.csv
|
ज़रूरी है | डिक्लेयर किया गया इवेंट और उसकी प्रॉपर्टी. |
StatLocalizations.csv
|
वैकल्पिक | उपलब्धियों के नाम और ब्यौरे के अनुवाद उपलब्ध कराता है. |
| आइकॉन वाली फ़ाइलें | ज़रूरी है | 512 x 512 पिक्सल वाले PNG, JPEG या JPG फ़ॉर्मैट में आइकॉन. |
RepetitiveStatsConfig.csv फ़ॉर्मैट
इस CSV फ़ाइल में, इवेंट और उसकी प्रॉपर्टी को कॉमा लगाकर अलग की गई वैल्यू के तौर पर, इस क्रम में शामिल किया जाता है:
Stat ID, Event Name, Property Name, Aggregation, Stat Display Name, Stat Description, Filter Property, Filter Operator, Filter Value, Is Competitive, minLimit, maxLimit, Icon File Name, Sequence Number, Good value direction, unit
अगर आपको फ़िल्टर की शर्त का इस्तेमाल नहीं करना है, तो सेल को खाली छोड़ दें.
उदाहरण के लिए टेबल
| आंकड़ों का आईडी | इवेंट का नाम | प्रॉपर्टी का नाम | एक साथ दिखाना | आंकड़े का डिसप्ले नेम | स्टैट की जानकारी | फ़िल्टर प्रॉपर्टी (ज़रूरी नहीं) | फ़िल्टर ऑपरेटर (ज़रूरी नहीं) | फ़िल्टर वैल्यू (ज़रूरी नहीं) | Is Competitive | minLimit | maxLimit | आइकॉन फ़ाइल नाम | अनुक्रम संख्या | अच्छी वैल्यू का रुझान | इकाई |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | matchCompleted | कुल समय | ज़्यादा से ज़्यादा | लंबे समय तक चलने वाले मैच में सर्वाइव करना | इससे पता चलता है कि कोई खिलाड़ी किसी मैच में कितने समय तक ज़िंदा रहा | isWinner | = | सही | सही | 0 | 50 | stat1.png | 1 | घट रहे हैं | सेकंड |
| 2 | matchCompleted | isWinner | COUNT | जीते गए मैच | इससे पता चलता है कि किसी खिलाड़ी ने कितने मैच जीते हैं | isWinner | = | सही | सही | 0 | 50 | stat3.png | 2 | बढ़ रहे हैं | |
| 3 | matchCompleted | किल | SUM | एक-दूसरे के ख़िलाफ़ मैच में किल | एक-दूसरे के ख़िलाफ़ खेले गए मैचों में किए गए किल्स की संख्या | matchType | = | "1-on-1" | FALSE | stat4.png | 4 | बढ़ रहे हैं | |||
| 4 | itemCollected | coinsAmount | SUM | इकट्ठा किया गया कुल सोना | मैच में खेलते समय सिक्के इकट्ठा करता खिलाड़ी | weaponType | = | "तलवार" | FALSE | stat2.png | 3 | बढ़ रहे हैं |
ProgressionStatConfig.csv फ़ॉर्मैट
इस CSV फ़ाइल में, इवेंट और उसकी प्रॉपर्टी को कॉमा लगाकर अलग की गई वैल्यू के तौर पर, इस क्रम में शामिल किया जाता है:
Stat ID, Stat Display Name, Stat Description, Icon File Name, Good value direction, unit
प्रोग्रेशन के आंकड़े, किसी खिलाड़ी को उसकी गेमर प्रोफ़ाइल में सबसे पहले दिखेंगे.
उदाहरण के लिए टेबल
| स्टेट आईडी | आंकड़े का डिसप्ले नेम | आंकड़े की जानकारी | आइकॉन फ़ाइल का नाम | अच्छी वैल्यू डायरेक्शन |
| 5 | लेवल | खिलाड़ी, मैच खेलकर XP इकट्ठा करते हैं और लेवल बढ़ाते हैं. | Level.png | बढ़ रहा है |
StatLocalizations.csv फ़ॉर्मैट
इस CSV फ़ाइल में, इवेंट और उसकी प्रॉपर्टी को कॉमा लगाकर अलग की गई वैल्यू के तौर पर, इस क्रम में शामिल किया जाता है:
Stat ID, Stat Display Name, Language Code, Localized Stat Name, Localized Stat Description
उदाहरण के लिए टेबल
| स्टेट आईडी | आंकड़े का डिसप्ले नेम | भाषा कोड | स्थानीय भाषा में आंकड़े का नाम (UTF-8) | स्थानीय भाषा में आंकड़ों का ब्यौरा (UTF-8) | 1 | लंबे समय तक चलने वाले मैच में सर्वाइव करना | es | Supervivencia más larga en partidos | Esto denota el tiempo de supervivencia de una jugadora en cualquier partido. | 1 | लंबे समय तक चलने वाले मैच में सर्वाइव करना | fr | Survie du match le plus long | Cela indique la durée de survie d'un joueur dans n'importe quel match. | 4 | इकट्ठा किया गया कुल सोना | es | Oro total recolectado | La jugadora recoge monedas mientras juega en un partido | 4 | इकट्ठा किया गया कुल सोना | fr | या कुल कलेक्शन | Le joueur collecte des pièces en jouant un match |
स्कीमा प्लान करना
गेम के आंकड़े दिखाने वाले एपीआई का इस्तेमाल करके, दो तरह का डेटा भेजा जा सकता है: खिलाड़ी के फ़्लेक्सिबल इवेंट और खिलाड़ी की प्रोग्रेस के आंकड़ों के लिए पहले से तय किया गया इवेंट. यहां दिए गए उदाहरणों में बताया गया है कि अलग-अलग तरह के गेम में फ़्लेक्सिबल इवेंट कैसे दिखते हैं.
प्लेयर से जुड़े इवेंट को ज़रूरत के मुताबिक कॉन्फ़िगर करना
खिलाड़ी के इवेंट, गेम के अलग-अलग मोमेंट, गेम लूप पूरे होने या प्रोग्रेशन के माइलस्टोन के हिसाब से तय किए जाते हैं.
- इवेंट तय करें. जैसे, गेम के खास पल, गेम लूप पूरा होना या प्रोग्रेशन माइलस्टोन:
- गेम लूप पूरे होने की संख्या. जैसे, कोई मैच या रन पूरा होना.
- प्रोग्रेशन माइलस्टोन, जैसे कि सेव की गई जगह को एक्सप्लोर करने की प्रोग्रेस या पूरा किया गया लेवल.
- इवेंट और उसके नतीजों के बारे में ज़्यादा जानकारी देने के लिए, प्रॉपर्टी जोड़ें. जैसे, लेवल नंबर, मैच टाइप, हथियार का टाइप, हथियारों की संख्या, हेडशॉट, इकट्ठा किए गए सिक्के, मैच का नतीजा, लैप टाइम या कार का टाइप.
- गेमप्ले सेशन के दौरान, इवेंट होने के तुरंत बाद इवेंट भेजें. उदाहरण के लिए, लूप पूरा होने के तुरंत बाद, गेम लूप पूरा होने का इवेंट भेजें.
उदाहरण
| गेम टाइप | इवेंट लेबल | गेम में मौजूद मोमेंट / प्रोग्रेशन इवेंट पूरा होना / गेम लूप पूरा होना | नतीजा | विशेषताएं |
|---|---|---|---|---|
| लीनियर प्रोग्रेशन वाला इंडी पज़ल गेम | chapter_completed | प्रोग्रेशन इवेंट पूरा होने पर | लागू नहीं | चैप्टर नंबर, चैप्टर का नाम, कोशिशों की संख्या, स्क्रीन की संख्या, चालों की संख्या, चैप्टर का कॉन्टेंट |
| screen_completed | प्रोग्रेशन इवेंट पूरा होने पर | चैप्टर नंबर, चैप्टर का नाम, कोशिशों की संख्या, चालों की संख्या, चैप्टर का कॉन्टेंट | ||
| 3D एंडलेस रनर | run_completed | गेम लूप पूरा होने पर | इकट्ठा किए गए सिक्के, स्कोर | दौड़ने की अवधि, जेटपैक से इकट्ठा किए गए सिक्के, दौड़ शुरू करते समय इस्तेमाल किया गया बूस्टर, इस्तेमाल किए गए सर्फ़बोर्ड, इस्तेमाल किए गए मैग्नेट, इस्तेमाल किया गया जंपर, इस्तेमाल किया गया जेटपैक |
| विशाल दुनिया वाला ऐक्शन आरपीजी | areaExplorationProgress | प्रोग्रेशन इवेंट पूरा होने पर | दुश्मनों को हराया गया, पॉट इकट्ठा किए गए | इलाके का नंबर, इलाके का नाम, प्रोग्रेस का प्रतिशत |
| questCompleted | गेम लूप पूरा होने पर | लागू नहीं | मिशन का नाम | |
| weaponUnlocked | गेम के दौरान का कोई पल | लागू नहीं | हथियार का नाम, हथियार का लेवल | |
| chestUnlocked | गेम के दौरान का कोई पल | बेहतर बनाने के लिए इकट्ठा किया गया अयस्क | ||
| सजावटी मेटा वाली कैज़ुअल पहेली | puzzleCompleted | गेम लूप पूरा होने / प्रोग्रेशन इवेंट पूरा होने का इवेंट | इकट्ठा किए गए सिक्के, इकट्ठा किए गए बूस्टर | चालों की संख्या, क्या बटलर के उपहार का इस्तेमाल किया गया?, लेवल का टाइप, लेवल नंबर, इस्तेमाल किए गए कलर बूस्टर, इस्तेमाल की गई डायनामाइट |
| cardsCollected | गेम के दौरान का कोई पल | एक स्टार वाले कार्ड, दो स्टार वाले कार्ड, तीन स्टार वाले कार्ड, कुल कार्ड | एल्बम नंबर, एल्बम का नाम | |
| आर्केड रेसिंग | raceCompleted | गेम लूप पूरा होने पर | रैंक, इस्तेमाल किया गया एनओएस, रेस का समय | रेस का टाइप, रेटिंग, इस्तेमाल की गई कार |
| carUpgraded | गेम के दौरान का कोई पल | कार की ऐसी विशेषता जिसे अपग्रेड किया गया है, पुराना लेवल / वैल्यू, नया लेवल / वैल्यू | कार का टाइप, गैराज का मौजूदा लेवल | |
| थर्ड पर्सन बैटल रॉयल शूटर | matchCompleted | गेम लूप पूरा होने पर | इलिमिनेशन, हेडशॉट, ऑनर वैल्यू | मैच टाइप, ज़िंदा रहने का समय |
| ई-स्पोर्ट्स मैनेजमेंट सिमुलेशन | matchCompleted | गेम लूप पूरा होने पर | नतीजा, किए गए गोल, गोल | विरोधी टीम का नाम, खेलने वाली टीम का नाम |
| trainingCompleted | गेम के दौरान का कोई पल | Drills done, teamplay_form_attack, teamplay_form_defense, teamplay_form_possession, teamplay_form_condition |
progressUpdate इवेंट
अगर आपके गेम में प्रोग्रेशन का मुख्य मेकेनिक है, तो इस इवेंट का इस्तेमाल करके खिलाड़ी की मौजूदा प्रोग्रेस भेजें. इवेंट में पहले से तय की गई एक प्रॉपर्टी होती है, जिसे INT या STRING टाइप का "currentProgress" कहा जाता है. इस प्रॉपर्टी का इस्तेमाल करके, मौजूदा प्रोग्रेस की वैल्यू भेजें. ऐसा इसलिए, क्योंकि गेमर प्रोफ़ाइल के गेम के आंकड़ों वाले यूज़र इंटरफ़ेस (यूआई) में सिर्फ़ यही वैल्यू दिखती है.
खिलाड़ी, गेम में अपनी मौजूदा प्रोग्रेस के हिसाब से अपनी प्रोफ़ाइलों की तुलना कर सकते हैं. इसलिए, यह ज़रूरी है कि पहले इंटिग्रेशन के बाद, मौजूदा प्रोग्रेस की वैल्यू मिलने में कोई देरी न हो. खिलाड़ियों को मौजूदा प्रोग्रेस की सटीक जानकारी देने के लिए, आपको हर गेम सेशन की शुरुआत में progressUpdate इवेंट भेजना चाहिए. साथ ही, जब भी मौजूदा प्रोग्रेस में कोई अपडेट हो, तब भी यह इवेंट भेजना चाहिए.
उदाहरण
| गेम टाइप | `progressUpdate` इवेंट की currentProgress प्रॉपर्टी |
|---|---|
| लीनियर प्रोग्रेशन पज़ल गेम | मौजूदा चैप्टर नंबर या लेवल नंबर |
| 3D एंडलेस रनर | सबसे ज़्यादा स्कोर, मौजूदा बूस्टर का बैलेंस |
| कैज़ुअल पज़ल | मौजूदा लेवल का नंबर, पहली बार में जीत हासिल करने की संख्या, पूरे किए गए इलाकों की संख्या, और पूरे किए गए कलेक्शन की संख्या |
| आर्केड रेसिंग | मौजूदा लेवल नंबर, मुद्रा बैलेंस |
| विशाल दुनिया वाला ऐक्शन आरपीजी | मौजूदा किरदार की रैंक, मौजूदा लेवल नंबर |
| थर्ड पर्सन शूटर | मौजूदा लेवल का नंबर |
| ईस्पोर्ट्स सिम्युलेशन | मैनेजर लेवल नंबर, क्लब लेवल नंबर |
इंटिग्रेशन की जानकारी
एपीआई एंडपॉइंट और एसडीके, शुरुआती सुझाव/राय देने या शिकायत करने के लिए उपलब्ध हैं. ये जुलाई 2026 से आम तौर पर उपलब्ध (GA) होंगे. टाइमलाइन देखें
इस सेक्शन में, इवेंट बनाने और उन्हें क्लाइंट साइड और सर्वर साइड इंटिग्रेशन, दोनों में भेजने का तरीका बताया गया है.
डेटा कब भेजना चाहिए
फ़्लेक्सिबल इवेंट, गेम लूप पूरा होने या गेम के किसी खास पल से जुड़ी इन-गेम कार्रवाइयों को दिखाते हैं. ये इवेंट होने के तुरंत बाद सबमिट करें. उदाहरण के लिए, लूप पूरा होते ही गेम लूप पूरा होने का इवेंट सबमिट करें.
progressUpdate इवेंट से, किसी खिलाड़ी की मौजूदा प्रोग्रेस लेवल के बारे में पता चलता है.
प्रोग्रेशन स्टैट का डेटा, इन स्थितियों में इस इवेंट का इस्तेमाल करके भेजा जाना चाहिए:
- जब भी मौजूदा प्रोग्रेस में कोई अपडेट हो, तो तुरंत नई वैल्यू भेजें
- जब भी कोई खिलाड़ी गेम लॉन्च करता है, तब इस कुकी का इस्तेमाल किया जाता है. इससे यह पक्का किया जाता है कि खिलाड़ी के लिए यह स्टैट हमेशा मौजूद रहे.
इंटिग्रेशन के तरीके
इंटिग्रेशन के दो तरीके हैं: क्लाइंट और सर्वर-टू-सर्वर.
सर्वर-टू-सर्वर इंटिग्रेशन
पब्लिक एपीआई एंडपॉइंट की मदद से, अनुरोध पेलोड में इवेंट भेजे जा सकते हैं. इसके लिए, इन कॉन्फ़िगरेशन का इस्तेमाल करें:
पाथ पैरामीटर
| पैरामीटर | डेटा टाइप | ब्यौरा |
|---|---|---|
| playerId | स्ट्रिंग | यह प्लेयर का PGS आईडी है. |
अनुमति और पुष्टि करना
सर्वर-टू-सर्वर एपीआई कॉल, OAuth 2.0 का इस्तेमाल करके, Play की गेम सेवाओं के सर्वर-साइड ऐक्सेस से जुड़े स्टैंडर्ड दिशा-निर्देशों का पालन करते हैं. अनुरोधों में, https://www.googleapis.com/auth/games स्कोप के लिए अनुमति दिया गया Bearer टोकन शामिल होना चाहिए.
फ़्लेक्सिबल इवेंट: अनुरोध का मुख्य हिस्सा
BatchRecordEventsRequest
{ "packageName": string, "requestTime": string, "events": [ { object (PlayerGameEvent) } ] }
PlayerGameEvent
{ "eventId": string, "eventName": string, "eventProperties": { // keys (e.g., "matchId", "score") "" : { object (PropertyValue) } }, "eventTime": string }
PropertyValue
// ONE of the following fields will be present: { // 64-bit integer formatted as a string to prevent data loss "intValue": "string", // Double-precision floating point number. "doubleValue": number, // Standard UTF-8 text string. "stringValue": "string", // Boolean value (true or false). "boolValue": boolean, // RFC 3339 formatted timestamp string (e.g., "2026-01-01T18:00:00Z"). "timestampValue": "string", // Duration in seconds suffixed with 's' (e.g., "240s" or "3.5s"). "durationValue": "string" }
progressUpdate इवेंट: अनुरोध का मुख्य हिस्सा
BatchRecordEventsRequest
{ "packageName": string, "requestTime": string, "events": [ { object (PlayerGameEvent) } ] }
PlayerGameEvent - progressUpdate
{ "eventId": string, "eventName": "progressUpdate", "eventProperties": { "" : { object (PropertyValue) // Must have at least one property "currentProgress" of type INT or STRING } }, "eventTime": string }
जवाब का मुख्य हिस्सा
अगर अनुरोध पूरा हो जाता है, तो जवाब के तौर पर खाली JSON ऑब्जेक्ट के साथ एचटीटीपी 200 OK स्टेटस दिखता है.
अनुरोध के मुख्य हिस्से का उदाहरण
फ़्लेक्सिबल इवेंट: PlayerGameEvent
{ "packageName": "com.example.awesomegame",//Your package name "requestTime": "2026-01-01T18:00:00Z", "events": [ { "eventId": "123e1234-e29b-41d4-a123-446655440000", // UUID for deduplication //and idempotency "eventName": "matchCompleted", "eventTime": "2026-01-01T17:00:00Z", "eventProperties": { "matchId": { "stringValue": "Match_A" }, "gameMode": { "stringValue": "Battle_B" }, "locationId": { "stringValue": "Location_XYZ" }, "playerElimination": { "intValue": 2 }, "survivalTimeSeconds": { "durationValue": "240s" }, "isWinner": { "boolValue": true } } } ] }
progressUpdate इवेंट
{ "packageName": "com.example.awesomegame",//Your package name "requestTime": "2026-01-01T18:00:00Z", "events": [ { "eventId": "123e1234-e29b-41d4-a123-446655440000", // UUID "eventName": "progressUpdate", "eventTime": "2026-01-01T17:00:00Z", "eventProperties": { "currentProgress": { "intValue": 52 }, //Add more properties as per your requirement } } ] }
क्लाइंट साइड इंटिग्रेशन
क्लाइंट साइड इंटिग्रेशन, Unity, Java, और C++ SDK टूल का इस्तेमाल करके उपलब्ध कराया जाएगा.
क्लाइंट-साइड इंटिग्रेशन के लिए, आपको ट्रिगर पॉइंट पर एसडीके के हिसाब से Java या Csharp में इवेंट ऑब्जेक्ट बनाना होगा. इसके बाद, एसडीके की ओर से दिए गए अपलोड फ़ंक्शन का इस्तेमाल करके, उन्हें भेजना होगा.PlayerGameEvent
इसी तरह, progressUpdate इवेंट के लिए, अपडेट की गई प्रोग्रेस को रिकॉर्ड करें. इसके लिए, currentProgress प्रॉपर्टी का इस्तेमाल करें. साथ ही, तय की गई अन्य प्रॉपर्टी का इस्तेमाल करें और उन्हें एसडीके के ज़रिए उपलब्ध कराए गए अपलोड फ़ंक्शन का इस्तेमाल करके भेजें.
इवेंट
PlayerGameEvent के लिए क्लाइंट साइड इंटिग्रेशन ये हैं:
फ़्लेक्सिबल प्लेयर गेम इवेंट बनाना
Java
// Build the PlayerGameEvent
PlayerGameEvent event = new PlayerGameEvent.Builder("matchCompleted")
.addProperty("matchId", "Match_A")
.addProperty("gameMode", "Battle_B")
.addProperty("mapId", "Location_XYZ")
.addProperty("isWinner", true)
.addProperty("survivalTimeSeconds", "240s")
.addProperty("playerElimination", 2)
.build();
List events = new ArrayList<>();
// ... populate list ...
Unity
// Build the PlayerGameEvent
var playerEvent = new PlayerGameEvent.Builder("matchCompleted")
.AddProperty("matchId", "Match_A")
.AddProperty("gameMode", "Battle_B")
.AddProperty("mapId", "Location_XYZ")
.AddProperty("isWinner", true)
.AddProperty("survivalTimeSeconds", "240s")
.AddProperty("playerElimination", 2)
.Build();
var events = new List();
// ... populate list ...
C++
// Build the PlayerGameEvent
PgsPlayerGameEvent* player_event = PgsPlayerGameEvent_create("matchCompleted");
if (player_event != nullptr) {
PgsPlayerGameEvent_putString(player_event, "matchId", "Match_A");
PgsPlayerGameEvent_putString(player_event, "gameMode", "Battle_B");
PgsPlayerGameEvent_putString(player_event, "mapId", "Location_XYZ");
PgsPlayerGameEvent_putBoolean(player_event, "isWinner", true);
PgsPlayerGameEvent_putString(player_event, "survivalTimeSeconds", "240s");
PgsPlayerGameEvent_putLong(player_event, "playerElimination", 2);
}
progressUpdate प्लेयर गेम इवेंट बनाना
Java
// Build the PlayerGameEvent
PlayerGameEvent event = new PlayerGameEvent.Builder("progressUpdate")
.addProperty("currentProgress", 52)
// Add other properties if needed
.build();
List events = new ArrayList<>();
// ... populate list ...
Unity
// Build the PlayerGameEvent
var progressEvent = new PlayerGameEvent.Builder("progressUpdate")
.AddProperty("currentProgress", 52)
// Add other properties if needed
.Build();
var events = new List();
// ... populate list ...
C++
PgsPlayerGameEvent* progress_event = PgsPlayerGameEvent_create("progressUpdate");
if (progress_event != nullptr) {
PgsPlayerGameEvent_putLong(progress_event, "currentProgress", 52);
}
इवेंट रिकॉर्ड करें और अपलोड करें
Java
// Buffers the event locally.
client.recordEvent(event);
// Buffers the events locally, (List version)
client.recordEvents(events);
// This submits the events to PGS
client.requestEventsUpload();
Unity
// Buffers the event locally.
PlayGamesPlatform.Instance.RecordEvent(playerEvent);
// Buffers the events locally, (List version)
PlayGamesPlatform.Instance.RecordEvents(events);
// This submits the events to PGS
PlayGamesPlatform.Instance.RequestEventsUpload();
C++
// Record the event
PgsGameStatsClient_recordEvent(client, player_event);
// This submits the events to PGS
PgsGameStatsClient_requestEventsUpload(client);
// Clean up handle to avoid leaks
PgsPlayerGameEvent_destroy(player_event);
// Clean up client handle when PGS operations are finished
PgsGameStatsClient_destroy(client);
टाइमलाइन
| तारीख | Game Stats API का इंटिग्रेशन | गेम के आंकड़ों का कॉन्फ़िगरेशन |
| जून 2026 |
|
उपलब्ध नहीं है |
| जुलाई 2026 |
|
|
| अगस्त 2026 | लागू नहीं |
|
| सितंबर 2026 | लागू नहीं |
|