الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أدخل هنا قبل أن تبرمج الألعاب

مغلق
بدأه basha2002 في 1 فبراير 2007 · 8 رد · 1,551 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في رأيي أن عدم قوة برمجة الألعاب في الوطن العربي هو الإندفاع وراء الشئ دون إتباع التفكير المنطقي حتى يكتمل بالفعل هذا الشي و يرى النور أو بمعنى أصح العرب لا يعرفون هدفهم جيدا و لا يجيدون التخطيط للمشروع. خذ عندك مثلا, الكل يقول أن برمجة الـ C++ صعبة. هل أنت أصلا عرفت ما هي البرمجة و ما هي فكرتها. إليك خلاصة دراستي و إتصالي مع عالم برمجة الألعاب, بل عالم البرمجة ككل.

برمجة الألعاب في الأصل هي تعتمد على إتقان عدة مراحل.

المرحلة الأولى (فهم و إتقان علم البرمجة): و تلك المرحلة تقوم على شقين هما:

الشق الأول (علم الخوازميات): بمعني أصح كيف تحول ما تراه في الطبيعة من ظواهر إلى أعداد حسابية مما يمكن التعامل معها و التحكم فيها. بعدها كل ما تراه من أي شئ في البرمجة إنما يتم عن طريق مكتبة.

الشق الثاني (فهم طبيعة ما ستتم برمجته): يجب أن تفهم جيدا أنك تبرمج آلة, و إنما برمجة الألة يقتضي باضرورة معرفة طبيعتها, فيجب أن تعرف أنه أي بيانات تظهر على الشاشة إنما يجب نقلها من المساحة التخزينية إلى الرامات و التي تكون على إتصال مع المعالج و الذي يقوم بمعالجة تلك الخوارزميات المتمثلة في المعطيات الرياضية و الدوال و الأوامر السابق إتمامها. ثم تخرج بعد ذلك تخرج هذه الشاشة إلى عدة مخارج تتمثل في:

مخرج الشاشة: و هي تعد المخرج الإفتراضي (بالنسبة لنا كمبرمجين ألعاب على الأقل) و ذلك في حالة كون البيانات مرئية.

مخرج الصوت: و هو في حالة كون البيانات صوتية, و هي تأتي في المرتبة الثانية بعد الشاشة و تعد ذا أهمية ثانوية.

مخرج المحاكيات الآلية: و هي في حالة كون البيانات حركية, و هو يندر وجودها في الألعاب العادية, و لكنها أصبحت سمة شديدة الإتصال بألعاب الأركيد.

هذا و يلاحظ على الشق الثاني أنك لا تملك أكثر من أن تقوم بإدراكه و فهمه, دون أن تكون مكلفا بمعرفة الأساس العلمي القائم عليه. و ذلك حتى إذا ما قيل لك في إحدى دورس البرمجة أن البيانات سوف تنتقل إلى الذاكرة, تكون مدركا لفكرة إنتقال البيانات إلى الذاكرة, و لكنك لست مطالبا بإثبات الأساس العلمي, و ينطبق هذا أيضا على المخرجات. الجدير بالذكر أن المخارج قد تزداد و تتطور يوما بعد يوم لدرجة أننا بدأنا نرى مخارج تتصل بحاسة الشم :)

المرحلة الثانية (برمجة بيئة البرمجة): و يقصد بذلك أن تقوم ببرمجة البيئة نفسها, فإذا كنت في بيئة الويندوز, فيجب أن تبرمج بيئة ويندوز, و إن كانت بيئة اللعبة هي بيئة لينكس, فيحب أن تبرمج بيئة لينكس...إلخ. و في تلك المرحلة ليس من المهم أن تعرف برمجة البيئة المستقبلة للتطبيقات بشكل كامل, و إنما خذ منا ما يكفيك لبرمجة التطبيقات.

