গেম স্ট্যাটস হলো আপনার গেম সম্পর্কিত সামগ্রিক পরিসংখ্যান, যা খেলোয়াড়রা তাদের গেমার প্রোফাইলে দেখতে পারে। এই পরিসংখ্যান খেলোয়াড়দেরকে তাদের আজীবনের অগ্রগতি ট্র্যাক করতে, সেরা মুহূর্তগুলো দেখতে এবং অন্যান্য খেলোয়াড়দের সাথে তুলনা করতে সাহায্য করে। এছাড়াও, ভবিষ্যতে এই পরিসংখ্যানগুলোই গুগল প্লে-এর কোয়েস্ট, সোশ্যাল চ্যালেঞ্জ এবং আরও অনেক ফিচারকে শক্তি জোগাবে।
একীকরণ পদক্ষেপ
পুনরাবৃত্তিমূলক পরিসংখ্যানের জন্য নমনীয় প্লেয়ার ইভেন্ট হিসেবে এবং অগ্রগতির পরিসংখ্যানের জন্য একটি পূর্বনির্ধারিত ইভেন্ট ' progressUpdate ব্যবহার করে গেম স্ট্যাটস এপিআই (Game Stats API) দিয়ে ডেটা পাঠান। এছাড়াও, গেমার প্রোফাইলে যে পরিসংখ্যানগুলো প্রদর্শিত হবে, সেগুলোর গণনার লজিক এবং প্রদর্শনের তথ্যও আপনাকে কনফিগার করতে হবে।
প্লেয়ার ইভেন্টগুলো হলো গেমের স্বতন্ত্র মুহূর্ত, গেম লুপের সমাপ্তি, বা অগ্রগতির মাইলফলক।
একটি প্লেয়ার ইভেন্টকে নিম্নরূপে সংজ্ঞায়িত ও মডেল করা হয়:
- খেলোয়াড়ের নেওয়া কোনো নির্দিষ্ট কাজকে একটি ইভেন্ট হিসেবে গণ্য করা হয়, যেমন—একটি ম্যাচ সম্পূর্ণ করা, একটি রান শেষ করা, একটি চেস্ট আনলক করা, বা কোনো এলাকায় অগ্রগতি সংরক্ষণ করা।
- প্রতিটি ক্রিয়ার ফলে নির্দিষ্ট কিছু ফলাফল পাওয়া যায় অথবা সেই ক্রিয়াটির কিছু নির্দিষ্ট বৈশিষ্ট্য থাকে। এগুলোকে ইভেন্টের বৈশিষ্ট্য হিসেবে মডেল করা হয়, যা ইভেন্টটি এবং এর নির্দিষ্ট ফলাফলগুলো সম্পর্কে প্রেক্ষাপট প্রদান করে (উদাহরণস্বরূপ, ম্যাচের ধরন, সেই রান চলাকালীন সংগৃহীত কয়েন, ম্যাচের ফলাফল, বা হেডশটের সংখ্যা)।
একত্রীকরণ প্রক্রিয়াটিতে নিম্নলিখিত ধাপগুলো অন্তর্ভুক্ত রয়েছে:
- র ডেটা স্কিমা ঘোষণা করুন: প্লে কনসোলে একটি CSV আপলোড ব্যবহার করে প্লেয়ার ইভেন্টগুলি সংজ্ঞায়িত করুন। CSV ফাইল নির্দেশিকা দেখুন।
- গেম স্ট্যাটস এপিআই-এর সাথে ইন্টিগ্রেট করুন: ফ্লেক্সিবল প্লেয়ার ইভেন্ট এবং
progressUpdateইভেন্টের জন্য ঘোষিত ফরম্যাটে প্লেয়ারের মূল ডেটা পাঠান।- ক্লায়েন্ট সাইড বা সার্ভার সাইড ইন্টিগ্রেশন ব্যবহার করে সমস্ত সংজ্ঞায়িত ইভেন্ট পাঠান। আরও তথ্যের জন্য, Flexible Events এবং
progressUpdateইভেন্টের উদাহরণ দেখুন।
- ক্লায়েন্ট সাইড বা সার্ভার সাইড ইন্টিগ্রেশন ব্যবহার করে সমস্ত সংজ্ঞায়িত ইভেন্ট পাঠান। আরও তথ্যের জন্য, Flexible Events এবং
- একটি 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
আপনি যদি progressionStat এর জন্য progressUpdate ইভেন্টটি পাঠান, তাহলে এই ইভেন্টের জন্য একটি সারি যোগ করুন। এই ইভেন্টে অবশ্যই INT বা STRING টাইপের অন্তত একটি currentProgress প্রপার্টি থাকতে হবে, এবং এর সাথে আপনি পাঠাতে চান এমন অন্য যেকোনো প্রপার্টিও থাকতে হবে।
উদাহরণ সারণী
| ইভেন্টের নাম | সম্পত্তির নাম | সম্পত্তির ধরণ |
|---|---|---|
| ম্যাচ সম্পন্ন হয়েছে | সময়কাল | ডাবল |
| ম্যাচ সম্পন্ন হয়েছে | হত্যা করে | INT |
| ম্যাচ সম্পন্ন হয়েছে | বিজয়ী | বুলিয়ান |
| ম্যাচ সম্পন্ন হয়েছে | ম্যাচটাইপ | স্ট্রিং (UTF-8) |
| আইটেম সংগ্রহ করা হয়েছে | মুদ্রার পরিমাণ | INT |
| আইটেম সংগ্রহ করা হয়েছে | অস্ত্রের ধরন | স্ট্রিং (UTF-8) |
| অগ্রগতি আপডেট | বর্তমান অগ্রগতি | INT |
পরিসংখ্যানের জন্য জিপ ফাইলের নির্দেশিকা
আপনি একটি 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
যদি আপনি ফিল্টার শর্তটি ব্যবহার করতে না চান, তাহলে সেলটি খালি রাখুন।
উদাহরণ সারণী
| পরিসংখ্যান আইডি | ইভেন্টের নাম | সম্পত্তির নাম | একত্রীকরণ | পরিসংখ্যান প্রদর্শনের নাম | পরিসংখ্যান বিবরণ | ফিল্টার বৈশিষ্ট্য (ঐচ্ছিক) | ফিল্টার অপারেটর (ঐচ্ছিক) | ফিল্টার মান (ঐচ্ছিক) | প্রতিযোগিতামূলক | সর্বনিম্ন সীমা | সর্বোচ্চ সীমা | আইকন ফাইলের নাম | ক্রমিক সংখ্যা | ভালো মূল্যের দিকনির্দেশনা | ইউনিট |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ১ | ম্যাচ সম্পন্ন হয়েছে | সময়কাল | ম্যাক্স | দীর্ঘতম ম্যাচ টিকে থাকা | এটি যেকোনো ম্যাচে একজন খেলোয়াড়ের টিকে থাকার সময়কে বোঝায়। | বিজয়ী | = | সত্য | সত্য | ০ | ৫০ | stat1.png | ১ | হ্রাস পাচ্ছে | সেকেন্ড |
| ২ | ম্যাচ সম্পন্ন হয়েছে | বিজয়ী | গণনা | ম্যাচ জয় | এটি একজন খেলোয়াড়ের জেতা ম্যাচের সংখ্যা নির্দেশ করে। | বিজয়ী | = | সত্য | সত্য | ০ | ৫০ | stat3.png | ২ | ক্রমবর্ধমান | |
| ৩ | ম্যাচ সম্পন্ন হয়েছে | হত্যা করে | যোগফল | ১-বনাম-১ ম্যাচে কিল | ১-বনাম-১ ম্যাচ জুড়ে করা কিল সংখ্যা | ম্যাচটাইপ | = | "এক-এক" | মিথ্যা | stat4.png | ৪ | ক্রমবর্ধমান | |||
| ৪ | আইটেম সংগ্রহ করা হয়েছে | মুদ্রার পরিমাণ | যোগফল | মোট সংগৃহীত সোনা | ম্যাচ খেলার সময় খেলোয়াড় কয়েন সংগ্রহ করে। | অস্ত্রের ধরন | = | "তরবারি" | মিথ্যা | stat2.png | ৩ | ক্রমবর্ধমান |
ProgressionStatConfig.csv ফরম্যাট
csv ফাইলটিতে ঘোষিত ইভেন্ট এবং তার প্রোপার্টিগুলো কমা দ্বারা পৃথক করা মান হিসেবে নিম্নলিখিত ক্রমে রয়েছে:
Stat ID, Stat Display Name, Stat Description, Icon File Name, Good value direction, unit
খেলোয়াড়ের গেমার প্রোফাইলে অগ্রগতির পরিসংখ্যানটি প্রথম পরিসংখ্যান হিসেবে দেখানো হবে।
উদাহরণ সারণী
| পরিসংখ্যান আইডি | পরিসংখ্যান প্রদর্শনের নাম | পরিসংখ্যান বিবরণ | আইকন ফাইলের নাম | ভালো মূল্যের দিকনির্দেশনা |
| ৫ | স্তর | খেলোয়াড়রা ম্যাচ খেলে এক্সপি অর্জন করে এবং লেভেল আপ করে। | লেভেল.পিএনজি | ক্রমবর্ধমান |
StatLocalizations.csv ফরম্যাট
csv ফাইলটিতে ঘোষিত ইভেন্ট এবং তার প্রোপার্টিগুলো কমা দ্বারা পৃথক করা মান হিসেবে নিম্নলিখিত ক্রমে রয়েছে:
Stat ID, Stat Display Name, Language Code, Localized Stat Name, Localized Stat Description
উদাহরণ সারণী
| পরিসংখ্যান আইডি | পরিসংখ্যান প্রদর্শনের নাম | ভাষা কোড | স্থানীয় পরিসংখ্যানের নাম (UTF-8) | স্থানীয় পরিসংখ্যান বিবরণ (UTF-8) | ১ | দীর্ঘতম ম্যাচ টিকে থাকা | ইএস | সুপারভিভেনশিয়া más larga en partidos | Esto denota el tiempo de supervivencia de una jugadora en cualquier partido. | ১ | দীর্ঘতম ম্যাচ টিকে থাকা | ফ্র | Survie du match le plus long | 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 |
পরিকল্পনাটি তৈরি করুন
আপনি গেম স্ট্যাটস এপিআই ব্যবহার করে দুই ধরনের ডেটা পাঠাতে পারেন: ফ্লেক্সিবল প্লেয়ার ইভেন্ট এবং প্লেয়ারের অগ্রগতির পরিসংখ্যানের জন্য একটি পূর্বনির্ধারিত ইভেন্ট। নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে যে বিভিন্ন ধরনের গেমে ফ্লেক্সিবল ইভেন্টগুলি কেমন দেখায়।
নমনীয় খেলোয়াড় ইভেন্ট
প্লেয়ার ইভেন্টগুলিকে গেমের স্বতন্ত্র মুহূর্ত, গেম লুপের সমাপ্তি, বা অগ্রগতির মাইলফলক দ্বারা সংজ্ঞায়িত করা হয়।
- ইভেন্টগুলিকে গেমের নির্দিষ্ট মুহূর্ত, গেম লুপের সমাপ্তি, বা অগ্রগতির মাইলফলক হিসাবে সংজ্ঞায়িত করুন :
- গেম লুপের সমাপ্তি, যেমন একটি সম্পূর্ণ ম্যাচ বা রান।
- অগ্রগতির মাইলফলক, যেমন সংরক্ষিত এলাকা অনুসন্ধানের অগ্রগতি বা একটি সম্পূর্ণ স্তর।
- ইভেন্ট এবং এর ফলাফল সম্পর্কে প্রাসঙ্গিক তথ্য দেওয়ার জন্য প্রপার্টি যোগ করুন , যেমন লেভেল নম্বর, ম্যাচের ধরণ, অস্ত্রের ধরণ, অস্ত্রের সংখ্যা, হেডশট, সংগৃহীত কয়েন, ম্যাচের ফলাফল, ল্যাপ টাইম বা গাড়ির ধরণ।
- গেমপ্লে সেশনের মধ্যে ইভেন্টগুলো ঘটার সাথে সাথেই পাঠিয়ে দিন । উদাহরণস্বরূপ, একটি গেম লুপ সম্পূর্ণ হওয়ার সাথে সাথেই লুপ সমাপ্তির ইভেন্টটি পাঠিয়ে দিন।
উদাহরণ
| খেলার ধরণ | ইভেন্ট লেবেল | গেমের মধ্যবর্তী মুহূর্ত / অগ্রগতিমূলক ঘটনা সম্পন্নকরণ / গেম লুপ সম্পন্নকরণ | ফলাফল | বৈশিষ্ট্য |
|---|---|---|---|---|
| রৈখিক অগ্রগতি ইন্ডি পাজল গেম | অধ্যায়_সম্পূর্ণ | অগ্রগতি ইভেন্টের সমাপ্তি | প্রযোজ্য নয় | অধ্যায় সংখ্যা, অধ্যায়ের নাম, চেষ্টার সংখ্যা, স্ক্রিনের সংখ্যা, চালের সংখ্যা, অধ্যায়ের বিষয়বস্তু |
| স্ক্রিন_সম্পূর্ণ | অগ্রগতি ইভেন্টের সমাপ্তি | অধ্যায় নম্বর, অধ্যায়ের নাম, চেষ্টার সংখ্যা, চালের সংখ্যা, অধ্যায়ের বিষয়বস্তু | ||
| 3D এন্ডলেস রানার | রান সম্পন্ন হয়েছে | গেম লুপ সমাপ্তি | সংগৃহীত মুদ্রা, স্কোর | দৌড়ের সময়কাল, জেটপ্যাক থেকে সংগৃহীত মুদ্রা, দৌড়ের শুরুতে ব্যবহৃত বুস্টার, ব্যবহৃত সার্ফবোর্ড, ব্যবহৃত চুম্বক, ব্যবহৃত জাম্পার, ব্যবহৃত জেটপ্যাক |
| ওপেন ওয়ার্ল্ড অ্যাকশন আরপিজি | এলাকা অন্বেষণ অগ্রগতি | অগ্রগতি ইভেন্টের সমাপ্তি | শত্রুরা পরাজিত, ঔষধ সংগ্রহ করা হয়েছে | এলাকা নম্বর, এলাকার নাম, শতকরা অগ্রগতি |
| অনুসন্ধান সম্পন্ন হয়েছে | গেম লুপ সমাপ্তি | প্রযোজ্য নয় | অনুসন্ধানের নাম | |
| অস্ত্র আনলক করা হয়েছে | খেলার মুহূর্ত | প্রযোজ্য নয় | অস্ত্রের নাম, অস্ত্রের স্তর | |
| বুক খোলা | খেলার মুহূর্ত | বর্ধিত আকরিক সংগ্রহ করা হয়েছে | ||
| আলংকারিক মেটা সহ সাধারণ ধাঁধা | ধাঁধাটি সম্পূর্ণ হয়েছে | গেম লুপ সমাপ্তি / অগ্রগতি ইভেন্ট সমাপ্তি | সংগৃহীত কয়েন, সংগৃহীত বুস্টার | চালের সংখ্যা, বাটলারের উপহার ব্যবহৃত হয়েছে কি?, লেভেলের ধরণ, লেভেল নম্বর, রঙিন বুস্টার ব্যবহৃত হয়েছে কি?, ডিনামাইট ব্যবহৃত হয়েছে কি? |
| কার্ড সংগ্রহ করা হয়েছে | খেলার মুহূর্ত | ১ স্টার কার্ড, ২ স্টার কার্ড, ৩ স্টার কার্ড, মোট কার্ড | অ্যালবাম নম্বর, অ্যালবামের নাম | |
| আর্কেড রেসিং | দৌড় সম্পন্ন হয়েছে | গেম লুপ সমাপ্তি | র্যাঙ্ক, ব্যবহৃত NOS, রেসের সময় | রেসের ধরণ, রেটিং, ব্যবহৃত গাড়ি |
| গাড়ি আপগ্রেড করা হয়েছে | খেলার মুহূর্ত | গাড়ির যে বৈশিষ্ট্যটি আপগ্রেড করা হয়েছে, পুরোনো স্তর / মান, নতুন স্তর / মান | গাড়ির ধরণ, বর্তমান গ্যারেজের স্তর | |
| তৃতীয় ব্যক্তি ব্যাটল রয়্যাল শুটার | ম্যাচ সম্পন্ন হয়েছে | গেম লুপ সমাপ্তি | এলিমিনেশন, হেডশট, অনার ভ্যালু | ম্যাচের ধরণ, টিকে থাকার সময় |
| ই-স্পোর্টস ম্যানেজমেন্ট সিমুলেশন | ম্যাচ সম্পন্ন হয়েছে | গেম লুপ সমাপ্তি | ফলাফল, গোল সংখ্যা, গোল | প্রতিপক্ষ দলের নাম, খেলার দলের নাম |
| প্রশিক্ষণ সম্পন্ন হয়েছে | খেলার মুহূর্ত | অনুশীলন সম্পন্ন, দলীয় খেলার ধরন আক্রমণ, দলীয় খেলার ধরন প্রতিরক্ষা, দলীয় খেলার ধরন বল দখল, দলীয় খেলার ধরন অবস্থা |
progressUpdate ইভেন্ট
আপনার গেমে যদি অগ্রগতির কোনো প্রধান কৌশল থাকে, তবে প্লেয়ারের বর্তমান অগ্রগতি পাঠানোর জন্য এই ইভেন্টটি ব্যবহার করুন। এই ইভেন্টের "currentProgress" নামে একটি পূর্বনির্ধারিত প্রপার্টি আছে, যার টাইপ হলো INT বা STRING। বর্তমান অগ্রগতির মানটি এই প্রপার্টি ব্যবহার করে পাঠান, কারণ গেমার প্রোফাইলের গেম স্ট্যাটস UI-তে শুধুমাত্র এই মানটিই দেখা যায়।
যেহেতু খেলোয়াড়রা গেমের মধ্যে বর্তমান অগ্রগতির মাধ্যমে তাদের প্রোফাইল তুলনা করতে পারে, তাই প্রথম ইন্টিগ্রেশনের পর বর্তমান অগ্রগতির মান পেতে যেন কোনো বিলম্ব না হয়, তা নিশ্চিত করা গুরুত্বপূর্ণ। খেলোয়াড়দের কাছে সঠিক বর্তমান অগ্রগতি তুলে ধরার জন্য, প্রতিটি গেম সেশনের শুরুতে এবং যখনই বর্তমান অগ্রগতিতে কোনো আপডেট আসবে, তখন progressUpdate ইভেন্টটি পাঠানো উচিত।
উদাহরণ
| খেলার ধরণ | `progressUpdate` ইভেন্টের `currentProgress` প্রপার্টি |
|---|---|
| রৈখিক অগ্রগতি ধাঁধা খেলা | বর্তমান অধ্যায় নম্বর বা স্তর নম্বর |
| ৩ডি এন্ডলেস রানার | সর্বোচ্চ স্কোর, বর্তমান বুস্টারগুলির ভারসাম্য |
| ক্যাজুয়াল পাজল | বর্তমান লেভেল নম্বর, প্রথম চেষ্টায় জয়ের সংখ্যা, সম্পন্ন করা এলাকার সংখ্যা, সম্পন্ন করা সংগ্রহের সংখ্যা |
| আর্কেড রেসিং | বর্তমান লেভেল নম্বর, মুদ্রার ব্যালেন্স |
| ওপেন ওয়ার্ল্ড অ্যাকশন আরপিজি | বর্তমান চরিত্রের র্যাঙ্ক, বর্তমান লেভেল নম্বর |
| তৃতীয় ব্যক্তি শুটার | বর্তমান স্তর নম্বর |
| ইস্পোর্টস সিমুলেশন | ম্যানেজার লেভেল নম্বর, ক্লাব লেভেল নম্বর |
একীকরণের বিবরণ
এপিআই এন্ডপয়েন্ট এবং এসডিকে প্রাথমিক মতামতের জন্য উপলব্ধ আছে এবং জুলাই ২০২৬ থেকে সর্বসাধারণের জন্য উপলব্ধ (GA) হবে। সময়রেখা দেখুন।
এই অংশে দেখানো হয়েছে কীভাবে ক্লায়েন্ট সাইড এবং সার্ভার সাইড উভয় ইন্টিগ্রেশনে ইভেন্ট তৈরি ও প্রেরণ করতে হয়।
কখন ডেটা পাঠানো উচিত
ফ্লেক্সিবল ইভেন্টগুলো গেম লুপ সমাপ্তি বা গেমের নির্দিষ্ট মুহূর্তের সাথে সম্পর্কিত ইন-গেম অ্যাকশনকে বোঝায়। এই ইভেন্টগুলো ঘটার সাথে সাথেই সাবমিট করুন। উদাহরণস্বরূপ, লুপটি সম্পূর্ণ হওয়ার সাথে সাথেই গেম লুপ সমাপ্তির ইভেন্টটি সাবমিট করুন।
progressUpdate ইভেন্টটি একজন খেলোয়াড়ের বর্তমান অগ্রগতির স্তর নির্দেশ করে। নিম্নলিখিত পরিস্থিতিগুলিতে এই ইভেন্টটি ব্যবহার করে অগ্রগতির পরিসংখ্যানের ডেটা পাঠানো উচিত:
- যখনই বর্তমান অগ্রগতিতে কোনো আপডেট আসবে, সর্বশেষ মানটি অবিলম্বে পাঠিয়ে দিন।
- যখনই কোনো খেলোয়াড় গেমটি চালু করে, তখন এই পরিসংখ্যানটি তার জন্য সর্বদা উপস্থিত থাকা নিশ্চিত করা হয়।
একীকরণ পথ
ইন্টিগ্রেশনের দুটি পথ রয়েছে - ক্লায়েন্ট এবং সার্ভার থেকে সার্ভার।
সার্ভার থেকে সার্ভার ইন্টিগ্রেশন
একটি পাবলিক এপিআই এন্ডপয়েন্ট আপনাকে নিম্নলিখিত কনফিগারেশনগুলি ব্যবহার করে রিকোয়েস্ট পেলোডে ইভেন্ট পাঠাতে দেয়:
পথের পরামিতি
| প্যারামিটার | ডেটা টাইপ | বর্ণনা |
|---|---|---|
| প্লেয়ার আইডি | স্ট্রিং | খেলোয়াড়ের পিজিএস আইডি। |
অনুমোদন এবং প্রমাণীকরণ
OAuth 2.0 ব্যবহার করে প্লে গেমস সার্ভিসেস-এ সার্ভার-সাইড অ্যাক্সেসের সাধারণ নির্দেশিকা অনুসরণ করে সার্ভার-টু-সার্ভার এপিআই কল করা হয়। অনুরোধের সাথে অবশ্যই 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 }
প্রতিক্রিয়া দেহ
সফল হলে, একটি খালি JSON অবজেক্ট সহ HTTP 200 OK স্ট্যাটাস ফেরত দেয়।
অনুরোধের বডির উদাহরণ
নমনীয় ইভেন্ট: প্লেয়ারগেমইভেন্ট
{ "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 } } ] }
ক্লায়েন্ট সাইড ইন্টিগ্রেশন
ইউনিটি, জাভা এবং সি++ এসডিকে ব্যবহার করে ক্লায়েন্ট সাইড ইন্টিগ্রেশন উপলব্ধ করা হবে।
PlayerGameEvent এর ক্লায়েন্ট সাইড ইন্টিগ্রেশনের জন্য আপনাকে SDK-এর উপর নির্ভর করে Java বা Csharp-এ ট্রিগার পয়েন্টগুলোতে ইভেন্ট অবজেক্ট তৈরি করতে হবে এবং 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);
সময়রেখা
| তারিখ | গেম পরিসংখ্যান এপিআই ইন্টিগ্রেশন | গেম পরিসংখ্যান কনফিগারেশন |
| জুন ২০২৬ |
| উপলব্ধ নয় |
| জুলাই ২০২৬ |
|
|
| আগস্ট ২০২৬ | প্রযোজ্য নয় |
|
| সেপ্টেম্বর ২০২৬ | প্রযোজ্য নয় |
|