مدونة مبرمج معماري

الداعي

مضيفكم وسام البهنسي يرحب بكم.

 

مبرمج ألعاب يهوى الحديث عن الأمور الممتعة في البرمجيات كالمتغيرات والمؤشرات والرسوميات وأحوالها وأمور أخرى لا يسعنا ذكرها في هذه المساحة الضيقة كما تلاحظون.

قائمة الصفحات

آخر التدوينات

آخر التعليقات

ملخص التعليقات
بذرة قاتمة
التوقيت 21/رجب/1431 03:48 ص بقلم الكاتب وسام البهنسي

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

 

من ضمن الأغاني ذات الموسيقى المميزة التي مرّت بي هي أغنية I Deny You لفرقة Dark Seed من ألبوم Diving Into Darkness (الأغنيات الأربع الأولى في الألبوم كلها مميزة في الواقع).

 

بالرغم من أنني عادة لا أركز كثيراً على كلمات الأغاني التي أسمعها، إذ -كما قلت سابقاً- هي فقط لملء الخلفية، إلا أنه ومن آن لآخر تتسرب كلمة إلى إدراكي، وهكذا تجد أن العقل الباطن يجمع هاته الكلمات وفي بعض الأحيان القليلة يستطيع تكوين إدراك عام لموضوع الأغنية.

 

تصادف وأن حصل هذا الإدراك أثناء استماعي للأغنية إياها، والتي أترجم عنوانها إلى أنا أنكرك.

 

لسبب ما بدت لي كلمات الأغنية تتحدث عن موضوع مألوف. بل وأعرفه جيداً…

 

إليك يا عزيزي الأغنية كمقطع في يوتيوب وقد قمتُ بوضع كلماتها بالإنجليزية مع ترجمتي المتواضعة للعربية. استمع إليها واقرأ الكلمات وسنناقشها بعد ذلك.

 

ملاحظة: أعتذر مسبقاً عن الشتائم المحتواة في كلمات الأغنية، وأرجو ألا يأخذها القارئ على محمل شخصي ابتسامة

 

أغنية (أنا أنكرك) لفرقة دارك سيد

 

 

أتودّ الذهاب في نزهة؟
ضرورية لك…
اسمح لي أن أقدم لك كلماتي:
التسالي الصغيرة تمنحك المتعة
إنك لا تدرك مغزاها، أيها الأحمق…


أنا أنكرك! أنا أحتقرك!
أنت من أضحك عليه
اذهب إلى جهنم الآن، هيا تحرك!
اتبع نصيحتي
أنا أنكرك، أنا أحتقرك!
أنت من أندم عليه
اذهب إلى جهنم الآن، هيا تحرك!
أنا واثق أنك ذاهب إلى جهنم!


الحق، لا قيمة له عندك
أنت تهتم بالمظاهر
اخرس فأنا أتحدث الآن!
أنت لا تدرك من الحقيقة شيئاً


أنا أنكرك! أنا أحتقرك!
أنت من أضحك عليه
اذهب إلى جهنم الآن، هيا تحرك!
اتبع نصيحتي
أنا أنكرك، أنا أحتقرك!
أنت من أندم عليه
اذهب إلى جهنم الآن، هيا تحرك!
أنا واثق أنك ذاهب إلى جهنم!



الآن دروبنا ستفترق للأبد
انسَ كلماتي وعِش الدنيا التي تعيشها
الآن قد حان الوقت لوداعك 
امضِ في طريقك ثانيةً وابقَ مغفـّلاً!


أنا أنكرك! أنا أحتقرك!
أنت من أضحك عليه
(انسَ كلماتي)
اذهب إلى جهنم الآن، هيا تحرك!
اتبع نصيحتي
(امضِ في طريقك ثانية)
أنا أنكرك، أنا أحتقرك!
أنت من أندم عليه
(امضِ في طريقك ثانية)
اذهب إلى جهنم الآن، هيا تحرك!
أنا واثق أنك ذاهب إلى جهنم!

(وداعاً لك)

وداعاً لك

Would you like to go for a walk?
Essential for you...
May I introduce you to my words:
Small amusements give you joy
You don't think about it's sense, stupid guy...

 


