KI-Steuerung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Mr Hopp

Betreff: KI-Steuerung

BeitragSa, Sep 02, 2006 10:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi! Very Happy

Ich bin momentan dabei, ein 2D-Rennspiel zu proggen und bräuchte da noch Hilfe, für die KI-Steuerung.

Ich bin schonmal so weit, dass ich weiß, dass ich Navigationspunkte auf die Strecke setzen muss, damit die KI dise anfährt. Ich weiß auch, dass ich irgendwie Puffer an die Autos anbringen muss, damit diese keine Unfälle bauen. Mein einzigstes Problem:

Mir fehlt so'n bisschen die Formel zum ansteuern der Navigationspunkte Embarassed

Spikespine

BeitragSa, Sep 02, 2006 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Formel zum Ansteuern der Punkte? Vielleicht hilft dir ql:Atan2 weiter, die Funktion kann einen Winkel aus gegebenen Koordinaten (z.B. die des Autos und des Punktes) errechnen.
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

Mr Hopp

BeitragSa, Sep 02, 2006 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ok, danke, ich werd's mir mal anschauen Smile
 

flashmaxel

BeitragSo, Sep 10, 2006 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht ob du den A*-Algorithmus schon kennst. Der ist extra dazu geschrieben : Der A*-Algorithmus dient in der Informatik der Berechnung eines kürzesten Pfades zwischen zwei Knoten ... (wikipedia) .

Genaueres steht bei Wikipedia :
Code: [AUSKLAPPEN]
Link: http://de.wikipedia.org/wiki/A*-Algorithmus

und es gibt schon ein paar Threads dazu im Forum hier.
Viel Glück damit - Max

Ps: Den Link KANN MAN NICHT ANKLICKBAR machen da er sonst so aussieht: http://de.wikipedia.org/wiki/A*-Algorithmus Smile zwar auch ein wikipedia Eintrag allerdings über den Buchstaben A Very Happy .
Real C programmers never die; they cast to void.

5k41

BeitragSo, Sep 10, 2006 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
oder auf www.blitzbase.de. Kann den Algo nur emfehlen! Ist sehr einfach und auch - gut optimiert - recht schnell!

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

maximilian

BeitragSo, Sep 10, 2006 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
A* ist dafür ein vollkommen falscher Ansatz. Wenn du die Wegpunkte gesetzt hast (und davon daf es nicht zu wenig geben), lässt du das Auto immer in Richtung nächsten Wegpunkt fahren. Den Winkel zum nächsten Punkt und die Distanz kannst du mit Atan2 und dem Satz des Pythagoras ausrechnen (schau einfach mal in der Suche nach 'Winkel zwischen 2 Punkten' oder so).
Variety is the spice of life. One day ignore people, next day annoy them.
 

flashmaxel

BeitragSo, Sep 10, 2006 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde nicht sagen das A* total falsch ist - das hängt davon ab was er machen will.

user posted image

Wenn wie dort nur x1 und x2 Punkte sind die das Auto anfahren soll geht das nur mit A*. Auch zu empfehlen bei Hindernissen auf der Fahrbahn.

Sollte ich irren entschuldige ich mich schonmal für den Mist Very Happy .
Max

Edit: Sry hatte vergessen meine skizze zu erklären ...
-Das schwarze sind feste Wände wo das Auto nicht durchkommt
-x1 und x2 sind die Punkte die die KI anfahren soll
-Der rote Strich stellt den weg dar den A* nehmen würde
Real C programmers never die; they cast to void.
  • Zuletzt bearbeitet von flashmaxel am So, Sep 10, 2006 20:15, insgesamt einmal bearbeitet

Christoph

BeitragSo, Sep 10, 2006 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls das Schwarze auf deiner Zeichnung aber etwas Festes ist (z.B. eine Wand), dass immer an der selben Stelle bleibt, sollte man eher an alle anderen Eckpunkte Wegpunkte machen, die die KI dann abfährt.
 

Omenaton_2

BeitragDo, Sep 28, 2006 10:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
A* ist dafür ein vollkommen falscher Ansatz.


Das stimmt nicht. Wenn man ein gutes Rennspiel machen will, dann braucht man Autos, deren Fahrer halbwegs intelligent, menschlich fahren.
Das beinhaltet, daß die Autos ständig berücksichtigen müssen, wie die Position der anderen Verkehrsteilnehmer verändert. Die Autos müssen die anderen Autos in einem glaubwürdigen Manöver ausweichen oder bei Bedarf überholen können. Das geht nur mit Wegpunkten nicht.

Man könnte wenn man A* verwendet die ganze Rennbahn als befahrbar, die Ränder als HIndernis markieren. Dann, jedes Auto ist dort wo es sich gerade befindet ein Hindernis wie eine Wall. Man gibt den Feldern in 1 Felder Umkreis um Autos herum einen hohen "Widerstandswert". In Umkreis von 2 Feldern einen geringeren, ansonsten alles gleich niedrig. Vielleicht noch eine Idealbahn berechnen und da noch etwas niedriger.

Damit erreicht man, daß die Autos die anderen Autos wenn es geht mit Abstand umfahren, wenn es nicht geht dann dicht dran fahren und sie sterben auch danach, die ideale Bahn zu nehmen.

DerHase

BeitragDo, Sep 28, 2006 10:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier noch ein recht guter Artikel zum Thema.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group