PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gegner KI



Caine Luveno
13.05.2004, 00:37
Ich scripte grade n A-KS. N bischen von Lachsens nachgebaut aber um einiges einfacher vom Script her.

Egal, zum thema:

Die Gegner sind extrem dumm! Sie laufen rum, und wenn ihre ATB voll is greifen se an (wenn se den Helden treffen gibs Schaden, treffen sie mehrmals gibs noch mehr Schaden).

Das Problem dabei ist, dass das auf offenen Maps (also mit wenig Objekten) gut läuft. Allerdings bei Maps wie städten wo ein bischen mehr als nur 3 Blumen rumstehen brauch man sich nur zhinter nen Baum zu stellen und die Gegner rennen beim Angriff meist gegen den Baum. Also die stepTowardsHero Funktion wird auf direktem Weg von Gegner zu Held ausgeführt.

Hat da jemand ne Idee wie man das verbessern könnte?

Fab4
13.05.2004, 04:50
du must einfach bei de rbewegung berücksichtigen, dass gerade dass nicht passiert.

am einfachsten setzte dass die bewegung to hero to hero to hero random movement.

naja mit ein wenig pech, läufter dann noch imemr dumm, sonst musst du halt eine genau pos abfrage machen und wenner genau vorm busch steht, ne bestimtme bewegung zuweisen.

Ynnus
13.05.2004, 04:52
Du könntest die Step towards hero Funktion manuell ausführen und prüfen, ob der Typ sich bewegt. Im Klartext also, du machst die Gegner als Parallel process Events und dann in der Zeile speicherst du die Koordinaten des eigenen Events in 2 Variablen. X | Y Position, mehr ist erstmal unnötig. Dann speicherst du noch die Blickrichtung des Events. Jetzt etwas wie move_event step towards hero. Nach diesem Befehl kurzes wait 0,1, und eine Fork Condition, in welche Richtung das Event jetzt blickt. Schaut es in die selbe Richtung wie vorher, so stimmte die Richtung von vorher. Dann musst du überprüfen, ob das Event noch an der selben Stelle steht wie vorher. Wenn es immer noch dort steht, und auch die Blickrichtung noch die selbe ist, dann heißt das logischer Weise, dass sich die Hero hinter einem Hinderniss befindet, sodass sich das Event zwar drauf zu bewegen will, aber der Weg blockiert ist. Jetzt benötigst du 4 weitere Variablen, welche jede den Namen einer Himmelsrichtung trägt. (Etwa, hoch, runter, links, rechts, oder eben süden, norden, osten, westen). DIe Richtung, in die er nun schaut, das Event, musst du jetzt die dazugehörige Variable auf 1 setzen. Das zeigt dir bei der nächsten Positionsänderung, diese Richtung ist geblockt. Also machst du ein step right, oder step left. Oder wenn der Hero links oder rechts vom Event steht, einen step hoch oder runter. Jedenfalls darf diese Richtung nicht die sein, wo blockiert wird, geht ja auch nicht. Dadurch löst du dich schonmal von der Blockade. Danach das selbe Spiel von vorne. Erst wieder Positionen Speichern, und step towards hero. Danach wieder vergleich und eine Richtung sperren. Wichtig dabei, die vorher gesperrten Richtungen wieder alle freigeben, also die Variablen auf 0 stellen. Denn du weißt ja nicht, ob sich nach dem Positionswechsel nicht nun nicht mehr im Weg befindet.

So, das ist jetzt eine recht simple Methode, also nicht zu viel KI für den Anfang erwarten. Das muss man natürlich noch ausbauen und so, aber erstmal lässt es sich so vielleicht machen. Soll dir zumindest einen Denkanstoß geben, wie man es machen könnte. ;)

Caine Luveno
14.05.2004, 05:28
Die Methode mag simple sein, aber wie sol mans anders machen? Außerdem solange sie ihren Zweck erfüllt.....

Ich hab es sogar hingekriegt, mit 2 Events n ähnlichen angriff des Gegners zu scripten wie in Lachsens KS. Da werdich das mit der KI auch noch packen denn du hast mich auf ne seeehr gute Idee gebracht. Denn die Sache mit dem nach jeder Bewegung die Pos des Gegners abzufragen is ne praktische und einfache Lösung die mir gleich mehrere Denkanstöße für neue KI Ideen gegeben hat ;) Besten dank also.

Vielleicht krieg ich in diesem Monat sogar noch ne kleine KS Demo fertig. ;)

Fab4
15.05.2004, 22:16
Original geschrieben von Caine Luveno
...du hast mich auf ne seeehr gute Idee gebracht. Denn die Sache mit dem nach jeder Bewegung die Pos des Gegners abzufragen is ne praktische und einfache Lösung die mir gleich mehrere Denkanstöße für neue KI Ideen gegeben hat ;) Besten dank also...

wie konntest du ein ks ohne das überhaupt hinbekommen? oO

frage ist ernst gemeint, kanns mir net vorstellen
und sag net bitte push key event bei monstern