Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.05.2017, 13:53

Arcade Game Gegner AI/Logik

Hi *,

ich bin ein Retro-Spieler und Hobby-Programmierer und entwickle gerade ein einfaches Atari-Spiel. Die Programmiersprache ist der C-Crosscompiler CC65 (Ansi-C / C89).
Dabei wollte ich mich der Frage stellen, wie man eine simple Spielgegner-Logik programmiert. Was mir anfangs einfach erschien, wirkt nun auf mich immer schwieriger.



Zum dem Spiel eine kurze Erklärung. Es geht darum, dass ein Hamster (AI) im unteren Bildschirmrand sich über 6 Gänge nach oben gräbt und dem Gärtner (Spieler) seine Karotten klauen will. Der Hamster soll dabei hin- und herlaufen und auch mal "Angriffe" andeuten, also gelegentlich einen Rückzieher macht. Erwischt ihn der Gärtner beim vorbeilaufen mit seiner Schaufel, verliert der Gopher ein Leben und es gibt Punkte. Gibt es keine Karotten mehr, dann ist das Spiel zu Ende. Der Gärtner kann auch mit seinem Gerät die Gänge wieder "zu buddeln".

Das Spiel-Prinzip ist also ganz einfach. Aber ich weiß trotzdem nicht so recht, wie ich nun eine AI aufbaue die dann dem Hamster "Actions" (links, rechts, hoch, runter) anweist.

Könnt ihr mich mal in eine Richtung schubsen, wie man sowas üblicherweise macht?
Welche Reihenfolge / Faktenchecks / Zufälle würde man hier konstruieren?

Der Atari-Computer ist natürlich keine besonders komplexe AI/Deep Learning Platform :) Aber einige Grundprinzipien lassen sich doch bestimmt auch mit einfachen C-Programmiermitteln ableiten oder?

Bin für jede Idee dankbar.

\thomas

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

2

09.05.2017, 22:09

Auf so einem System wuerde man eine sehr simple Logik benutzen. Mir fallen spontan drei Elemente ein, die man nutzen kann um sowas zusammenbasteln. Heuristiken, "Hardcoden" und Zufall. Hier ein paar Beispiele dazu:
1. Heuristiken:
eine "Pi mal Daumenregel":
- laufe in die Bildschirmhaelfte, wo der Spieler nicht ist
- wenn der Abstand zum Spieler schnell sinkt, deute das hochgraben nur an
2. "Hardcoden"
eine Regel wie der Hamster reagiert fest in den Code reinschreiben:
- einen Counter bei jedem hochgraben erhoehen und immer wenn counter %3 > 0, deute das hochgraben nur an
- merke dir eine Richtung, nach jedem hochgraben bewege dich 50 Pixel in diese Richtung, erreichst du den Rand, negiere die Richtung
3. Zufall
- mit einer Chance von 70%, deute das hochgraben nur an
- bewege dich um 30+rand()%40 Pixel nach {links, rechts}[rand()%2]