السلام عليكم ورحمة الله وبركاته.
الكثير منا، مطوري الألعاب، يعتقد بأن عملية تسجيل وإضافة الملفات الصوتية هي أسهل عملية أثناء تطوير لعبة أو مشروع، ولكن هذا المنظور ينتج عنه مشاكل كثيرة، من ضعف الأداء إلى أصوات بجودة سيئة في المشروع.
من الجيد أنه هناك بعض المعايير والإعدادات التي تعتبر أساسية، حيث أنه عند اتباعها، فعلى الأقل يضمن المطور عدم تأثير الملفات الصوتي بشكل سلبي على الأداء، وكل ما يتبقى هو تسجيلها بالشكل الصحيح.
والآن لنبدأ شرحنا عن أفضل الإعدادات للملفات الصوتية بمناقشة نوعي الأصوات المختلفين.
الأصوات الأحادية Mono والأصوات المجسمة Stereo
ملاحظة: مع أنه من الأفضل قراءة الشرح بالكامل، يمكن الاختصار إلى الخلاصة هنا.
هناك نوعان من الأصوات، الأحادية Monophonic وال Stereophonic أو الأصوات المجسمة، سأشير إليها بالأصوات “المتعددة”.
لكي نفهمهما، يجب أولاً أن نعرف الفرق بين “المتحدث” Speaker و “القناة” Channel.
القناة هي مصدر الصوت، في حالتنا، يكون الملف الصوتي المعالج في محرك الألعاب أو برنامج اللعبة.
بعد معالجة الصوت، يجب أن يذهب إلى ال Speaker، وهو ما نسمع من خلاله الصوت.
وفي العادة، يكون هناك متحدثين اثنين، أي مثلا سماعتا أذن، واحدة لليمين والأخرى لليسار، لذلك سنفترض وجود متحدثين فقط في شرحنا.
في الأصوات الأحادية، يكون هناك قناة واحدة مسؤولة عن معالجة الصوت، وترسل الصوت نفسه ليخرج من خلال المتحدثين المتوفرين.
لهذا نشعر أن الصوت يأتي من “المركز”، وفي حالة الألعاب ثلاثية الأبعاد، لا يمكن تحديد موقع حدوث الصوت.
في الأصوات المتعددة، يكون هناك أكثر من قناة، وغالبًا قناتين اثنتين، كل واحدة تقوم بمعالجة الصوت بنفسها لترسله بمستوى محدد..
وكل قناة تكون مرتبطة بمتحدث، وفي افتراضنا، يمكن للقناة الأولى أن ترتبط بالسماعة اليمنى والقناة الثانية بالسماعة اليسرى.
وهذا رسم توضيحي يوضح الفارق:

