س و ج في برمجة الالعاب اسئلة و اجوبه

الناقل : elmasry | الكاتب الأصلى : احمد صالح | المصدر : www.arabteam2000-forum.com

س : مجموعو الاكواد التي تشمل الادخال Input و تحميل الرسومات و رسمها علي الشاشة و تنفيذ النصوص Scripts و تشغيل مجموعة من ملفات الصوتيات و تنفيذ ذكاء صناعي مجمعة تُسمي ؟
ج : محرك اللعبة

س : عملية نقل المجسمات و رسمها علي الشاشة تُسمي ؟
ج : عملية الرندر Rendering ( التصيير)

س : الاسم الشائع التي تستخدمه برامج الرسومات 3d للمجسمات يُسمي ؟
ج : عادة ما تجد Mesh - Object مجسم شبكي

س : كل مضلع polygon في المجسم Mesh يُسمي ؟
ج : وجه Face

س: ما هي الرسمة الثنائية الابعاد التي تقوم بتلبيسها للمجسم علي اوجهه لتعطي مظهر جمالي ؟
ج : الخامة Texture

س: موقع المحاور الثلاثة في الثلاثة ابعاد 3D هو ؟
ج : نقطة الاصل Origin

س: ما هي محاور شاشة الحاسب ؟
ج : السيني X من اعلي نقطة علي اليسار لليمين و الصادي من فوق لتحت .

س: هناك نوعان لتحديد نوعية الاحادثيات في الثلاثة ابعاد ما هما ؟
ج : نظام اليد اليمني Right Hand و نظام اليد اليسري Left Handed ، الدايركت اكس يستخدم Left Handed بمعني ان المحور Z الموجب له يكون في عمق الشاشة .

س : اكتب هيكل structure بلغة السي لتمثيل نقطة علي الشاشة ؟

struct 3DPoint
{
float x;
float y;
float z;
};


س : اذكر انواع المواضع التي يتحول لها المجسمات في برمجة الالعاب ؟
ج : 1 . فضاء النموذج Model Space و هو مركز المجسم 2. فضاء العالم World Space وهو الفضاء الذي يكون فيه المجسم تحول من فضائه الذي كان به في برنامج الرسم Model Space الي العالم في لعبتك .

س: ما هو هيكل البيانات المستخدم في مكتبات الدايركت اكس و OpenGL لتمثيل النقاط مع وضع معلومات اخري لها ؟
ج : هو النقطة Vertex و الجمع Vertices

س: اكتب كائن Class لتمثيل نقطة ؟
ج :
class CVertex{
public:
CVertex(float fx, float fy, float fz);
CVertex();
float x;
float y;
float z;
};


س: ما هو الاسلوب الذي يحذف المضلعات التي لا يراها المبرمج ؟
ج : اسمه حذف الوجه الخلفي BackFace Culling

س: ما هو الاسلوب المستخدم لجعل النقط تُرسم في اتجاه معين حتي يجعل رسم الخطوط بين النقط في رسم المضلعات في ترتيب صحيح ؟
ج : ترتيب اللف Winding Order

س: ما هو نوعية اللف التي يستخدمها الدايركت اكس في رسم النقاط ؟
ج : مع عقارب الساعة Clockwise -- اي جميع النقط تُرسم في اتجاه عقارب الساعة <---

س: عملية تحويل المجسم من فضائة الي فضاء العالم ( سواء لعبة او برنامج محاكاة ) هي ؟
ج : هي عملية نقل المحاور Transformation

س: عملية رسم مجسم عدة مرات في الثانية هذه الوحدة تُسمي ؟
ج : التردد :P لالا تسمي Frame Rate معدل رسم الاطارات

س: اذكر معادلات الدوران لنقطة في بعدين بدون استخدام المصفوفات
ج :
NewX = OldX x cos(theta) - OldY x sin(theta)
NewY = OldX x sin(theta) + OldY x cos(theta)


س: ما هي الوحدة المستخدمة في معيار الدوران ؟
ج : الوحدة هي Radian مقدرة بالتقدير الدائري

س: كم وحدة Radian لعمل دائرة كاملة ؟
هي 2ط ، حيث ط تساوي 180 درجة .

س: اكتب ميكرو بلغة السي للتحويل من التقدير الستيني للتقدير الدائري
#define DegToRad( x ) ( x * ( pi/180 ) )


س: اذكر النقطة تدور حولين اي محور بعد تطبيق هذه المعادلات عليها
NewX = OldX x cos(theta) - OldY x sin(theta)
NewY = OldX x sin(theta) + OldY x cos(theta)


ج : تدور حول المحور Z

