मैं जिस पर काम कर रहा था, उसके लिए मैंने बूँदें पैदा करने के लिए एक बहुत ही लचीली डेटा-चालित प्रणाली लागू की। मैंने इसे यहाँ प्रलेखित किया है । यह अनिवार्य रूप से कई बेतरतीब ढंग से चुनी गई वस्तुओं के चयन के लिए थोड़ा डीएसएल है।
एक साधारण बूंद की तरह दिखता है:
1-10 copper coin
यह सिर्फ 1 और 10 के बीच तांबे के सिक्कों की एक यादृच्छिक संख्या को गिराने के लिए कहता है। जब आप शाखाएं जोड़ते हैं तो चीजें अधिक लचीली हो जाती हैं:
one of
turquoise stone (50%)
onyx stone (25%)
malachite stone (15%)
jade stone (10%)
एक "एक" दी गई संभावनाओं के आधार पर अपनी एक बाल शाखा का चयन करता है और फिर उसका मूल्यांकन करता है। एक से अधिक आइटम गिर सकते हैं:
any of
turquoise stone (50%)
onyx stone (25%)
malachite stone (15%)
jade stone (10%)
यह सभी सबब्रांचों का मूल्यांकन करेगा और उन्हें गिरा देगा यदि उनकी संभावना के खिलाफ एक रोल पास हो जाता है। कालकोठरी और खिलाड़ी के स्तर के आधार पर एक आइटम का चयन करने के लिए कुछ अन्य शाखाएं भी हैं।
क्योंकि ये जटिल हो सकते हैं, यह आपको नामित मैक्रोज़ को परिभाषित करने की भी अनुमति देता है, अनिवार्य रूप से ऐसे कार्य जो एक शाखा अभिव्यक्ति का विस्तार करते हैं और कई बूंदों में पुन: उपयोग किया जा सकता है। इस तरह अगर, उदाहरण के लिए, सभी बौने एक ही तरह की लूट को छोड़ देते हैं, तो आप उसके लिए एक एकल मैक्रो बना सकते हैं और इसका उपयोग उन सभी प्रकार के राक्षस के बजाय भारी ड्रॉप टेबल को कॉपी और पेस्ट करने में कर सकते हैं।
एक राक्षस की बूंद का एक उदाहरण :
:: ancient dragon
glyph = D
groups = dragon
drops
(coins)
2-3(1:8) one of
(any-weapon)
(any-armor)
इधर, (coins)
, (any-weapon)
, और (any-armor)
सभी मैक्रो कॉल कर रहे हैं:
(any-armor)
one of
(shield)
(helm)
(boots)
(gloves)
(cloak)
(robe)
(soft-armor)
(hard-armor)
जो बदले में चीजों को कॉल करता है जैसे:
(cloak)
one near level
cloak (10)
velvet cloak (20)
fur-lined cloak (50)
आप वास्तविक प्रोग्रामिंग भाषा की तरह मनमाने ढंग से गहराई से भावों को छोड़ सकते हैं। यह आपको एक सरल तालिका-आधारित दृष्टिकोण प्रदान करने वाली कंपोज़िबिलिटी देता है।
सभी डेटा-चालित प्रणालियों की तरह, आप अभेद्य रूप से जटिल बूंदों का निर्माण करके खुद को अभिभूत कर सकते हैं, लेकिन यह मेरे लक्ष्यों को पूरा करता है:
- कोड के बाहर क्या चीजें पूरी तरह से गिरा दी जाती हैं यह निर्दिष्ट करने में सक्षम हो।
- कोड में कोर सिस्टम को लागू करने के लिए सरल।
- धुन बनाने में सक्षम रहें कि कौन से विशिष्ट राक्षस ड्रॉप करें ताकि खिलाड़ी लक्ष्य-उन्मुख अन्वेषण कर सके। ("मुझे हार की जरूरत है। मैं बौनों की तलाश करूंगा क्योंकि वे उन्हें छोड़ देते हैं।"
C # कोड जो इसे लागू करता है वह यहां है ।