لذلك عند استخدام الأصوات المتعددة يمكن محاكاة الأصوات في الواقع، كالتحكم بموقع واتجاه الصوت..
فعند ربط قناة باليمين وقناة باليسار، يكون ذلك عن طريق تغيير مستوى الصوت وحدّته في أحد القناتين. كأن تقوم بزيادة المستوى في القناة اليمنى وتخفيفه في القناة اليسرى لجعل الصوت يبدو وكأنه آت من اليمين.
هل علي استخدام أصوات أحادية أم “متعددة”؟
بشكل عام، ذلك يعتمد على الذوق واللعبة والمتطلبات، ولكن كقواعد عامة، هناك بعض القيود والممارسات التي قد تسهل العملية:
أولاً، بالنسبة للأصوات السريعة والتي يتم تعميمها على كامل المشهد، والتي لا نحتاج لملاحظة موقع حدوثها، كالتفاعل مع عناصر الواجهة أو المؤثرات البصرية..
فإن استخدام الأصوات المتعددة لها لن يحقق فائدة كبيرة. وستأخذ مساحة أكبر من لو أنها كانت أحادية.
ولكن مع ذلك فهذا يعتمد على المشروع والجودة اللازمة، فمثلاً لألعاب محاكاة الأدوات الموسيقية، من الطبيعي الاهتمام بالجودة أكثر من المساحة.
ثانيًا: بالنسبة للموسيقى والحلقات (كالخلفية للبيئة أو المرحلة) فاستخدام الأصوات المتعددة لها يعد أمرًا جيدًا، وخاصة في تجارب وألعاب الـVR و AR، حيث أنها ستعطي عمق أكبر للتجربة.
ولكن يجب توخي الحذر في أجهزة الهواتف المحمولة، فالكثير من اللاعبين لا يستخدمون سماعتا الأذن أثناء اللعب، لذلك قد لا يكون هناك فائدة محرزة من استخدام أصوات متعددة (تذكر أن معظم الهواتف لها سماعة أحادية)
ثالثًا، بالنسبة للأصوات التي يجب جعلها ثلاثية الأبعاد، أي أن موقع صوتها يتغير بتغير موقع اللاعب:
في معظم محركات الألعاب، يكون هناك خاصية يمكن تفعيلها عند تشغيل الأصوات وهي ال Spatial Sound أو الصوت المكاني.
عند تفعيل هذه الخاصية، في الغالب سيتم استخدام قناتين لإرسال الصوت، واحدة للسماعة اليمنى والأخرى لليسرى، وسيتم تغيير مستوى الصوت لكل قناة بناء على موقع المستمع من مصدر الصوت.
وفي معظم الألعاب، يكون المستمع هو الكاميرا، فمثلاً إذا صدر صوت يقع على يمين الكاميرا، سيتم زيادة حدته في السماعة اليمنى، وخفضه في السماعة اليسرى.
ولهذا عند لعب ألعاب مثل CS – GO مثلاً، يمكنك تحديد موقع اللاعبين الآخرين عن طريق أصوات أقدامهم.
المشكلة هنا أن استخدام أصوات متعددة Stereo قد لا يعمل بشكل صحيح مع هذه التقنية في الألعاب ثلاثية الأبعاد.
وبعض المحركات تفرض استخدام أصوات أحادية للأصوات ثلاثية الأبعاد.
لماذا؟
في تقنية الصوت المكاني Spatial Sound، يتم تعيين القناتين للسماعتين من قبل محرك الصوت نفسه، وليس الملف الصوتي، أي أن لهاتين القناتين مصدر الصوت نفسه، ولكن يتم التحكم بمستواه في القناتين الافتراضيّتين لمحاكاة موقع الصوت.
أما عند استخدام صوت متعدد، سيكون هناك تسجيل صوتي مخصص لكل قناة، لذا عند تطبيق هذه التقنية، يجب أن يكون هناك موقعان مميزان للصوت.
ويمكن في هذه الحالة إما 1) تغيير موقع القناتين حول مصدر الصوت، أو 2) جعل القناتين في نفس الموقع.
في الحالة الأولى، من المنطقي جعل القناتين قريبتان من بعضهما، (وإلا فإن الأفضل استخدام مصدرين للصوت بدلا من صوت واحد متعدد)،
وبعد ذلك فالفرق بينهما لن يظهر إلا عندما يكون اللاعب قريبًا جدًا من موقع الصوت، ولذا لن نستفيد كثيرًا إلا في حالات محددة استثنائية.
وفي الحالة الثانية، جعل الصوتين في نفس الموقع سيعطيك نفس تأثير جعل الصوت أحادي القناة، لذا لن نستفيد أبدًا من الصوت المتعدد.
الخلاصة: عدا للموسيقى والحلقات والخلفيات، يجب استخدام الأصوات الأحادية، وعند الحاجة لخاصية الصوت المكاني، يجب تفضيل التقنية المتوفرة في محرك الألعاب بدلاً من تشفير بيانات الموقع في أصوات متعددة Stereo
وللألعاب ثنائية الأبعاد، يمكن أيضًا استخدام خاصية الصوت المكاني أو برمجتُها بشكل مخصص.
نصيحة في محرك Unity:
لجعل الصوت أحادي، يمكن تفعيل خاصية Force To Mono في الخيارات للأصوات المستوردة في المشروع كحل سريع،.
بعد ذلك يجب تفعيل خاصية Normalize لتخفيف التشوهات:

