Dogfighting Ki

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Dogfighting Ki

    Ich versuche für mein rts gerade die Ki für Flugzeuge zu programmieren (top down)
    Dabei sollen sich verfeindete Flugzeuge gegenseitig umkreisen und versuchen hinter den anderen zu gelangen. (kurz Dogfighting)
    Mein Ansatz sieht Momentan so aus: Die gegner sind dabei test_ship und test_ship 1, die ki ist bei beiden bis auf die erste Zeile identisch.
    Beim Alarm 0 wird einfach nur die Turn_mode = 0 gesetzt.

    GML-Quellcode

    1. i = instance_nearest(x,y,test_ship)
    2. target_dir = point_direction(x,y,i.x,i.y)
    3. direction = image_angle
    4. if point_distance(x,y,i.x,i.y) > 100
    5. {
    6. if image_angle > target_dir - 45 && image_angle < target_dir + 45
    7. {
    8. turn_mode = 0
    9. if image_angle < target_dir -5 {image_angle += 15 speed = 5}
    10. else if image_angle > target_dir +5 {image_angle -= 15 speed = 5}
    11. else speed = 10
    12. }
    13. else
    14. {
    15. if turn_mode = 0
    16. {
    17. r = floor(random(2))-1
    18. turn_mode = 1
    19. }
    20. else if turn_mode = 1
    21. {
    22. image_angle += 10*r
    23. }
    24. else if turn_mode = 2
    25. {
    26. alarm[0] = 30
    27. speed = 10
    28. turn_mode = -2
    29. }
    30. }
    31. }
    Alles anzeigen




    jedoch klappt das nicht so ganz. Kann mir vll jemand helfen, was ich verbessern muss?
    Im Moment kreisen sie entweder andauernd nur um sich selbst, oder umeinander oder bleiben sogar stehen, obwohl ich versucht habe mit dem Zufalls parameter eine gewisse zufälligkeit hineinzubringen.
    (mir ist klar das wenn zwei Flugzeuge mit der selben ki gegeneinander käpfen sie an sich nur umeinander kreisen würden. Deswegen wollte ich das Mit der Random Funktion lösen.

    Für alternative Ansätze wäre ich auch Dankbar.
    :rage: