عن CrossVoice
أحب ألعابًا مثل Mordhau وHunt: Showdown، وقد أعجبني دائمًا نظام العبارات الصوتية في Mordhau، وفي Chivalry 2 أيضًا. وفي مرحلة ما بدأت أتساءل كيف يمكنني استخدام الآلية نفسها في Hunt: Showdown، ولمَ لا، في أي لعبة أخرى فيها دردشة صوتية.
تحوّلت تلك الفكرة إلى نموذج أولي بلغة Python كان يعمل عبر أجهزة صوت افتراضية. نجحت الفكرة، لكن لأسباب مختلفة بقي المشروع على الرف عدة سنوات.
لاحقًا صادفت لوحات أصوات مثل Soundpad ورأيت ما يمكنها فعله بتشغيل الأصوات عبر الميكروفون. لكن كل لوحة أصوات وجدتها كانت تعمل بالطريقة نفسها: مفتاح واحد، صوت واحد. دفعني ذلك إلى استئناف المشروع والمضي به أبعد بكثير من النموذج الأولي الأصلي. وبدأت التجريب بلغة C++ لبناء حل صوتي أصلي يمنحني تحكمًا حقيقيًا في طريقة معالجة الصوت وبثّه.
ومن هناك بنيت بقية التطبيق بلغة C#، بدءًا بواجهة لإدارة الملفات الشخصية وإعداد الأوامر الصوتية. وسرعان ما أدركت أن تشغيل الأصوات لم يكن سوى جزء من المشكلة: كان على كل شيء أيضًا أن يعمل مع الدردشة الصوتية في كل لعبة، بما فيها الألعاب التي تستخدم «اضغط للتحدث». وقادني ذلك إلى توجيه الصوت والتعامل مع لوحة المفاتيح على مستوى منخفض، كي تُدار ضغطات المفاتيح تلك بشكل موثوق.

ومع تقدّم التطوير، كبر CrossVoice. تطوّرت الملفات الشخصية لتنظّم الأوامر في صفحات، مع مفاتيح ومفاتيح تعديل، ونسخ صوتية، وإعدادات مثل مستوى الصوت وحدّة الصوت وسرعة التشغيل. وأضفت أيضًا طبقة علوية دائمة لتتمكن من استخدام التطبيق والتحكم فيه أثناء المباراة، دون مغادرة اللعبة.
كان هدفي دائمًا ألا يعتمد CrossVoice على لعبة بعينها. تُعدّ ملفاتك الشخصية على طريقتك وتستخدمها في مختلف الألعاب، دون تكاملات خاصة بكل لعبة ودون أن يحتاج التطبيق إلى معرفة ما تلعبه.
عند تلك المرحلة، لم يعد من المنطقي أن يبقى كل ذلك العمل حبيس ملفاتي الشخصية. فلمَ لا أتيح للاعبين مشاركة ملفاتهم والاستمتاع بما يبدعه المجتمع؟ هكذا تشكّل جانب المجتمع في CrossVoice.
وهكذا نما CrossVoice من نموذج أولي بلغة Python إلى المشروع الذي هو عليه اليوم. ما بدأ فكرةً أثناء لعب Mordhau وHunt: Showdown أصبح مشروعًا أكثر طموحًا بكثير، بنيت فيه ووسّعت كل جزء من التطبيق تقريبًا.
— Raúl Mateo