KI-Steuerung
Übersicht

Mr HoppBetreff: KI-Steuerung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi! ![]() 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 ![]() |
||
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja ok, danke, ich werd's mir mal anschauen ![]() |
||
flashmaxel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() ![]() |
||
Real C programmers never die; they cast to void. |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich würde nicht sagen das A* total falsch ist - das hängt davon ab was er machen will.
![]() 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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier noch ein recht guter Artikel zum Thema. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group