AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi KI Problematik: Gegnern ausweichen
Thema durchsuchen
Ansicht
Themen-Optionen

KI Problematik: Gegnern ausweichen

Ein Thema von Antigo · begonnen am 6. Apr 2006 · letzter Beitrag vom 8. Apr 2006
Antwort Antwort
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

KI Problematik: Gegnern ausweichen

  Alt 6. Apr 2006, 16:18
Hi,
Ich habe ein größeres Problem. derzeit programmiere ich an einem 2D Fussball Spiel und bin nun mit den grundlagen durch. Jetzt geht es daran die KI für die computer gesteuerten Spieler zu schreiben. Hier bin ich jetzt soweit, das der KI gesteuerte Gegner guckt wo der ball ist, daraus ein winkel, und aus dem winkel wiederrum eine richtung errechnet in die er gehen muss um den Ball zu kriegen. Soweit noch kein so großer problem.
Jetzt muss der KI Spieler aber gucken ob in der Richtung, in die er gehen will nicht schon ein anderer Spieler ist.
Bei der normalen Kollision, bei der nur überprüft wird ob ein anderer Spieler direkt vor einem ist, oder man an einer wand steht ist es relativ einfach. Ich berechne die Koordinaten an denen der Spieler wäre, wenn er vorwärts ginge, und gucke ob er dann auf einem anderen Spieler "drauf" wäre. Ist dies der fall darf man halt nicht gehen, sonst darf man es.
Hier ist es jetzt aber schwieriger, weil ich nach vorne schauen muss. Könnte der Spieler nur nach rechts und links, oben und unten gehen, wärs auch einfach, aber der spieler kann halt in jede Richtung gehen (bzw. in 60 verschiedene, irgendwo muss ja eine Grenze sein).
Hier mal ein Bild: die graue Zone ist die die frei sein muss, damit der spieler gehen kann. Ist jemand in dieser zone drin, oder grenzt an diese an, soll die ki solange die richtung verändern bis die graue Zone frei ist und sich dann dem Ball wieder annähern.
http://img20.imageshack.us/img20/6623/bild1sh.jpg

Hat vielleicht jemand eine Idee wie ich das überprüfen könnte. Ich hatte schon ein paar ideen aber irgendwie wär das zu aufwenig. Zum Beispiel hatte ich mir gedacht ich mache endlich viele kleine Schritte mit dem Spieler und gucke ob ich kollidieren würde. wenn das nicht passiert ist der weg frei, wenn doch wird die richtung geändert und wieder überprüft. Dafür müsste ich aber jedesmal den Spieler mit allen anderen Spielern verrgleichen und das in mehreren positionen. Das wär einfach zu viel.

Wär super wenn mir jemand helfen könnte.

danke im vorraus
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#2

Re: KI Problematik: Gegnern ausweichen

  Alt 6. Apr 2006, 17:16
Schau mal hier. vielleicht findest du da was passendes.
mfg,
Ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#3

Re: KI Problematik: Gegnern ausweichen

  Alt 6. Apr 2006, 17:46
danke für den link, kannte ich noch nicht und scheint sehr gut zu sein. Leider nützt mir das (glaube ich) nicht viel, da die seite ja methoden aufzeigt wie ich bestimmte sachen berechnen kann, ich aber wissen will wie ich das problem überhaupt lösen soll.

was natürlich perfekt wäre, wär eine formel, mit der ich prüfen kann ob ein bestimmter punkt innerhalb eines rechtecks liegt. Prinzipiell ja kein Problem, aber in meinem fall liegt das rechteck ja schief im raum. Ich hab ganz ehrlich gesagt keine ahnung wie das geht, obwohl ich nicht grad der dümmste in mathematischen sachen bin. Vielleicht seh ich auch nur den wald vor lauter bäumen nicht.


vielleicht hat ja sonst noch jemand eine idee ?!

edit:
Ich habs jetzt einfach mal so geschrieben. Die Figur "geht" 10 Schritte imaginär vorwärts und überprüft jedesmal ob es eine Kollision gibt. Ist dies der Fall dreht sie nach rechts und der ganze spass geht von vorne los. Funktioniert zwar, ist aber meiner meinung nach viel zu uneffektiv udn wird später wenn alle Figuren (bis jetzt ist es nur eine) so gesteuert werden bestimmt zu langsam.
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#4

Re: KI Problematik: Gegnern ausweichen

  Alt 8. Apr 2006, 09:30
schade das mir niemand helfen konnte/wollte. Ich hab es jetzt meiner Meinung nach besser gelöst, optimal ist es aber sicherlich immer noch nicht. Ich spanne jetzt mit 2 vektoren eine Ebene auf die orthogonal zur richtung des spielers steht und quasi so aussieht wie in dem bild in meinem ersten post. Dann beschreibe ich die mittelpunkte der anderen Spieler mithilfe dieser beiden vektoren und gucke ob die parameter die dafür nötig sind größer als eins ode rkleiner als null sind. So spare ich mir schonmal um die 100 schleifendurchläufe.
Die Mathematik der 12. Klasse kann man also tatsächlich vernünftig anwenden
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz