Thursday, October 7, 2010

XNA: Lesson8: Game Audio - اصوات اللعبة

Lesson 8: Game Audio
الدرس الثامن: استخدام الاصوات في اللعبة



بسم الله و الصلاة و السلام علي رسول الله ... صلي الله عليه و سلم...

اليوم ان شاء الله نتحدث عن كيفية اضافة الاصوات و المؤثرات الصوتية علي اللعبة ...

و قد قامت ميكروسوفت باضافة برنامج ضمن مجموعة برامج ال XNA يقوم بتحويل صيغة ملفات الصوت الي ملفات يفهمها ال XNA حتي تستطيع التعامل معها داخل اللعبة ... هذا البرنامج اسمه XACT ...

بداية اخواني يجب ان تركزوا تماما في هذا الدرس لانه ليس برمجة بقدر ما هو تعلم طريقة اضافة الصوت للمشروع ...

قبل التعرف علي البرنامج نحمل ملف الصوت علي الرابط التالي:

ثم ننشأ مجلد فارغ في اي مكان علي الجهاز و نضع فيه هذا الملف ...

و نبدا الان بالتعرف علي هذا البرنامج ...

-          لبدء برنامج XACT:
-          Start è Programs è Mircosoft XNA Game Studio 3.0 è Tools è Cross-Platform Audio Creation Tool (XACT).
-          سيفتح لك برنامج XACT بالصورة التالية:


-          نبدا مشروع جديد من خلال القائمة:
-          File è New Project
-          ستفتح لك نافذة لتحديد مكان حفظ المشروع ... يجب ان تكون نفس المجلد الذي تم تكوينه سابقا الذي به ملف الصوت.  (هذه النقطة هامة جدا جدا).
-          بعد تكوين المشروع ستظهر قائمة علي الشمال بالشكل التالي:


-          يجب الان ان نكون Wave Bank و Sound Bank و ذلك لادخال ملفات الصوت الخاصة بنا عليهم ...
-          كما ترون بالصورة نضغط كليك يمين علي Wave Banks ثم نختار New Wave Bank و نترك نفس الاسم الافتراضي Wabe Bank  ...
-          ظهرت لنا الان شاشة جديدة داخل البرنامج عنوانها Wave Bank بالشكل التالي:


في الشاشة التي ظهرت Wave Bank نضغط كليك يمين ثم نختار Insert Wave File لكي ندخل ملفات الصوت الخاصة بنا علي البرنامج...

ثم نختر ملف الصوت من ملف المشروع ...

نلاحظ ان الملف ظهر داخل مربع ال Wave Bank ...

ثم نضغط كليك يمين علي ال Sound Bank و نختر New Sound Bank و نترك نفس الاسم الافتراضي Sound Bank ...

ستظهر لنا شاشة مثل ال Wave Bank  اسمها Sound Bank ... و لكن ...
سنجد شاشة ال Sound Bank  مقسمة الي 4 اقسام ... يوجد قسمين بالشمال اسمهم Sound Name و Cue Name...

الان ننظم شكل الشاشات المعروضة كالتالي ... من قائمة:
Window è Tile Horizontally

الان الشاشات معروضة امامنا و مترتبة ...

كل ما سنعمله بمنتهي البساطة هو اختيار ملف الصوت من القائمة Wave Bank و نعمل سحب و القاء Drag and Drop  داخل شاشة ال Sound Bank  في قسم ال Cue Name ... و سنجد ان البرنامج كون لنا تلقائيا في قسم ال Sound Name   ملف بنفس الاسم ... بحيث يصبح شكل الشاشات كالتالي:



ثم نحفظ المشروع و نغلق البرنامج ...



استخدام الصوت داخل اللعبة:
الان نفتح المشروع الاخير الخاص بالدرس السابع ... و في ال Solution Explorer نضغط كليك يمين علي فولدر ال Content و نضيف فولدر جديد نسميه Audio  ...

ثم نضغط كليك يمين علي فولدر ال Audio  و نختر Addè Existing Item

ثم نفتح الفولدر الخاص بمشروع XACT الذي قمنا بعمله ... سنلاحظ ان هناك ملف تم انشاءه ينتهي ب .XAP
نختاره و نختر ملف الصوت الذي حملناه ثم نضغط Add ...

الان قد اضفنا ملف الصوت و اضفنا ملف المشروع الذي ينتهي ب .XAP

و الان نفتح ملف ال Game1.CS

نعرف المتغيرات التالية بعد هذا السطر مباشرة

SpriteBatch spriteBatch;

و هي متغيرات سوف نستخدمها لبرمجة الصوت ...
AudioEngine audioEngine;
WaveBank waveBank;
SoundBank soundBank;

نشرح الكود:
AudioEngine audioEngine;
ال AudiiEngine  هي مكتبة توصلك بخدمات الصوت علي كارت الصوت في جهازك ...

WaveBank waveBank;
هو مخزن يحمل soundBanks

SoundBank soundBank;
هو مخزن يحمل عدة ملفات صوتية ...


الان نحمل مخازن الصوت ... نتجه الي الدالة LoadContent و نكتب الكود التالي في نهاية الدالة :

audioEngine = new AudioEngine(@"Content\Audio\mysounds.xgs");
waveBank = new WaveBank(audioEngine, @"Content\Audio\Wave Bank.xwb");
soundBank = new SoundBank(audioEngine, @"Content\Audio\Sound Bank.xsb");

طبعا ناخذ بالنا من شئ مهم جدا ... نحن اضفنا ملف ينتهي ب .XAP و هنا نضيف ملفات تاخذ مسارات مختلفة و الحقيقة ان هذه الملفات كلها يتضمنها الملف .XAP و في وقت ال Compile يتم تكوينها بواسطة ال XNA حتي في وقت التشغيل تجدها في الفولدرات المشار اليها ... و لكي تشاهد هذه الملفات اذهب الي المسار التالي ...
Project Folder \ bin\x86\Debug\Content\Audio


الان نحن حملنا الملف الاساسي لمشروع XNA  ... ثم حملنا ال Wave Bank الذي قمنا بعمله في المشروع و سميناه بنفس الاسم الافتراضي ... و ايضا حملنا ال Sound Bank الذي حملناه في المشروع و سميناه بنفس الاسم الافتراضي ...


و الان في نفس الدالة LoadContent سنجعل الصوت يبدا مع بداية اللعبة كالاتي:
soundBank.PlayCue("skullcollision");

ثم نشغل اللعبة و نلاحظ ظهور الصوت ...


تطبيق اليوم ...
اجعل الصوت يعمل عند اصطدام الكائن بحروف الشاشة ....

No comments:

Post a Comment