प्रक्रियात्मक पीढ़ी के साथ शुरुआत कैसे की जाती है?


147

प्रक्रियात्मक पीढ़ी को हाल ही में (बीजाणु, MMOs, आदि द्वारा) सुर्खियों में लाया गया है, और यह एक दिलचस्प / दिलचस्प प्रोग्रामिंग तकनीक की तरह लगता है।

मेरे प्रश्न ये हैं:

  • क्या आप किसी भी मध्य-आकार की परियोजनाओं के बारे में जानते हैं जो प्रक्रियात्मक पीढ़ी की तकनीकों का उपयोग करते हैं?
  • प्रक्रियात्मक पीढ़ी के लिए कौन सी भाषा / वर्ग की भाषा सबसे अच्छी है?
  • क्या आप "गंभीर" कोड के लिए प्रक्रियात्मक पीढ़ी का उपयोग कर सकते हैं? (यानी, खेल नहीं)

1
आश्चर्य है कि क्या आपको यह लेख एक्स-टीम से मददगार लगा? x-team.com/blog/…
एडम गेरार्ड

जवाबों:


117

आपको शायद थोड़ा सिद्धांत और सरल उदाहरणों से शुरू करना चाहिए जैसे कि मिडपॉइंट विस्थापन एल्गोरिदम । यदि आप ग्राफिक्स बनाने में रुचि रखते हैं, तो आपको पेरलिन शोर के बारे में भी सीखना चाहिए । मैंने इसका उपयोग प्रक्रियात्मक पीढ़ी पर अपनी अंतिम वर्ष की परियोजना के साथ मुझे शुरू करने के लिए किया।

भग्न प्रक्रियात्मक पीढ़ी से निकटता से संबंधित हैं।

Terragen और SpeedTree आपको प्रक्रियात्मक पीढ़ी की कुछ अद्भुत संभावनाएं दिखाएगा।

प्रक्रियात्मक पीढ़ी एक ऐसी तकनीक है जिसे किसी भी भाषा में इस्तेमाल किया जा सकता है (यह निश्चित रूप से सी जैसी प्रक्रियात्मक भाषाओं तक सीमित नहीं है, क्योंकि इसका उपयोग ओओ भाषाओं जैसे कि जावा और तर्क भाषाओं जैसे प्रोलॉग में किया जा सकता है)। किसी भी भाषा में पुनरावृत्ति की एक अच्छी समझ, प्रक्रियात्मक पीढ़ी की आपकी समझ को मजबूत करेगी।

'गंभीर' या गैर-गेम कोड के लिए, प्रक्रियात्मक पीढ़ी की तकनीकों का उपयोग किया गया है:

  • यातायात प्रबंधन की योजना बनाने के लिए शहरों के विकास का अनुकरण करें
  • रक्त वाहिकाओं की वृद्धि का अनुकरण करना
  • स्पीडट्री का उपयोग फिल्मों और वास्तुशिल्प प्रस्तुतियों में किया जाता है

यह पेर्लिन नॉइज़ फ़ोटोशॉप के "क्लाउड्स" फिल्टर की तरह बहुत दिखता है।
डबलऑर्ट

पहली कड़ी टूटी है
जीन कार्लो मचाडो

कुछ इलेक्ट्रो संगीत बनाने के लिए प्रक्रियात्मक पीढ़ी का उपयोग करता है
पोयडा

50

प्रक्रियात्मक सामग्री पीढ़ी विकि:

http://pcg.wikidot.com/

यदि आप जो चाहते हैं वह वहां नहीं है, तो इसे जोड़ें;)


11
मैं पूरी विकी को यहाँ कॉपी नहीं कर सकता! कोई 'आवश्यक हिस्सा' नहीं है।
मार्टिन

12

प्रक्रियात्मक सामग्री पीढ़ी अब सभी GPU के लिए लिखी गई है, इसलिए आपको एक shader भाषा जानने की आवश्यकता होगी। इसका मतलब है कि GLSL या HLSL। ये क्रमशः OpenGL और DirectX से जुड़ी हुई भाषाएं हैं।

हालांकि गति के कारण मेरी निजी प्राथमिकता Dx11 / HLSL के लिए है, एक आसान सीखने की अवस्था और फ्रैंक डी लूना , ओपनजीएल को अधिक प्लेटफार्मों के लिए समर्थन दिया गया है।

यदि आप एक OpenGL / DirectX गेम इंजन को सेटअप करने में लगने वाले समय (काफी) को खर्च किए बिना राइट-ऑफ राइट करना चाहते हैं, तो आपको WebGL की जांच करनी चाहिए।

प्रक्रियात्मक सामग्री शोर से शुरू होती है।

तो आपको पेरलिन शोर (और इसके उत्तराधिकारी सिम्प्लेक्स शोर ) के बारे में जानने की आवश्यकता होगी ।

