Spieleprogrammierung - Tipps gesucht.
Geizhals » Forum » Programmierung » Spieleprogrammierung - Tipps gesucht. (25 Beiträge, 1242 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Re: Spieleprogrammierung - Tipps gesucht.
09.08.2011, 14:19:32
aus user sicht:

- wie entscheidet eine AI, ob sie eher baut oder Einheiten kauft


anhand einer vorgegebenen strategie. bis zu einer gewissen größe wird gebaut - wenn eine bestimmte anzahl an einheiten unterschritten wird wird gekauft ect.
für das ganze braucht es noch eine sinnvolle priorisierung und fertig :)


- wie geht eine AI mit dem Nebel des Krieges um ?


ist ihr eher wurscht ;-)

Angenommen, sie sieht kurz eine Einheit, diese verschwindet im Nebel und
danach taucht sie in der Nähe wieder auf. Wie wird geschätzt, ob es dieselbe
Einheit sein könnte oder eine andere ?


ich denke das völlig egal ist ob die einheit verschwindet oder nicht und ob das jetzt eine andere ist oder nicht.

Wie geht eine AI überhaupt mit Gegnern und dem Nebel um ? Merkt sie sich, wo
sie wen gesichtet hat - und lässt das aus-timen ? Legt sie Kreise drum, wie
weit sich die Figur bewegt haben könnte ?


imho hat die figur zumindest einen aktionsradius. wenn die figur diesen betritt wird angegriffen. (verteidigung)
je nach strategie gibt es zumindest einen weiteren aktionsradius (der größer als der erste aber maximal der sichtweite entspricht und somit für die figur sichtbar und nicht im nebel ist) wenn sich eine figur in diesen hinein bewegt wird je nach offensiver strategie die figur angegriffen, verfolgt, ignoriert, verstärkung "angefordert",...
danach kannst du auch mit timern usw. der rest bestimmt.

z.b. gegner betritt äußeren kreis. aggresive strategie versucht den gegner zu vertreiben. gelingt es nicht die figur innnerhalb von 5 sek in den inneren kreis zu bekommen (das bedeutet der abstand wird nicht kleiner da die figur flüchtet) kehrt die figur wieder auf den original platz zurück.
zusätzlich entfernt sich die figur maximal eine gewisse entfernung von der basis (um nicht sehr weit weg gelockt zu werden)

ist jetzt wie gesagt aus user (erfahrung) sicht, hoffe es hilft trotzdem ein wenig.
-------------------------------------------------------------------
So  08.06.2008  18:00  Wien  Österreich - Kroatien
Do  12.06.2008  20:45  Wien  Österreich - Polen
Mo  16.06.2008  20:45  Wien  Österreich - Deutschland
So  22.06.2008  20:45  Wien  Spanien -  Italien
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
..
Re(2): Spieleprogrammierung - Tipps gesucht.
09.08.2011, 14:58:41

anhand einer vorgegebenen strategie. bis zu einer gewissen größe wird gebaut - wenn eine bestimmte anzahl an einheiten unterschritten wird wird gekauft ect.
für das ganze braucht es noch eine sinnvolle priorisierung und fertig :)

Das wäre ein simpler aber nicht zu verachtender Ansatz.
Sinngemäß hätte die AI also eine Liste:
- Ich will 3 Katzenzwinger, davor mache ich nichts
- dann will ich 5 Kampfkatzen und 2 ... -
- dann beginne ich mit exploren, und investiere 10% in Wahllose Gebäude, den Rest in Armeen

Es ist trotzdem hart: Je nach Karte braucht man ja andere Einheiten (zB Luftlandetruppen). Insbesondere mit Transportern wird es ja schon aufwändiger...


ist ihr eher wurscht ;-)

Du meinst, sie sieht alles ?
Ich habe da Battle Isle im Kopf... Und auch Dune. Da gab es ja so Radarstöreinheiten... Damit der Gegner deine  Einheiten nicht sieht...


