السلام عليكم ورحمة الله وبركاته.
كيف الحال ابطال المنتدى؟ ان شاء الله كلّ اموركم تمام التّمام.
نواصل مع 'كوكب الموطأ' في موضوع جديد و شيّق واسأل الله ان يطرح القبول فيه و ينفعكم ولو قليلا.
1- المقدمة:
سوف نتحدث عن 'تطوير الألعاب'، ويا أحبابي اينما وجدتم كلمة 'تطوير' فلتعلموا انّ هناك 'برمجة' ، فلو قلت 'تطوير تطبيقات الموبايل' فهذا المجال فيه البرمجة، لو قلت 'تطوير الروبوتات' فحتى هذا المجال فيه البرمجة.
وقبل ان نتطر ونتعمق في الموضوع، فأحببت ان أسألكم سؤلا.
هذا الحاسوب هو عبارة عن آلة، فما هي لغة الآلة حتى يفهمنا الحاسوب؟
سؤال جيّد ايها القارئ الذكيّ
الحاسوب والذي يعتبر آلة بالطبع، هو مجموعة من المكونات الالكترونية (مثل المقاومة واعلم جميعا انكم تعلمون ما هي المقاومة)، وهذه المكونات ما الذي يسري بداخلها في رأيكم؟ اكيد يسري فيها الكهرباء
- نعم يا عبد الله اذا لغة الالة هي الكهرباء
- ما هذا يا هذا، هل تظن انّه لم يصفعك الكهرباء سوف يتحدث معك
بما انّ الكهرباء هو الذي يسري في هذه المكونات، فلدينا حالاتان، امّا الكهرباء يمر او لا يمر، فلو مرّ الكهرباء نقول ان الحالة هي واحد (1) وان لم يمر فانّ الحالة هي صفر (0)، وهاذا هو النظام الثنائي او كما نقول بالانجليزية Binary System ومن هذا النظام تتكون لغة الآلة.
ان تساءلت اين يمر الكهرباء او لا يمر، فهذا موضوع عميق جدا وسوف ندخل في احد مواضيع Computer Science ومواضيع الالكترونيات، لذلك كل ما عليك ان تضعه في ذهنك هي حالة الكهرباء يمر او لا يمر، يعني 0 او 1، ومن هنا تتشكل لغة الآلة.
الان تخيل معي لغة تتكون من 0 و1 فقط، ولاجل ان اخبر الالة ان تعمل شيئا ما عليّ كتابة مثلا:
001101001110111001
الامر معقد أليس كذلك ؟
لكن لنلعب لعبة معا، لاحظ معي هذه الصورة:
تخيل معي ان هذه شاشة، يمكننا عرض الارقام من صفر الى تسعة.
تخيل ان كل عمود سواء كان ابيضا او اسودا هو عبارة عن مصباح
اي كل عمود (مصباح) لديه قاطعة لنشعله او نطفئه.
لو اردنا ان نعرض الرقم سبعة كما في الصورة فسوع نطفئ بعض المصابيح ونشعل الاخرى حتى يتشكل الرقم سبعة.
المصابيح السوداء يعني انّها مشتعلة يعني حالتها 1 اي التيار يمر فيها.
المصابيح البيضاء منطفئة يعني حالتها 0 اي التيار لا يمر.
الان الامر 0001011 يشكل لنا الرقم سبعة
تخيل معي انّه بكتابة هذا الامر 0001011 كاني اخبر الشاشة التي هي عبارة عن الة صغيرة ان تعرض الرقم سبعة، وهكذا مع باقي الارقام.
الان سوف اختبركم، ماهو الأمر لعرض الرقم 3، انتظركم في التعليقات يا عباقرة ومبرمجي المستقبل بإذن الله .
ما لعبناه مع بعض في الصورة السابقة امر مماثل لما يحدث في الحاسوب او بداخل معالج الحاسوب، لكن القاطعة التي تسمح بمرور و عدم مرور التيار هي مكون الكتروني اسمه transistor، وهذا هو الامر العميق الذي اخبرتكم قبل قليل انّنا لن نخوض فيه ولكن ذكرته في حالة ما اذا اردت اشباع فضولك و البحث حول الامر.
2- لغات البرمجة الحديثة:
لا تخبرني يا عبدالله اننا سوف نطور الالعاب ب 0 و1؟
لا ابدا، في القديم لما بدأوا بتطوير الحواسيب كان الامر ميكانيكيا فقط يعني لا يوجد الالكترونيات لذلك كان الحاسوب ضخما جدّا، ثم لما تم اختراع الترانزيستور واصبح الامر الكترونيا صغرت الحواسيب الى ما نراه في يومنا هذا.
نفس الشيء بالنسبة الى لغات البرمجة، فنحن سوف نستخدم لغات البرمجة عالية المستوى، بمعنى انّنا سوف نخاطبها بلغة البشر وليس بلغة الآلة.
لغات البرمجة عالية المستوى، تحتوي على ما يسمى بالـ Compiler او Interpreter (فكل لغة وما تحتويه) ويمكنكم اعتبارها كبرامج ضخمة لاجل تحويل لغة البرمجة عالية المستوى الى لغة الالة فهي كالوسيط وبهذا تم تسهيل الكثير من الامور علينا.
ما اقصده بلغة البشر هنا، هو ليس حديثا صريحا وانما الكلمات المفتاحية في اي لغة برمجة عالية المستوى هي بالانجليزية ومفهومة واعطيك مثالا:
هنا هو مثال عن الحالات الشرطية، بمعنى وانت تكتب في برنامجك يمكنك استخدام الكلمة المفتاحية if لعمل حالة شرطية.
مثلا: لو جاع عبدالله قم باطعامه دجاجا محمرّا
اه يا الاهي حالة شرطية جميلة تفكرني باحدى الطّباخات في هذا المنتدى، تحية لرحولة .
ملاحظة: لغة البرمجة المستخدمة في الصورة السابقة تدعى لغة PHP وهي اللغة التي يستخدمها موقع سبيستون، لذلك في الرابط في الاعلى تجد forum.php اي الملف البرمجي المسؤول عن عرض المنتدى اسمه forum وهو مكتوب بلغة الـ PHP.
3- تطوير الألعاب:
الآن نأتي الى جزئية تطوير الألعاب، وقبل ان نتطرق الى التفاصيل عليك ان تدرك بعض الامور:
- لتطوير الألعاب يجب ان تمتلك حاسوبا قويا، ويجب ان يكون لديك graphic card قوية ومعالج قوي ايضا، فلا يمكنك تطوير الالعاب بحاسوب ضعيف.
- تطوير الالعاب يعتمد كثيرا على الرياضيات والفيزياء، فلو كنت تطور في لعبة لسباق السيّارات، فعليك فهم التسارع و الاحتكاك والكثير من الامور الفيزيائية، وهذه الامور الفيزيائية سوف تحولها الى اكواد و خوارزميات تجعل اللاعب يستمتع وتكون له تجربة جيّدة مع لعبتك كانه يقود سيارة فعلا.
الان نأتي الى التفاصيل الممتعة والمتقدمة، ولاجل تطوير الالعاب لديك خياران في العموم:
- ان تستخدم برنامج Unity في تطوير الالعاب، وهو برنامج شهير جدا وان كنت من هواة الالعاب فاعلم انك رأيت شعاره في احد الألعاب
- الخيار الثاني ان تستخدم برنامج Unreal Engine وهو كذلك برنامج شهير جدّا في تطوير الالعاب، وايضا يعرض شعاره في الكثير من الالعاب.
يا عبد الله ما الفرق بين هاذين البرنامجين ؟
سأخبرك بأهم فرق بينهما، وانت عليك البحث عن باقي التفاصيل لاشباع فضولك، فلا يمكنني اطالة الموضوع كثيرا لتسهيل المراجعة.
- ان اردت استخدام برنامج Unity فعليك اتقان لغة البرمجة C# فهو يعتمد عليها.
- اما ان اردت استخدام برنامج Unreal Engine فعليك تعلم لغة C++.
هذا هو الفرق الجوهري بينهما، وكما ترى كل شيء يتعلق بالبرمجة اضافة الى الامور ثلاثية الابعاد او ثنائية الابعاد ان كانت لعبة بسيطة.
هناك ملاحظة مهمة اردت الاشارة اليها، وهي ان هاذين البرنامجين لا يمكنك استخدامهما لاجل تصميم الشخصيات او تصميم السيارات وما الى ذلك، فهما لاجل الجانب التطويري والبرمجي فقط، بمعنى تحضر سيارة او شخصية تم تصميمها سابقا وتعمل لها الحركات والانيميشن وما الى ذلك باحدى البرنامجين.
لا تمزح معي يا عبدالله ، وكيف اصمم هذه الشخصيات او الامكان او الطائرات او ...؟
هنا نأتي الى برنامج Blender هو الاكثر استخداما في التصميم، وهو يعتمد على لغة البرمجة Python
بعد ان تنتهي من التصميم (شخصية، سيارة، طائرة...الخ) تقوم بنقل التصميم الى احد البرنامجين السابقين وتنطلق في التطوير والبرمجة وبناء لعبتك.
وهنا نستنتج ان هناك مجالان مختلفان كلّيا في تطوير الالعاب:
- التصميم: تصميم شخصيات اللعبة و الأماكن و ما الى ذلك.
- البرمجة والتطوير: تحريك الشخصيات وتطوير لبّ اللعبة
ماذا عن العاب الهاتف يا عبدالله، هل يمكننا تطوير بنفس البرامج؟
نعم بواسطة نفس البرنامج يمكنك تطوير العاب الموبايل، فهذه البرامج تدعى:
cross-platform game engine
بمعنى يمكننا تطوير الالعاب لمختلف انظمة التشغيل بواسطة هذه البرامج بما فيها الحواسيب و الهواتف.
يا عبد الله هل يمكني استخدام هذه البرامج لاجل تطوير العاب VR ؟
نعم يمكنك ذلك ايضا بواسطة نفس البرامج.
الى هنا نختم موضوعنا، واي أسئلة اتشرف بالرد عليكم في التعليقات.
الموضوع القادم في كوكب الموطأ سوف يكون 'ورشة عمل' سوف تحمل الكثير من المفاجآت بإذن الله تعالى الواحد الأحد، واولها سوف نقوم معا باعادة تصميم الصفحة الرئيسية لموقع سبيستون وسوف ترافقونني في ذلك خطوة خطوة ان شاء الله لاريكم بعض اسرار البرمجة.
تحياتي يا ابطال والى الملتقي ان شاء الله تعالى ♥