Shadertoy shader प्रोग्रामिंग के बारे में सीखने के लिए एक शानदार संदर्भ है। मैं आपको यह सलाह देता हूं कि जब आप shader कोडिंग दे देते हैं, तो एक बार आप इसे आ जाएंगे, क्योंकि कोड वहाँ गणितीय रूप से स्क्वीम के लिए नहीं है, लेकिन यह है कि प्रक्रियात्मक सामग्री कैसे की जाती है।

Shadertoy एक प्रक्रियात्मक जीनियस, Inigo Quilez , पिक्सार पर काम करने वाले डेमो दृश्य के एक उत्पाद द्वारा बनाया गया था । उसके पास लाइव कोडिंग सत्र के कुछ यूट्यूब वीडियो ( महान उदाहरण ) हैं और मैं भी इनकी सिफारिश कर सकता हूं।


17
आपका क्या मतलब है "प्रक्रियात्मक सामग्री पीढ़ी अब सब GPU के लिए लिखा है"? आप सिर्फ घास की ब्लेड जैसी चीजों के बारे में बात कर रहे हैं? आप उदाहरण के लिए, खेलों के लिए मानचित्र या शहरों की पीढ़ी का मतलब नहीं है, क्या आप?
द्रोणज

2
हाँ, मुझे लगता है कि "सभी" टिप्पणी यहाँ एक अतिरंजना है, लेकिन परिदृश्य पीढ़ी (जो मुझे लगता है कि सबसे आम प्रकार है) के क्षेत्र में, यह एक उपयोगी उत्तर है। हालाँकि मैं सोच भी नहीं सकता कि कौन किसी वीडियो में किसी प्रकार का कोड देखना चाहेगा।
नैट सीके

1
कोई है जो सीखना चाहता है कि जटिल कोड कैसे लिखें, जैसे कि शेड्स, या सीखें कि उनके डिजाइन में जटिल पैटर्न का उपयोग कैसे करें। और वह सिर्फ सतह खुरच रहा है।
अल्ट्रोमन द टोमन

"प्रक्रियात्मक सामग्री पीढ़ी अब सभी GPU के लिए लिखी गई है, इसलिए आपको एक shader भाषा जानने की आवश्यकता होगी।" बस असत्य और 100% भ्रामक है। (मैं सरल प्रक्रियात्मक पीढ़ी परियोजना बना रहा हूं, मैंने अपने जीवन में छायाकार कोड की 0 पंक्तियां लिखीं)
गतिविधि

9

यदि आप एक विश्व जनरेटर सिमुलेशन प्लेटें टेक्टोनिक्स, कटाव, वर्षा-छाया आदि का उदाहरण चाहते हैं, तो यहां देखें : https://github.com/ftomassetti/lands

उसके ऊपर एक सभ्यता विकास सिम्युलेटर भी है:

https://github.com/ftomassetti/civs

दिलचस्प संसाधन पर पूर्ण ब्लॉग है:

dungeonleague.com/

अब इसे छोड़ दिया गया है लेकिन आपको इसके सभी पोस्ट पढ़ने चाहिए


दिलचस्प सूत्र।
सलाअदीन

8

मैं इस पर एक विशेषज्ञ नहीं हूं, लेकिन मैं कुछ उत्तरों की कोशिश कर सकता हूं:

  1. नेटहैक और यह व्यापक है खुला स्रोत है और स्तरों (नक्शे) के प्रक्रियात्मक पीढ़ी पर बहुत भरोसा करते हैं। इसके डाउनलोड का लिंक । यदि आप परिदृश्य / बनावट / क्लाउड पीढ़ी में अधिक रुचि रखते हैं, तो मैं आपको Gamasutra और GameDev की खोज करने की सलाह दूंगा जिनके पास उन विषयों पर काफी कुछ लेख हैं।

  2. AFAIK मुझे नहीं लगता कि भाषाओं के बीच बहुत अंतर है। आपके द्वारा देखा गया अधिकांश कोड C / CPP में होगा क्योंकि यह अभी भी गेम डेवलपर्स की आधिकारिक भाषा है, लेकिन आप इसका उपयोग कर सकते हैं ...

  3. वैसे यह निर्भर करता है कि क्या आपके पास एक परियोजना है जो इस तरह की तकनीक से लाभान्वित हो सकती है। मैंने सेना के लिए सिमुलेटर में प्रयुक्त प्रक्रियात्मक पीढ़ी को देखा (जिसे एक खेल माना जा सकता है, हालांकि वे बहुत खेलने योग्य नहीं हैं :))।

और एक छोटा नोट - अगर प्रक्रियात्मक पीढ़ी कुछ भी नियमों या पैटर्न और बहुत सारे यादृच्छिकता से बहुत अधिक डेटा उत्पन्न कर रही है तो मेरी परिभाषा, आपके परिणाम भिन्न हो सकते हैं :)


8

विषय के बारे में एक उत्कृष्ट पुस्तक है:

http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486

यह गैर-वास्तविक समय दृश्य प्रभावों और एनीमेशन पीढ़ी के लिए पक्षपाती है, लेकिन इन क्षेत्रों के बाहर सिद्धांत और विचार प्रयोग करने योग्य हैं, मुझे लगता है।

यह भी उल्लेख के लायक है कि एक पेशेवर सॉफ्टवेयर पैकेज है जो साइडफॉक्स के हौडिनी नामक एक पूरी प्रक्रियात्मक वर्कफ़्लो को लागू करता है। आप इसका उपयोग समस्याओं के आविष्कार और प्रोटोटाइप समाधान के लिए कर सकते हैं, जिसे आप बाद में कोड में बदल सकते हैं।

हालांकि यह एक महंगा पैकेज है, लेकिन इसके पास एक मुफ्त मूल्यांकन लाइसेंस है, जिसका उपयोग बहुत अच्छे शैक्षिक और / या इंजीनियरिंग उपकरण के रूप में किया जा सकता है।


7

एक छोटे से निष्पादन योग्य में जटिल ग्राफिक्स बनाने के लिए प्रक्रियात्मक पीढ़ी को डीमोसिन में भारी उपयोग किया जाता है। विल राइट ने यहां तक ​​कहा कि वह बीजाणु से प्रेरित थे, जबकि बीजाणु बनाते समय। यह आपकी सबसे अच्छी जगह हो सकती है।

http://en.wikipedia.org/wiki/Demoscene


3

सबसे महत्वपूर्ण बात यह है कि सड़कों, शहरों, ब्लॉकों और इमारतों को कैसे संरचित किया जाए। पता करें कि सभी इमारतों में क्या आम है। तस्वीरों, नक्शों, योजनाओं और वास्तविकता को देखें। यदि आप ऐसा करते हैं, तो आप उन लोगों से एक कदम आगे होंगे जो शहर के निर्माण को केवल कंप्यूटर-तकनीकी मामला मानते हैं।

आगे आपको छोटे, अलग चरणों में उस ज्यामिति को बनाने के तरीके पर समाधान विकसित करना चाहिए। आपको उन नियमों को परिभाषित करना होगा जो एक विश्वसनीय शहर बनाते हैं। यदि आप 3 डी मॉडलिंग में हैं, तो आपने जो कुछ भी सीखा है, उस पर आपको पुनर्विचार करना होगा ताकि कंप्यूटर किसी भी स्थिति में आपके निर्देशों का पालन कर सके।

ढीले ट्रैक नहीं करने के लिए आपको बहुत सारे ऑपरेटर स्थापित करने चाहिए जो केवल पूरी प्रक्रिया के कुछ हिस्सों के लिए जिम्मेदार हैं। यह डिबगिंग, विस्तार और आपके सिस्टम को बेहतर बनाना बेहतर बनाता है। अगले चरण में आपको उन ऑपरेटरों को लिंक करना चाहिए और मापदंडों को बदलकर परिणामों की जांच करनी चाहिए।

मैंने बहुत सारे "शहर जनरेटर" देखे हैं, जिनमें मुख्य रूप से उन पर कुछ खिड़की के बनावट के साथ यादृच्छिक-आकार के बक्से होते हैं:


3

(10 से अधिक वर्षों बाद ...)

प्रक्रियात्मक पीढ़ी का अर्थ केवल यह है कि कोड का उपयोग हाथ से किए जाने के बजाय डेटा उत्पन्न करने के लिए किया जाता है। उदाहरण के लिए यदि आप विभिन्न पेड़ों के साथ एक जंगल उत्पन्न करना चाहते हैं, तो आप प्रत्येक पेड़ को हाथ से डिजाइन नहीं करने वाले हैं , इस प्रकार विविधता उत्पन्न करने के लिए कोडिंग अधिक कुशल है। यह ट्री ग्राफिक्स, आकार, संरचना, प्लेसमेंट की पीढ़ी हो सकती है ...

सामान्य तौर पर कुछ नियमों के साथ कुछ प्रकार का हस्तक्षेप होता है , इसके अलावा आप अपनी खुद की कुछ यादृच्छिकता और तर्क जोड़ सकते हैं, इन सभी तकनीकों को जोड़ सकते हैं ... कुछ भी अराजक लेकिन बहुत अराजक नहीं बल्कि दिलचस्प परिणाम प्राप्त कर सकते हैं।

यहाँ कुछ उल्लेखनीय तकनीकें हैं:

अपनी प्रक्रियात्मक पीढ़ी के लिए प्रसिद्ध कुछ खेल:

प्रक्रियात्मक भूमाफिया पीढ़ी के बारे में वीडियो ट्यूटोरियल ।

खेलों के लिए प्रक्रियात्मक सामग्री निर्माण पर सम्मेलन, इस विषय पर बहुत सारे वीडियो हैं: सब कुछ

मज़े करो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.