zusätzlich entfernt sich die figur maximal eine gewisse entfernung von der basis (um nicht sehr weit weg gelockt zu werden)

Das war eine SUPER-Idee - danke.
Für als "Wachposten" eingeteilte Truppen eine echt gute Idee...
Fehlt nur die Idee, wann eine frisch produzierte Truppe zum Wachposten wird (da könnte man wohl ein paar Prozental der Truppen vorsehen) - und _wo_ der Wachposten hinkommt: Eventuell
- in das "unbekannte" Gebiet, das am nächsten zum "Herz" der Basis ist
- in die Richtung, wo das Herz des Gegners vermutet wird (schwieriger - wie vermutet man das? Da müsste man schon Gelände berücksichtigen)

Insbesondere wird es schwierig, wenn die äusserste Truppe auch den äussersten Rand der Sichtbarkeit definiert. Wenn man die opfert, sieht man ja nichts mehr |-D. Dann sollte man wohl abwägen, ob man überschlagend vorgeht oder Speed wichtiger ist..

Was mir noch fehlt:

Deine Methoden haben jedenfalls was für sich... Sie klingen für eine defensive Strategie (Stellung halten) mal echt nicht schlecht und leicht implementierbar.

Was mir noch fehlt:
Im Prinzip kann bei deinem Modell jede Truppe für sich entscheiden. Das macht es simpel - es bleibt aber nur taktisch. Es fehlen strategische Überlegungen a la "Ich opfere 3 Truppen hier, um die Gegner zu binden und danach in der Flanke einzufallen", oder "ich generiere eine Kesselschlacht und breche seinen Nachschub ab"...

Ich sage jedenfalls DANKE für deine Tipps - insbesondere den mit dem "Sichtbarkeitsradius vs. Feuerradius"



Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...
Re(3): Spieleprogrammierung - Tipps gesucht.
09.08.2011, 17:07:35
Das wäre ein simpler aber nicht zu verachtender Ansatz.
Sinngemäß hätte die AI also eine Liste:
- Ich will 3 Katzenzwinger, davor mache ich nichts
- dann will ich 5 Kampfkatzen und 2 ... -
- dann beginne ich mit exploren, und investiere 10% in Wahllose Gebäude, den
Rest in Armeen


genau. so in die richtung. wobei es halt mehrere möglichkeiten geben muss damit der pc nicht zu leicht auszurechnen ist - und die dann per random bestimmen ;-)



Es ist trotzdem hart: Je nach Karte braucht man ja andere Einheiten (zB
Luftlandetruppen). Insbesondere mit Transportern wird es ja schon
aufwändiger...

hm... entweder für jede karte einzeln machen oder aber so allgemein, dass sich die ki an der karte orientiert.
wenn auf karte mindestens x% wasser ist wird ein hafen in erwägung gezogen bzw. kann das auch vom startpunkt abhängig gemacht werden die wahrscheinlich ja fix pro map vorhanden sind.

Du meinst, sie sieht alles ?
Ich habe da Battle Isle im Kopf... Und auch Dune. Da gab es ja so
Radarstöreinheiten... Damit der Gegner deine  Einheiten nicht sieht...


naja... wenn die ki ein eigenes vorgehen hat und nach diesem vorgeht und sich nicht vom gegner beeinflussen lässt ist es eigentlich völlig egal. bei der interaktion sollte halt eine gewisse sichtweite mitspielen aber sonst...

Das war eine SUPER-Idee - danke.
Für als "Wachposten" eingeteilte Truppen eine echt gute Idee...


hatten viele alte spiele nicht und so konnte man eine wache nach der anderen in einen hinterhalt locken.

Fehlt nur die Idee, wann eine frisch produzierte Truppe zum Wachposten wird
(da könnte man wohl ein paar Prozental der Truppen vorsehen) - und _wo_ der
Wachposten hinkommt: Eventuell
- in das "unbekannte" Gebiet, das am nächsten zum "Herz" der Basis ist
- in die Richtung, wo das Herz des Gegners vermutet wird (schwieriger - wie
vermutet man das? Da müsste man schon Gelände berücksichtigen)