س: ما هو نظام الاحداثيات الذي فيه تنتقل جميع النقط الموجودة في فضاء العالم World Space إليه ؟
ج : فضاء الكاميرا

س: ما هو التاثير الناتج عن تحرك الكاميرا إلي اليسار ؟
ج : يتحرك ما في عالم اللعبة كله الي اليمين ، و هذا هو تأثير الكاميرا .

س:اكتب كائن لتعريف كاميرا
ج :
class Ccamera
{
public:
float PositionX;
float PositionY;
float PositionZ;
float RotationX;
float RotationY;
float RotationZ;
};


س: ما هو المصطلح الذي يدل علي تحرك الاشياء البعيده كونها صغيره ؟
ج : المنظور Perspective

س: اكتب معادلات الاسقاط المنظوري لنقطة في بعدين
ج:
Xp = x/z and Yp = y/z


س: نقل محاور مسقط نقطه في بعدين الي شاشة الحاسب يُسمي ؟
ج :تخريط الشاشة Screen Space Mapping

س: صف خطوات نقل محاور مسقط نقطه ( مسقط منظوري) علي الشاشة ؟
ج:
screenX = projVertex.x * screenWidth/2 + screenWidth/2;
screenY = -projVertex.y * screenHeight/2 + screenHeight/2;
// محور س للنقطة علي الشاشة = محور س للنقطة المسقوطه في عرض الشاشة مقسوم علي 2 مضاف عليهم عرض الشاشة علي 2


س: الان ما هي اهم التحويلات مع الترتيب في تحويل فضاء لمجسم علي شاشة الحاسب ؟
1. تحويلة العالم 2. تحويلة الكاميرا 3 . تحويلة الاسقاط المنظوري 4. تحويلة الرسم علي شاشة الحاسب

