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

مبتدئ  Mr-X مشاركة 11

انا اوافق على فكرة اخوى الفاضل احمد
وبالتوفيق وننتظر رد اخونا وسام

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

خبير مدير وسام البهنسي مشاركة 12

حسناً. بقي لنا الجزء الثاني من السؤال عن المواصفات. وكما اتفقنا، سنتعلم الآن كيفية الحصول على المعلومات المتبقية (كرت الشاشة، نظام التشغيل، برمجيات ملحقة، عتاد إضافي).
يمكننا استنتاج أغلب هذه المعلومات بدقة عن طريق النظر إلى المكاتب الديناميكية (DLL) التي تقوم اللعبة بالربط معها أثناء العمل. وقد يشعر البعض بأنه قد تحول إلى المحقق كونان وهو يتابع هذه الملفات وكأنها أدلة نتوصل بها إلى نتائج☺
 
فلنبدأ بعمل ذلك سوية:
 
(هذه الخطوات على Visual Studio.NET 2008، وقد تختلف بشكل طفيف عن الإصدارات السابقة. قد تختلف الألوان أيضاً عن نسختك الخاصة)
 
* قم بتشغيل اللعبة، وقم بتحجيم النافذة إلى وضع Windowed أيضاً.
 
* شغل Visual Studio.NET.
 
* تأكد من ظهور نافذة الخرج (Output)، إن لم تكن ظاهرة، يمكنك إظهارها من القائمة View، الأمر Output (أو الاختصار Ctrl+Alt+O).
 
* اضغط الزر الأيمن للماوس في المساحة الظاهرة لنافذة الخرج، لتظهر لك قائمة منبثقة كالآتي:
 

 
* تأكد من وجود علامة صح بجانب الأمر Module Load Messages. إن لم تكن العلامة موجودة، فاضغط على الأمر لتفعيله.
* بهذا الشكل نكون قد استعددنا لرؤية رسائل تحميل المكتبات من أي برنامج نريده.
 
* من قائمة Tools، اختر الأمر Attach to Process (أو استخدم الاختصار Ctrl+Alt+P).
* ستظهر لك نافذة مشابهة لهذه:



* ابحث في قائمة البرامج عن اسم الملف التنفيذي للعبتنا، وهو Game.exe، وقم بتحديده.
 
* تأكد من ظهور عبارة Automatic في المربع المسمى Attach To. هذا سيسمح لفيجوال ستوديو لمعرفة نوع كود البرنامج والتعامل معه بشكل صحيح.

* اضغط زر Attach، وراقب ما سيجري في نافذة الخرج.

* ستظهر لك قائمة طويلة بأسماء ملفات DLL. هذه هي القائمة التي تظهر لدي (وقد تختلف نوعاً ما عن القائمة التي ستحصل عليها أنت):



* حسناً. من ضمن الملفات التي تستخدمها اللعبة كما نلاحظ ملف DSound.dll. وهذا دليل قوي على أن اللعبة تستخدم مكتبة DirectSound لتخريج الأصوات (غير واضح أي إصدار من DSound هو، لكن سنستنتج ذلك قريباً). هناك أيضاً الملف WinMM.dll، وهو كما نعلم يقدم خدمات تخريج صوت طبعاً، بالإضافة إلى خدمات المؤقتات الدقيقة والمضمونة timeGetTime، والتي تعمل بسلاسة حتى على الأجهزة متعددة المعالجات. سنسجل هذه المعلومات جانباً.
 
* الجزء الثاني المهم من الملفات المستخدمة هو D3D9.dll. هممم، إذن اللعبة تستخدم Direct3D9 في الرسم وهذه المعلومة مفيدة جداً جداً. هناك أيضاً الملف D3D8Thk.dll وهو ملف مساعد لـ Direct3D9 ولا غرابة في رؤيته.
 
* بقية الملفات هي ملفات أساسية. مثلاً GDI32.dll يمثل مكتبة GDI وهو ضروري طبعاً لنداءات رسم النافذة وتحميل الصور. هناك ملف MSVCRT.dll وهو يمثل مكتبة Visual C الخاصة بمايكروسوفت. قد يكون هذا دليلاً أن اللعبة مبنية بمترجم مايكروسوفت وقد لا يكون. أعتقد أن هذه المعلومات ليست ذات أهمية كبيرة في هذا التحقيق.
 