naja... das hängt dann vorallem von der taktik des ki ab.
jede einzelne einheit nach dem bau in den angriff schicken ist nicht das wahre... daher wird er da auch eine liste haben dass er z.b. 5xASD und 3xDFG und 8xFGH haben muss um einen angriff zu starten. dann kann man je nach strategie gleich angreifen oder erst wenn zusätzlich 2xDFG und 4xFGH zum absichern erstellt sind. je nachdem wie defensiv die ki sich verhalten soll wird sie so erst nach einer sehr langen zeit oder aber immer nur mit kleinen trupps angreifen da der rest bei der basis ist.

das bewachen würde ich wieder mit radien (einerseits um die hauptgebäude -andererseits um die komplette basis) lösen. wenn ein möglicher kartenrand oder nicht betretbares gebiet berücksichtigt wird wirkt es auch nicht blöd und sollte funktionieren.

Deine Methoden haben jedenfalls was für sich... Sie klingen für eine defensive
Strategie (Stellung halten) mal echt nicht schlecht und leicht
implementierbar.


wie gesagt die strategie hat dann mit der anzahl der zurückgelassenen (bzw. verteidigungsgebäuden) zu tun. wenn alle für einen agriff gebaut sind kann die basis auch leer gelassen werden... nicht optimal wenn es 2 wege zur basis gibt und der user das bald raufindet.

Was mir noch fehlt:
Im Prinzip kann bei deinem Modell jede Truppe für sich entscheiden. Das macht
es simpel - es bleibt aber nur taktisch. Es fehlen strategische Überlegungen a
la "Ich opfere 3 Truppen hier, um die Gegner zu binden und danach in der
Flanke einzufallen", oder "ich generiere eine Kesselschlacht und breche seinen
Nachschub ab"...


da wird es kompliziert... wenn der ki wirklich auf den user reagieren muss ist das keine leichte sache und wird sicher in vielen einfach spielen durch den schwirigkeitsgrad (ki hat von anfang an große basis viele truppen und ressourcen) geregelt.

was sinvoll ist waypoints in den karten zu generieren. d.h. von den möglichen startkpunkten pfade zu den anderen startpunkten. damit sollte der ki meistens so schnell wie ein spieler auf eine andere basis stoßen... und da kann man dann auch wieder den zufalls generator nutzen...

d.h. z.b. wartet der ki aktuell dass er 2 große truppen zum angriff hat (zufalls faktor 1-3) dann gibt es (kleine karte) 1 möglichen gegerischen startpunkt und 3 wege dorthin. dann entscheidet der zufall ob er beide truppen über den selben weg schickt oder nicht. je nachdem greift man mit vielen einheiten von einer oder mit weniger einheiten von 2 seiten an. je nach weglänge verzögern sich auch die angriffe.

Ich glaube damit kann man schon ein wenig taktische tiefe ins spiel bringen. dass die ki wirklich live auf das spielerverhalten reagiert ist natürlich auch möglich aber komplexer.


Ich sage jedenfalls DANKE für deine Tipps - insbesondere den mit dem
"Sichtbarkeitsradius vs. Feuerradius"


gerne ;-)
-------------------------------------------------------------------
So  08.06.2008  18:00  Wien  Österreich - Kroatien
Do  12.06.2008  20:45  Wien  Österreich - Polen
Mo  16.06.2008  20:45  Wien  Österreich - Deutschland
So  22.06.2008  20:45  Wien  Spanien -  Italien
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
....
Re(4): Spieleprogrammierung - Tipps gesucht.
09.08.2011, 17:24:52
Eines gibt es, was mich an dem ganzen aber noch immer irrsinnig stört...

Ich mein, kleine Spielchen für mich habe ich ja schon öfters mal gebastelt...
Schach, Dame, Othello, ...