المرحلة الثالثة (برمجة التطبيقات): و تلك المرحلة يصعب جدا الإنتقال إليها إلا بعد إتقان المرحلتين السابقتين و إلا ستفشل في إنتاج لعبة جيدة, و يقصد بها برمجة الرسوم و الصوت و الشبكات و الفيديو... إلخ, و التي إن أجتمعت تكون لنا عالم برمجة الألعاب, (و هي بوجه عام يصعب لدرجة تصل إلى المستحيل أن تجتمع لدى شخص واحد), و إن لم تجتمع أصبح لدى صاحبها التخصص في إحدى التطبيقات, هذا و إن إجتمع أصحاب تلك التخصصات فإنه يمكن أن تظهر لنا اللعبة, هذا ويعد التطبيق الأساسي لظهور اللعبة هو علم الرسوميات, أما الباقي فهو مجرد عمليات تحسين و إرتقاء بمستوى اللعبة, فاللعبة التي بها صوت أفضل بكثير من اللعبة التي بدون صوت, و اللعبة التي يمكن لعبها عن طريق الشبكات أفضل من اللعبة التي بدون شبكات. هذا, و لا يقف أي تطبيق عند حد معين و إنما هو في تطور مستمر.

و يلاحظ على جميع المراحل أمرين:

أولهما: أن المرحلة الأولى أنها تتم عن طريق لغة من لغات البرمجة, أما المرحلتين الثانية و الثالثة فتتم برمجتهما عن طريق مكتبات يتم ربطها بلغات البرمجة.

ثانيهما( فهم طبيعة ما ستتم برمجته): و قد تم إيضاحها مفصلة في المرحلة الأولى و ذلك لصغر حجمها. أما المرحلة الثانية فهي تقوم على الإحتكاك كثيرا ببيئة البرمجة. و المرحلة الثالثة تعتمد على الإحتكاك بالتطبيقات, فإذا كنت ستبرمج من أجل تطبيقات الجرافيك, فيجب أن تكون قد تعلمت إحدى برامج الجرافيك كي يسهل عليك بعد ذلك تتبع خطى مكتبة البرمجة الخاصة بالجرافيك, و كذلك الحال مع مكتبات الصوت و الفيديو و الصور و الشبكات...إلخ.

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

و السلام ختام

عندما أعلن حبى لشىء فى البرمجة فذلك معناه أنه أفضل بالنسبة لى من حيث المميزات و الامكانات

OpenGL-3-revolution.jpg

#2

- الإعداد الإداري:

من موضوع إنتاج لعبة عربية قوية

رد الأخ egycool :

اقتباس
انا هارد على الاسئلة في اجابة واحدة بس

العرب فيهم عيب واحد بس انهم بيتحمسوا للحاجة كويس جدا لكن بعد شوية وقت الحماس دة بيروح مش عارف لية ؟

كل المشاكل الي انت قولتها دية والا ليها اي حاجة في حالة تشغيل المخ

وعلى فكرة انا بدات فكرتك دية مع واحد صحبي بس في برنامج ننزلة السوق وكلن مع الاسف صحبي دة مش عارف لحد الان مكانة وبكلمة على الموبيل مش عارف اجيبة مش عارف بقى اذا كان بيتهرب والا مش قد الشغل

و هذا يدل على عدم الجدية والإستهتار و قد أبدي الأخوة : أحمد صالح و الشمري و basha2002 علي إهتمامهم وتعاونهم معي من أول مكالمة لهم و هذا بشكل شخصي يعتبر إهنمام كبير ولازلت علي إتصال بهمكلما تفرغوا من الدراسة الي أن نتقابل جميعاً إن شاء الله .

و رديت مُعقباً علي الأخ egycool :

اقتباس
السلام عليكم

كلكم رديتوا علي أسئلة في الإدارة و التسويق كأن فيه فريق فعلاً جاهز و مدجج بالأجهزة والموارد ( بشرية ,مادية ,معنوية) و كل ما هو منتظر خبرة أو خطة و أسلوب عمل يضمن لنا نجاح المشروع , في الواقع انتوا وقعتوا في ملعبي ; تخصصي الأكاديمي (الدراسي يعني) إدارة الموارد البشرية بتخصص .

انا في مجال برمجة الألعاب منذ 3 سنوات الأن و للأمانة هناك حد ادني لكل عضو يجب ضمه لفريق العمل; حد أدني في إمكاناته التي سيقدمها (مادياً ,معنوياً) و لكن

مشكلتنا الحقيقية بجرد أخذ فكرة عن موضوع معياً نسعي لإستخدامه للربح ,دون ان نجرب فيه مرات عديدة للوقوف علي أوفر و أسرع و أفضل الحلول و الأفكار و عدم تقسيم العمل بظن منا أن أحداً سيحجب الضوء عن الأخر هذا عكس مفهوم التخصص في الغرب Europe ,US and Japan نعم حتي اليابان إستوعبت فكرة هذا التخصص وحث الرسول صلي الله عليه وسلم فالإسلام يدعوانا العمل و التعاون , ويدعونا للتخصص في قوله تعالي ( واسألوا أهل الذِكر إن كنتم لا تعلمون ) ويعني هذا ان أسأل كل أهل ذكر في صنعته, ومن رحمة الله مجال الكمبيوتر ليس حكراً علي مهندسيه فقط فهناك الـ IT وهم خبراء ولكن ليسوا مهندسين و لهم صلاحيات تطوير أكبر أحياناً من المهندسين .

لنعد لموضوعنا, و إن كان احداً يريد كلمة سحرية (مفتوح المصدر) نعم نعم نعم ,

محرك Ogre أو Irricht لم تصل الى ما هي عليه من يوم وليلة بل رخصتها جعلت من يريد إستخدام منتجهم بشكل تجاري ان يدفع نسبة من الأرباح لهم .

نحن بحاجة لنتعلم الدين و الإدارة قبل العمل في أي نشاط و ليس الإندفاع بطيش نحو أي هدف و تكون النتيجة مخيبة للأمل و محبطة كما إعتدنا .

أتمني أن تكون قد وضحت الصورة كاملة للجميع , وأتمني أن أكون وفقت في إكمال موضوع الأخ basha2002 فالكمال لله تبارك وتعالي .

أخيكم في الله ;

NubiaPrince

أحمد زايد

تم تعديل هذه المشاركة بواسطة NubiaPrince في 1 فبراير 2007 في 20:30

' و على الله فليتوكل المؤمنون '

* فريق الجرافيك الحاسوبي العربي الإسلامي * the Arabic-Islamic Computer Graphics - A I C G

イスラム教は平和を意味する

이슬람교는 평화를 의미한다

Ислам означает мир

#3

السلام عليكم

اولا شكرا لك اخ على هذه المقالة و ان كانت تحتاج لمزيد من التنقيح

لانني احس ان مقالتك بها بعض الغموض

اقتباس
يجب أن تفهم جيدا أنك تبرمج آلة, و إنما برمجة الألة يقتضي باضرورة معرفة طبيعتها, فيجب أن تعرف أنه أي بيانات تظهر على الشاشة إنما يجب نقلها من المساحة التخزينية إلى الرامات

:wacko:

اقتباس
التي تكون على إتصال مع المعالج و الذي يقوم بمعالجة تلك الخوارزميات المتمثلة في المعطيات الرياضية و الدوال و الأوامر السابق إتمامها. ثم تخرج بعد ذلك تخرج هذه الشاشة
:blink: :blink:

من الافضل في وجهة نظري تغييب المسائل المعقدة عن المبرمج الا اذا كان يريد ان ينتج تقنية شبيهة ب OpenGL او DirectX

يكفي مبرمج الالعاب ان يتقن لغة البرمجة و يتقن التقنية التي سيعتمدها في العابه

البساطة قدر الامكان برمج من الاسهل الى الاصعب طور برامجك و العابك باسلوب كائني يعتمد التطوير مثلا

كائن المحرك

كائن بسيط يمتلك دالة انشاء اللعبة ( ما يقوم به هو فقط كود انشاء نافذة ) و دالة انهاء البرنامج

يتطور ليصبح يمتلك كائن خاص بالشاشة و هذا الاخير يجهز سطوح دايركت اكس للر سم

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

كائن الشخصيات يتطور و تضاف له الخصائص شيئا فشيئا

و اخيرا الف شكر على المقالة الرائعة و اعذرني على المداخلة

تحياتي

#4

السلام عليكم

شكرا لكل من تفاعل من الأخوة, بالنسبة للأخ ممكن:

(البساطة قدر الامكان برمج من الاسهل الى الاصعب طور برامجك و العابك باسلوب كائني يعتمد التطوير مثلا).

البرمجة لا يمكن أن تكون هكذا, إنما البرمجة أن تبدأ من الأساسيات إلى الفروع, و أن تبرمج ما يستحق منك جهدا(لاحظ أنه كلما أنتقلت من الأساسيات إلى الفروع, كلما قلت أهمية الحفظ, و الإقتصار على فهرسة باقي الفروع و الرجوع إليها وقتما شئت), و كلنا يعرف نتيجة أختيار السهل في البرمجة بدلا من إختيار الأفضل بحجه أنه الصعب. كفاني أن تنظرون إلى عاقبة إختيار السهل في لعبة (تحت الحصار أو تحت الرماد), أنا لا أنكر الجهد الذي بذلوه في اللعبة و إنما أنكر عليهم تضييع وقتهم في طريقة برمجة أدت بهم إلى لعبة ليست بالجيدة برمجيا.

(يكفي مبرمج الالعاب ان يتقن لغة البرمجة و يتقن التقنية التي سيعتمدها في العابه).

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

(من الافضل في وجهة نظري تغييب المسائل المعقدة عن المبرمج الا اذا كان يريد ان ينتج تقنية شبيهة ب OpenGL او DirectX ).

يا أخي الحبيب, ما تقول عنه أنه من المسائل المعقدة الواجب تغييبها كان السبب في وقوفي أمام إحدى الدوال البرمجية عدة شهور دون فهما لها :( كانت إحدى الدوال التي تتأكد من وصول البيانات من وسيط التخزين إلى الذاكرة , ثم إنك لو نظرت إلى الملاحظة التي وضعتها بعد الكلام عن المرحلة الأولي, ستجد أنني قلت يجب إدراكها فحسب, دون أن تكون مطالبا بإثبات أي أساس علمي لها (أنا لم أطالب أحدا قط بسر تصنيع مكونات الحاسب). هل من الصعب على المرء أن يدرك أن البيانات تنتقل من القرص الصلب (مثلا) إلى الرامات ثم تنتقل بعد ذلك إلى المعالج الذي يقوم بمعالجة البيانات. هل من الصعب أيضا أن يدرك المرء أن البيانات المرئية تخرج إلى الشاشة, هل من الصعب على المرء أن يدرك أن الصوت يخرج من السماعات.

كما أنني لا أطالبك بإتمام عملك كاملا بعلم الخوارزميات, و إلا فما فائدة المكتبات حينئذ, كل ما أطالبك به هو الإحاطة بهذا العلم, و لا تقلق بشأنه, ذلك أنه يرتبط بالتفكير الشخصي. أما إن لم تكن بعد تفهم ما هو علم الخوارزميات فسأعطيك مثال بسيط. لنفترض أن أمامك كلبا يجري, و نريد نقل مثل هذا المنظر برمجيا إلى الحاسب, التحليل السليم للعقل البشري يفترض أن حركة الكلب ما هي إلإعدة صور متلاحقة يتم إدخالها إلى الحاسب عن طريق إحدى وسائل الإدخال المتاحة, ثم عرض تلك الصور بشكل متتالي, و ذلك كي تظهر صورة الكلب و هو يجري على الشاشة. و كما هو واضح من هذا المثال يتضح أن الخوارزميات ما هى إلا أمتداد للتفكير بشكل منطقي ؛)

(اولا شكرا لك اخ على هذه المقالة و ان كانت تحتاج لمزيد من التنقيح)

لا أري أنها تحتاج إلى تنقيح, و إن كنت أرى أنها تحتاج إلى تصحيح لغوي, (آسف صوت التلفاز كان مرتفع و لم أستطيع التركيز) :) و ذلك في الفقرتان اللتان سبق ذكرهما ليكونا كالتالي:

( يجب أن تفهم جيدا أنك تبرمج آلة, و إنما برمجة الألة يقتضي بالضرورة معرفة طبيعتها, فيجب أن تعرف أنه أي بيانات تظهر على الشاشة إنما يجب نقلها من المساحة التخزينية إلى الرامات)

(التي تكون على إتصال مع المعالج و الذي يقوم بمعالجة تلك الخوارزميات المتمثلة في المعطيات الرياضية و الدوال و الأوامر السابق إتمامها. ثم تخرج بعد ذلك إلى إحدى المخارج التالية:)