I deny you! I despise you!
You're the one 'bout whom I laugh
Go to hell now, get a move on!
Follow my advice
I deny you! I despise you!
You're the one whom I regret
Go to hell now, get a move on!
I'm sure you go to hell!

 

 
Truth it has no value for you
You keep up appearances
Shut your gob, now I am talking!
A fat lot you know about the truth

 

 

I deny you! I despise you!
You're the one 'bout whom I laugh
Go to hell now, get a move on!
Follow my advice
I deny you! I despise you!
You're the one whom I regret
Go to hell now, get a move on!
I'm sure you go to hell!

 

 

Now our ways will seperate forever
Forget my words and live the world you live

Now it's time to say good-bye to you
Walk your path again and keep a fool!

 

 

I deny you! I despise you!
You're the one 'bout whom I laugh

(forget my words)

Go to hell now, get a move on!
Follow my advice

(walk your path again)

I deny you! I despise you!
You're the one whom I regret
(walk your path again)

Go to hell now, get a move on!
I'm sure you go to hell!

(good-bye to you)

 

Good-bye to you

 

 

ما رأيك؟ مفاجأة، أليس كذلك؟

 

أعتقد أنك الآن قد عرفت ما المألوف في كلمات الأغنية. والآن أجرؤ على إعادة ترجمة عنوان الأغنية إلى "أنا بريء منك" بدلاً من "أنا أنكرك"، وذلك لأن المعنى العام للأغنية يقترب من صريح معنى الآية الكريمة:

 

{ كَمَثَلِ الشّيْطَانِ إِذْ قَالَ لِلإِنسَانِ اكْفُرْ فَلَمّا كَفَرَ قَالَ إِنّي بَرِيَءٌ مّنكَ إِنّيَ أَخَافُ اللّهَ رَبّ الْعَالَمِينَ } (الحشر، الآية 16)

 

الطريف في الموضوع أننا كمسلمين نعرف كيف يغوي الشيطان البشر ثم يتبرأ منهم في نهاية المطاف، وهذه المعرفة مصدرها ما أنزله الله تعالى في كتابه الكريم. لكن ماذا عن فرقة دارك سيد؟ ما هو مصدر معرفتهم بهذه الأمور، بل وبهذا التفصيل؟

 

لا أحب القفز لنتائج بعيدة، لذلك أترك لكم الإجابة على هذا السؤال، و… خذوا الحذر…





عبر السُّدُم وكود بليكس
التوقيت 14/رجب/1431 02:28 ص بقلم الكاتب وسام البهنسي

بسم الله الرحمن الرحيم،

 

في التدوينة السابقة رأينا سويةً أساليب العمل الجماعي في مشاركة الكود. وانتهينا إلى أن مشروع لعبة عبر السـُّدُم (الجاري تطويره أيام كتابة هذه التدوينة) يستخدم الأسلوب الثالث المعتمد على أداة خاصة لإدارة التعديلات التي تجري على ملفات المشروع.

 

هذه التدوينة ستكون دليلاً ميسراً لمن يودّ استعمال هذا النظام في المشروع. سنرى كيف يتم إنجاز المهام الثلاث الأساسية في مشاركة الملفات، وهي: تنزيل المشروع لأول مرة، عمل تعديلات ورفعها، وتنزيل آخر التعديلات. يمكنك أن ترى هذه المهام في مخطط العمل المذكور في التدوينة السابقة:

 

مخطط مشاركة الملفات من خلال منتدى مع مشرف 

 

فقط أودّ أن أنوّه: إن وجدْتَ أن هذه الأداة ستقف حائلاً بينك وبين العمل في المشروع، فلا مانع إطلاقاً من تجاهلها والعمل بالأسلوب الثاني: أنجزْ التعديلات وأرسلها للمنتدى وسيلتقطها المشرفون على المشروع من هناك.

 

 

قبل أن نبدأ

 

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

 

https://www.codeplex.com/site/register

 