س: اكتب كائن لتعريف متجه Vector
ج:
[class Vector
{
public:
float x;
float y;
float z;
};


س: المتجه دائماً نقطة صح ام خطأ ؟
ج: خطأ ، النقطة دائما متجه مثال ( الموضعposition ) و لكن المتجه ليس دائما نقطة علي سبيل المثال ( السرعة) .

س: اكتب صفات المتجهات
ج: المتجه دائما يعرف بمعياره و اتجاهه

س: ما هي عملية التعيير Normalization ؟
ج : هي عملية تحويل متجه ليس وحده ، الي متجه الوحدة Unit Vector .

س: ما هو متجه الوحدة Unit Vector ؟
ج : هو متجه معياره 1

س: اكتب استخدامين لمتجهات الوحدة ؟
ج: تحريك المجسمات Object Movement و تحديد وجوه المضلعات او ماذا تواجه Polygon Facing .

*** ملحوظة العمليات الرياضية علي المتجهات متروكة للقارىء ، لقد نوهت عن اهم النقطة التي لها علاقة ببرمجة الالعاب ***

س: ما هو المتجه الذي يحدد موضع المستوي في الفراغ ؟
ج : المتجه العمودي علي المستوي Plane Normal

س:اكتب كائن لتعريف مستوي Plane
ج:
class CPlane
{
public:
CVector PlaneNormal;
float DistanceToPlane;
};


س: بفرض المصفوفة M ستحول نقطة X,Y ، نوعية التحويل هي الدوران طبقاً للمعادلات التي ذكرتها من قبل لدوران نقطة اكتب المصفوفة M
ج:
M = | cos (theta )     sin(theta) |
                | - sin(theta)  cos (theta) |


س: كيف تقوم بعرض مصفوفة لها 1 × 4 [x y z w ] في فضاء ثلاثي الابعاد ؟
ج :تقوم بقسمة كل مركبة X,Y,Z علي الاحادثي W و هو دائما بقيمة واحد .

س: ما هو اسم المتجة الذي لها اربع مركبات جبرية X,Y,Z,W الذي يتم عرضه في ثلاثة ابعاد ؟
ج : المتجهات المتجانسه Homogenous Coordinate (( هناك ايضا المعادلات المتجانسه التي تجدها غالبا في المعادلات التفاضلية ))

س: ما هو معني تجنيس مركب له 4 مركبات ؟
ج : اي تقسم كل مركبه علي الاحداثي W . لاحظ فائدة استخدام W ، في عمليات الحذف Clipping ستجد له اهميه و في عدم إحداث عملية القسمة علي صفر الغير معرفه .

س: ما هو اسم طبقة السوفت وير المرتطبة بالعتاد او الهاردوير ؟
ج : تعريف الكارت او Device Driver

س: ما هو اسم الطبقة المرتبط بها الدايركت اكس في تعريف الكارت ؟
ج : طبقة العتاد المجردة Hardware Abstraction Layer - HAL

س : ما معني T&L ?
ج : اي نقل المحاور و الاضاءة Transformation & Lighting

س: عندما تستخد طبقة العتاد افتراضية Hardware emulation Layer اين تتم عملية نقل المحاور و الاضاء و رسم المضلعات علي الشاشة ؟
ج : يقوم المعالج الرئيسي بالقيام بهذه العمليات و عادة يسمي نوعية هذا الرسم Software Rasterizer .

*** افضل كتاب لفهم خورازميات الرسم بالحاسب باستخدام الرسم بالمعالج الرئيسي او Software Rendering هو لاستاذي :
Tricks of the 3D Game Programming Gurus - Andre LaMothe
إن كان في وقت ، ساتطرق الرسم بالحاسب و لكن في قسم الميكروكنترول في المنتدي و كيفيه صنع اجهزة console .

س: ما هي الخطوة التي يجب تنفيذها قبل استخدام ملامح كارت الشاشة الذي لديك ؟
ج: عملية التجهيز Initializ/sation .

** قد تلاحظ في اغلب الدروس انها تبدأ بكيفيه اعداد الدايركت اكس للتعامل مع كارت الشاشة

س: ما هي الكائنات التي يُطلق عليها مركبات سوفتير ؟
ج: مركبات COM - Components object model

س:ما هي الخطوات التي يجب إتباعها قبل استخدام وظائف الكائنات COM ؟
ج : عملية التجهيز Initializ/stion

س:صح ام خطأ ، هل مركبات COM تعتمد علي لغة السي ++ فقط للربط بها ؟
ج : خطأ

للاستزاده : نرجوا قراءة كتاب C++ Unleashed للتعرف علي COM و كيفية إستخدام هذه التكنولوجيا في بناء برامج و كيف يعتمد عليها الدايركت اكس .

س: ما هي الملفات التي يجب ان تقوم بدمجها في كودك لضم واجهات COM - Interfaces التي ستخدمها الدايركت اكس في التواصل مع العتاد ؟
ج : d3d9.h

س: ما معني المصطلح GUID ?
التوصيفات الفريدة و هي عبارة عن ID للواجهات المستخدمة مثل واجهه IDirect3D او IDirectInput او IDirectSound .

س: كم بت او بايت مكون منها هذا الID ?
128 بت ، اي 16 بايت ( اي 16 حرف ) .

س:ما هي الاداءة التي يمكن استخدامها و في توليد هذه الحروف ?
ج : GUIDGEN.exe

س: اكتب الكود اللازم لبدء استخدام واجهة الدايركت اكس ؟
ج :
LPDIRECT3D9 pD3D;
pD3D = Direct3DCreate9( D3D_SDK_VERSION);


لاحظ ان LP هي اختصار Long Pointer اي مؤشر من نوع long ، و لاحظ وجود ثابت يحدد رقم اصدار الدايركت اكس .

س: كارت الشاشة Device هو عبارة عن ............ آلة التي يمكن التحكم بها باستخدام دوال عضوية Memeber Functions ?
آلة محدده State Machine اي آلة لها عدد من الحالات States ، لاحظ استخدام هذا المصطلح في علوم الكومبيوتر و صناعة الروبتات و يجب البحث عنه في كتب الرياضات المجردة Discreet Maths ، لانه يستخدم بكثره و له استخدامات عديدة في برمجة الالعاب في تحديد مثلا حالات اللعبة ، بان تقوم بكتاب State Machine Code و مثلا مُستخدم في الذكاء الصناعي ، و استخدمته ايضا في صناعة روبتات في توظيفه ..

س: ضع مثال علي الية الكارت ؟
ج : الدالة IDirect3DDevice9::SetRenderState

س: استخدام كارت الشاشة للتحكم بنقل المحاور و الاضاءة يُشار اليه باسم ؟
ج: Fixed Function Pipeline ، ماسورة العمليات التي لها وظيفة ثابته

س: ما هي الShaders ?
ج : المظلالات تعطي المطور بكتاب كود قصير لنقل محاور و اضاءة نقاط المجسمات و تلوين البكسل بدلا من استخدام مساورة ثابتة الوظيفة .

س: ما اسم ماسورة العمليات PipeLine التي تستخدم المظلالات ؟
ج: الماسورة الغير ثابتة او القابلة للبرمجة Programmable Pipeline

* لاحظ اننا قمنا بكتابة اسئلة عن ماسورة العمليات و عمليات التحويل التي يجب ان يخضع لها اي موديل تُحب ان ترسمه علي شاشة الحاسب .

س: للمراجعة ، اكتب كود باستخدام الدايركت اكس يقوم بإعطاء امر لكارت العرض بوضع مصفوفة اسقاط Projection Matrix ؟