مشاهدة النسخة كاملة : <<< وبدأت الاسطوره ؛ الدرس الاول و الثاني من دوره برمجه الالعاب >>>
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
مجهود ممتاز وبالتوفيق إن شاء الله والإستمرارية فيه
بجد موضوع رائع ...اشكرك كل الشكر على إفادتي بمعلومات لم اكن اعرفها من قبل
في إنتظار الدرس القادم إن شاء الله
محمد ابراهيم
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
شكرا يا باشا على المجهود الجبار ده
ahmed ashour wa
22-05-2008, 08:35 AM
الف شكر على الموضوع المتميز
hossam_2287240
10-06-2008, 09:32 PM
موضوع جامد وفكرة جامد للأستفادة
انا كنت محتاج موضوع زى دة شكرا يا عبد الرازق
vBulletin® v3.8.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.