أما بخصوص المشاكل في الوطن العربي فهي مشكلتنا نحن, و ليس لها علاقة بالبرمجة, و لذا لم أذكر شيئا عنها, و إن كنت تريد نصيحتي, علم نفسك فن التمرد على الظروف :) أتذكر دوما أنني كنت أوفر ثمن المواصلات و الوصول إلى المنزل سيرا من أجل توفير حق الدخول على شبكة الأنترنت, أتذكر أنني كنت أتفنن في إخفاء الصفحات التعليمية لدروس البرمجة التي كنت أطبعها حتى لا يمسك بها أهلي و يمزقونها لأنهم كانوا يرون أنها تؤثر على دراستي.

و إن كنت تقصد وضع وصلات, فأحببت أن يدخل الأخ الشمري مساهما بالوصلات, و ذلك لإدخال روح التعاون في المقالة, و لكنني وجدت الأخ الشمري و قد قرأ و قام بالرد على بعض المقالات, و لم يبدي إهتماما لمقالتي (لو أن الأخ الشمري قام بالإحتكاك بإحدى برامج الرسوميات الثلاثية البعد لعرف ما هو المقصود البعد الرابع دون حاجة للسؤال), عموما سأعود لضبط هذا المقال مع وصلات و تفصيلات أكثر.

و السلام ختام

عندما أعلن حبى لشىء فى البرمجة فذلك معناه أنه أفضل بالنسبة لى من حيث المميزات و الامكانات

OpenGL-3-revolution.jpg

#5

السلام عليكم

اعتقد انك فهمت ان ردي بمثابة تعقيب او تصحيح او مناظرة لما سبق و كتبته :(

اخي العزيز basha2002

في عالم البرمجة كل شي ممكن و لكن نحن نتحدث عن الاسلوب الامثل

البـــــــــــــــســــــــــــــــاطة

انادي دوما بالبساطة في كتابة الاكواد و اتباع الطرق الكائنية و وراثة الكائنات و فصل كود اللعبة عن الكود المستخدم في معظم الالعاب ليصبح الكود الاكثر استخداما في كائنات مستقلة

اقتباس
البرمجة لا يمكن أن تكون هكذا, إنما البرمجة أن تبدأ من الأساسيات إلى الفروع

لا ادري ماذا تقصد بالضبط :wacko:

منذ فترة طويلة تم ابتكار البرمجة الكائنية او ما يطلق عليها OOP

و اصبح تنظيم الكود شي اساسي لم يتم ابتكارها لانها تكتب كود اقوى او ما شابه لان الكائنات في النهاية مجرد تغليف للدوال

انما تم ابتكارها لتبسيط الكود و امكانية التعديل عليه و عدم كتابته مرة اخرى يعني البساطة

اعود للوراء عندما كان على المبرمج ان يهتم بالاجهزة التي يتعامل معها مثل الطابعة كانت البرمجيات تشترط اسماء الطابعات التي تعمل مع البرنامج

و لنا في برامجنا العربية القديمة على الدوس مثال واضح

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

مسألة الذاكرة

ادركت شركات مثل شركة صن ضرورة ادارة الذاكرة في لغتها جافا من قبل اللغة و ليس من قبل المبرمج فانطلق نظام ال Garbage Collection

و معناها مجمع النفايات حيث تقوم لغة البرمجة نيابة عن المبرمج بالاهتمام بشؤون الذاكرة

و لان هذا هو المبدأ الصحيح تبعتها الشركات في هذا النظام و لنا في لغة #C التي تعتمد Garbage Collection

العالم يتجه نحو تبسيط الكود و اعادة استخدامه

كل شي اصبح Mangaed حتى ++C اصبحت ++ Mangaed C

مدارة

مهندسي الطرق لا يحتاجون ان يعملوا على حمل الاحجار عن الطريق بحجة انهم لابد ان يعرفوا الاساسيات

و انا اقولها بصراحة لكل مبرمج العاب

برمج من الاسهل للاصعب في اطار كائني قابل للتعديل

مثال

لانشاء مكعب صمم كائن اسمه Shape ابني دالة سمها CreateCube

بعدة عدة شهور اردت تطوير الكود بحيث يتم رسم المكعب و بلون معين

قم بتحميل زائد للدالة اي كتابة دالة بنفس الاسم و تغيير في البارمترات

لا اريد ان يكون الموضوع مايشبه المناظرة و لن اعود للتعقيب في هذه الجزئية

اشكرك على موضوعك الشيق و دمت حفظك الله

تحياتي

#6

السلام عليكم

و لماذا لا تقوم بالتعقيب علي, ما العيب في ذلك, إنما نحن نتحاور و نتشاور من أجل الوصول إلى الأسلوب و الحل الأمثل في البرمجة. باختصار شديد ما كنت أقصده هو أن تختار البرنامج الأفضل في الأداء, فلا تقول أختار لغة الفيجوال بيسيك لأنها بسيطة, و تترك لغة السي ++ بحجة صعوبتها, لغة السي++ تحتاج لشرح طويل, و لكن ليس معنى هذا أنها صعبة, و البساطة يا أخي لا تكون إلا في الأسلوب البسيط في الشرح, أما أن تختار البسيط بداخل اللغة لدراسته أولا ثم تقوم بدراسة ما هو صعب, فأنا أرى أن هذه الفكرة بحد ذاتها ليس لها أساس من المنطق, إذ أن الدراسة في أي علم تكون بأسلوب متسلسل و ما يجب على المرء أن يقوم بدراسته أولا.

(مهندسي الطرق لا يحتاجون ان يعملوا على حمل الاحجار عن الطريق بحجة انهم لابد ان يعرفوا الاساسيات)

لم أطلب من مهندسي الأساسيات أن يقوموا بحمل الأحجار, و إنما عليهم أن يدركوا بأن هناك أحجار يجب وضعها, و ما على العمال المخصصين لذلك إلا أن يقوموا بالحمل :) أتمنى أن تكون فهمتني.

