تقنية التوليد الإجرائي “Procedural Generation” ليست بالجديدة في صناعة الألعاب، إلا أن أهميتها قد تبلورت بشكل كبير مؤخراً نتيجة تعقيد الألعاب واتساع عوالمها وارتفاع متطلباتها، خصوصاً أنها قد وصلت لمرحلة متقدمة من الدقة تؤهلها لتكون عصا سحرية يمكن للمطورين من خلالها خلق عوالم لا متناهية بضغطة زر.
لم تعد تقنية التوليد الإجرائي “Procedural Generation” مجرد رفاهية أو وسيلة لتسريع عملية تطوير الألعاب، ولكنها أداة جوهرية فتحت مجالاً خصباً لتطوير ألعاب لم يكن وجودها ممكناً، ومنها No Man’s Sky، حيث يمكن للاعبين استكشاف ما يصل إلى 18 كوينتليون “مليون تريليون” كوكب وقمر مختلف، و Starfield بما يزيد 1000 كوكب بأقمارها!
بهذه المقالة، نسلط الضوء على أهم الأسئلة المتعلقة بتقنية التوليد الإجرائي “Procedural Generation”، بدايةً بتعريف التقنية، انتقالاً للمحة تاريخية عن أشهر الألعاب الداعمة لها، مروراً بأساسيات استخدامه، انتقالاً للفرق بين تقنية التوليد الإجرائي “Procedural Generation” ونظيرتها التوليد العشوائي “Random Generation”، وصولاً لمزايا وعيوب التقنية، وانتهاءً بالتطور الذي وصلت إليه مع أشهر لعبتين استخدمتاها مؤخراً.
ما هو التوليد الإجرائي “Procedural Generation”؟
التوليد الإجرائي “Procedural Generation” كما يبدو من اسمه ينقسم لجزئين؛ أولهما توليد أو إنشاء المحتوى، وثانيهما القيام بالتوليد إجراءً أو تنفيذاً لأمر ما، فهو خوارزمية حاسوبية تولد المحتوى تلقائياً تنفيذاً لمجموعة من الأوامر البرمجية المكتوبة مُسبقاً، فالتوليد لا يتم بعشوائية مُطلقة، وإنما بعشوائية مُنظمة، وهو ما يميزها عن تقنية التوليد العشوائي “Random Generation”.
تُستخدم التقنية لإنشاء محتوى عملاق أو غير متناهٍ -نظرياً- للألعاب والرسوم المتحركة وسواء كانت ثنائية أو ثلاثية الأبعاد وبغض النظر عن تعقيدها، وذلك يشمل الشخصيات والعناصر والأماكن. بفضل هذه التقنية، يكون لدى المطور إمكانات هائلة لخلق تجارب فريدة لا تُعد ولا تُحصى بجهد قليل جداً مقارنةً بحجم المحتوى الذي يمكن إنتاجه والذي لم يكن من المُتصور أن يتم تطويره بالكامل يدوياً.
نعود لمثالنا السابق، وهو No Man’s Sky، حيث يستحيل أن يتمكن المطور من رسم كل الكواكب والأقمار يدوياً، لذلك يمكنه الاكتفاء بالتوليد الإجرائي “Procedural Generation” وتزويده بالبيانات اللازمة لتكوين المشهد مثل أشكال النباتات والمخلوقات والعناصر، بجانب الأوامر المُدمجة بالخوارزميات مثل متوسط أبعاد العناصر أو عددها داخل مساحة مُعينة مثل كهف أو نفق.
لمحة تاريخية عن أشهر الألعاب الداعمة لهذه التقنية الثورية
البداية الحقيقية لتقنية التوليد الإجرائي “Procedural Generation” في صناعة الألعاب كانت مع ألعاب الـRogue-like، وهي ألعاب RPG وتبادل أدوار تتخذ مراحلها شكل الزنازن “Dungeons” وتتسم بصعوبتها العالية وميكانيكية الموت المؤبد “Permadeath” عند الخسارة حيث يفقد اللاعب تقدمه تماماً، وأولها Beneath Apple Manor التي صدرت في عام 1978.
العديد من ألعاب الـRogue-like تتضمن مراحل مُصممة بتقنية التوليد الإجرائي “Procedural Generation”، وأشهرها لعبة Rogue الأيقونية التي صدرت في عام 1980 وسُميت ألعاب الـRogue-like باسمها تيمناً بها. قد يتعجب البعض من ظهور تقنية متقدمة نسبياً مثل هذه في أواخر السبعينيات، ولكنها كانت حلاً لمواجهة التحديات التقنية المتمثلة صغر حجم أقراص التخزين كونها وسيلةً فعالةً لضغط البيانات وتقليل المساحة.
لم تكن تقنية التوليد الإجرائي “Procedural Generation” حصريةً لألعاب الـRogue-like قط، فقد استخدمتها العديد من الألعاب من تصنيفات مختلفة، ومنها The Elder Scrolls II: Daggerfall الصادرة في عام 1996. نعم، لم تكن Starfield أول لعبة تقرر فيها Bethesda استخدام تقنية التوليد الإجرائي “Procedural Generation” يا عزيزي!
كانت The Elder Scrolls II: Daggerfall سابقةً لعصرها بحجم عالم ضخم يُقدر بنصف حجم بريطانيا العظمى ويضم عشرات الآلاف من المدن والزنازن والحانات، ليكون واحداً من أكبر العوالم الافتراضية على الإطلاق! لصنع عالم بهذه الضخامة، لم يكن أمام فريق التطوير سوى اللجوء لتقنية التوليد الإجرائي “Procedural Generation”، ولكنها كانت بدائية نوعاً ما ولم تخل من الأخطاء، فأحياناً كانت تُصمم الزنازن بدون باب لمغادرتها، ومع ذلك كانت اللعبة ثوريةً في زمانها.
مع مرور الوقت، أخذت التقنية في التطور والانتشار بين المزيد من الألعاب ولأغراض متنوعة وليس لتصميم العالم فقط، فمثلاً تستخدم سلسلة Borderlands تقنية التوليد الإجرائي “Procedural Generation” لتوليد الغنائم “Loot”، حيث دخل أول جزء موسوعة غينيس للأرقام القياسية بسبب عدد أسلحته البالغ 17.75 مليون سلاحاً متنوعاً، ويزيد العدد مع الجزء الثاني ليكون 87 باجليون -بتعطيش الجيم-، والباجليون هو رقم عدد أصفاره مجهول!
تُعد Minecraft أيضاً من أشهر الألعاب الداعمة لتقنية التوليد الإجرائي “Procedural Generation”، حيث تعتمد عليها لتشكيل عالمها الشاسع. عند بدء اللعب، يجد اللاعب نفسه فوق أرض مُكونة من مجموعة من القطع المربعة “Chunks” بمقاس 16×16 أي بمساحة 256 قطعة، وحولها يتم تشكيل الأجزاء المحيطة بتضاريسها ونباتاتها ومسطحاتها المائية وعناصرها الأخرى إجرائياً.
للتوليد الإجرائي “Procedural Generation” أساسيات يجب مراعاتها أثناء تطوير الألعاب
ذكرنا مُسبقاً أن تقنية التوليد الإجرائي “Procedural Generation” عبارة عن خوارزمية برمجية، ولذلك من الضروري أن نستعرض فكرتها بتطبيق عملي، وهو خوارزمية بسيطة عبر محرك Unity لتكوين شبكة من الكرات بترتيب مُعين إجرائياً عبر تزويد الخوارزمية بمجموعة من الأوامر.
تحتوي الخوارزمية على متغيرين وهما maxX و maxY، وذلك لتحديد كم العناصر المعروضة رأسياً وأفقياً، بالإضافة لمتغيرين اختياريين وهما offsetX و offsetY لإزاحة الشبكة من نقطة الأصل الافتراضية. لتحديد الوقت الذي يستغرقه العنصر الجديد ليظهر، تمت إضافة أمر yield return new WaitForSeconds ومنحه قيمة 0.03f. أخيراً، تمت إضافة أمر Instantiate الذي يوفره محرك Unity لتحديد العناصر المطلوب ظهورها ووضعها ودورانها.
لتقنية التوليد الإجرائي “Procedural Generation” أساسيات يجب مراعاتها قبل أن يقدم أي مطور على استخدامها. بما أن الهدف من التقنية هو عرض المحتوى بشكل فريد وليس مكرراً، يجب أن يتم تزويد الخوارزميات بمجموعة من الأوامر تضمن ألا يكون المحتوى مُكرراً أو معيباً بشكل يفسد اللعبة أو يعيق التجربة.
على سبيل المثال، إذا كان المطور يهدف لكتابة نص خوارزمية لظهور الوحوش فجأةً في إحدى ألعاب رعب البقاء، فيجب أن يتم تزويدها بتعليمات تجعل الوحوش يظهرون من خلف أو جانب اللاعب أو أثناء حل أحد الألغاز أو ركوب المصعد أو عندما انقطاع الكهرباء. الخلاصة، يجب توجيه الحاسوب لصنع المحتوى بشكل مُنظم يخدم تجربة اللعب وأحداثه وكأنه مُصمم يدوياً.
التوليد الإجرائي “Procedural Generation” والتوليد العشوائي “Random Generation”: ما الفرق؟
غالباً ما يحدث خلط بين التوليد الإجرائي “Procedural Generation” والتوليد العشوائي “Random Generation”، إلا أن بينهما فرقاً جوهرياً. يمكننا القول أن التوليد العشوائي “Random Generation” هو توليد إجرائي “Procedural Generation” ينقصه التنظيم، لذلك فهو جزء منه، ولكن الأخير لا ينقصه التنظيم دوماً، فما ينطبق على الكل ينطبق على الجزء وليس العكس.
يتميز التوليد الإجرائي “Procedural Generation” أنه يتضمن مجموعة من الأوامر لتحقيق الهدف المطلوب، ومنها قيمة متغير البذرة “Seed” والذي يتحكم في نتيجة التوليد، فالقيمة الثابتة معناها نفس النتيجة، بينما يتميز التوليد العشوائي “Random Generation” أنه لا يتضمن أي أوامر ولا يحقق هدفاً معيناً، ولذلك يجب استخدامه في أضيق الحدود وألا يتم إقحامه في جوهر التجربة.
مزايا وعيوب تقنية التوليد الإجرائي “Procedural Generation”
للتوليد الإجرائي “Procedural Generation” مزايا عديدة تجعله من أفضل التقنيات للمطورين واللاعبين على حد سواء. بالنسبة للمطورين، يمكنهم تطوير محتوى هائل بأقل مجهود وتكاليف. بالنسبة للاعبين، تساهم التقنية في تقليل حجم ملفات الألعاب بشكل كبير وتمنحهم تجربة لعب أقل تكراراً وأطول وقتاً، كما أنها تجعل من إعادة اللعب أمراً مرغوباً نظراً للمحتوى الذي سيكون مختلفاً كلما أُعيد اللعب، وأخيراً فإنها تمنحهم أداءً تقنياً مستقراً.
لكن بجانب هذه المزايا، للتوليد الإجرائي “Procedural Generation” عيوب تصعب من استخدامه من ناحية المطورين وتفسد التجربة من ناحية للاعبين. من ناحية المطورين، من الصعب تصور الخوارزميات أثناء كتابتها وكذلك تغييرها بعد كتابتها، كما أن كتابة الخوارزميات يستغرق وقتاً طويلاً ويكلف الكثير من الأموال لدرجة قد تفوق التطوير اليدوي إن لم يكن حجم المحتوى شاسعاً. من ناحية اللاعبين، قد يتسبب إغفال أحد أوامر الخوارزميات في حدوث أخطاء تفسد التجربة.
هل نضجت هذه التقنية بما فيه الكفاية مع No Man’s Sky و Starfield؟
كان إطلاق No Man’s Sky كارثياً، ليس فقط بسبب أسلوب اللعب الممل والمُكرر، ولكن أيضاً بسبب ارتكاب Hello Games خطأً فادحاً باعتمادها على التوليد الإجرائي “Procedural Generation” بشكل مُبالغ فيه على حساب تخصيص التجربة، ولذلك تعرضت اللعبة لانتقادات لاذعة ومطالبات باسترداد الأموال المدفوعة. رغم أن المطور بذل مجهوداً شاقاً لحل معظم مشاكل اللعبة، إلا أن ذلك لا يغير من حقيقة أن تقنية التوليد الإجرائي “Procedural Generation” ما زالت غير ناضجة.
لحسن الحظ تجنبت Starfield أخطاء No Man’s Sky، فرغم أن Bethesda قد استخدمت التوليد الإجرائي “Procedural Generation” بشكل كبير لتصميم ما يزيد عن 1000 كوكب داخل ما يزيد عن 100 نظام شمسي، إلا أن فريق التطوير قد أبدع في تصميم المدن والمباني وخطوط المهمات والحوارات يدوياً، لدرجة أنها أكثر لعبة بذلت فيها Bethesda مجهوداً يدوياً. لم تكن هذه الكواكب المُولدة إجرائياً مفيدةً إلا للاستكشاف وجمع الموارد نظراً لأن معظمها خالٍ من الحياة بل أن الكواكب الداعمة للحياة لا تقدم نشاطات تُذكر إلا إذا كانت ضمن المهام،