المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : <<< وبدأت الاسطوره ؛ الدرس الاول و الثاني من دوره برمجه الالعاب >>>


totysalah
14-09-2007, 07:04 PM
بسم الله الرحمن الرحيم
*******************


كل عام وانتم بخير


رمضان كريم

اعاده الله عليكم بالخير واليمن والبركات



اليوم سنبدأ في اول درسين في دوره برمجه الالعاب

فهيا بنا ننطلق




http://img529.imageshack.us/img529/20/90273371nc1.jpg



http://img529.imageshack.us/img529/2477/46238209xy3.jpg




اذهب الي هذا الموقع
http://www.winfuture.de/news,7953.html (http://www.winfuture.de/news,7953.html)

واختر
Direct x 9 SDK ( dx9sdk.exe , 227732 kb , English )

عند الانتهاء من تحميل الملف بفك الضغط عنه .
وبعدها .. نفتح الملف ونفقوم بالضغط علي Install
بعد ذلك اتبع الخطوات كما في الشكل :-


http://img206.imageshack.us/img206/5104/a1kw8.jpg

http://img211.imageshack.us/img211/5038/a2mn3.jpg

http://img210.imageshack.us/img210/6418/a3di5.jpg




http://img213.imageshack.us/img213/2176/37419355ia7.jpg



http://img213.imageshack.us/img213/6508/91565764ji5.jpg





سيتم رفعه قريبا

ولمن لديه لن يجد مشكله في تحميله

totysalah
15-09-2007, 03:17 PM
http://img206.imageshack.us/img206/509/48723287zg1.jpg


كارت الشاشه :-

بما ان الرسومات تعتمد عليه بشكله اساسي فكان هو بدايه حديثنا وسنتكلم عمه بأختصار كرت الشاشه او ( video adapter , graphics adapter , display adapter , video display adapter , video card , video board , .................. الخ ) هي قطعه متصله مع الوحه الام ( mother board ) تعمل علي تخزين ومعالجه الصور وتحويلها الي اشارات تستطيع الشاشه اظهارها اصبحت كروت الشاشه عنر اساسي في الكمبيوترات من عام 1990واخذ المصنعون يتفانون في كيفيه صناعتها حتي توصلوا الي عمل مجسمات ثلاثه الابعاد اول شركه اهتمت بمعالجه الروسومات ثلاثيه الابعاد هي DFX 3 والتي اطلقت كروت الشاشه الخاصه بالاجسام ثلاثيه الابعاد وكانت تحل الاسم voodoo وايضا هي من ابتكر قناه تسمي ( GPUs ) Graphics pressing units وهي منطقه موجوده في كرت الشاشه تقم بالمعالجات الرياضيه للاشكال ثلاثيه الابعاد مما يريح المعالج ( processor ) من هذا لاعبئ والذي يؤدي بدوره الي اسراع عمليه المعالجه للعبه ومن الممكن ان يحوي كرت الشاشه اكثر من قناه GPU فكلما زادت عدد القنوات زادت الجوده .

من اشهر شركات في مجال كروت الشاشه :-

NVIDIA
Geforce
ATI

http://img150.imageshack.us/img150/9334/54259278ss6.jpg

http://img181.imageshack.us/img181/1696/apiapplicationprogrammigv9.jpg


وهي عباره عن ملفات يستخدمها المبرمجون من اجل ربط برامجهم بنظام التشغيل

http://img522.imageshack.us/img522/4082/b1jd1.jpg


تقوم فكرتها كالتالي :-

بما ان نظام التشغيل يتخدم بعض العناصر مثل ( textbox- font – color – button )
او بعض الدوال مثل( create window – set window text – text out – copy file – exit window )
او بعض المكتبات مثل ( user 32 – gdi32.dll – kernel 32 )
او بعض من data structure مثل font
من اجل التحكم في عملياته فسنقوم بستخدامها لصالح برنامجنا .

ظهرت هذه المكتبات في اربعه اجيال :-

الاول win16Bit :

الثاني win 32 Bit: حيث تكتب الدوال بستخدام لغه السي والسي بلس بلس وجائت المكتبات( user 32 – gdi32.dll – kernel 32 )

الثالث win 64 Bit : حيث احتوت علي نفس فكره win32 ولكن بشكل اوسع فتستطيع الدوال معالجه وعنونه ارقام اكبر وجائت هذه المكتبات علي نظام تشغيل windows XP , windows 2003