* يمكنك الآن ضغط زر الإيقاف في الأعلى أو الاختصار Ctrl+Shift+F5 لتحرير اللعبة من سيطرة فيجوال ستوديو والعودة إلى النمط الطبيعي.
 
 
الآن تبرق عينا المحقق كونان، ويقذف سهماً مخدراً إلى عنق المحقق توجوموري ويستخدم جهاز تغيير النبرة الصوتية ليقول على مسمع من الجميع:
 
أصدقائي الأعزاء. لدينا الحقائق التالية:
* اللعبة تستخدم Direct3D9.
* تستخدم DirectSound لكننا لا نعرف أي إصدار.
* غالباً تستخدم مؤقتات دقيقة متوافقة مع الأجهزة متعددة المعالجات.
 
ماذا نستنتج؟
* بما أنها تستخدم Direct3D9، فإنها على الأغلب تستخدم إصدارة DirectSound المرافقة للـ DirectX 9 SDK، وهي الإصدارة 8. إذن يمكننا القول بأن اللعبة تستخدم DirectSound8.
* نعلم أن Direct3D9 يشترط نظام تشغيل Win98SE أو أعلى. إذن لا يمكننا تشغيل اللعبة على أنظمة تشغيل سابقة مثل Win95 مثلاً.
 
أعتقد أنه يمكننا الإجابة عن الأسئلة الآن بشكل كامل، وصياغتها ضمن قائمة متطلبات التشغيل التي نستطيع طبعها على غلاف اللعبة:
 
-----------------------------------------------------------
متطلبات التشغيل:
 
معالج: بينتيوم 1 بسرعة 100 ميجاهرتز أو أحدث (متوافقة مع المعالجات الحديثة).
ذاكرة: 16 ميجابايت.
نظام تشغيل: Windows 98 Second Edition أو أحدث.
كرت شاشة: متوافق مع DirectX9.
عتاد إضافي: كرت صوت لسماع المؤثرات الخاصة.
 
هذه اللعبة تحتاج إلى DirectX9 (غير مضمن في العلبة)
-----------------------------------------------------------
 
والآن يوجه كونان حديثه إلى اللعبة: أليس هذا صحيحاً أيتها اللعبة؟
ويفاجأ الجميع باعتراف اللعبة: نعم. كل ما قلته صحيح. تباً لك يا توجوموري! لقد كشفتني!
 
هنا يكون توجوموري قد استيقظ وهو يتلقى التهاني من الجميع على ذكائه وعبقريته.
 
نهاية الحلقة - أغنية الشارة (يكتشف الغامض والمثير... يستنتج بالعقل الكبير... كونان... الخ) - المذيع يتحدث:
 
أصدقائي كانت هذه طريقة بسيطة يمكنك استخدامها لمعرفة متطلبات التشغيل في حال لم تكن أنت مبرمج اللعبة. أما لو كنت أنت المبرمج، فإنك لن تحتاج إلى عمليات التقصي باستخدام فيجوال ستوديو، لأنك تعلم مسبقاً ما هي المكتبات التي تستخدمها.
 
أدعو الجميع لتجريب هذه الطريقة للتعلم، ونراكم في حلقة أخرى☺

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عزالدين مشاركة 13

السلام عليكم

جزك الله خيرا أخى وسام على التوضيح لكيفية معرفة متطلبات اللعبة أو أى برنامج عن طريق ال Visual Studio

وأود هنا أن تسمح لى بإثراء الموضوع بزيادة التالى عليه:

يمكننا أيضا معرفة متطلبات أو بمعنى أدق معرفة كافة الملفات والمكتبات التى تعتمد عليها احدى برامجنا باستخدم الاداة التالية
والتى فى الاغلب تأتى مرفقة مع مجموعة الاداوات الخاصة بال Visual Studio
وتجدها فى المسار الذي قمت فيه بتنزيل ال Visual Studio فى المجلد Program Files فى الاغلب
 ( عذرا اننى لست على جهازى وانا اكتب المقالة فلا يمكننى تحديد المسار بدقة ولكن اسم الملف هو depends.exe )
ولمن لا يستطيع ايجادها يمكنه تنزيلها مجانا من الموقع التابع لميكروسوفت وهى احدى الادوات الرائعة بحق لمتابعة أي
 مكتبات يحتاجها أى برنامج بل وحتى يمكن منها بصورة مبسطة معرفة اسماء الدوال الموجودة داخل اي مكتبة وذلك مفيد
حقا اذا أردنا الربط فى برنامجنا مع مكتبة ولم نكن نعرف الاسم لدقيق للدالة التى نود استخدامها

أترككم الان لاستكشاف الاداة الرائعة بحق والتى افادتنى كثيرا لمعرفة اي اصدرة من مكتبات ال DirectX SDK Extension و ال D3DX
التى يرتبط بها برنامجك لان معظم الالعاب تجدها فى الاغلب تستخدم اصدارات مختلفة من D3DX وهنا قد تحدث مشكلة
اذا لم تتواجد نسخة من المكتبة التى تحتاجها لعبتك

اسم الاداة هو Dependency Walker وموقعها
http://dependencywalker.com/

ترككم الان مع تجريب الاداة
والسلام عليكم

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 14

برنامج Depends بالفعل من الأدوات الأساسية في جعبة المبرمج. لاحظ أن Depends يعطيك نظرة على المكاتب التي ترتبط اللعبة معها بشكل مباشر، ويمكنك من هناك أيضاً رؤية بقية المكتبات المطلوبة بشكل شجري. إلا أن Depends لا يقدم لك المعلومات كاملة في حالات خاصة. لو نظرنا الآن إلى ملف Game.exe في Depends لوجدنا أنه لا يذكر ملف D3D9.dll كمكتبة مستخدمة، بينما في فيجوال ستوديو فإن هذا الملف يظهر.
السبب في ذلك أنه في حالة هذه اللعبة يتم الربط مع مكتبة D3D9.dll بشكل ديناميكي. أي أننا نربط ديناميكياً بالمكتبة الديناميكية d3d9.dll (هل فهم أحدكم شيئاً؟)

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  ammarrozza مشاركة 15

السلام عليكم

لو طلب منك برمجة هذه اللعبة، ما هي الحلول التقنية التي تنصح باستخدامها (مكاتب،
أدوات، لغات)، وكيف يساهم ذلك في إرضاء المستخدمين النهائيين؟
-------
اللغات
: c#.net
المكاتب : diectx
الادوات : maya for 3D
photoshop for 2D
--------------------------------------------------------------------------------
*
هل يمكنك اقتراح بنية برمجية لتمثيل المرحلة في الذاكرة، بحيث تحوي جميع العناصر
الثابتة فقط؟ (تجاهل العناصر المتحركة الآن).
-------
اذا وضعنى كل شيء في الذاكرة ستكون اللعبة سريعة جدا ولكنها تحتاج الى resources عالية
لذلك اعتقد ان الدمج جيد وذلك للتحضير للمستقبل
-------------------------------------------------------------------------------------------------------------------
*
للبنية التي تقترحها أعلاه، هل تستطيع تقدير حجم الذاكرة الذي ستحتله المرحلة عند
تحميلها؟
--------
لا استطيع ان اجيب الان لانني لا اعرف نظام وهيئة اللعبة
---------------------------------------------------------------------------------------------------------------------
*
لم يقم مطور هذه اللعبة بذكر المواصفات المطلوبة لتشغيلها. هل يمكنك إيجادها بنفسك؟
(معالج، ذاكرة، كرت شاشة، نظام تشغيل، برمجيات ملحقة، قطع عتاد
إضافية).
---------
اعتقد ان سرعة وذاكرة صخر كانت قليلة جدا وثابته

لذلك من الصعب الحكم على متطلبات اللعبة
---------


بالنسبة  لشركات برمجة الالعاب تستخدم بشكل عام c++ مع directX او java مع opengl
لانها تعتمد احيانا على game engine المتوفر وهو غالبا ما يكون c++ or java
ولكن بما ن اللعبة ستبرمج من الصفر فان استخدام اللغات احديثة ستريحنا

خبير مدير وسام البهنسي مشاركة 16

في 29 مارس 2008 11:47 ص، غمغم ammarrozza باستغراب قائلاً:

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

إعادة برمجة اللعبة من الصفر ستستهلك وقتاً كبيراً جداً. اللعبة بوضعها الحالي ما زالت تحتاج إلى كم جيد من العمل. بدلاً من التخلي عن الأساس الذي لدينا، سنقوم إن شاء الله بالتعديل على الكود الحالي للعبة وإضافة مزايا جديدة لتحسينها وتطويرها إلى جزء جديد. أعتقد أن هذه إحدى أكبر الفوائد من هذا المشروع (أنه مبني مسبقاً). لا أريد أن نعلق عند مراحل ابتدائية قـُتلت بحثاً بالفعل (إنشاء نافذة، تحضير D3D، تحميل المراحل، ....).
 
