الشبكة العربية لمطوري الألعاب

مبتدئ  Ali Amin مشاركة 1

كنت أتسائل كيف في محركات الألعاب يتم اخراج الملف التنفيذي (exe)


هل يتم استخدام مترجم موجود بالفعل مثل dev C++ و ربط ملفاتوا بالمحرك و استخداموا لإخراج الملف التنفيذي


أم هناك طرق أخرى لذلك ؟

محترف  انس مشاركة 2

السلام عليكم



نعم كل برنامج يتم بنائه عن طريقة كتابة الكود ثم تحويل هذا الاخير لملف قابل للتنفيذ. تختلف طريقة التنفيذ حسب اللغة المستخدمة
و بما ان الاغلبية الساحقة من الالعاب تطور بلغة السي++ فان الطريقة المتبعة هي كالاتي :


كتابة الكود
تحويل ملفات الكود الى ملفات Obj 
ربط ملفات الـObj  عن طريق الينكر linker
تحرير الملف التنفيذي


ملاحظة : Dev c++ ليس مترجم

مبتدئ  Ali Amin مشاركة 3

حسنا هل يمكن معلومات اكثر عن الموضوع و عن الملفات obj او كيفية تنفيذ هذا مجرد رابط يكفي  :)

محترف  انس مشاركة 4

غالبا ما تكون المراحل التي يجب تنفيذها للحصول على ملف تنفيذي معرفة في ملف Make و هو ملف نصي ليست له صيغة ( مثل .txt ).
عندما تكتب كود لعبة ما فانك تستخدم مكتبة مخصصة لتطوير الألعاب. اي في الاخير الالعاب مجرد برنامج خاص.


المرحل التي تنفذ عند ضغطك للزر : Build and run في الـ Visual c++ او اي برنامج اخر ( devc++ مثلا) هي :
ترجمة الكود المكتوب الى كود قابل للتنفيذ ( بلغة التجميع عادة او يكون عبارة عن اوامر بالنظام الثنائي)
تعديل الروابط بين الملفات و المكتبات، مثلا ملف ما استدعى المكتبة أ، محرر الروابط linker هو المسؤول عن اقامة روابط بالشكل المطلوب بين الملفات و المكتبات، و الملفات و الملفات.
ناتج محرر الروابط هو الملف التنفيذي.


اليك المقالات التالية :
http://fr.w3support.net/index.php?db=so&id=510309
http://fr.wikibooks.org/wiki/Programmation_C-C%2B%2B/Les_différentes_phases_du_processus_de_génération_des_exécutables


اتمنى ان تكون الامور اكثر وضوحا☺ سلام و عيد مبارك

مبتدئ  Ali Amin مشاركة 5

افهم من كلامك انه من المفترض ان اقوم بعمل compile لللملفات و هذا ما اتكلم عنه , من الصعب إنشاء هذه العمليات من الصفر  , فلماذا لا استخدم compiler موجود بالفعل مثل dev C++  لعمل هذه العملية .


هل أنا كلامي صحيح  ؟


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

خبير  مهند محمد علي مشاركة 6

كل عام وانتم بخير شباب وعيد اضحى مبارك
 
+++++++++++++++++++++++++++
بصراحه هذا الموضوع مهم جداً وخصوصا عند مرحله بناء المحركات الكامله والتي تكون لها لغتها او دوالها الجاهزه
و من وجهة نظري :-
ان غالبيه المحركات تستخدم دوال او اصناف كتبت بلغات عامه مثل السي و وهذه الدوال ترفق مع المحرك لذا فالمحرك يملك مترجم صغير جدا يحوي بعض الدوال ولاصناف الجاهزه فما عليك إلا ان تضع القيم في الداله وترجم المشروع 
+ مثل ما هو الحال في محرك ينتي3دي (unity 3d) 
+وبرنامج فلاش والذي له لغه خاصه به وهي اكشن اسكربت
والله اعلم ......

محترف  انس مشاركة 7

السلام عليكم و عيدكم مبارك.



كلا اخي انت تخطئ عندما تقول ان Devc++ هو مترجم. ان devc++ عبارة عن برنامج يجمع عدة ميزات تسهل عليك البرمجة منها الترجمة الالية اي دون ان تظطر لفعل ذلك تسمى مثل هذه البرامج بـ : IDE (Integrated Development Environment
المترجم هو برنامج اخر يستعمله devc++
مثلا مترجم لغة السي : GNU GCC وهو مستعمل من طرف Devc++
طبعا هناك مترجمات اخرى لشركات مختلفة اشهرها مترجم مايكروسوفت

محترف  انس مشاركة 8

ملاحظة المترجم لا يحوي دوال او اصناف انما مهمته ترجمة الكود الى شيئ مفهوم لما هو مستهدف، مثلا مترجم لغة السي يترجم الكود الى ملف obj يفهم من طرف وحدة المعالجة، اما في حالة يونتي فالمترجم يترجم الكود الى شيئ يفهمه المحرك، قد يكون هذا الشيئ لغة السي او لغة التجميع الى اخره

مبتدئ  Ali Amin مشاركة 9

بمعنى انه لتنفيذ ما اريده يجب ان استخدم مثلا GNU GCC (لو كان المحرك مبني على الC ) و ادمجهوا مع المحرك الذي ابنيه ليخرج الملف التنفيذي , صحيح ؟

محترف  انس مشاركة 10

وفي 16 نوفمبر 2010 03:07 م، قال Ali Amin متحمساً:

بمعنى انه لتنفيذ ما اريده يجب ان استخدم مثلا GNU GCC (لو كان المحرك مبني على الC ) و ادمجهوا مع المحرك الذي ابنيه ليخرج الملف التنفيذي , صحيح ؟

هذا يتوقن على المحرك المستخدم، بعض المحركات تتعامل مع الكود و كأنه مجرد بيانات يجب معالجتها، تماما مثل الصوت و الصور و المجسمات، هذه الطريقة تعمل بالشكل التالي :

-كتابة كود المحرك
-كتابة وحدة معالجة الكود الخارجي ( احيانا يعبر يطلق عليها اسم Plugin مثل ما هو عليه الحال في برنامج 3D studio max و firefox )
- بناء المحرك : ترجمة تحرير الروابط انشاء ملف تنفيذي
- تشغيل المحرك و لتكن الحالة التالية :
  -نريد انشاء شخصية مقاتل هذا يتطلب :
          *مجسم المقاتل
          * الخامات التي تغطي المجسم
          * حركات المقاتل
          * الاصوات التي يطلقها المقاتل
          * تصرف المقاتل
  -النقطة الاخير : تصرف المقاتل يكون عبارة عن ملف يحوي الكود الاضافي، المكتوب بلغة المحرك الخاصة
  - الان سيتصرف المحرك كالاتي :
     *حمل المجسم  كما هو منصوص عليه في الدالة أ
     * حمل الخامات و الصقها كما هو  منصوص عليه الدالة ب
     * حمل الاصوات كما هو منصوص في الدالة ج
     * حمل التصرف كما هو منصوص في الدالة هـ
في هذه الحالة يكون الكود الاضافي المكتوب مجرد وسيلة لتغير خصائص موجود في المحرك اصلا،هناك حالات خاصة اين تكون للمبرمج حرية اكبر.
بهذه الطريقة نتجنب اعادة بناء المحرك ككل و نكتفي بتفسير الملف المكتوب بلغة المحرك.
يعرف هذا الميدان بـ Scripting


اذا فهمت هذه الطريقة ننتقل للطريقة اخرى انشاء الله