Da war es im Prinzip zumindest von der Idee simpel:

Phase 1: Bewertungsfunktion bauen.
Ausgabe zB ein signed int. Bei 0 ist die Stellung ausgeglichen, bei -32000 super für den Gegner, bei +32000 super für dich.

Phase 2: Zuggenerator bauen, der alle möglichen Züge (und Gegenzüge) emittiert
[simpelst]

Phase 3: MinMax implementieren (simpelst, wenn 1 und 2 stehen). Du nimmst an, dass dein Gegner immer am stärksten spielt. Du berechnest für jeden deiner Züge alle seine Gegenzüge, dann wieder all deine, ... und merkst Dir immer, wie die Bewertung nach seinem stärksten Gegenzug aussieht.... Also das Minimum der Bewertungsfunktion. Dann nimmst das Maximum all deiner Züge - und hast den stärksten möglichen Zug für Dich, wenn er am stärksten spielt. [simpelste Rekursion wenn 1 und 2 fertig]

Phase 4: Auf DoppelPi-Strategie wechseln (so nannte man das zumindest um 1980):
ein paar Halbzüge "Bruteforcen" mit MinMax - und dann nur noch bei den interessanten Möglichkeiten in die Tiefe rechnen.... Oft mit genetischen Algos.
[ hier ist nur das Erkennen der "interessanten" Züge schwer... Oft die, wo viel Sprünge in der Bewertungsfunktion  sind ]

Phase 5: Profit |-D.

Im Endeffekt war nur (1) schwierig - da konnte man aber simpel beginnen und später nachtunen. Im Endeffekt würde ich diesen "klassischen" Ansatz für Strategiespiele echt bevorzugen.

Mein Problem ist, dass ich mir eine Bewertungsfunktion mit "Nebel des Krieges" und "Bauen" sauschwer aus den Fingern saugen kann... Ausser man implementiert ein "Wahrscheinlichkeit, welche Truppe des Gegners wo steht"..

Waypoints mag ich nicht, weil ein User schnell eine neue Karte in einem Editor anlegen können soll, ohne was über die KI wissen zu müssen.

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
.....
Re(5): Spieleprogrammierung - Tipps gesucht.
09.08.2011, 19:37:08
naja... es macht einen unterschied ob man alle möglichen spielzüge kennt oder nicht ;-)

Bewertungsfunktion mit "Nebel des Krieges"

würde ich mir wirklich nicht den Kopf zerbrechen. ich glaub selbst bei den von dir angeführten spielen kennt die KI sowas nicht und ist imho auch nicht nötig. eine so individuelle KI ist verdammt schwer zu programmieren und wenn du dir 100 sachen gut überlegst und 2-3 nicht ist es vielleicht unspielbar :/

  "Bauen"

naja... da geht imho nur über standardsets die sich aus den möglichen figuren in zusammenhang mit den möglichkeiten der karte ergeben.

  Ausser man implementiert ein "Wahrscheinlichkeit, welche Truppe des Gegners
wo steht"..

Das ist bei den meisten spielen doch vorgegeben? klar kann man den startpunkt auch verlassen aber bei einer entsprechenden map ist das nur selten sinnvoll. wenn die KI möglichen Standorte der Basen und die Wege dorthin kennt sollte das kein Problem sein oder?


Waypoints mag ich nicht, weil ein User schnell eine neue Karte in einem Editor
anlegen können soll, ohne was über die KI wissen zu müssen.

hm... da ist ein entsprechenden verhalten schwer... aber bei einer map setzt man auch oft die start punkte.
möglicherweise kann der user auch wege makieren, bzw. wird es so implementiert, dass er das im editor implizit macht?
-------------------------------------------------------------------
So  08.06.2008  18:00  Wien  Österreich - Kroatien
Do  12.06.2008  20:45  Wien  Österreich - Polen
Mo  16.06.2008  20:45  Wien  Österreich - Deutschland
So  22.06.2008  20:45  Wien  Spanien -  Italien
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung