# التوليد الإجرائي

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

## نظرة عامة

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

## تطبيق معاصر
### ألعاب الفيديو (إلكترونية)
#### تاريخ البداية

قبل وجود الألعاب المعتمدة على الرسومات، استخدمت الألعاب الشبيهة بروج (roguelike games)، كلعبة Beneath Apple Manor واللعبة نفسها التي سميت فئة الألعاب على اسمها؛ روج (1980) التوليد الإجرائي لتصميم زنازين أو ممرات متولدة بشكل عشوائياً. التوليد الإجرائي يعرف الغرف، الممرات، الوحوش (الأعداء) والكنوز التي يجدها اللاعب. استمرت ما تعرف بالألعاب الشبيهة بروج بكونها فئة ألعاب لها شعبيتها، كونها تسمح لعملية التطوير ببناء نظام لعب معقد بدون الحاجة لبذل الكثير من الوقت في إنشاء عوالم اللعبة.
لقديم من ألأعاب الكمبيوتر كان محدوداً بشكل كبير بالذاكرة العشوائية RAM. هذا أجبر محتويات اللعبة، كالخرائط، ليتم توليدها خوارزمياً أثناء اللعب: ببساطة لم يكن هناك مساحة كافية لتخزين ملفات كبيرة من المراحل المعدة مسبقاً والأعمال الفنية. خوارزيمة مولد أعداد شبه عشوائية استخدمت كثيراً بذرة بقيم معدة مسبقاً للقيام بإنشاء عوالم كبيرة من اللعبة والتي يبدو وكأنها معدة مسبقاً.
يفترض أن لعبة The Sentinel كانت تحتوي على 10000 مرحلة مختلفة مخزنة ى فقط في 48 و 64 كيلوبايت. لعبة Elite كانت حالة متطرفة كان مخطط لها أن تحتاوي على قرامة 282 مليار مجرة، كل واحدة منها تحتوي على 256 نظام شمسي. لكن الناشر خشي أن هذا العدد من المجرات لن يتم تصديقه من قبل اللاعبين، وتم اعتماد ثمانية فقط من هذه المجرات للنسخة النهائية. [4]
مثال آخر جدير بالملاحظة تشمل لعبة Rescue on Fractalus التي استخدمت عام 1985 الكسيريات لتولد عشوائياً أثناء اللعب الجبال ذات الأجراف المتحدرة لكوكب فضائي.
مع تطور العتاد الحوسبي وأصبح ممكن لأقراص التخزين المضغوطة CDs أن تخزن آلاف أضعاف البيانات الممكن تخزينها في أوائل الثمانينات، أصبح استخدام خوارزميات لبناء عوالم ضخمة غير ضرورياً، محتوى اللعبة مثل الإكساءات والشخصيات والنماذج في عالم اللعبة، أصبح يتم إنشاؤها بواسطة فنانين مسبقاً، للمحافظة على المحتويات ذات الجودة العالية بشكل ثابت.
تخزين تصاميم فريدة في ذاكرة اللعبة، بدلاً عن إنتاج العديد من العناصر بشكل إجارائي مع مراعاة قواعد معينةـ يسمح بوجود تنوع في تفاصيل هذه النماذج والتي هي مختلفة جوهرياً. ولكن بما أن كل نموذج يجب تصميمها يدوياً، سيكون عدد العناصر محدوداً. المحاولات الأولية لاستخدام التوليد الإجرائي حاولت حل هذه المحدودية بنقل كاهل إنتاج المحتوى من أيد الفنانين إلى المبرمجين الذين بإمكانهم إنشاء برنامج يولد بشكل تلقائي أنواع مختلفة من الأنسجة التي تشكل النماذج.
وبالرغم من أن ذلك الحل لازال يتم استخدامه في بعض الحالات، لكن ما تم ملاحظته هو أن تطبيق التوليد الإجرائي بسشكل نقي لإنشاء نماذج هو أمر يمكن القول عنه أنه صعب في أفضل الأحوال. متطلباً وقت طويل جداً كي يتطور لإنشاء نماذج تبدو واقعية ويمكن استخدامها. وبدلاً من كتابة برنامج يولد المحتوى كلياً، عادة ينظر للموضوع على أنه من الأرخص بكثير إنشاء بعض التفاصيل باستخدام الفنان أو المصمم. مثلاً برنامج SpeedTree هو برنامج وسيط يستخدم لإنشاء مجموعة كبيرة من الأشجار إجرائياً، لكن إكساء ورق الشجر يتم جلبها من ملفات عادية (غير مولدة عشوائياً). وكثيراً ما نجد طرائق فعالة تستخدم هذا المزيج لإنشاء محتوى يتم توليده بشكل عشوائي مستخدماً ملفات عادية معدة مسبقاً ويقوم التوليد بتشويهها.
ومن الصعب إنشاء خوارزمية جيدة لإنشاء شجرة واحدة، بالإضافة لوجود أنواع شجر كثيرة جداً. معضلة أخرى تكمن في أنه لا يمكن إنشاء غابة تبدو واقعية فقط بإنشاء تجمعة لأشجار، لأنه في العالم الواقعي هناك علاقات تفاعلية بين الأشجار ومتغيرات والتي ستؤثر على شكلها وتوزيعها في الغابة.

## الألعاب التي تستخدم التوليد الإجرائي

* Rogue (1980)
* Elite (1984)
* Diablo (1996)
* Diablo II (2000)
* Dwarf Fortress (2006)
* Shin Megami Tensei: Persona 3 (2006)
* Shin Megami Tensei: Persona 4 (2008)
* Spelunky (2008)
* Spore (2008)
* Left 4 Dead (2008)
* Left 4 Dead 2 (2009)
* Minecraft (2011)
* Terraria (2011)
* Diablo III (2012)
* Rust (2013)
* Elite: Dangerous (2014)
* Lego Worlds (2015)
* Starbound (2016)
* No Man's Sky (2016)
* Ark: Survival Evolved (2017)
* Star Citizen (to be confirmed)
* Boundless (to be confirmed)
* Astroneer (2017)
* Dirt 4 (2017)