ولكن يبقى الحل الأضمن للجودة الحصول على الملف بقناة واحدة من الأصل.
تصدير الملفات الصوتية بصيغة Wav.
هذه الصيغة تعتبر الأفضل لتقريبًا جميع المؤثرات الصوتية في الألعاب، من أصوات الواجهات والعناصر إلى التفاعلات وإلى الانفجارات والاصطدامات.
ولملفات الموسيقى أو الأصوات الطويلة نسبيًا، يمكن ضغطها للصيغة .ogg.
ولكن في معظم محركات الألعاب، تتم عملية الضغط بشكل تلقائي عند إضافة الملف، وتكون هذه العملية مصممة خصيصًا للمحرك الذي تستخدمه، مما يعني أنها أفضل من الضغط الخارجي.
باختصار، عند التعامل مع محرك ألعاب يجب إضافة ملفات صوتية بالصيغة .wav دائمًا، وهذا لأن صيغة .wav تكون غير مضغوطة. ثم استخدام تقنيات الضغط المناسبة داخل المحرك كما سنناقش أدناه.
أفضل الإعدادات والمعايير لضغط وتحميل الملفات الصوتية
ملاحظة: في هذا القسم سأعتمد في المفردات على إعدادات المحرك Unity لاستيراد الملفات الصوتية، كما هو موضح في هذه الصورة:

ولكن هذه الإعدادات نفسها تتواجد في معظم محركات الألعاب، قد تكون بمفردات مختلفة ولكن المفاهيم تبقى نفسها، وإن زادت أو نقصت.
وحتى أن هذه التقنيات في التحميل والحفظ معروفة بشكل كبير لذلك قهي مدمجة في مكاتب خارجية جاهزة مثل FMOD.
هناك طرق كثيرة لضغط الملفات وتحميلها إلى الذاكرة RAM، والطريقة الأفضل تختلف على حسب الحالة ونوع الملف الصوتي.
الصورة الآتية توضح الإعدادات المناسبة لكل منصة (وسوف أقوم بالتوضيح في الأسفل) :

الملفات طويلة المدة (الموسيقى أو الحلقات loops)
ضغط الملفات
تأكد من أن تُفَعّل خاصية الضغط في محرك الألعاب الذي تستخدمه، وأفضل صيغ الضغط لهذا النوع هم: .ogg أو .ogg Vorbis أو .opus.
وهذا لأن لهذه الملفات أحجام كبيرة نسبيًا، فمن الأفضل ضغطها لكي لا تسبب ثقل على الذاكرة العشوائية RAM.
التحميل إلى الذاكرة للتشغيل
يجب أن يكون الملف الصوتي محفوظًا في مكان ما عند بدء اللعبة، وفيما يلي أشهر الطرق لفعل ذلك:
- الضغط في الذاكرة، Compressed In Memory حيث يحفظ الملف بشكل مضغوط في القرص الصلب (أو أي ذاكرة دائمة) والذاكرة RAM، ثم تحميله منها وفك الضغط عند تشغيله.
هذه الطريقة تستهلك شيئًا من طاقة المعالج، ولكن تخفف استهلاك الذاكرة.
- حفظ الملف في القرص الصلب ثم تحميل الملف الصوتي منه بشكل تدريجي، شيئًا فشيئًا، عند بدء تشغل الصوت، وهذا ما يعرف ب الـStreaming أو البث.
لا تحتاج هذه الطريقة إلى أي ذاكرة عشوائية RAM ولكنها تتطلب قوة معالج أكبر.
- فك الضغط عند التحميل إلى الذاكرة Decompress on load. أي أن الملف يحفظ بشكل غير مضغوط في الذاكرة.
تستهلك هذه الطريقة ذاكرة RAM بنسبة كبيرة ولكنها خفيفة على المعالج.
الاختيار منهم منهم يعتمد على المنصة وطريقة استعمال الصوت..
فمثلاً للهواتف المحمولة، لا يجب بث (Streaming) إلا ملف واحد فقط في الوقت نفسه، مثل الموسيقى.
أما للحواسيب وأجهزة الألعاب، فخيار البث قد يعمل لكل من ملفات الموسيقى والحلقات (كالمؤثرات البيئية)، وذلك لأنه يمكن لهذه الأجهزة دعم بث ملفين في الوقت نفسه دون تأثير سلبي على الأداء.
وللملفات الأخرى مثل المؤثرات طويلة المدة أو التعليق الصوتي، الطريقة Decompress on load تعتبر جيدة في جميع أنواع الأجهزة.
الملفات قصيرة المدة أو السريعة:
مثل أصوات الواجهات المرئية أو التاثيرات السريعة أو الحركات مثل أصوات المشي.
هل يجب ضغط هذه الملفات؟
من الأفضل اعتماد الصيغ PCM أو ADPCM، وهاتان الصيغتان يدعمهما معظم محركات الألعاب.
الفرق بينهما أن ال ADPCM قديمة نوعًا ما، وقد تقوم بتقليل جودة الملف، لكنها سريعة للضغط والتحميل وخفيفة على الذاكرة.
أما ال PCM فتقوم بتحميل الملف إلى الذاكرة من دون ضغط، لذلك عند تشغيله، لا تتطلب أي وقت أو طاقة معالج، وتعتبر الأفضل لهذا النوع من الملفات الصوتية، ولكنها تأخذ حجم كبير من ال RAM.
وجوابًا على السؤال، فإن صيغة PCM لا تقوم بضغط الملفات حقًا لذا تعتبر صيغة صوت غير مضغوطة، ولذلك ليس علينا دائمًا ضغط هذا النوع من الملفات.
الخلاصة: حاول استخدام الصيغة ADPCM للهواتف المحمولة، ولكن إذا لاحظت أن الجودة أصبحت سيئة، استخدم ال PCM.
أما للحواسيب وأجهزة الألعاب المنزلية، فاستخدم PCM ولا تقلق، فهناك ذاكرة RAM كبيرة بانتظارك.
التحميل إلى الذاكرة للتشغيل
الأفضل بشكل عام هو حفظ الملف بشكل مضغوط في الذاكرة (الدائمة والعشوائية) وفك الضغط عند تشغيله، أي Compressed In Memory.
لأن حجم هذه الملفات يكون صغيرًا، فك ضغطه لن يأخذ وقتًا طويلاً عند تشغيل الملف الصوتي.
ضبط إعدادات استيراد الملفات الصوتية في محرك Unity:
“هذه الإعدادات خاصة بمحرك الألعاب Unity، ولكن يمكن فهم المغزى منها وتطبيقها في المحركات الأخرى.”
1) لكل ملف صوتي لا يعتمد طريقة البث Streaming وغير مضغوط (أي يَستخدم PCM) يجب تفعيل خاصية التحميل المسبق Preload Audio Data في إعدادات استيراده Import Settings.
2) الخاصية LoadInBackground تعني أن الملف سيتم تحميله إلى الذاكرة في الخلفية ، أي أن اللعبة قد تبدأ العمل وبعض الملفات الصوتية (طويلة المدة) قد لا يكون تم تحميلها وتجهيزها للاستخدام بعد.
لذلك، لا نفعل هذا الخيار للملفات الصوتية التي يجب أن تكون جاهزة بمجرد أن تبدأ اللعبة (مثل أصوات الأزرار والتنقل)
أما للأصوات الأخرى التي لن تبدأ مباشرة (كألحان وأصوات الفوز في اللعبة)، أو كالملفات التي لا تسبب مشاكل إن تأخرت في البدء (كالخلفيات) من الممكن تفعيل الخاصية لها لتسريع عملية بدء اللعبة.
3) بعد تحديد خواص الضغط والتحميل، يجب ملاحظة البيانات التي تظهر في الأسفل كما هو موضح في الصورة
هذه البيانات تعطي لمحة عن زيادة أو نقصان حجم الملف الأصلي وحجمه بعد استيرداه وضغطه في الذاكرة:

4) عند اختيار صيغة الضغط Vorbis سيظهر شريط تمرير Slider يحدد جودة الملف الصوتي، كالآتي:

هذا الشريط يبدأ من 1 إلى 100، وبشكل عام يمكن تقسيمه إلى قسمين:
من %100 حتى %70 – جودة عالية – والتباين في الجودة قليل للأرقام في هذه الفترة – لذا يمكن الاعتماد على %70 بكل أريحية.
من %69 حتى %1 – تختلف الجودة من جيد إلى سيء، ولا ينصح باستعمال هذه الجودة مع هذه الصيغة. يمكن بدلأً من ذلك اعتماد صيغة ضغط أخرى مثل ADPCM.
هكذا نكون قد انتهينا من شرح تفاصيل استخدام الملفات الصوتية عند تطوير لعبة، ووضحنا كيفية تطبيقها في المحرك Unity.
مصادر مهمة
للمهتمين بالتعرف على الموضوع بشكل أكبر، كبداية أنصح بقراءة هذا المقال الشامل عن الموضوع على موقع Gamasutra.
وأيضًا صفحة إعدادات الاستيراد للملفات هذه على مستندات Unity قد تكون مفيدة.
وهذه المدونة تحتوي على العديد من المقالات المعنية بهندسة وتصميم الصوتيات للألعاب بشكل خاص.
أتمنى أن أكون قد وفيت في الشرح. أرحب بملاحظاتكم أو أسئلتكم في التعليقات.