एक बारी आधारित खेल या Roguelikes में एक हिट की गणना के लिए विशेषताएँ


22

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

मेरे पास अब तक एक यादृच्छिक पूर्णांक के साथ खिलाड़ी और शत्रु विशेषताओं के बीच के अंतर को जोड़ रहा है:

if ((player.dex - enemy.dex) + (player.speed - enemy.speed) +
    (player.luck - enemy.luck) + random_integer_below_6()) >= 10) {
    hit(enemy);
}

यह अप्राकृतिक गेमप्ले के लिए बनाता है: खिलाड़ी कभी भी कमजोर दुश्मनों और मजबूत लोगों के लिए इसके विपरीत याद नहीं करता है। किसी को भी आधारित खेल आदि बारी में इस्तेमाल किया मुकाबला आधारित विशेषता का एक गाइड के बारे में पता है? क्या मुझे (और क्या मैं) डी एंड डी नियमों की शब्दशः कॉपी कर सकता हूं?

जवाबों:


18

मुझे पता है कि आप क्या चाहते हैं कि "गारंटीकृत हिट" और "गारंटीकृत मिस" के मौके (यानी एक बिल्ली के बच्चे को मारने के लिए एक बिल्ली और एक बिल्ली के बच्चे को याद करने के लिए एक मौका)। अपने यादृच्छिक परिणाम को स्टोर करें, और बिजली के अंतर को लागू करने से पहले, एक हिट को चिह्नित करें यदि यह उन सीमाओं के भीतर है। यह 100% हिट / मिस चांस की समस्या को रोकेगा ... हालाँकि नीचे हिट का मौका प्रदान करने के लिए एक और विकल्प है, नीचे विस्तृत रूप से।

डी एंड डी एक "फ्लैट" प्रणाली है, जहां संभाव्यता को संभावित रोल परिणामों में समान रूप से वितरित किया जाता है। अन्य प्रणालियां अधिक घुमावदार वितरण का उपयोग करती हैं, आमतौर पर कई पासा को रोल करके और उन्हें जोड़कर हासिल किया जाता है। यह इस तरह एक वक्र बनाने के लिए काफी आसान है (रैंड () + रैंड ()) / 2 को ध्यान में आता है)।

एक और संभावना है "पासा का विस्फोट।" शैडरून और सैवेज वर्ल्ड जैसी प्रणालियों में, अधिकतम संभव डाई परिणाम को रोल करने से आप फिर से जीत सकते हैं और नए परिणाम जोड़ सकते हैं। अपने गेम में, आप यह देखने के लिए परीक्षण करेंगे कि क्या आपका यादृच्छिक परिणाम एक निश्चित सीमा से ऊपर था, और यदि ऐसा है, तो फिर से रोल करें। यदि आप पासा को अनिश्चित काल के लिए फटने देते हैं, तो भी सबसे कम भूत को एक भगवान को मारने का मौका है, और आपको एक स्पष्ट "गारंटीकृत हिट" मैकेनिक की आवश्यकता नहीं है।

एक घुमावदार रोल के साथ एक संभव दृष्टिकोण, लापता होने की गारंटी देने का मौका और पासा का विस्फोट कुछ इस तरह होगा:

function getRoll():Number
{
  var result:Number = (rand() + rand()) * 3; //Curved result from 0 to 6
  if(result > 5.75) result += getRoll(); //Explode over a certain threshold, recursively
  return result;
}

function attackHits():Boolean
{
  var roll:Number = getRoll();
  if(roll < 0.25) return false; //Guaranteed chance of miss
  else return ((player.dex - enemy.dex) + (player.speed - enemy.speed) +
    (player.luck - enemy.luck) + roll) >= 10; //Your original test.
}

बेशक, यह अप्रयुक्त और असंतुलित है; आप उन सभी जादुई संख्याओं को समायोजित करना चाहते हैं जब तक कि वे सही महसूस न करें।

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


3
वह भाषा कौन सी है, जो मज़ेदार प्रकार के पर्दों के साथ है? या यह सिर्फ छद्म कोड है?
तेनपुन

2
मुझे लगता है कि यह एक्टीस्क्रिप्ट या जावास्क्रिप्ट हो सकता है, लेकिन मुझे उस पर पकड़ न रखें।
कम्युनिस्ट डक

यह एक्टीस्क्रिप्ट 3 है। मैं एक फ्लैश डेवलपर हूं।
ग्रेगरी एवरी-वियर

6

मैं मान रहा हूं कि यह एक गेम बैलेंस सवाल है और कोडिंग सवाल नहीं है, और इसे संभालने के कई तरीके हैं। आपके मौजूदा एल्गोरिथ्म से, मुझे संदेह है कि आप इसे और अधिक जटिल बना रहे हैं क्योंकि यह होना चाहिए (तीन गुण और खिलाड़ी के दृष्टिकोण से एक अत्यंत मैला प्रणाली के लिए एक यादृच्छिक संख्या)। मेरी पहली वृत्ति को सरल बनाना है!

अनुकूल गुण जो कई कार्य करते हैं, कई परिणामों द्वारा निर्धारित परिणामों के बजाय कई कार्य करते हैं। DEX हिट हिट के प्राथमिक निर्धारक के रूप में ठीक काम करता है; बाकी सब कुछ के अलावा यह संतुलन के लिए कठिन बनाने के लिए कार्य करता है। इसे इस तरह से सोचें: प्रत्येक हिट पर एक खिलाड़ी की अपेक्षित क्षति हिट होने पर उनके औसत नुकसान से कई गुना अधिक है। इतने सारे चरों के साथ "अपेक्षित" या "विशिष्ट" टू-हिट% की गणना करने की आपकी क्या योजना है?

मुझे एक और मुद्दा दिखाई देता है, जो यह है कि आपका फॉर्मूला पैमाना नहीं है, और शायद यही आप अनुभव कर रहे हैं। DEX, LUCK और SPEED की मानें तो खेल के दौरान इन आंकड़ों में खिलाड़ी और राक्षस के बीच अंतर बढ़ेगा। एक उदाहरण के रूप में, यदि किसी खिलाड़ी का शुरुआती गेम DEX 4 से 6 रेंज में है और इसलिए राक्षस हैं, तो यह 10-20% का हिट-हिट संशोधक है। यदि खेल के बाद के चरणों में रेंज 10 से 20 की तरह अधिक है, तो यह 100% संशोधक तक है।

इसे ठीक करने का एक तरीका आँकड़ों को ठीक रखना है। प्लेयर और मॉन्स्टर रेंज पूरे खेल में समान होते हैं, और +1 DEX जैसा कुछ प्राप्त करना बहुत बड़ी बात है, अत्यंत दुर्लभ, और इस तरह से व्यवहार किया जाता है (यदि यह सभी में मौजूद है)। फिर आपका फॉर्मूला पूरे खेल के लिए ठीक काम करेगा, और आप एक खिलाड़ी को उसी हिट-टू-चांस के साथ देखेंगे।

एक और तरीका है कि हार्डकोड "10" को स्तर के साथ पैमाने पर बदलना है, इसलिए हो सकता है कि यह "10 + राक्षस स्तर" या "10 + कालकोठरी स्तर" या कुछ और हो, जो खेल में प्रगति होने तक कठिनाई में थोड़ी वृद्धि का कारण बनता है जब तक कि खिलाड़ी का स्तर ऊपर न हो जाए तदनुसार उनके आँकड़े।

एक तीसरा तरीका, जैसा कि अन्य लोगों ने कहा है, उच्चतम और निम्नतम स्वीकार्य टू-हिट पर हार्ड कैप सेट करना है, और बस यह कहना है "यदि गणना मूल्य एक्स से कम है, तो इसके बजाय एक्स का उपयोग करें"।

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


यह एक बेहतरीन जवाब है।
सीनिकस

3

आप महत्वपूर्ण हिट (आमतौर पर याद नहीं कर सकते हैं, बोनस क्षति) और महत्वपूर्ण यादों को जोड़ना चाहते हैं (कोई फर्क नहीं पड़ता कि क्या खिलाड़ी संभवतः dazes याद करने के लिए फ्लैट मौका)।


0

बहुत सारे खेल सामान्य हिट फॉर्मूला के अलावा सभी कारकों की परवाह किए बिना एक हिट के पांच प्रतिशत परिवर्तन का उपयोग करते हैं।

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