أول لعبة فيديو لـ Alice ، أو مساعد صوت كوحدة تحكم لعبة



في العمل ، أقوم بإنشاء مهارات مفيدة لـ Alice ، وحاولت في وقت فراغي استخدام مساعد صوتي للعب مع الأصدقاء في بيئة منزلي. لقد سبق أن وصفت تطوري للعبة نصية لواحد أو اثنين من اللاعبين ، ولكن هذه المرة أشارك تجربتي في إنشاء لعبة فيديو لشركة بأكملها.

قواعد اللعبة


لم أكن أرغب في نقل لعبة حالية إلى Alice ، أردت أن أتوصل إلى لعبة أصلية تستخدم قدرة Alice على التعرف على الكلام.

تظهر الكثير من الصور في دوائر ومربعات بألوان مختلفة على الشاشة. تتمثل مهمة اللاعب في اكتشاف زوج من الكائنات على نفس الخلفية وتشكيل عبارة من النموذج: adjective + noun. علاوة على ذلك ، يجب أن تتشكل الصفة من كائن في دائرة ، وأسم من كائن في مربع. ومن هنا جاء اسم اللعبة - "Round Square".

اللاعب الذي دعا العبارة يحصل على نقاط. الفائز هو الذي سجل 10 نقاط أو أكثر النقاط خلال الجولة (دقيقتان). يتم عرض طريقة اللعب في مقطع فيديو قصير.


لقد قررنا القواعد - انتقل إلى التقنية.

تحكم


لعرض ساحة اللعب ، أستخدم تلفزيونًا كبيرًا أفتح عليه موقع اللعبة. إذا لم يكن التلفزيون لديه اتصال بالإنترنت ، يمكنك عرض الصورة من الكمبيوتر عليه أو اللعب على الشاشة.

الجزء البصري من اللعبة مكتوب بلغة JavaScript. كل الكائنات: يتم إنشاء الملعب و HUD - بواسطة أساليب Canvas 2D API لرسم المستطيلات والنصوص والصور. مرة واحدة كل 50 مللي ثانية ، يتم تحديث الشاشة. تتركز جميع الشفرات في ملف HTML واحد ، بما في ذلك الصور المشفرة بتنسيق Base64.

أنت الآن بحاجة إلى تطبيق واجهة تقبل عبارات اللاعب. لحسن الحظ ، يتم حل مهمة التعرف على الكلام من قبل المساعدين الصوتيين. توفر Yandex هذه الخدمة مجانًا لمستخدمي ومطوري التطبيقات الصوتية (المهارات) الخاصة بـ Alice.

أضف مهارة تشغيل المساعد الصوتي. يمكن الآن لكل لاعب تنشيط التطبيق الصوتي على هواتفهم الخاصة أو في مكبر صوت ذكي وإرسال نسخ متماثلة إلى الموقع عبر ميكروفون.


الخلفية


يبقى لربط النسخة المتماثلة للمستخدم مع لعبة طرف معين. للقيام بذلك ، نحتاج إلى خادم: يتم إنشاء رقم لكل دفعة ، وتقوم صفحة HTML بتسجيله على الخادم وعرضه على المستخدم. يقوم المستخدم باستدعاء هذا الرقم إلى المساعد الصوتي ، ويقوم الأخير بتسجيل لاعب جديد في اللعبة المقابلة من خلال ربط الويب الخاص بالخادم. يتم نقل النسخ المتماثلة للمستخدم اللاحقة إلى لعبته من خلال WebSocket.

يبدو رمز العميل لإنشاء مقبس ويب وإعادة الاتصال عند قطع الاتصال كما يلي:
function start(websocketServerLocation){ ws = new WebSocket(websocketServerLocation); ws.onopen = function(){ gameN = game.id; }; ws.onclose = function(){ gameN = "--"; start(HOST); }; wsSend({"gameId": game.id}); } start(HOST); 

عند الاتصال بالخادم ، يرسل العميل إليه رقم اللعبة. يوجد أدناه رمز الخادم الذي ينشئ اتصالًا ويبدأ التحكم في اللعبة بالرقم المقبول:

 const wss = new SocketServer({ server }); wss.on('connection', (ws) => { ws.on('close', () => { remConn(ws.gameId); }); ws.on('message', msg => { const data = JSON.parse(msg); if (data.gameId) { ws.gameId = data.gameId.toString(); addGame(ws); } }); }); 

في هذه الحالة ، يمكن للخادم نفسه عرض الصفحات على المتصفح والرد على روابط الويب الخاصة بـ Alice:

 var server = express().use(bodyParser.json()).use('*', (req, res) => { if (req.body && req.body.request) { //   toAnswer  - res.json({ version: req.body.version, session: req.body.session, response: toAnswer, }); } else { // -   res.sendFile(INDEX); } }).listen(PORT); 

الخاتمة


وكانت النتيجة لعبة فيديو أصلية للشركة. تم نشره في أليس في 28 نوفمبر 2018 وأصبحت أول لعبة فيديو أعرفها لهذا المساعد الصوتي.

بالمناسبة ، حتى قبل ظهور Alice و Google Assistant ، شعر الناس بمشجعي التحكم الصوتي في الألعاب . بفضل انتشار الأجهزة ذات الميكروفونات ومكبرات الصوت ، وبفضل تطوير تقنية الكلام ، أصبح المساعدون الصوتيون أدوات تحكم في الألعاب توفر تجربة مستخدم جديدة.

Source: https://habr.com/ru/post/ar435012/


All Articles