آمار بازی، آمار تجمعی در مورد بازی شما است که بازیکنان میتوانند در پروفایل گیمر خود مشاهده کنند. این آمار به بازیکنان اجازه میدهد تا پیشرفت خود را در طول عمرشان پیگیری کنند، لحظات برجسته را ببینند و با سایر بازیکنان مقایسه کنند و ویژگیهای Google Play مانند ماموریتها، چالشهای اجتماعی و موارد دیگر را در آینده تقویت کنند.
مراحل ادغام
ارسال دادهها با استفاده از Game Stats API به عنوان رویدادهای انعطافپذیر بازیکن برای آمارهای تکراری و یک رویداد از پیش تعریف شده progressUpdate برای آمار پیشرفت. همچنین باید منطق محاسبه آمارهایی که در پروفایل بازیکن نمایش داده میشوند و اطلاعات نمایش آنها را پیکربندی کنید.
رویدادهای بازیکن نشاندهنده لحظات متمایز درون بازی، تکمیل حلقههای بازی یا نقاط عطف پیشرفت هستند.
یک رویداد بازیکن به صورت زیر تعریف و مدلسازی میشود:
- یک رویداد با یک اقدام خاص انجام شده توسط بازیکن مانند تکمیل یک مسابقه، پایان دادن به یک مسابقه، باز کردن قفل یک صندوقچه یا ذخیره پیشرفت در یک منطقه نشان داده میشود.
- هر عمل منجر به نتایج خاصی میشود یا ویژگیهای خاصی دارد که آن عمل را تعریف میکند. این ویژگیها به عنوان ویژگیهای رویداد مدلسازی میشوند که زمینهای در مورد رویداد و نتایج خاص آن ارائه میدهند (برای مثال، نوع مسابقه، سکههای جمعآوریشده در طول آن اجرا، نتیجه مسابقه یا تعداد شلیک به سر).
ادغام شامل مراحل زیر است:
- طرح داده خام را تعریف کنید: رویدادهای بازیکن را با استفاده از آپلود CSV در کنسول Play تعریف کنید. به دستورالعملهای فایل CSV مراجعه کنید.
- ادغام با API آمار بازی: ارسال دادههای خام بازیکن در قالب اعلامشده برای رویدادهای انعطافپذیر بازیکن و رویداد
progressUpdate.- ارسال تمام رویدادهای تعریف شده با استفاده از ادغام سمت کلاینت یا سمت سرور. برای اطلاعات بیشتر، به مثالهایی برای رویدادهای انعطافپذیر و رویداد
progressUpdateمراجعه کنید.
- ارسال تمام رویدادهای تعریف شده با استفاده از ادغام سمت کلاینت یا سمت سرور. برای اطلاعات بیشتر، به مثالهایی برای رویدادهای انعطافپذیر و رویداد
- آپلود فایل زیپ: ۳ فایل CSV و تمام فایلهای تصویر آیکون که ۵ آمار تکراری و ۱ سطح پیشرفت بازیکن را تعریف میکنند، ارائه دهید. برای اطلاعات بیشتر، به دستورالعملهای فایل زیپ مراجعه کنید. جزئیات زیر را وارد کنید:
- فایل CSV برای آمار تکراری:
- یک شناسه منحصر به فرد برای آمار.
- برچسب رویدادی که برای محاسبه آمار استفاده میشود را مشخص کنید. شما نمیتوانید از برچسب رویداد
progressUpdateدر اینجا استفاده کنید.- برچسب ویژگی مورد استفاده برای محاسبه آمار را مشخص کنید. این باید یک ویژگی از رویداد مشخص شده باشد.
- نوع تجمیع (SUM، MAX، MIN یا COUNT) را مشخص کنید تا نحوه محاسبه آمار روی برچسب ویژگی انتخاب شده تعیین شود.
- یک شرط فیلتر اختیاری تعیین کنید تا منطق فقط در صورت برآورده شدن شرط محاسبه شود. برچسب ویژگی و رویداد، عملگر (=، <، یا >) و مقدار آستانه را تعریف کنید.
- یک پرچم بولی اضافه کنید تا نشان دهد که آیا میتوان از این آمار برای ویژگیهای رقابتی استفاده کرد یا خیر.
- اگر این ویژگی بتواند برای ویژگیهای رقابتی استفاده شود، حداقل و حداکثر محدودیتهای ساعتی برای یک بازیکن واقعی تعیین میشود. این برای شناسایی بازیکنانی که ممکن است هنگام شرکت در ویژگیهایی مانند لیگها و چالشهای اجتماعی سوءاستفاده کنند، استفاده خواهد شد.
- یک نام نمایشی منحصر به فرد برای آماری که بازیکنان میبینند، ارائه دهید.
- متن منحصر به فردی برای توصیف وضعیت ارائه دهید. این توضیحات باید جزئیاتی در مورد نحوه کسب آن توسط بازیکن ارائه دهد.
- با وارد کردن نام دقیق فایل آیکون در فایل CSV، یک آیکون منحصر به فرد که نمایانگر آمار است، ارائه دهید.
- ترتیب نمایش آمار در پروفایل گیمر را مشخص کنید.
- یک ورودی اختیاری ارائه دهید که آیا افزایش یا کاهش مقدار برای بازیکن خوب است یا خیر. این ورودی برای جشن گرفتن حرکات بازیکن استفاده خواهد شد.
- یک واحد اندازهگیری اختیاری برای آمار مانند کیلومتر، مایل و ثانیه ارائه دهید.
- فایل CSV برای آمار پیشرفت بازیکن:
- یک نام نمایشی منحصر به فرد برای پیشرفت بازیکن که بازیکنان میبینند، ارائه دهید.
- یک آیکون منحصر به فرد که نشاندهندهی آمار باشد، ارائه دهید.
- توضیحی برای وضعیت پیشرفت ارائه دهید.
- یک ورودی اختیاری ارائه دهید که آیا افزایش یا کاهش مقدار برای بازیکن خوب است. این ورودی فقط زمانی برای جشن گرفتن حرکات بازیکن استفاده میشود که ویژگی
currentProgressاز نوع INT باشد. - یک واحد اندازهگیری اختیاری برای آمار مانند کیلومتر، مایل، ثانیه ارائه دهید.
- فایل CSV برای بومیسازی: نامهای نمایشی بومیسازیشده برای همه آمارها ارائه دهید.
- برای هر محلیسازی، یک ردیف اضافه کنید.
- از رشته نام نمایش آمار همانطور که در CSV قبلی اضافه شده بود، برای شناسایی منحصر به فرد آماری که محلیسازی به آن اضافه میشود، استفاده کنید.
- زبان را از لیست کدهای زبان مشخص کنید.
- محلیسازی نام نمایشی را به زبان مشخصشده اضافه کنید.
- بومیسازی توضیحات آمار را به زبان مشخصشده اضافه کنید.
- فایل CSV برای آمار تکراری:
دستورالعملهای فایل CSV برای رویدادها
شما میتوانید رویدادها را با استفاده از فایل PlayerGameEvent.csv وارد کنید.
| نام فایل | الزامی یا اختیاری |
| رویداد بازی بازیکن.csv | مورد نیاز |
فرمت PlayerGameEvent.csv
فایل csv شامل رویداد اعلام شده و ویژگیهای آن به صورت مقادیر جدا شده با کاما به ترتیب زیر است:
Event Name,Property Name,Property Type
اگر رویداد progressUpdate را برای progressionStat ارسال میکنید، یک ردیف برای این رویداد اضافه کنید. این رویداد باید حداقل شامل یک ویژگی currentProgress از نوع INT یا STRING، به علاوه هر ویژگی دیگری که میخواهید ارسال کنید، باشد.
جدول نمونه
| نام رویداد | نام ملک | نوع ملک |
|---|---|---|
| مسابقهتکمیل شد | مدت زمان | دو برابر |
| مسابقهتکمیل شد | می کشد | داخلی |
| مسابقهتکمیل شد | برنده است | بولی |
| مسابقهتکمیل شد | نوع تطابق | رشته (UTF-8) |
| موردجمع آوری شده | سکههامقدار | داخلی |
| موردجمع آوری شده | نوع سلاح | رشته (UTF-8) |
| پیشرفتبهروزرسانی | پیشرفت فعلی | داخلی |
دستورالعملهای فایل زیپ برای آمار
شما میتوانید آمار را به طور همزمان با استفاده از یک فایل ZIP وارد کنید. برای نام دقیق فایلهایی که باید در فایل ZIP خود استفاده کنید، به جدول مراجعه کنید:
| نام فایل | الزامی یا اختیاری | مقادیر پذیرفته شده |
|---|---|---|
RepetitiveStatsConfig.csv | مورد نیاز | فراداده برای بسیاری از رویدادها. |
ProgressionStatConfig.csv | مورد نیاز | رویداد اعلام شده و ویژگیهای آن. |
StatLocalizations.csv | اختیاری | ترجمههایی برای نامها و توضیحات دستاوردها ارائه میدهد. |
| فایلهای آیکون | مورد نیاز | آیکونها با ابعاد ۵۱۲ در ۵۱۲ پیکسل، فرمت 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
در صورتی که نمیخواهید از شرط فیلتر استفاده کنید، سلول را خالی نگه دارید.
جدول نمونه
| شناسه آمار | نام رویداد | نام ملک | تجمیع | نام نمایشی آمار | توضیحات آمار | فیلتر ویژگی (اختیاری) | عملگر فیلتر (اختیاری) | مقدار فیلتر (اختیاری) | رقابتی است | حداقل محدودیت | حداکثر محدودیت | نام فایل آیکون | شماره توالی | جهت گیری با ارزش خوب | واحد |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ۱ | مسابقهتکمیل شد | مدت زمان | مکس | طولانیترین زمان بقا در مسابقه | این نشان دهنده زمان بقای یک بازیکن در هر مسابقه است | برنده است | = | درست | درست | 0 | ۵۰ | آمار1.png | ۱ | کاهشی | ثانیهها |
| ۲ | مسابقهتکمیل شد | برنده است | شمارش | مسابقات برنده شده | این نشان دهنده تعداد مسابقاتی است که یک بازیکن برنده شده است | برنده است | = | درست | درست | 0 | ۵۰ | stat3.png | ۲ | افزایش | |
| ۳ | مسابقهتکمیل شد | می کشد | جمع | کشتههای مسابقه تک به تک | تعداد کشتههای انجام شده در مسابقات تک به تک | نوع تطابق | = | «یک به یک» | نادرست | stat4.png | ۴ | افزایش | |||
| ۴ | موردجمع آوری شده | سکههامقدار | جمع | کل طلای جمعآوریشده | بازیکن هنگام بازی در یک مسابقه سکه جمع میکند | نوع سلاح | = | «شمشیر» | نادرست | آمار۲.png | ۳ | افزایش |
فرمت ProgressionStatConfig.csv
فایل csv شامل رویداد اعلام شده و ویژگیهای آن به صورت مقادیر جدا شده با کاما به ترتیب زیر است:
Stat ID, Stat Display Name, Stat Description, Icon File Name, Good value direction, unit
آمار پیشرفت به عنوان اولین آمار به یک بازیکن در پروفایل گیمر او نشان داده خواهد شد.
جدول نمونه
| شناسه آمار | نام نمایشی آمار | توضیحات آمار | نام فایل آیکون | جهت گیری با ارزش خوب |
| ۵ | سطح | بازیکنان با انجام مسابقات امتیاز تجربه (xp) جمع میکنند و سطح خود را ارتقا میدهند. | سطح.png | افزایش |
قالب StatLocalizations.csv
فایل csv شامل رویداد اعلام شده و ویژگیهای آن به صورت مقادیر جدا شده با کاما به ترتیب زیر است:
Stat ID, Stat Display Name, Language Code, Localized Stat Name, Localized Stat Description
جدول نمونه
| شناسه آمار | نام نمایشی آمار | کد زبان | نام آماری محلی (UTF-8) | توضیحات آمار محلی (UTF-8) | ۱ | طولانیترین زمان بقا در مسابقه | ها | Supervivencia más large en partidos | Esto denota el tiempo de supervivencia de una jugadora en cualquier partido. | ۱ | طولانیترین زمان بقا در مسابقه | فر | نجات از مسابقه به مدت طولانی | Cela indique la durée de survie d'un joueur dans n'importe quel match. | ۴ | کل طلای جمعآوریشده | ها | اورو کل ریکلکتادو | La jugadora recoge monedas mientras juega en un partido | ۴ | کل طلای جمعآوریشده | فر | یا کل مجموعه | Le joueur collecte des pièces en jouant un match |
طرحواره را برنامهریزی کنید
شما میتوانید دو نوع داده را با استفاده از Game Stats API ارسال کنید: رویدادهای انعطافپذیر بازیکن و یک رویداد از پیش تعریفشده برای آمار پیشرفت بازیکن. مثالهای زیر نشان میدهند که رویدادهای انعطافپذیر در انواع مختلف بازی چگونه به نظر میرسند.
رویدادهای انعطافپذیر پخشکننده
رویدادهای بازیکن با لحظات متمایز درون بازی، تکمیل حلقههای بازی یا نقاط عطف پیشرفت تعریف میشوند.
- رویدادها را به عنوان لحظات خاص درون بازی، تکمیل حلقه بازی یا نقاط عطف پیشرفت تعریف کنید :
- تکمیل حلقههای بازی، مانند یک مسابقه یا اجرای کامل.
- نقاط عطف پیشرفت، مانند پیشرفت در کاوش منطقه ذخیره شده یا تکمیل یک مرحله.
- ویژگیهایی را برای ارائه زمینه در مورد رویداد و نتایج آن اضافه کنید ، مانند شماره سطح، نوع مسابقه، نوع سلاح، تعداد سلاحها، شلیک به سر، سکههای جمعآوریشده، نتیجه مسابقه، زمان دور یا نوع ماشین.
- رویدادهای درون جلسه گیمپلی را به محض وقوع ارسال کنید . برای مثال، رویداد تکمیل حلقه بازی را بلافاصله پس از اتمام حلقه ارسال کنید.
مثالها
| نوع بازی | برچسب رویداد | لحظه درون بازی / تکمیل رویداد پیشرفت / تکمیل حلقه بازی | نتیجه | ویژگیها |
|---|---|---|---|---|
| بازی پازل مستقل با پیشرفت خطی | فصل_تکمیل شده | تکمیل رویداد پیشرفت | ناموجود | شماره فصل، نام فصل، تعداد تلاش، تعداد صفحات، تعداد حرکتها، محتوای فصل |
| صفحه_تکمیل_شد | تکمیل رویداد پیشرفت | شماره فصل، نام فصل، تعداد تلاش، تعداد حرکات، محتوای فصل | ||
| دونده بیپایان سهبعدی | اجرا_کامل شد | تکمیل حلقه بازی | سکههای جمعآوریشده، امتیاز | مدت زمان دویدن، سکههای جمعآوریشده از جتپک، بوستر استفادهشده در شروع دویدن، تختههای موجسواری استفادهشده، آهنرباهای استفادهشده، جامپر استفادهشده، جتپک استفادهشده |
| اکشن نقشآفرینی جهان باز | پیشرفت اکتشاف منطقه | تکمیل رویداد پیشرفت | دشمنان شکست خوردند، معجونها جمعآوری شدند | شماره منطقه، نام منطقه، درصد پیشرفت |
| ماموریت انجام شد | تکمیل حلقه بازی | ناموجود | نام کوئست | |
| سلاح قفل نشده | لحظه درون بازی | ناموجود | نام سلاح، سطح سلاح | |
| قفل قفسه سینه باز است | لحظه درون بازی | سنگ معدن تقویتشده جمعآوریشده | ||
| پازل معمولی با متای تزئینی | پازلتکمیل شد | تکمیل حلقه بازی / تکمیل رویداد پیشرفت | سکههای جمعآوریشده، تقویتکنندههای جمعآوریشده | تعداد حرکات، هدیه باتلر استفاده شده؟، نوع سطح، شماره سطح، تقویت کننده های رنگی استفاده شده، دینامیت های استفاده شده |
| کارتهای جمعآوریشده | لحظه درون بازی | کارتهای ۱ ستاره، کارتهای ۲ ستاره، کارتهای ۳ ستاره، مجموع کارتها | شماره آلبوم، نام آلبوم | |
| مسابقه آرکید | مسابقهتکمیل شد | تکمیل حلقه بازی | رتبه، NOS استفاده شده، زمان مسابقه | نوع مسابقه، رتبهبندی، ماشین مورد استفاده |
| ماشین ارتقا یافته | لحظه درون بازی | ویژگی ماشین که ارتقا یافته است، سطح/ارزش قدیمی، سطح/ارزش جدید | نوع ماشین، سطح فعلی گاراژ | |
| تیرانداز سوم شخص بتل رویال | مسابقهتکمیل شد | تکمیل حلقه بازی | حذفها، شلیک به سر، ارزش افتخار | نوع مسابقه، زمان بقا |
| مدیریت ورزشهای الکترونیکی (شبیهسازی) | مسابقهتکمیل شد | تکمیل حلقه بازی | نتیجه، گلهای زده، گلها | نام تیم حریف، نام تیم بازی |
| آموزشتکمیل شد | لحظه درون بازی | تمرینات انجام شده، فرم بازی تیمی_حمله، فرم بازی تیمی_دفاع، فرم بازی تیمی_مالکیت، شرایط فرم بازی تیمی |
رویداد progressUpdate
اگر بازی شما یک مکانیزم پیشرفت اولیه دارد، از این رویداد برای ارسال پیشرفت فعلی بازیکن استفاده کنید. این رویداد یک ویژگی از پیش تعریف شده به نام "currentProgress" از نوع INT یا STRING دارد. مقدار پیشرفت فعلی را با استفاده از این ویژگی ارسال کنید، زیرا تنها مقداری است که در رابط کاربری آمار بازی پروفایل بازیکن نمایش داده میشود.
از آنجایی که بازیکنان میتوانند پروفایلهای خود را با پیشرفت فعلی در بازی مقایسه کنند، مهم است که پس از اولین ادغام، هیچ تأخیری در دریافت مقدار پیشرفت فعلی وجود نداشته باشد. برای نمایش دقیق پیشرفت فعلی به بازیکنان، باید رویداد progressUpdate را در ابتدای هر جلسه بازی و همچنین هر زمان که بهروزرسانی در پیشرفت فعلی وجود دارد، ارسال کنید.
مثالها
| نوع بازی | ویژگی currentProgress از رویداد `progressUpdate`` |
|---|---|
| بازی پازلی با پیشرفت خطی | شماره فصل یا شماره سطح فعلی |
| دونده بیپایان سهبعدی | امتیاز بالا، موجودی تقویتکنندههای فعلی |
| پازل معمولی | شماره سطح فعلی، تعداد بردهای اولین تلاش، تعداد مناطق تکمیل شده، تعداد جمعآوریهای تکمیل شده |
| مسابقه آرکید | شماره سطح فعلی، موجودی ارز |
| اکشن نقشآفرینی جهان باز | رتبه فعلی شخصیت، شماره سطح فعلی |
| تیرانداز سوم شخص | شماره سطح فعلی |
| شبیهسازی ورزشهای الکترونیکی | شماره سطح مدیر، شماره سطح باشگاه |
جزئیات ادغام
نقاط پایانی API و SDK برای بازخورد اولیه در دسترس هستند و از ژوئیه 2026 به طور کلی در دسترس (GA) قرار خواهند گرفت. به جدول زمانی مراجعه کنید
این بخش نحوه ساخت رویدادها و ارسال آنها را در هر دو ادغام سمت کلاینت و سمت سرور نشان میدهد.
چه زمانی باید داده ارسال کنید؟
رویدادهای انعطافپذیر، اقدامات درون بازی مربوط به تکمیل حلقههای بازی یا لحظات خاص درون بازی را نشان میدهند. این رویدادها را به محض وقوع ارسال کنید. به عنوان مثال، رویداد تکمیل حلقه بازی را به محض تکمیل حلقه ارسال کنید.
رویداد progressUpdate سطح پیشرفت فعلی یک بازیکن را نشان میدهد. دادههای مربوط به وضعیت پیشرفت باید با استفاده از این رویداد در شرایط زیر ارسال شوند:
- هر زمان که بهروزرسانی در پیشرفت فعلی وجود دارد، آخرین مقدار را فوراً ارسال کنید
- هر زمان که یک بازیکن بازی را شروع میکند، برای اطمینان از وجود این آمار برای یک بازیکن در همه زمانها.
مسیرهای ادغام
دو مسیر ادغام وجود دارد - کلاینت و سرور به سرور.
یکپارچهسازی سرور به سرور
یک نقطه پایانی API عمومی به شما امکان میدهد رویدادها را در payload درخواست با استفاده از پیکربندیهای زیر ارسال کنید:
پارامترهای مسیر
| پارامتر | نوع داده | توضیحات |
|---|---|---|
| شناسه بازیکن | رشته | شناسه PGS بازیکن. |
مجوز و احراز هویت
فراخوانیهای API سرور به سرور از دستورالعملهای استاندارد دسترسی سمت سرور به سرویسهای بازیهای Play با استفاده از OAuth 2.0 پیروی میکنند. درخواستها باید شامل یک توکن Bearer باشند که با دامنه https://www.googleapis.com/auth/games مجاز شده است.
رویدادهای انعطافپذیر: متن درخواست
درخواست رویدادهای دستهای
{ "packageName": string, "requestTime": string, "events": [ { object (PlayerGameEvent) } ] }
رویداد بازی بازیکن
{ "eventId": string, "eventName": string, "eventProperties": { // keys (e.g., "matchId", "score") "" : { object (PropertyValue) } }, "eventTime": string }
ارزش ملک
// 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 : بدنه درخواست
درخواست رویدادهای دستهای
{ "packageName": string, "requestTime": string, "events": [ { object (PlayerGameEvent) } ] }
رویداد بازی بازیکن - progressUpdate
{ "eventId": string, "eventName": "progressUpdate", "eventProperties": { "" : { object (PropertyValue) // Must have at least one property "currentProgress" of type INT or STRING } }, "eventTime": string }
بدن پاسخ
در صورت موفقیت، وضعیت HTTP 200 OK را با یک شیء JSON خالی برمیگرداند.
مثال بدنه درخواست
رویداد انعطافپذیر: 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 } } ] }
ادغام سمت کلاینت
ادغام سمت کلاینت با استفاده از SDK های Unity، Java و C++ در دسترس خواهد بود.
یکپارچهسازی سمت کلاینت برای PlayerGameEvent شامل ساخت شیء رویداد در جاوا یا سیشارپ، بسته به SDK، در نقاط شروع و ارسال آنها با استفاده از توابع آپلود ارائه شده توسط SDK میشود.
به طور مشابه، برای رویداد progressUpdate ، پیشرفت بهروزرسانیشده را با استفاده از ویژگی currentProgress به همراه ویژگیهای تعریفشدهی اضافی ثبت کنید و آنها را با استفاده از توابع آپلود ارائه شده توسط SDK ارسال کنید.
رویدادها
ادغام سمت کلاینت برای PlayerGameEvent عبارتند از:
ساخت رویداد بازی بازیکن انعطافپذیر
جاوا
// 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 ...
وحدت
// 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 ...
سی++
// 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 ساختبهروزرسانی رویداد بازی بازیکن
جاوا
// Build the PlayerGameEvent
PlayerGameEvent event = new PlayerGameEvent.Builder("progressUpdate")
.addProperty("currentProgress", 52)
// Add other properties if needed
.build();
List events = new ArrayList<>();
// ... populate list ...
وحدت
// Build the PlayerGameEvent
var progressEvent = new PlayerGameEvent.Builder("progressUpdate")
.AddProperty("currentProgress", 52)
// Add other properties if needed
.Build();
var events = new List();
// ... populate list ...
سی++
PgsPlayerGameEvent* progress_event = PgsPlayerGameEvent_create("progressUpdate");
if (progress_event != nullptr) {
PgsPlayerGameEvent_putLong(progress_event, "currentProgress", 52);
}
ضبط رویداد و آپلود
جاوا
// Buffers the event locally.
client.recordEvent(event);
// Buffers the events locally, (List version)
client.recordEvents(events);
// This submits the events to PGS
client.requestEventsUpload();
وحدت
// 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();
سی++
// 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);
گاهشمار
| تاریخ | ادغام API آمار بازی | پیکربندی آمار بازی |
| ژوئن ۲۰۲۶ |
| موجود نیست |
| ژوئیه ۲۰۲۶ |
|
|
| اوت ۲۰۲۶ | ناموجود |
|
| سپتامبر ۲۰۲۶ | ناموجود |
|