حوّل لعبتك في Unity إلى بناء اختبار لعب خاص بـProtokite، خطوة بخطوة.
Protokite Playtest حزمة اختيارية لـUnity تحوّل بناءً من لعبتك إلى بناء اختبار لعب. وما دام اختبار
اللعب قائمًا، يصبح كل تشغيل للعبة جلسةً واحدة في صفحة Sessions الخاصة بالاختبار، ويقرّر الاختبار ما
تجمعه تلك الجلسة. ولا تحتاج إلى أي شيفرة: ثبّتها، ووجّهها إلى اختبار اللعب لديك، وسجّل دخول لاعب، ثم
اضغط Play.
احصل على الحزمة
يثبّتها تبويب Playtesting في حزمة Flock بنقرة واحدة. ويُرفق الملف
ProtokitePlaytest-<version>.unitypackage أيضًا بكل إصدار من حزمة Flock لـUnity، وبالرقم ذاته.
جلسة واحدة لكل تشغيل، باسم معرّف اللاعب على Steam أو معرّف الجهاز لهذا التثبيت
صفحة Sessions في Protokite
تسجيل الفيديو
تسجيل لشاشة اللعبة، يُرفع عند انتهائه
مشغّل التسجيل في الجلسة
التحليلات الثقيلة
نافذة أداء لكل عشر ثوانٍ من اللعب، وكل تحميل مشهد، وأحداث اختبار اللعب الخاصة بك
Dashboards → Game Metrics في Flock، ضمن فئة playtest
التقاط الاستثناءات
لا شيء إضافي — فحزمة Flock تبلّغ عن الاستثناءات بإعدادها الخاص، مهما شغّل اختبار اللعب
Diagnostics → Errors في Flock
نموذج ملاحظات منشور
إجابات اللاعب
بطاقة الجلسة، وصفحة Feedback form الخاصة بالاختبار
وكلٌّ منها يُشغَّل أو يُطفأ من صفحة الاختبار في Protokite، فتغيير ما يجمعه اختبار اللعب لا يحتاج إلى
بناء جديد — ويُسأل اللاعب أولًا، فلا يجمع التشغيل إلا ما سمح به. راجع اضغط Play.
وكل ميزة مشروحة في صفحة ما الذي يجمعه اختبار اللعب.
حزمة Flock مُعدّة وتعمل في المشروع: Api Url وApi Key وGame Name وGame Version في
Flock → Settings، مع قيمة ظاهرة في Resolved Version ID. راجع صفحة
حزمة تطوير Unity.
هناك اختبار لعب في Protokite. وإنشاء واحد يُنشئ له إصدار لعبة في Flock، اسمه pt- يليه معرّف
الاختبار.
يُسجَّل الفيديو على Windows بنواة 64 بت وعلى Android. وأما بقية المنصّات فتشغّل سائر أجزاء اختبار اللعب،
وتذكر مرة واحدة في السجل أنها لا تسجّل فيديو. راجع المنصّات.
من شريط قوائم Unity اختر Flock → Settings ثم تبويب Playtesting. يذكر التبويب رقم الإصدار الذي
سيثبّته، وهو دائمًا مطابق لإصدار حزمة Flock لديك.
Flock → Settings → Playtesting قبل تثبيت الحزمة.
2
اضغط Install Protokite Playtest
ينزّل الحزمة من إصدار حزمة Flock ويستوردها إلى Assets/ProtokitePlaytest، دون حاجة إلى Git. تصرّفها
Unity، ثم يعرض التبويب الإصدار المثبّت مع زرّين تستعملهما في الخطوات التالية: Open Playtest
Settings وCheck Playtest Setup.
التبويب نفسه بعد تثبيت الحزمة: إصدارها، وموضعها، والأزرار التي تحتاجها في الخطوات التالية.
طريقتان أخريان، وكلتاهما بإصدار حزمة Flock نفسه: انقر نقرًا مزدوجًا على
ProtokitePlaytest-<version>.unitypackage من صفحة الإصدارات، أو أدخل في Window → Package Manager → + →
Add package from git URL العنوان
https://github.com/QwackStack/FlockUnitySDK.git?path=/ProtokitePlaytest~#v<version> (وهذه الطريقة تحتاج
إلى Git مثبّتًا). واترك الحزمة خارج المشاريع التي لا تُجري اختبارات لعب.
يجد Protokite اختبار اللعب من إصدار Flock الخاص باختبار اللعب نفسه. ويرسله البناء إلى Protokite وحده: فيبقى
Game Version إصدار لعبتك، ومعه كل ما أعددته تحته في Flock.
1
شغّل اختبار اللعب
اختر Protokite → Playtest → Settings، أو اضغط Open Playtest Settings في تبويب Playtesting. في
المرة الأولى يُنشأ الملف Assets/Resources/ProtokitePlaytestSettings.asset واختبار اللعب مطفأ، ويُحدَّد
في نافذة Inspector. فعّل Playtesting Enabled.قيمة Protokite Api Url مضبوطة مسبقًا على بيئة الإنتاج، https://api-protokite.qwacks.com؛ لا تغيّرها
إلا لتشير إلى Protokite محلي مثل http://localhost:8020. يجب أن يبدأ العنوان بـhttp:// أو https://
وألا يحوي مسافات؛ والعنوان المخالف يُرفض بدل أن يُصحَّح.
Protokite → Playtest → Settings: المفتاح، وعنوان Protokite، وPlaytest ID مع الإصدار الذي حُوِّل إليه وما وجده Flock، والسؤال الموجّه إلى اللاعب، ونموذج الملاحظات، وإعدادات التسجيل.
2
ألصق معرّف اختبار اللعب
افتح الاختبار في Protokite وانسخ معرّفه: معرّف إصدار Flock الذي تعرضه كتلة SDK فيه، أو معرّف الاختبار
نفسه من عنوان الصفحة (بعد /tests/). وألصق أيًّا منهما في Playtest ID في إعدادات اختبار اللعب. فيجد
المحرّر إصدار اختبار اللعب عبر Flock، ويعرضه في Resolved Version ID، ويذكر تحته ما وجده Flock.
يبقى Game Version إصدار لعبتك. فطلبات اختبار اللعب إلى Protokite وحدها تحمل إصدار اختبار اللعب، لذا تبقى
قوالب اللاعبين والإعدادات والمتجر تعمل في بناء اختبار اللعب.
اترك Playtest ID فارغًا ينضمّ البناء إلى أحدث اختبار لعب للعبتك، أيًّا كان الأحدث في Protokite حين يبدأ البناء،
حتى لو كان اختبارًا أغلقته. والاختبار الذي يُنشأ بعد ذلك يُنضمّ إليه من التشغيل التالي، لا في منتصف تشغيل. املأ
Playtest ID لتختار. ويبقى Game Version الذي هو نفسه اسم اختبار لعب، أي pt- يليه معرّف الاختبار، ينضمّ إلى
ذلك الاختبار، كما كان قبل 1.68.0.
معرّف Playtest ID الذي لم يُحوَّل إلى اختبار لعب يُبقي اختبار اللعب مطفأً، ويُرفض البناء الذي فيه Playtesting
Enabled مفعّل حتى يُحوَّل. افتح إعدادات اختبار اللعب حين يمكن الوصول إلى Flock؛ وResolve Again يعيد السؤال.
اختر Protokite → Playtest → Setup Checks And Test Video، أو اضغط Check Playtest Setup في تبويب
Playtesting. تفحص النافذة ما يحتاجه بناء هذا المشروع لاختبار اللعب. والفحص الناجح عليه علامة صح خضراء ويقول
ذلك:
ما تقوله النافذة
حين
Playtesting is turned on
توجد إعدادات اختبار اللعب وPlaytesting Enabled مفعّل
Protokite API URL is usable
يكون العنوان عنوان http أو https له مضيف ولا مسافات فيه
Playtest ID chooses this build’s playtest
يكون Playtest ID محوَّلًا إلى إصدار اختبار لعب
The game’s newest playtest
يكون Playtest ID فارغًا، فينضمّ البناء إلى أحدث اختبار لعب للعبة
Game Version is a playtest’s version
حين يكون Playtest ID فارغًا: تكون قيمة Game Version في Flock اسمَ اختبار لعب، pt-<test id>، محوَّلًا إلى المعرّف الذي يرسله البناء
Players built for this platform record video
تكون منصّة البناء Windows بنواة 64 بت (x64)، أو Android مع تشغيل Record Video On Android
Protokite → Playtest → Setup Checks And Test Video، لمشروع يُبنى لـAndroid: الفحوص الأربعة كلها ناجحة.
الفحص الذي يفشل عليه علامة حمراء، ويذكر ما يجب تغييره، ومعه زر يفتح موضع التغيير: Open Playtest Settings أو
Open Flock Settings أو Open Build Settings، أو Resolve Playtest ID، أو Set Game Version To pt-… حين
يكون Playtest ID فارغًا وقد ألصقت معرّف الاختبار في Game Version. ويُفحص Playtest ID، أو Game Version حين يكون فارغًا،
مع Flock عند فتح النافذة وكلما تغيّرت الإعدادات؛ وCheck Again يعيد السؤال.وظهور «Players built for … record no video» لا يوقف اختبار اللعب: البناء لمنصّة أخرى يشغّل كل شيء آخر ولا
يسجّل فيديو.
اختبار اللعب لا يسجّل دخول أي لاعب أبدًا. تبدأ جلسته حين تصل جلسة Flock إلى الخادم، وتبدأ جلسة Flock
حين تسجّل لعبتك دخول لاعب، مع تفعيل Analytics Enabled وAnalytics Auto Start Session في Flock →
Settings → Advanced Settings (أو حين تستدعي StartSessionAsync)، ومع منح الموافقة حين يكون Analytics
Require Explicit Consent مفعّلًا.ويكفي تسجيل الدخول بالجهاز، ولا يحتاج إلى حساب:
في المرة الأولى التي يسجّل فيها جهاز دخوله، سجّله بـRegisterWithDeviceAsync بدلًا من ذلك؛ وصفحة
حزمة تطوير Unity تشرح تسجيل الدخول كاملًا. وفي مثال الحزمة زر Sign In
With This Device يفعل الأمرين، لبناء لا شاشة تسجيل دخول له.
يسأل البناء لاعبه عمّا يجوز لاختبار اللعب أن يجمعه، ولا يجمع شيئًا حتى يجيب. يُرسم السؤال فوق اللعبة
بمجرد تحميل اختبار اللعب الخاص بهذا البناء، ويعرض أربع إجابات: تسجيل الشاشة وجمع بيانات اللعب، أو الشاشة
وحدها، أو بيانات اللعب وحدها، أو لا شيء على الإطلاق — وهي تجعل البناء يتصرّف كما لو كان Playtesting
Enabled مطفأً.
السؤال الذي يطرحه بناء اختبار اللعب على لاعبه، فوق اللعبة، قبل أن يجمع أي شيء.
ويُجاب بالفأرة، أو بلمسة على الهاتف. وما دام السؤال على الشاشة يظهر المؤشّر حرًّا، ويعود كما كانت لعبتك تضبطه بعد أن يجيب
اللاعب. ولا تكون أي إجابة محدّدة حين يظهر، فلا يضغط مفتاح Submit الخاص بلعبتك أي إجابة، وتُتجاهل النقرة في
نصف الثانية الأولى من ظهوره.
إنه سؤال اختبار اللعب نفسه. أما Analytics Require Explicit Consent في حزمة Flock فسؤال آخر، تطرحه
لعبتك بكلماتها عن تحليلات لعبتك. ولا تغيّر أيٌّ من الإجابتين الأخرى، والسؤال يقول ذلك أمام اللاعب.
تُحفظ الإجابة على جهاز اللاعب ويستعملها كل تشغيل لاحق، ويحمل كل بدء جلسة القيمتين playtest_consent و
playtest_consent_asked، فتُقرأ الجلسة التي لا تسجيل فيها على أنها للاعب طلب ألا يُسجَّل شيء، لا لبناء أخطأ.
ولكي يُطرح السؤال مجددًا في المحرّر، اضغط Forget This Machine’s Answer في نافذة الإعداد.وعلى الهاتف يتبعها سؤال ثانٍ بعد إجابة تسمح بتسجيل الشاشة: هل يجوز رفع التسجيلات على بيانات الهاتف أم تنتظر Wi-Fi. راجع
على الهاتف: الشبكات التي تُرفع عليها التسجيلات.ويمكن للعبتك أن تتولّى السؤال من قوائمها:
ProtokitePlaytest.PlaytestConsent // the answer in forceProtokitePlaytest.SetPlaytestConsent(ProtokitePlaytestConsentChoice.VideoOnly); // answer it; NotAnswered asks againProtokitePlaytest.AskForPlaytestConsent(); // put the question on screen againProtokitePlaytest.IsConsentQuestionOpen // while it is on screen
لا تُطفئ Ask The Player For Playtest Consent في إعدادات اختبار اللعب إلا حيث يُسأل لاعبوك بطريقة أخرى،
أو في تشغيل اختباري لا أحد فيه ليجيب؛ عندها يجمع البناء ما يشغّله اختبار اللعب، وتذكر كل جلسة أن اللاعب لم
يُسأل. والإجابة التي أعطاها لاعب من قبل تبقى معتبرة.
تذكر نافذة Console ما يفعله اختبار اللعب، وكل سطر يبدأ بـ[Protokite Playtest]:
[Protokite Playtest] The playtest's consent question is on screen; nothing is collected until the player answers it.[Protokite Playtest] Playtesting is ready: playtest 01JABCDEFGHJKMNPQRSTVWXYZ0 is loaded, with features exception_capturing, heavy_analytics, video_recording and a feedback form.[Protokite Playtest] Recording video for the playtest to …/recording-….mp4.part, at 1280x720 and 15 frames a second, as H.264. It stops for good after 60 minutes of play, before the file passes 1536 MB, or when the game stops it.[Protokite Playtest] Protokite session 01J… started for this launch, with the player's device id and Flock session 01J….
بعدها تظهر الجلسة في صفحة Sessions الخاصة باختبار اللعب. وتنتهي حين تُغلق اللعبة؛ وينتظر الإغلاق حتى 3
ثوانٍ ليستلم Protokite نهايتها. ولا ينهيها تسجيل الخروج ولا جلسة Flock جديدة ولا إعادة تشغيل حزمة Flock ولا
يعيد بدءها: التشغيل الواحد جلسة واحدة. وفي الشيفرة، تجيب ProtokitePlaytest.Status عن السؤال نفسه الذي
يجيب عنه السجل، وتعطي ProtokitePlaytest.Describe(status) كلمات السجل.
تذكر نافذة Console السبب وما يجب تغييره، مرة واحدة، على شكل تحذير.
الحالة
معناها
الحل
TurnedOff
Playtesting Enabled مطفأ، أو لا إعدادات لاختبار اللعب في المشروع
فعّله في Protokite → Playtest → Settings
ProtokiteApiUrlMissing
عنوان Protokite فارغ
اضبط Protokite Api Url (بيئة الإنتاج هي https://api-protokite.qwacks.com)
ProtokiteApiUrlUnusable
لا http:// ولا https://، أو لا مضيف، أو فيه مسافة
صحّح العنوان؛ فهو لا يُشذَّب عنك أبدًا
WaitingForFlock
كل شيء مضبوط؛ ولم تبدأ حزمة Flock بعد
لا شيء — يتابع حين تبدأ حزمة Flock
FetchingPlaytestConfig
يسأل Protokite عن اختبار اللعب الخاص بهذا البناء
لا شيء
PlaytestNotLinked
لا اختبار لعب في Protokite لهذا البناء: لا شيء للإصدار الذي يطلبه، أو، حين يكون Playtest ID فارغًا، لا اختبار في اللعبة أصلًا
ألصق معرّف اختبار اللعب في Playtest ID، أو أنشئ اختبار لعب
PlaytestIdNotResolved
Playtest ID مضبوط لكنه لم يُحوَّل إلى اختبار لعب، فلا يُطلب أي اختبار
افتح إعدادات اختبار اللعب حين يمكن الوصول إلى Flock
ProtokiteRefusedApiKey
رفض Protokite مفتاح واجهة Flock البرمجية
تحقّق من Api Key في Flock → Settings
PlaytestConfigUnavailable
ظلّ Protokite أو الشبكة يفشلان
لا شيء — يُسأل مجددًا حين تبدأ جلسة Flock التالية
PlaytestConfigForAnotherVersion
أجاب Protokite باختبار لعب لإصدار آخر، كما يفعل وسيط يُسقط الترويسات
تحقّق ممّا يقع بين اللعبة وProtokite
PlaytestNoLongerCollecting
أُغلق اختبار اللعب
أعد فتحه في Protokite، أو اجعل Playtest ID معرّف اختبار قائم
WaitingForPlayerConsent
اختبار اللعب محمَّل، ولم يذكر اللاعب ما يجوز له أن يجمعه
لا شيء — السؤال على الشاشة
PlayerRefusedPlaytest
طلب اللاعب ألا يُجمع شيء
لا شيء — هذه إجابته
والرفض (PlaytestNotLinked وProtokiteRefusedApiKey وPlaytestConfigForAnotherVersion) لا يُسأل عنه مجددًا
حتى تبدأ حزمة Flock من جديد أو يُعاد تشغيل اللعبة، إذ ستكون الإجابة نفسها.
أطفئ Playtesting Enabled قبل أن تبني إصدار النشر. ومع Playtest ID يكون Game Version إصدار لعبتك أصلًا؛
ومن دونه أعِد Game Version إلى إصدار نشر أيضًا. ويبقى بناء النشر
يرفع أي تسجيل لم يستطع بناء اختبار لعب سابق على ذلك الجهاز إرساله، فلا يضيع تسجيل لاعب أبدًا؛ ومع إطفاء
اختبار اللعب لا يُسجَّل شيء آخر ولا يُرسَل. ولإزالة الحزمة اضغط Remove في تبويب Playtesting. ويبقى ملف
الإعدادات حتى تحذفه.
يسجّل بناء اختبار اللعب شاشة اللاعب حين يشغّل الاختبار الفيديو، ويرسل ما يكتبه في نموذج الملاحظات. يسألهم
البناء أولًا ويفعل ما يجيبون به، لكن أخبر مختبريك قبل أن يلعبوا على أي حال: ما الذي يُسجَّل، وأنه يذهب إلى
اختبار اللعب الخاص باستوديوك في Protokite، وكيف يصلون إليك ليُحذف. وذلك السؤال يخصّ هذا الاختبار وحده — أما
ما تجمعه لعبتك بنفسها فما زال عليك أن تسأل عنه.