بعد إتمام التسجيل، عليك بإرسال اسم المستخدم إلى بريد الشبكة العربية لمطوري الألعاب (info@agdn-online.com) لإضافتك كعضو في مشروع عبر السدم على موقع كود بليكس (http://sudum.codeplex.com) وذلك كي تـُعطى سماحية رفع التعديلات.

 

أخيراً وليس آخراً، قم بتنزيل وتثبيت برنامج TortoiseHg على جهازك. هذا البرنامج هو الذي سنستخدمه لتنزيل المشروع ورفع التعديلات:

 

http://tortoisehg.bitbucket.org/download/index.html

 

في الحقيقة هذا البرنامج هو مجرد بضعة أوامر تضاف إلى القائمة المنبثقة في مستكشف ويندوز، وليس برنامجاً مستقلاً بحد ذاته. سنرى سويةً ما معنى هذا الكلام.

 

بالمناسبة، أثناء عملك بالمشروع، لن تحتاج للاتصال بالإنترنت إلا أثناء تنزيل المشروع أو تنزيل التعديلات أو رفعها. فيما عدا ذلك يمكنك العمل باستقلال تام.

 

 

تنزيل المشروع لأول مرة

 

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

 

D:\Sudum

 

الآن، اختر هذا المجلد واضغط عليه بالزر اليمين، وانتقِ من القائمة المنبثقة الخيار TortoiseHG، ثم انتقِ الخيار Clone:

 أمر Clone من قائمة TortoiseHg

 

سيظهر لك صندوقاً يطلب بعض المعلومات، أولها دليل المصدر Source path، وهو عنوان الإنترنت حيث يقبع مشروع عبر السدم. املأ هذا الصندوق بالعنوان:

 

https://hg01.codeplex.com/sudum

 

أما بالنسبة للدليل الهدف Destination path، فهو الدليل أو المجلد حيث ستنزل ملفات المشروع على جهازك. تأكد من ملء هذا الصندوق بدليل المجلد الذي حددته لنفسك. بالنسبة لي سأكتب:

 

D:\Sudum

 نافذة أمر Clone وتظهر بها الإعدادات الصحيحة

 

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

 مجلد المشروع الجذر بعد أمر Clone

 

مبروك، تستطيع الآن مطالعة ملفات المشروع كما يحلو لك.

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

 

 

عمل تعديلات ورفعها

 

حسناً، الآن وقد حصلت على ملفات المشروع، فأنت تودّ العمل عليها وإليك الطريقة. عدّل وأضف واحذف الملفات من مجلد المشروع كما يحلو لك لإنجاز المهمة المناطة بك. مثلاً، إن أردت إضافة مجسم مركبة، فضع ملف الماكس أو المايا في مجلد Content في جذر المشروع، وإن أردت إضافة ملفات على كود اللعبة، فافتح المشروع Game في فيجوال ستوديو وعدّل كما تشاء.

 

الآن، بفرض أنك قد أنهيت التعديلات وتودّ مشاركتها مع باقي الفريق فإليك الطريقة: اختر مجلد المشروع، واضغط عليه بالزر الأيمن للفأرة، وانتقِ الأمر Hg Commit:

 

اختيار أمر Hg Commit

 

 

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

الآن ما يهمنا هو صندوق الملاحظات. عليك أن تكتب ملخصاً موجزاً عن التعديلات التي قمت بها هنا. مثلاً اكتب: إضافة مركبة جديدة، أو تشغيل مقاطع أفلام، وهكذا…

 

نافذة إنشاء سجل التعديل

 

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

 

الآن لنرفع هذا السجل إلى النسخة المركزية في موقع كود بليكس. مرة أخرى اختر مجلد المشروع، واضغط الزر الأيمن للفأرة، وانتقِ الأمر Hg Repository Explorer. في النافذة الجديدة، سترى سجل التعديل الذي أنشأته للتو. لرفعه، فقط اضغط زر السهم الأخضر الذي يعلوه خط أفقي رمز زر الرفع .

 نافذة رفع التعديلات إلى النسخة المركزية

 

اضغط Push في نافذة التأكيد. سيظهر لك صندوقاً يطلب منك اسم المستخدم وآخر لكلمة السر لحسابك في كود بليكس. املأ كل منهما واضغط زر موافق وانتظر ريثما ينتهي رفع التعديلات.

 

الآن يستطيع زملاؤك في الفريق أن يحصلوا على تعديلاتك مباشرة من موقع كود بليكس.

 

 

تنزيل آخر التعديلات

 

وهي المهمة الأخيرة التي سنتحدث عنها. فلنفرض أن بعض الزملاء قد قاموا بإجراء تعديلات وتودّ أن تحصل عليها. يمكنك فعل ذلك في أي وقت. وإن وجدت تعديلات في ملفات قد قمت أنت بتعديلها فإن TortoiseHg سيقوم بدمج التعديلات إن أمكن. لكني شخصياً أفضل تنزيل التعديلات بعد أن أرفع تعديلاتي وذلك تفادياً للوقوع في أية تعقيدات إضافية.

 

المهم، عودة إلى تنزيل آخر التعديلات. العملية سهلة جداً. فقط اضغط بزر الفأرة الأيمن على مجلد المشروع، وانتقِ الأمر Hg Repository Explorer إياه. في النافذة الجديدة تأكد من تحديد خيار Update في القائمة المنسدلة After Pull في الجزء الأيمن العلوي من النافذة.

 

الآن اضغط زر السهم الأخضر الذي يرتفع على خط أفقي رمز زر سحب التعديلات (Pull incoming changesets). ستظهر لك السجلات الجديدة في القائمة التي تتوسط النافذة. لاحظ وجود دوائر بجانب كل سجل. إن نجحت العملية فيجب أن تكون الدائرة بجانب السجل الأول أكبر حجماً من الأخريات. هذا يعني أن نسخة الملفات على جهازك تطابق النسخة في هذا السجل.

 

نافذة مستكشف السجلات لتنزيل آخر التعديلات

 

لاحظ أن TortoiseHg لا يقوم بإعادة تحميل كامل ملفات المشروع في كل مرة، وإنما فقط تلك التي عُدّلت منها.

 

 

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

 

والآن، هيا معاً إلى العمل!





العمل الجماعي باستخدام أدوات التشارك
التوقيت 08/رجب/1431 01:26 م بقلم الكاتب وسام البهنسي

بسم الله الرحمن الرحيم،

 

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

 

هناك ثلاثة أساليب مرّت علي خلال تجوالي وعملي في مثل هذه المشاريع. سأتحدث عن كل منها مبرزاً محاسنها ومساوئها:

 

الأسلوب الأول

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

 

نلاحظ أن العمل لا يتم بالتوازي. فلا يستطيع أحد العمل قبل أن يتم زميله تعديلاته ويرسلها إلى المنتدى. طبعاً هذه مشكلة كبيرة لأننا فقدنا إحدى فوائد العمل كفريق، وهي إنجاز أكثر من مهمة بنفس الوقت.

 

 

الأسلوب الثاني

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

 

كما نلاحظ، هذا الأسلوب يتطلب وجود من يلعب دور المشرف، وهو دور يتطلب معرفة بعمليات الدمج ووعي كامل بكافة التعديلات التي يقوم بها الأعضاء. بعبارة أخرى، يجب أن يكون خبيراً وربما متعدد المواهب أيضاً.

 

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

 

مخطط مشاركة الملفات من خلال منتدى مع مشرف 

 

هذا هو الأسلوب الذي اتبعـَتـْه الشبكة العربية لمطوري الألعاب في مشروع لعبة وادي الملوك.

 

 

الأسلوب الثالث

اعتماد أداة تشارُك لإدارة التعديلات ونشرها دون الحاجة لمشرف. كمثال، البرنامج Visual SourceSafe، أو بديله الأحدث Visual Studio Team System من مايكروسوفت. و Perforce و AlienBrain و SVN و Mercurial. كلها تقوم عملياً بدور مشابه. باختصار، هي تضع نفسها بدلاً من المشرف في الأسلوب السابق.

 

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

 

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

 

مخطط مشاركة الملفات من خلال أداة تشارك

 

هذا الأسلوب مستخدم في مشروع لعبة عبر السدم في الشبكة العربية لمطوري الألعاب. حيث تم اعتماد خدمات موقع كود بليكس مع نظام ميركوريال لتسهيل التشارك بالكود وملفات المشروع الأخرى كملفات الـ 3D والإكساءات والأصوات وغيرها.

 

العقبة الوحيدة في هذا الأسلوب هو أن التعامل مع أداة تشارُك ليس أمراً بديهياً، وإنما يحتاج إلى القليل من التدريب قبل أن يستطيع أعضاء الفريق استخدامه والاستفادة منه، وهذا ما سأقوم بعمله إن شاء الله في التدوينة القادمة.