एक गेम के आधार पर थ्योरीक्राफ्ट आँकड़े के लिए एक उपकरण के लिए एल्गोरिथ्म (किंवदंतियों के लीग)


10

मैं एक गेम (किंवदंतियों के लीग) के लिए एक सिम्युलेटर (मूल रूप से परीक्षण उद्देश्यों के लिए) बनाना चाहूंगा।

खेल की मूल बातें:

आपके पास एक हीरो है जिसके पास कुछ आँकड़े हैं:

  • स्वास्थ्य की दृष्टि से
  • हमले में क्षति
  • हमले की गति
  • कवच
  • कवच प्रवेश
  • आंदोलन को गति

हीरो के पास 4 कौशल हो सकते हैं (आपको प्रत्येक स्तर पर एक कौशल प्राप्त होता है) (वे मैन्युअल रूप से सक्रिय होते हैं, अधिकांश समय, कोल्डाउन, क्षति, हमला करने / हमला करने का पैमाने अनुपात और कौशल स्तर) + एक निष्क्रिय कौशल होता है

आप दुश्मन नायकों, या तटस्थ राक्षसों को मार सकते हैं, उनके पास समान आँकड़े हैं:

  • स्वास्थ्य की दृष्टि से
  • हमले में क्षति
  • हमले की गति
  • कवच

मैं क्या करना चाहूंगा:

यदि कोई विशेष वस्तु, या एक विशेष स्टेट वृद्धि आपकी हत्या की शक्ति / गति को बढ़ाती है, तो परीक्षण करने के लिए एक उपकरण बनाएं।

मानचित्र: http://evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg

स्टेटमेंट उदाहरण:

  • एचपी: 420
  • विज्ञापन: 55
  • AttackSpeed: 0.613 (हमले / s -> 1 / 0.613 s पर हर हमला)
  • कवच प्रवेश: 25

चरित्र 1 / हमला करने वाले के साथ दुश्मन को शत्रुतापूर्ण करने वाला है, और हमला करने के नुकसान के साथ नुकसान होता है (क्षति की गणना करने के लिए एक सूत्र है, लेकिन इस चरण में महत्वपूर्ण नहीं है कि मुझे लगता है), एक बार जब वे मर जाते हैं, तो मूविंगस्पीड के साथ अगले एक पर चला जाता है ( आप नक्शे पर शिविर, पीले रंग की खोपड़ी देख सकते हैं)

मैं एल्गोरिथ्म के बारे में सोच रहा था:

  1. मैंने सोचा कि अगर मैं सिर्फ i = 0 से i = 30000 (गिनता एमएस) के लिए एक बना देता हूं, तो मैं बस दुश्मन hp और मेरे hp की जांच कर सकता हूं और साथ ही साथ हर ms में इतना बुरा निकला (सुंदर सीपीयू भारी, और मैं चाहूंगा इसमें कुछ यादृच्छिक डालने के लिए, इसलिए मुझे 1k पुनरावृत्ति को योग करने में सक्षम होना चाहिए, जो असंभव है)

  2. दूसरे, मुझे लगा कि मुझे सिर्फ i = 1 से 30 तक के लिए करना चाहिए, और हर सेकंड की जांच करनी चाहिए, और यह देखना होगा कि अंतिम सेकंड में क्या हुआ था, लेकिन कुछ तटस्थ राक्षस एक बड़े शिविर (4 राक्षस तक) में हैं, और इस तरह कोड जटिल और जटिल हो रहा था।

  3. मैं प्रत्येक खिलाड़ी / राक्षसों के लिए धागे बनाने जा रहा हूं, और जब वे मर गए तो एक बार देख लेंगे, और खिलाड़ी की hp को कम कर देंगे।

मेरा सवाल, क्या यह जाने का सही तरीका है?

TLDR: मैं एक खेल के बारे में विश्लेषण बनाने के लिए एक उपकरण बनाना चाहूंगा (1k गणना और औसत) एक खेल के बारे में जो स्टेट वृद्धि से चरित्र को तेज तटस्थ राक्षसों को मार देगा।

मैं जावा पसंद करूँगा, लेकिन मैं एल्गोरिथ्म में फंस गया हूँ।