سيتم طرح تفاصيل العمل قريباً إن شاء الله... ترقبوا☺

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  ammarrozza مشاركة 17

بتاريخ 22/ربيع الأول/1429 05:02 م، قطب وسام البهنسي حاجبيه بشدة وهو يقول:

سنقوم إن شاء الله بالتعديل على الكود الحالي للعبة
من كلامك انكم تملكون source code الخاص باللعبة؟

اذا كان صحيحا كيف ستقومون بتعديل الكود باستخدام اللغات الاخرى مثل .net
هل يمكن التوضيح

خبير مدير وسام البهنسي مشاركة 18

وفي 29 مارس 2008 12:08 م، أعرب ammarrozza عن رأيه بالموقف كالآتي:

من كلامك انكم تملكون source code الخاص باللعبة؟

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

 

في 29 مارس 2008 12:08 م، قال ammarrozza بهدوء وتؤدة:

اذا كان صحيحا كيف ستقومون بتعديل الكود باستخدام اللغات الاخرى مثل .net
هل يمكن التوضيح
 
سيستلم كل من يود العمل بـ NET. مكتبة خاصة (Class Library) يضعها في مشروعه ليستطيع التعامل مع اللعبة بشكل يسمح له بإنهاء مهامه على أكمل وجه. التفاصيل ستأتي عندما نطرح المهام الفعلية على الجميع (خلال الأيام القادمة).
 
 
في هذه الأثناء أود أن أطرح سؤالاً هاماً. الكود المقدم مبني باستخدام Visual Studio .NET 2008. مما يعني أن كل من يعمل معنا يجب أن يستخدم هذه النسخة. لو كان لديكم أي اعتراضات فإننا نستطيع النزول إلى النسخة 2005 (في حال أن الأغلبية ما زالوا يستخدمونه).
أنا أشجع الجميع على استخدام 2008 كي نبقى دائماً من مستخدمي أحدث التقنيات. لذا فإن من لا يملك النسخة الآن فليذهب إلى السوق ويشتريها ويقوم بتنصيب اللغات ++C و #C على الأقل على جهازه.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  سلوان الهلالي مشاركة 19

في 29 آذار 2008 07:21 م، عقد وسام البهنسي حاجبيه بتفكير وقال:

في هذه الأثناء أود أن أطرح سؤالاً هاماً. الكود المقدم مبني باستخدام Visual Studio .NET 2008. مما يعني أن كل من يعمل معنا يجب أن يستخدم هذه النسخة. لو كان لديكم أي اعتراضات فإننا نستطيع النزول إلى النسخة 2005 (في حال أن الأغلبية ما زالوا يستخدمونه).
أنا أشجع الجميع على استخدام 2008 كي نبقى دائماً من مستخدمي أحدث التقنيات. لذا فإن من لا يملك النسخة الآن فليذهب إلى السوق ويشتريها ويقوم بتنصيب اللغات ++C و #C على الأقل على جهازه.

سؤال قد يخطر ببال البعض... هل يمكن إستخدام نسخة VisualStudio.NET Express 2008 التي تقدم مجاناً على الإنترنت بدل النسخ التجارية؟

خبير مدير وسام البهنسي مشاركة 20

وفي 29 مارس 2008 07:06 م، قال سلوان الهلالي متحمساً:

هل يمكن إستخدام نسخة VisualStudio.NET Express 2008 التي تقدم مجاناً على الإنترنت بدل النسخ التجارية؟
 
سؤال في محله. سأفاجأ إن كان هذا سيمنع المشروع من أن يعمل على النسخ المختلفة من فيجوال ستوديو.
لكن لم لا نجرب فوراً؟ الملف المرفق يحتوي على مشروع تم إنشاؤه باستخدام نسخة Visual Studio 2008 Team System. فليجربها أحدنا على Visual Studio 2008 Express ويخبرنا بالنتائج. المشروع هو مشروع ++C لذا تأكد من تنصيب لغة ++C ضمن حزمة اللغات أولاً، ومن ثم قم بفتح المشروع وبنائه وتشغيله.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز