विशेष रूप से, मैं इस प्रतियोगिता के लिए प्रोग्रामिंग के बारे में बात कर रहा हूँ: http://www.nodewar.com/aboutकुछ प्रासंगिक एआई क्या हैं। इकाइयों के झुंड प्रोग्रामिंग के लिए तकनीकें?
प्रतियोगिता आप एक दो आयामी दुनिया में अंतरिक्ष यान के एक झुंड के साथ अन्य टीमों का सामना करना पड़ शामिल है। जहाजों को एक सीमा से बाधित किया जाता है (यदि वे बाहर निकलते हैं), और उन्हें लगातार चंद्रमा से बचना चाहिए (जो जहाज को उनके गुरुत्वाकर्षण के साथ खींचते हैं)। लक्ष्य विरोधी रानी को मारना है।
मैंने कुछ अपेक्षाकृत बुनियादी तकनीकों को प्रोग्राम करने का प्रयास किया है, लेकिन मुझे लगता है कि मुझे कुछ मौलिक याद आ रही है।
उदाहरण के लिए, मैंने कुछ बोलियों के व्यवहार (http://www.red3d.com/cwr/boids/) को लागू किया, लेकिन उन्हें बोलने के लिए ... लक्ष्य, कमी का अभाव लग रहा था।
क्या इस तरह के गेम के लिए कोई आम तकनीक (या, अधिमानतः, तकनीकों के संयोजन) हैं?
संपादित
मैं सिर्फ इस एक इनाम के साथ फिर से खोलने के लिए के बाद से मुझे लगता है कि मैं अभी भी जानकारी के महत्वपूर्ण टुकड़े याद कर रहा हूँ चाहते हैं।
boundary_field = (o, position) ->
distance = (o.game.moon_field - o.lib.vec.len(o.lib.vec.diff(position, o.game.center)))
return distance
moon_field = (o, position) ->
return o.lib.vec.len(o.lib.vec.diff(position, o.moons[0].pos))
ai.step = (o) ->
torque = 0;
thrust = 0;
label = null;
fields = [boundary_field, moon_field]
# Total the potential fields and determine a target.
target = [0, 0]
score = -1000000
step = 1
square = 1
for x in [(-square + o.me.pos[0])..(square + o.me.pos[0])] by step
for y in [(-square + o.me.pos[1])..(square + o.me.pos[1])] by step
position = [x, y]
continue if o.lib.vec.len(position) > o.game.moon_field
value = (fields.map (f) -> f(o, position)).reduce (t, s) -> t + s
target = position if value > score
score = value if value > score
label = target
{ torque, thrust } = o.lib.targeting.simpleTarget(o.me, target)
return { torque, thrust, label }
मैं संभावित क्षेत्रों गलत ढंग से लागू हो सकता है, हालांकि, के बाद से सभी उदाहरण मैं मिल सकता है असतत आंदोलनों के बारे में कर रहे हैं (जबकि NodeWar निरंतर है और सटीक नहीं): निम्नलिखित मेरी NodeWar कोड है।
मुख्य समस्या मेरे एआई होने के नाते। कभी भी ऑफ-स्क्रीन उड़ान भरने या चंद्रमा में दुर्घटनाग्रस्त होने के बिना गेम क्षेत्र में 10 सेकंड से अधिक समय तक रहता है।
(एक और 'ए' जो आप शारीरिक प्रणाली और कुछ अन्य मैट्रिक्स जो आप नियंत्रण पैरामीटर्स दे देता है में एक अलग) कर सकते हैं की आवश्यकता होगी ऑफ़लाइन मॉडल ट्रेन करें? –
@ थॉमसजंगब्लूट नहीं, मुझे उन सभी खेलों को मैन्युअल रूप से चलाने के लिए है। – sdasdadas