@ करोली एस: हां, यह मेरा बुरा है, .com -> .eu

मैं इस पर काम कर रहा हूँ:

मैं प्रत्येक वस्तु (खिलाड़ी कौशल, ऑटोटैक, बफ़्स) पर शेष समय की जांच कर रहा हूं, और हमेशा कम से कम समय चुनता हूं, और अंतिम_ समय को संग्रहीत करता हूं, और समय को जोड़ता हूं, अगले दौर में मैं समय की गणना करता हूं (समय- पिछली बार)

यदि ऑब्जेक्ट का समय शेष है, तो उसे वह करना होगा जो उसे करने की आवश्यकता है।

मुझे नहीं पता कि यह बहुत अच्छा तरीका है या नहीं, लेकिन यह सबसे अच्छा है जो मैं कर सकता था।


1
आपके पास स्टैक एक्सचेंज के गेम डेवलपमेंट सेक्शन / साइट पर पूछने के लिए बेहतर भाग्य हो सकता है, इसे स्थानांतरित करने के लिए एक मॉड प्राप्त करने का प्रयास करें, हालांकि संभावना है कि वे वैसे भी होंगे। एक जगमगाता सिम्युलेटर एक तरह से दिलचस्प होगा, मैं इसे कुछ विचार दूंगा और देखूंगा कि मैं क्या कर रहा हूं।
एस

त्वरित उत्तर के लिए धन्यवाद, आपकी मदद की बहुत सराहना की गई है। मेरा अनुमान सही है कि आप भी आयु हैं?

बिल्कुल, यह कुछ ऐसा है जिसके बारे में मैंने गहराई से नहीं सोचा है, लेकिन मुझे इसमें दिलचस्पी होगी। मेरा शुरुआती दृष्टिकोण यह देखना होगा कि क्या आपके # 2 का सरल संस्करण संभव है। मैं आपसे अधिक लंबाई में इस पर चर्चा करना पसंद करूंगा। और हाँ, आपका अनुमान सही होगा :)
Karoly S

मेरे लिए शांत लगता है, मैं विषय को खुला छोड़ दूंगा, शायद किसी को पहले से ही इसके बारे में कोई विचार है। मेरा ईमेल (gwelican डॉट कॉम पर etheld)

अच्छा लगता है, मैं इसमें कुछ सोचता हूँ और आपको आज थोड़ी देर बाद ईमेल करता हूँ।
कारोली एस।

जवाबों:


1

फ्रेम-बाय-फ्रेम सिमुलेशन के विकल्प:

आप इस तरह के फार्मूले द्वारा अनुकरण के लिए एक उचित अनुमान प्राप्त कर सकते हैं

rawDamage = <some function of strength?)
Damage = rawDamage - enemyArmorReduction
DPS = (attackSpeed * Damage) * enemyArmorMod
myRemainingHP = myDPS / theirHP  - theirDPS / myHP

आप एक चाल-कतार भी बनाए रख सकते हैं, ताकि आप प्रति-चाल अनुकरण करें, प्रति-टिक नहीं:

// my aspd = 4 attacks per second, his aspd = 3 attacks per second
0.0s : start battle
0.25s: I attack
0.33s: He attacks
0.50s: I attack again
...
1.00s: I attack
1.00s: He attacks
...

चाल कतार अधिक सटीक होगी, क्योंकि यह इस तथ्य से सही ढंग से निपटती है कि क्षति असतत है, निरंतर नहीं। उदाहरण के लिए, यदि मैं 0 सेकंड में 50 नुकसान करता हूं, और 1 सेकंड में दूसरा 50, मेरा डीपीएस 50 होगा, फिर भी मैं 1 सेकंड में 100 एचपी लक्ष्य को मारूंगा।

@ हमार: यह सच है। लड़ाई जितनी कम होगी, डीपीएस आधारित अनुमान उतना कम सटीक होगा।
जिमी

तथ्य यह है कि खेल में अचेत है और अन्य डीबफ्स इस तरह के उपकरण को वास्तव में प्राप्त करना कठिन बना देते हैं, क्योंकि विभिन्न खिलाड़ियों के पास हत्या की दर में अलग-अलग परिणाम हो सकते हैं। वैसे भी अच्छा जवाब।
Grimshaw
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.