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

Korowai

unregistriert

1

14.01.2017, 13:37

KI Grundlagen

Hi,

ich möchte mit diesem Foreneintrag eine Basis bieten, um zu sammeln, inwiefern Ihr Euch mit der KI Programmierung auseinandergesetzt habt oder wie Ihr es angehen würdet.

In dem Spiel, an dem ich nun seit geraumer Zeit arbeite, wird es neben den üblichen Strategiespieloptionen auch Gegner geben. Diese steuern ihre Basen und Raumschiffe, fördern Rohstoffe und entwicklen in ihren Fabriken neue Produkte.

Ich habe vor, die KI Funktion auf dem verfügbaren Kreditrahmen der Gegner, deren Aggressionspotential (0-9), deren Intelligenz (0-9), und einigen Boolschen und Integer- Werten für Kriegszustand, Ausbauziel etc.. aufzubauen.

Ein Gegner, der einen bestimmten Rohstoff für eine Fabrik braucht, die eine Ware herstellen soll, muss dann eines seiner Raumschiffe zu einem zu bestimmenden Ziel senden, diesen Rohstoff einkaufen bzw. fördern. Das erfordert eine Kette von Funktionen, die natürlich eine Einschätzung zugrunde haben müssen, ob und wann es sich lohnt, diese Ware überhaupt zu produzieren.

Ähnlich ist es mit der Option des Gegners, einen Krieg zu beginnen oder zu beenden.

Welche Erfahrung habt Ihr mit KI Programmierung? Auf was muss ich achten?

2

15.01.2017, 02:07

Ich schmeiss mal paar Punkte rein die vielleicht einen Ansatz bringen können:

Flowfield Pathfinding

Decision Tree (Entscheidungs-Baum)

Wieviel Informationen haben die Agenten über die Umwelt.
Entscheide wieviel die Agenten über ihr Umfeld wissen sollen, bzw was sie mit in ihre Entscheidung nehmen.

Ob der Agent Autonom ist.
Ob der Agent sein Verhalten ändert anhand anhand seines Zustandes (Beschädigt zb).
Ob der Agent sein Verhalten ändert anhand äußeren Einflüssen (Spieler rückt gerade in die Basis ein zb)
Und natürlich ob der Agent mit anderen Agenten kommuniziert.

Zudem sollte man im Hinterkopf haben das KI häufig auch nur ein Suchproblem darstellt.

Lares

1x Contest-Sieger

  • Private Nachricht senden

3

15.01.2017, 03:47

Zwei generelle Hinweise, die für einen Anfänger vllt nicht immer offensichtlich sind:
- KI in Computerspielen ist häufig mehr Schein als Sein
- Optimerung von KI kann zwei Dinge bedeuten: benötigte Zeit zur Entscheidungsfindung oder Auswahl der "besten" Lösung. Je nach Spiel ist es sinnvoll das eine oder das andere zu priorisieren.
- Du brauchst keine komplexe KI für Einheiten, die nur eine kurze Zeit leben (siehe Diablo)
- Du musst je nach Spiel, Situation und Agenttyp (einzelne Einheit oder der Computerspieler im Strategiespiel) entscheiden, ob die KI eher langfristige oder kurzfristige Ziele verfolgt

Da du anscheinend ein Strategiespiel machst, empfehle ich ein paar Artikel über Game Theory und Evolutionäre Algorithmen durchzulesen, schlicht um zu sehen was möglich ist und wie es erreicht wurde.
Eine Schach-KI ist in der algorithmischen Funktionsweise einer KI in Strategiespielen sehr ähnlich.
Wahrscheinlich musst du nicht alles was du findest in dein Spiel einbauen, aber zumindest hast du dann ein solides Grundverständnis und solltest etwas eigenes implementieren können.

Korowai

unregistriert

4

15.01.2017, 08:20

Hi,

mit einem Entscheidungsbaum habe ich bereits intuitiv begonnen.

Was es schwierig macht, ist der wechselnde Informationsstand der Gegner.

Ich mache mich mal an die Recherche zu den von Euch genannten Punkten.

Wie Lares schreibt, ist eine KI in meinem Fall wohl ein künstliches Abwägen zwischen Können und Sollen. Da fragt es sich dann, ob die Gegner in bestimmten Entscheidungsfragen einfach zufällig entscheiden, oder ob alles auf echten Werten beruht.

Beispiel: Ein Gegner hat in einer Basis eine Menge Kriegsmaterial. Soll er nun zunächst Infos über alle Gegner und den Spieler sammeln, abwägen, wer mit wem schon im Krieg ist, oder soll ich einfach per rand() einen Krieg beginnen lassen (Bauchentscheidung). Vielleicht ist eine Mischform am besten. Schließlich gehört zu einer der Wirklichkeit nachempfundenen Intelligenz halt auch der Zufall und der Fehler.

Vor allem muss man wohl auf Passivverhalten aufpassen, damit es nicht langweilig wird. Wenn die Gegner nur vor sich hin siedeln und bauen, dann wird es schnell langweilig, weil dann alle Aktion immer nur vom Spieler ausgeht, und die Gegner lediglich reaktiv sind.

Es wären auf jeden Fall langlebige Gegner.

Ich schaue mal primär nach evolutionärer Algorithmus und Flowfield Pathfinding, das sind für mich Begriffe, mit denen ich noch nicht viel anfangen kann.

Ist auf jeden Fall angebracht, mich genau zu informieren, bevor ich mit dem coden anfange. Es gibt wahrscheinlich zu den Lösungen und Wegen im Entscheidungsbaum Vorgehensweisen, die es mir einfacher machen werden.

ich habe den Baum in einer openoffice Tabelle angelegt. ich gehe dabei so vor, dass ich, wie bei einer Schleife, zunächst die Grundvariablen abarbeite, und diese sich dann in feineren Verästelungen bis zur Zugentscheidung hinstrecken.

Grundvariablen sind:
- Kriegszustand
- Ausbauziel
- Versorgung
- Kriegsziel

etc..

Die VErästelungen sind dann meistens Entscheidungsbrücken über den Kreditstand, Agression und Intelligenzgrad.

Was fehlt, sind vor allem längerfristige Strategien zum Sieg und das Gedächtnis / Information aktuell / Information vergangen.

Wäre ja auch eine Idee, das ganz anders aufzubauen. Bspw ein Stamm, der zunächst nach Aggression und I-GRad ein Ziel festlegt. Und das dann nachverfolgt, mit einer Intensität je nach Kriegszustand.

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

5

15.01.2017, 13:25

Hey Korowai,
ich hänge dir mal eine Grafik an, die den Aufbau (Von der Top-Level-Sicht) einer KI nach dem Buch Game Coding Complete beschreibt.(Die Autoren haben an The Sims und Ultima Online gearbeitet/Die Grafik hatte ich mal zur Übersicht gemacht) Ich verkaufe das Buch auch aktuell hier für ein Apfel und ein Ei.


(Link)
Liebe Grüße,
René

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Renegade« (15.01.2017, 13:31)


6

15.01.2017, 22:29

Hallo Korowai, ich empfehle dir die Seite http://www.gameaipro.com/
Das erste Buch der Reihe gibt einen guten Einblick in die Grundlagen der KI in Spielen, und ist als PDF auf der Seite verfügbar.
Es wurde von mehreren KI-Entwicklern geschrieben und Kapitel 3 widmet sich zB speziell der Randomness und gibt Beispiele wann sie sinnvoll ist. (In deinem Fall würde ich davon abraten)
Das Buch gibt viele Denkanstösse und und erklärt die meisten Architekturen die in Spielen verwendet werden und liefert in manchen Fällen auch (Pseudo-)Code.
Der einzige Negativpunkt (wenn man so will) ist, dass es auf englisch ist. Trotzdem meine Empfehlung.

Werbeanzeige