الرابع winfix: وهذا الجيل في windows Vista حيث انه يدعم جميع خصائص .Net بما فيها ( GRL ) وهذه الخاصيه خاصه بأداره الذاكره يعني لا يستخدم المبرمجون هذه العلامه ( ~ ) ال Destructor و ايضا تم استبدال مكتبات الرسوميات ال GUI بالAvalon والتي تدعم بدورها الخائص الجيده لكروت الشاشه مثل المؤثرات ( الاضائه و الظلال ) وهذا يعني انك من الممكن ان تري ظل الفورم علي سطح المكتب او صدي الصوت ان كان لديك ملف داخل ملف ( سيتضح ذلك اكثر لمستخدمي الفيستا )


http://img150.imageshack.us/img150/9334/54259278ss6.jpg

http://img181.imageshack.us/img181/4489/directxmp4.jpg



عند التكلم عن برمجه الالعاب فنحن نتكلم عن لغه الجرافيكس ومن امثله هذا اللغات ال Direct X و ال Open GL وال GDI وتستخدم هذه اللغات في نظام ويندوز ويونكس وايضا Quick Drow التي تستخدم علي انظمه ماكنتوش .


يعتبر Direct X جزء من مكتبات API اول ولاده لل Direct X كانت عام 1995 و كان في البدء يعمل علي نظام الدوس وظل يتقدم الي ان وصل الي النسخه الثامنه التي كانت نقطه تحول حيث استطاع المطورون تحيقيق المعاله الصعبه السرعه و السهوله معا وجائت ايضا بمصطلاحات جديده في View وسنتكلم عن هذه المسطلحات لاحقا و كانت هذه النسخه الفعاله مع Low Level API وبعد هذا التقدم الهائل للنسخه الثامنه جائت النسخه التاسعه لتحوي جميع عناصر النسخ السابقه بالاضافه انها تدعم 24Bit وايضا Gamma وجائت لتواكب تطور .NET لتدعم c# و ال VB.Net .


http://img150.imageshack.us/img150/9334/54259278ss6.jpg

http://img150.imageshack.us/img150/456/halhardwareabstractionluv7.jpg




و هي الطبقه العازله المتمثله في Direct X ما بين الهاردوير و المتمثله في كارت الشاشه و السوفت وير المتمثله في اللعبه



http://img522.imageshack.us/img522/3865/c1oc8.jpg


تكمن فائده الشكل بالاعلي ان المبرمج للعبه لا يهمه اي نوع كارت شاشه سوف يعمل به المستخدم وانما يهمه ان تكون لعبته تدعم خصائص Direct X و نفس الحال مع مصمم كارت الشاشه فهو لا يهمه اي لغه سوف يستخدمها المبرمج لعمل اللعبه و انما يهتم ان تكون كارت الشاشه يدعم Direct X

وبهذه النظريه اصبح Direct X المترجم ما بين كرت الشاشه و اللعبه .

totysalah
15-09-2007, 03:22 PM
http://img299.imageshack.us/img299/1830/directxvl8.jpga





1- Direct 3D : وهو من اهم العناصر الذي يمثل القالب الذي تتشكل فيه اللعبه ( الفورم ) و اعطاء الاجسام الشكل ثلاثي الابعاد .

2- Direct Draw : وهو العنصر المشابه ل Direct 3D ولكنه يدعم فقط الاجسام ثنائيه الابعاد .

3- Direct Sound : وهو العنصر المستخدم من اجل عمليه التحكم في الاصوات

4- Direct Play : العصر المستخدم من اجل جعل اللعبه تدعم اكثر من مستخدم ( Network ) بأستخدام ( server – client ) .

5- Direct Input : العنصر الذي يتيح التحكم بلوحه المفاتيح او الفاره او زراع التحكم .

6- Audio Video Playback : العنصر الذي يتيح استخدام ال Multimedia مثل ادخال ملف فيديو .

totysalah
15-09-2007, 03:43 PM
http://img354.imageshack.us/img354/70/94102743wp4.jpg



لنبدأ بمثال في c++ من اجل طباعه جمله " you game programmer " فنحن بحاجه الي جمله التصريح وهي include والهيدر iostream والذي يحوي cout المختصه بالطباعه اذن صرحنا عن iostream من اجل استخدام المكونات التي بداخله وهي cout .

في ال c# نفس النظريه تعمل مع ال Direct X فنصرح عنه او عن احدي مكوناته بأستخدام الجمله using ومن ثم جمله Microsoft وبعدها اسم ال namespace ( Direct 3d – Direct play – Direct sound - ….ect )
انظر المخطط بالاسفل :-


http://img260.imageshack.us/img260/5206/d1tc1.jpg


يجب ان يبقي المخطط بذهنك للتصريح بأستخدام جمله حتي تصل للنهايه يبدأ انه يحتوي احد مكوناته Direct X وبعدها Microsoft وبعدها using وبعد ذلك classes والتي تحتوي علي properties


http://img214.imageshack.us/img214/6185/26814353uu2.jpg

http://img520.imageshack.us/img520/6240/direct3dem8.jpg

سنقوم اولا بشرح كيفيه كتابه الخطوات و المصطلاحات نظريا ثو نصيغها برمجيا في اخر الشرح وسنكتب الكود كاملا بشكل Direct 3D و ال Direct X

الخطوه الاولي ( التصريح )

using Microsoft.DirectX.Direct3D
using Microsoft.Direct;





الخطوه الثانيه : تقوم علي تجهيز Direct X ليتعامل مع كارت الشاشه من حيث ادراره وكيفيه التعامل معه

يقوم ال Direct 3D بهذه الخطوه بأستخدام Class المسمي Present parameters و Class اخر مسمي Device .



لنبدأ بال class الاول present parameter


لل class عده خصائص منها ( property )

وهذه الخاصيه التي تحدد هل اللعبه ستعتمد علي windowed ام لا اي ان الفورم يجود بيه زر التكبير والتصغير اي عندما الشاشه تكون screen نعطيها القيمه false وعندما تكون full نعطيها true .

Swap Effect : وهذه الخاصيه التي تحدد كيفيه اظهار الروسوميات علي الشاشه وتستخدم ثلاثه مصطلاحات وهي :

SwapEffect.Flip ;


وعند التكلم عن هذا المصطلح فمعناه ان كارت الشاشه يحوي مساحه كافيه لتخزين مشهدين معا او ثلاثه او اكثر علي حسب نوع كارت الشاشه

اذا كانت البيكسل الكليه التي تدعمها كارت الشاشه هي 320*200
ستصبح المساحه الكليه اللازمه هي 2( 320*200 ) = 128000

حيث تنقسم ذاكره كارت الشاشه الي قسمين مرئي ( امامي ) وغير مرئي ( خلفي) تبدأ عمليه الرسم في صفحه القسم الغير مرئي شكل ( 1 ) وبعد الانتهاء تتبادل الصفحات لتصبح المعطيات مرئيه شكل (2 ) وبعده تتم عمليه تنظيف القسم الغير مرئي واعطاء بيانات جديده .



http://img156.imageshack.us/img156/814/e1qn2.jpg

مصلح ال Page Copying

SwapEffect.Copy ;



حيث تنقسم ذاكره كارت الشاشه الي قسمين مرئي ( امامي ) وغير مرئي ( خلفي) تبدأ عمليه الرسم في صفحه القسم الغير مرئي شكل ( 1 ) وبعد الانتهاءتنسخ من القسم الخلفي الي القسم الامامي شكل ( 2 ) وبعدها تتم عمليه تنظيف القسم الغير مرئي واعطاء بيانات جديده .


http://img293.imageshack.us/img293/9085/f1hy7.jpg

مصطلح ال Discarding

SwapEffect.Discard ;

هذا المصطلح يقوم بجعل كارت الشاشه بتولي امر ترتيب واظهار الصفحات بصوره اليه وبدون تدخل المبرمج حيث يمتاذ هذا الخيار بالسرعه والدقه .



خواص
Auto Depth Stencil Format, Enable Auto Depth Stencil

ويطلق علي هاتين الخاصيتين بالمصطلح Depth Buffer او ال Z Buffer او ال W Buffer وهي ذاكره العمق التي تحدد عمق الاشكال اي ان الجسم قريب يخفي الجسم البعيد انظر الي الشكل بالاسفل :


http://img518.imageshack.us/img518/5302/g1rn2.jpg



خصائص
Back Buffer Count, Back Buffer Format, Back Buffer Width, Back Buffer Height

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

وكمثال لتوضيح الفكره عند البدء بالرسم بأستخدام ال Direct X يقوم الكمبيوتر بتخزين الاشكال بداخل البافر الخاص بالرام اي بداخ الكمبيوتر شكل ( 1 ) وعند الانتاء يقوم البرنامج بنسخ جميع الرسومات الي ذاكره البافر الخاص بكارت الشاشه شكل ( 2 ) ثم يقوم بتنظيف البافر الذي بالرام ليستقبل البيانات الجديده .


http://img443.imageshack.us/img443/2510/h1fi4.jpg

المراد فهو يعتمد علي نوع كارت الشاشه لديك وكلما كبر ذاد عدد ال Buffer وكلما زادت سرعه معالجه البيانات



وتأتي خاصيه Back Buffer Format لتحديد نوع ال Buffer حيث انه يفيد في حاله الرغبه بجع اللعبه Full screen


وتأتي بعدها خاصيه تحديد الطول والعرض Back Buffer Width, Back Buffer Height



ثانيا ال class المسمي ب Device

تحدد هذا ال class كيفيه التعامل Direct X مع كارت الشاشه .

1- تحديد اي كارت شاشه سوف يستخدم نعلم ان هناك بعض الاجهزه تحتوي علي اكثر من كارت شاشه فيقوم الكمبيوتر بأعطائه IP والرقم 0 هو الرئيسي ليقوم بتحديد اي من الكروت سوف يستخدم ال Direct X

ملاحظه : اذا كان جهازك بكات شاشه واحد فطبعا سيأخذ الرقم 0


Device (0, …, …, …,)



2- تحديد المكان الذي ستتم فيه معالجه وتوجد ثلاثه خيارات

ال ( Software) اي ان جميع عمليات المعالجه ستتم في وحده المعالجه المركذيه CPU
ال (Hardware) اي ان جميع عمليات المعاجه ستتم في كات الشاشه GPU
ال (Reference) يستخدم هذا الخيار من اجل عمليه ال Debugging
افضل هذه الخيارات هو ال CPU حيث سيعمل علي تخفيف العبئ عن الهاردوير

Device ( 0, DeviceType.Haredware , …, …, …)


ثالثا : تحديد الفورم
الذي سيعمل Direct X ونستطيع الرسم عليه فنعبر عنه بكلمه this

Device ( 0, DeviceType.Haredware , this, …, …)


رابعا : تحديد المكان
الذي ستتم فيه معالجه ال Vectors ( وهي النقاط التس تتم بواستطها رسم الاشكال ) وتوجد ثلاثه اختيارات :

Software vertex progressing : تتم عمليه معالجه ال Vectors داخل المعالج ( CPU )

Hardware vertex progressing : تتم عمليه معالجه ال Vectorsبداخل كارت الشاشاه ويجب ان تكون هذه الكارت تدعم خاصيه ( GPU ) ولا لن تعمل اللعبه .

Mixed vertex progressing : تتم عمليه معالجه ال Vectorsعن طريق CPU


ولا ينصح عاده بأستخدام Hardware vertex progressing او Mixed vertex progressing لعدم معرفتنا اذ كان يدعم كارت الشاشه لي ام لا ونستطيع عمل كود للتحقق من استطاعتنا لأستخدام هذه الخواص ولكن سنتكلم عن تلك الامور في وقتها اما الان فسنستخدم Software vertex progressing

Device ( 0, DeviceType.Haredware , this, software vertex progressing , …)


خامسا :
سنضع كائن ال Class وهي ال present parameter وهذا يعني ان جميع محتويات ال Class المسمي Device ( لفهم هذا الكلام يجب ان يكون لديك خلفيه بسيطه في OOP )

الكود
Device ( 0, DeviceType.Haredware , this, software vertex progressing , object- presentparameters )



وسنصيغ جميع الكلام بالاعلي برمجيا :-



Public void ondevice()

{
Presentparameters pp = new
Presentparameters ();
pp.windowd=true;
pp.swapEffect = swapEffect.Discard
pp.EnableAutoDepthstencilFormat = DepthFormat.D16;

device = new Device ( 0, DeviceType.Haredware , this, createFlags.software vertex progressing , pp );
}



ولا تقلق سنتكلم بالتفصيل عن مكان وضع الكود وطيفيه جعله يعمل بالتفصيل لاحقا لكن المهم الان هو فهم كل عنصر ووظيفته


