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

مبتدئ  MoazMohammed مشاركة 1

السلام عليكم ورحمة الله وبركاته ,
لفت انتباهي موضوع مهم جداً أثار اهتمامي في سلسلة ألعاب Prince Of Persia  , وهي عملية التحميل .فمن قام بلعب اللعبة لابد وانه قد لاحظة ان عملية التحميل سريعة بشكل خارق !! فعملية التحميل لا تأخذ عدة ثواني , وبالمقارنة مع دقة وكثرة التيكتشرز والمجسمات والموديلات العالية وكثرة المؤثرات الصوتية , فالتحميل خارق بكل المقاييس ! وما يثير حيرتي أكثر هو ان بقية الألعاب سواء ثنائية الأبعاد او ثلاثية ذات المستوى المتدني تاخذ وقت أطول بكثير قد يمتد لدقيقة او اكثر في عملية اللتحميل !!
وهنا أطرح تساؤلي .. ما هي تلك التقنيات والتكتيكات المستخدمة في الـ loading  ,  وكيف تم التغلب على مشكلة طول التحميل ؟

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

السلام عليكم.
لا اعرف اي سلسلة تتحدث عنها ( انسخة الجيل الحديث ام القديم) لكن هناك العديد من الالعاب التي تقوم بالتحميل في ظرف قياسي مثل Resident evil4
او لعب The Legend of zelda : wind waker
The Legend of zelda : twilight princess
لكن ليكن في علمك ان مهما بد لك فان التحميل عملية بطيئة جدا لانها تتعامل مع وحدة بطيئة جدا و هي وحدة التخزين.
المطورون يبتكرون خدع مثل الموجود في لعبة The Legend of Zelda : Twilight princesse اذ ان التحميل يتم اثناء الانتقال بين الشاشات Transition فحاول جعل الجو صامة في غرفتك اثناء اللعب، و ستلاحظ انك عند انتقالك بين الشاشاة ستسمع القرص المرن يدور بطريقة معينة و ذلك لتحميل.و لكن اللاعب لا يلاحظ اذ انه مشدود الانتباه بالتنقل التدريجي او موسيقى اللعب الموجودة على الشاشة الحالية.

اليك مثال عن بعض الالاعيب التي يقوم بها المطورون : لعبة Fifa 2010 قبل انطلاق المبارة يمكنك التحكم في لاعب و التسديد به نحو المرمى في حين تجهز المعطيات لبدا اللعب.

حسنا اما عن سؤالك المحوري، فساجيب بخبرتي المتواضعة في بعض الالعاب.
-بعض الالعاب تتمكن من تقليص وقت التحميل و ذلك بتعويض الموارد ببعض من الكود المكتوب. فمثلا لعبة القتال Street fighter و بالتحديد عندما يقوم اللاعبان باختيار نفس اللاعب فات اللعبة ستحمل موارد لاعب واحد في الذاكرة و هذا يسرع من وقت التحميل.
-البعض الاخر يستخدم التحميل المشروط ان صح التعبير، اي اننا سنحمل فقط اذا تحقق شرط ما و هذا اكتشفته في لعبة Need for speed بعد ان كان لدي قرص مخدوش لم يستطع الجهاز قرائته بسرعة و بكيفية فعالة فكانت النتيجة كالتالي :
-يقوم الجهاز بتحميل جزء من العالم مثلا مسافة 10 امتار
-عندما اصل الى نهاية العشر امتار يتوقف اللعب و يقوم الجهاز بتحميل العشر امتار الاتية، و يستمر اللعب ...الى اخره.

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

وفي 22/رمضان/1431 05:27 م، قال MoazMohammed متحمساً:

وهنا أطرح تساؤلي .. ما هي تلك التقنيات والتكتيكات المستخدمة في الـ loading  ,  وكيف تم التغلب على مشكلة طول التحميل ؟

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


وفي 22/رمضان/1431 08:18 م، ظهر شبح ابتسامة على وجه انس وهو يقول:

البعض الاخر يستخدم التحميل المشروط ان صح التعبير، اي اننا سنحمل فقط اذا تحقق شرط ما و هذا اكتشفته في لعبة Need for speed بعد ان كان لدي قرص مخدوش لم يستطع الجهاز قرائته بسرعة و بكيفية فعالة فكانت النتيجة كالتالي :
-يقوم الجهاز بتحميل جزء من العالم مثلا مسافة 10 امتار
-عندما اصل الى نهاية العشر امتار يتوقف اللعب و يقوم الجهاز بتحميل العشر امتار الاتية، و يستمر اللعب ...الى اخره.

هذا الأسلوب يدعى بأسلوب الدفق (بالإنجليزية streaming) وهو يعمل بالضبط كما وصفته يا أنس. فوفقاً لمكان اللاعب واتجاه نظره، فإن محرك اللعبة يقوم بتحميل الأجزاء المرئية مباشرة أثناء اللعب (تتم العملية في الخلفية دون أن توقف اللاعب عن اللعب) وإظهارها حال الانتهاء من تحميلها. 
عندما تفشل هذه العملية لسبب ما (بطء في القراءة، أو القرص مخدوش مثلاً) فإن بعض العيوب تتكشف، كالظهور المفاجئ لبعض أجزاء المرحلة (تدعى popping بالإنجليزية) أو تعطيل اللعبة حتى يتم دفق الأجزاء الناقصة.
 
ميزة هذا الأسلوب أنك لا تحتاج للانتظار طويلاً لتحميل المرحلة عند بدء اللعب. فيكفي فقط تحميل مشهد البداية، والباقي يستمر أثناء اللعب.
 
برمجة مثل هذا النظام في التحميل أمر ممتع، وينضوي على بعض الجوانب المثيرة كتعدد المسارات (multi-threading) والتخزين (buffering) والتزمين. جلّ ألعاب العوالم المفتوحة تحوي نظاماً مشابه.
 


أما في 22/رمضان/1431 08:18 م، فقد تنهد انس بارتياح وهو يرد:

بعض الالعاب تتمكن من تقليص وقت التحميل و ذلك بتعويض الموارد ببعض من الكود المكتوب. فمثلا لعبة القتال Street fighter و بالتحديد عندما يقوم اللاعبان باختيار نفس اللاعب فات اللعبة ستحمل موارد لاعب واحد في الذاكرة و هذا يسرع من وقت التحميل.

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

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