حسنا أخي طالما لازلت لا تفهم كلامي أتمنى أن نتقابل إن كنت من أهل القاهرة الكبرى و نتحدث سويا, أنتظرك على الخاص لتحديد الموعد على بريدي التالي:

basha2002us2002@yahoo.com

و السلام ختام

عندما أعلن حبى لشىء فى البرمجة فذلك معناه أنه أفضل بالنسبة لى من حيث المميزات و الامكانات

OpenGL-3-revolution.jpg

#7

السلام عليكم

اهلا بك اخي باشا

للأسف لست من اهل القاهرة انا من بلاد الحرمين الشريفين

لكن سرني المشاركة في موضوعك

هناك لبس في الموضوع انا لا اقصد ان يختار المبرمج الاسهل بمعنى لغة سهلة او مكتبات جاهزة

كل حواري عن لغة ++C و تقنية OpenGL او DirectX مباشرة

لكن بدلا عن الخوض في مسائل معقدة في بداية الطريق

المفترض البدء ببرامج بسيطة ثم تطويرها في اطار كائني قابل للتعديل

للعلم هناك تقنيات جديدة و معقدة لها بدائل بسيطة مثل انظمة الاضاءة و الجزئيات و التصادمات قد تفي بالغرض لفترة معينة ثم

يتم التعرف عليها و تطبيقها و الاستفادة منها

تحياتي

#8

السلام عليكم

إن كان هذا أخي هو قصدك بالبساطة فأنا متوافق معك, و لكن ليس توافقا كليا. إن ما تقول عنه لا ينحصر إلا في صناع القرار في عالم البرمجة, بمعنى أصح إلى أي مدي يفكر منتجي البرامج و المكتبات البرمجية في رفع مثل هذه الأشياء عن كاهل المبرمج, خذ مثلا يا أخي: الدخول إلى عالم OpenGL يتطلب معرفة منك بمثل تلك الأشياء, ستقول لي أن أتعامل مع GLUT, سأقول لك إني كنت متابعا لك في الموقع و متابعا لآراءك و أنت ترفض التعامل مع GLUT. إذن كان رأيي صحيح في الأهتمام بمثل تلك الأشياء. و أؤكد دوما على إدراك و فهم تلك الأمور دون المطالبة ببحث التفسير العلمي لمثل تلك الأمور.

و لكن هناك ما هو أخطر يا أخي, إن الداخل الجديد إلى عالم OpenGL يكون في حيرة من أمره بين إتباع الـDocumentation و بين إتباع الـTutorial. و الفرق بين الإثنان في الأول يعد شرح بشكل مباشر لما يحتويه البرنامج أن المكتبة من أوامر و خصائص. أما الثاني فيعتمد على أن بدلا من أن يشرح ما في المكتبة أو البرنامج من خصائص أو أوامر, فإنه يقدمها في شكل تطبيق فعلي يمكن أن يفهم من خلاله بشكل مباشر طبيعة مثل هذا الأمر أو الخاصية. الكثير يفضل بعد كثرة إحتكاك بالبرنامج أو المكتبة أن يلجأ إلى الـDocumentation. و المبتدئين يفضلون الـTutorial. و لكن لي رأي خاص, و هو أن تأخذ أولا بالـDocumentation في بادئ الأمر ثم عندما تتعلم و تحتاج إلى تطبيق ترى فيه طبيعة مثل تلك الخاصية أو الأمر فقم بالإتجاه إلى الـTutorial. محصلة الأمر أن من يريد الأحتراف لا يمكن أن يستغني عن مثل هذان الأسلوبان في التعلم, و الأخذ بهما بشكل متلازم.

و السلام ختام

عندما أعلن حبى لشىء فى البرمجة فذلك معناه أنه أفضل بالنسبة لى من حيث المميزات و الامكانات

OpenGL-3-revolution.jpg

#9

السلام عليكم

أتمنى منك يا أخي أن تبدي رأيك بعد أن قمت بالتعديل في المقالة :)

برمجة الألعاب في الأصل هي تعتمد على إتقان عدة مراحل.

المرحلة الأولى (فهم و إتقان علم البرمجة): و تلك المرحلة تقوم على شقين هما:

الشق الأول (علم الخوازميات): بمعني أصح كيف تحول ما تراه في الطبيعة من ظواهر إلى أعداد حسابية مما يمكن التعامل معها و التحكم فيها. بعدها كل ما تراه من أي شئ في البرمجة إنما يتم عن طريق مكتبة.

الشق الثاني (فهم طبيعة ما ستتم برمجته): يجب أن تفهم جيدا أنك تبرمج آلة, و إنما برمجة الألة يقتضي بالضرورة معرفة طبيعتها, فيجب أن تعرف أنه أي بيانات تظهر على الشاشة إنما يجب نقلها من المساحة التخزينية إلى الرامات و التي تكون على إتصال مع المعالج و الذي يقوم بمعالجة تلك الخوارزميات المتمثلة في المعطيات الرياضية و الدوال و الأوامر السابق إتمامها. ثم تخرج تلك البيانات المعالجة بعد ذلك إلى الشاشة. و الشاشة ليست المخرج الوحيد, و لعل من أهم المخارج :

مخرج الشاشة: و هي تعد المخرج الإفتراضي (بالنسبة لنا كمبرمجين ألعاب على الأقل) و ذلك في حالة كون البيانات مرئية.

مخرج الصوت: و هو في حالة كون البيانات صوتية, و هي تأتي في المرتبة الثانية بعد الشاشة و تعد ذا أهمية ثانوية.

مخرج المحاكيات الآلية: و هي في حالة كون البيانات حركية, و هو يندر وجودها في الألعاب العادية, و لكنها أصبحت سمة كثيرة الإتصال بألعاب الفيديو جيم.

هذا و يلاحظ على الشق الثاني أنك لا تملك أكثر من أن تقوم بإدراكه و فهمه, دون أن تكون مكلفا بمعرفة الأساس العلمي القائم عليه. و ذلك حتى إذا ما قيل لك في إحدى دورس البرمجة أن البيانات سوف تنتقل إلى الذاكرة, تكون مدركا لفكرة إنتقال البيانات إلى الذاكرة, و لكنك لست مطالبا بإثبات الأساس العلمي, و ينطبق هذا أيضا على المخرجات. الجدير بالذكر أن المخارج قد تزداد و تتطور يوما بعد يوم لدرجة أننا بدأنا نرى مخارج تتصل بحاسة الشم :)