كما نري بالاعلي فقد قمنا بعمل داله اعطيناها اسم ondevice وتحتوي علي الدوال التس تكلمنا عنها Presentparameters و device






http://img214.imageshack.us/img214/6185/26814353uu2.jpg

http://img214.imageshack.us/img214/9857/51214615ia6.jpg












الداله onpaint

و الداله الرئيسيه main


انتظرونا

اترككم في رعايه الله

وكل عام وانتم بخير

ورمضان كريم

Mohammed Lotfy
16-09-2007, 04:49 PM
جهود جبار بمعنى الكلمة أخى العزيزى totyslah
فبأسم جميع الاعضاء أحييك عليه و أشكرك كل الشكر
و بداية موفقة بإذن الله و بغنتظار الدرس القادم فى أقرب وقت بإذن الله

totysalah
20-09-2007, 04:37 PM
شكرا يا محمد علي مرورك الكريم

وان شاء الله سيتم تنزيل باقي الدروس قريبا

مازالت هذه البدايه

ttiittoo1
25-09-2007, 04:31 PM
بجد انا مش لاقي حاجة اقولها ليك لانك متتوصفش
لاكن ربنا يكرمك

yacobian
29-09-2007, 08:23 PM
موضوع قمه فى الروعه

Big Dongol
02-10-2007, 11:17 AM
مجهود ممتاز وبالتوفيق إن شاء الله والإستمرارية فيه

Neou
02-10-2007, 11:58 AM
بجد موضوع رائع ...اشكرك كل الشكر على إفادتي بمعلومات لم اكن اعرفها من قبل
في إنتظار الدرس القادم إن شاء الله

محمد ابراهيم
02-10-2007, 12:06 PM
موضوع متتاز و ساتابعة يوميا باذن الله تعالا

و خاصة انى مبرمج بلغة c#

طيب شغلنا كلة هيبقى notepad

و لا استخدام ال compiler عادى

™Sala7 Skedo
16-10-2007, 06:37 AM
الف شكر يا باشا

alex_prince
16-10-2007, 03:36 PM
ده ايه الدلع ده بجد تسلم ايدك ياباااشا

الموضوع اكتر من هايل

Supermedo
16-10-2007, 11:55 PM
شكرا يا مان بس في حاجة و متزعلش منها
أنت قعد تشرح أنواع و كيفية أستخدام DirectX أي كان ده حاجة متعبة و بتستهلك وقت على الفاضي أذا كان بمأكني أستخدام Free Library أو
3d Game engine مش أسهلي و أضمنلي لأن الحاجات دي ميستخدمهاش سوى Programmer For Deveolping Game Engines Only
فأنا أيه ليخلني اتعب نفسي و أضيع وقتي مش أحسن أني أستثمرهم في تعلم برمجة Game Basics أحسن ولا أيه ده رأي و سمتني رأيك و دروس جاية يا باشا

LONG LIFE _DX_
04-11-2007, 10:33 PM
woooow its reaaly fantastic thx

™Dr Ibrahim
05-11-2007, 07:58 PM
أنا عندي النسخه بتاعة الدايركت إكس وعايز أتابع معاك بس مستني نسخة الفيجوال ستوديو
يالا خلينا نشتغل بقي

إنًسَانِ
05-11-2007, 11:49 PM
موضوع تعليمي هادف يدل علي قوة منتدي الـdvd
بس ياريت حضرتك تبعد عن المصطلحات الصعبة لان والله العظيم انا اندمجت
وعاوزينك تكمل الموضوع لغايه الاخر بفس المستوي انشاء الله

ربنا يبارك فيك ويجعله في ميزان حسناتك

kopapoooo
06-11-2007, 09:34 AM
loooooooooooooooooooooooooooooooool

™StabiliTy
07-11-2007, 12:58 AM
لو كنت بس عملتها فى الأجازة

mandos
07-11-2007, 05:09 PM
شكرا يا باشا على المجهود الجبار ده

eiva
09-11-2007, 04:19 AM
شكرا يا مان بس تسلم ايدك

ahmed ashour wa
22-05-2008, 08:35 AM
الف شكر على الموضوع المتميز

hossam_2287240
10-06-2008, 09:32 PM
موضوع جامد وفكرة جامد للأستفادة


انا كنت محتاج موضوع زى دة شكرا يا عبد الرازق