المرحلة الثانية (برمجة بيئة البرمجة): و يقصد بذلك أن تقوم ببرمجة البيئة المتمثلة في الشاشة التي ستظهر عليها البيانات و كذلك الأزرار و برمجة لوحة المفاتيح و كذلك الفأرة, فإذا كنت في بيئة الويندوز, فيجب أن تبرمج بيئة ويندوز, و إن كانت بيئة اللعبة هي بيئة لينكس, فيحب أن تبرمج بيئة لينكس...إلخ. و في تلك المرحلة ليس من المهم أن تعرف برمجة البيئة المستقبلة للتطبيقات بشكل كامل, و إنما خذ منا ما يكفيك لبرمجة التطبيقات.

المرحلة الثالثة (برمجة التطبيقات): و تلك المرحلة يصعب جدا الإنتقال إليها إلا بعد إتقان المرحلتين السابقتين و إلا ستفشل في إنتاج لعبة جيدة, و يقصد بها برمجة الرسوم و الصوت و الشبكات و الفيديو... إلخ, و التي إن أجتمعت تكون لنا عالم برمجة الألعاب, (و هي بوجه عام يصعب لدرجة تصل إلى المستحيل أن تجتمع لدى شخص واحد), و إن لم تجتمع أصبح لدى صاحبها التخصص في إحدى التطبيقات, هذا و إن إجتمع أصحاب تلك التخصصات فإنه يمكن أن تظهر لنا اللعبة, هذا ويعد التطبيق الأساسي لظهور اللعبة هو علم الرسوميات, أما الباقي فهو مجرد عمليات تحسين و إرتقاء بمستوى اللعبة, فاللعبة التي بها صوت أفضل بكثير من اللعبة التي بدون صوت, و اللعبة التي يمكن لعبها عن طريق الشبكات أفضل من اللعبة التي بدون شبكات. هذا, و لا يقف أي تطبيق عند حد معين و إنما هو في تطور مستمر.

و يلاحظ على جميع المراحل أربع أمور:

أولهما: أن المرحلة الأولى أنها تتم عن طريق لغة من لغات البرمجة, أما المرحلتين الثانية و الثالثة فتتم برمجتهما عن طريق مكتبات يتم ربطها بلغات البرمجة.

ثانيهما( فهم طبيعة ما ستتم برمجته): و قد تم إيضاحها مفصلة في المرحلة الأولى و ذلك لصغر حجمها. أما المرحلة الثانية فهي تقوم على الإحتكاك كثيرا ببيئة البرمجة. و المرحلة الثالثة تعتمد على الإحتكاك بالتطبيقات, فإذا كنت ستبرمج من أجل تطبيقات الجرافيك, فيجب أن تكون قد تعلمت إحدى برامج الجرافيك كي يسهل عليك بعد ذلك تتبع خطى مكتبة البرمجة الخاصة بالجرافيك, و كذلك الحال مع مكتبات الصوت و الفيديو و الصور و الشبكات...إلخ.

ثالثهما(إسلوب التعلم): و ينحصر إسلوب التعلم بين نوعين هما:

1. الإسلوب الوثائقي (Documentation): و هو الإتجاه المباشر إلى تعلم الأوامر أو الخصائص في البرنامج أو المكتبة المستخدمة, و هو في الغالب يصدر من الجهة التي أصدرت البرنامج أو المكتبة, و في حالة صدوره من الأشخاص العاديون فإنه يصدر تحت أسم The Bible, أي المرجع.

2. الإسلوب التطبيقي (Tutorial): و هو شرح الأمر أو الخاصية و لكن في شكل عمل تطبيقي, فقط ضع كلمة Tutorial و بجانبها إسم البرنامج أو المكتبة التي تبحث عن دروس لها في محركات البحث و ستجد بإذن الله ما يسرك.

رابعهما (ما أنت مطالب بحفظه): تعود على أنك لست مطالب بحفظ كل أمور البرمجة, و إنما أنت مطالب بحفظ المهم منها فقط, ركز فقط على الإلمام الجيد بأنواع المتغيرات و الثوابت و الحلقات التكرارية و الجمل الشرطية, و فن عمل كود أساسي يمكن بناء اللعبة عليه "CodeStandard".

و في النهاية أتمنى أن أكون وفقت في سد الثغرات في المقالة الأولى.

و السلام ختام

عندما أعلن حبى لشىء فى البرمجة فذلك معناه أنه أفضل بالنسبة لى من حيث المميزات و الامكانات

OpenGL-3-revolution.jpg

هذا الموضوع مغلق.

مواضيع مشابهة