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

10.02.2015, 15:44

KI: Masse vs. Individuum

Ahoi,

Ich überlege gerade, wie ich am sinnvollsten eine größere Menschenmasse in Echtzeit simulieren kann. Es handelt sich um zwei Armeen, die computergesteuert sind. Die Einheiten bewegen und kämpfen eigenständig. Der Spieler kann seine Armee nur indirekt beeinflussen, z.B. kann er ein Hauptquartier bauen, das umliegenden Einheiten einen Verteidigungs- und Angriffbonus bringt, oder er kann Sanitäter ausbilden, die Einheiten heilen. Abgesehen von einer Handvoll Offiziere, die Befehle an benachbarte Soldaten/Einheiten geben, kann er keine eigenen Truppen steuern. Der Spieler erhält anfangs nur wenige Soldaten, in höheren Leveln sollen aber mehrere Tausend verfügbar sein.

Aufgrund der Menge der zu verarbeitenden Daten überlege ich, ob es Sinn macht, die Soldaten jeweils einzeln zu berechnen, oder als Einheit von jeweils 8-25 Mann. Ersteres wäre mir am liebsten, aber ich sehe die Gefahr der Datenexplosion, die das Spiel zu langsam macht (gerade auf älteren Rechnern oder Netbooks).

Als Werte, die jeder Soldat hat, dachte ich an Folgendes: Angriff und Verteidigung (zwei Basiswerte plus Boni und Mali), Moral, Gesundheit, Wut (erhöht die Gefahr, dass Befehle missachtet werden), Deckung, Rüstung, Erfahrungslevel (Boni auf alle Werte), Art und Reichweite der Waffe, Sichtweite und Präzision. Soldaten können kriechen (oder, im Bundeswehrslang, gleiten ;) ), geduckt laufen, gehen und rennen.

Mit der Programmierung bin ich noch lange nicht so weit, darum ist die Frage rein hypothetisch.

Wie würdet ihr die Sache angehen? Habt ihr Tipps und Tricks parat? Wie ist euer Ansatz bei der Generierung massenhafter KI?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »shelley« (10.02.2015, 15:54)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

10.02.2015, 21:41

Meine Empfehlung: Fang einfach erstmal an. Du wirst egal welchen Weg du gehst auf Probleme stoßen, alles umschmeißen (wollen) und dann wieder auf andere Probleme stoßen. Aber man lernt dadurch viel. Ansonsten kann ich nur die Grundsätze KISS und "premature optimization is the root of all evil" mit auf den Weg geben. Auch könntest du dich mal in sowas Sachen wie steering behaviour/Flocking birds einlesen. Damit kann man ganz nette "Herdenverhalten" erreichen, obwohl man nur Individiuen berücksichtigt.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

12.02.2015, 10:38

Mit den Stichwörtern von Nox findest du schon ziemlich genau das was du suchst. Mit Steering Behaviours kannst du die grundlegende Bewegung der einzelnen Einheiten umsetzen. Für die eigentliche KI würde ich ein Schichtsystem empfehlen. Ein Teil läuft in jedem individuellen Ritter/Einheit ab. Mehrere Einheiten werden zusammen gefasst zu einem Trupp. Dieser Trupp agiert irgendwie zusammenhängend, also muss auch auf der Ebene Logik umgesetzt werden. Mehrere Trupps werden vielleicht auch wieder zusammen gefasst um so eine größere Einheit zu bilden. Ganz am Ende hast du die gesamte Truppenverwaltung die vermutlich auch eine eigene Logik ausführen muss. Die einzelnen Schichten können sich gegenseitig beeinflussen. So beeinflusst die Bewegung eines gesamten Trupps die Bewegung einzelner Einheiten. Anders herum kann die KI einzelner Einheiten höhere Ebenen informieren. Sieht eine Einheit einen Gegner so wird sie es der Kampfverwaltung mitteilen damit diese darauf reagieren kann.
Wie das ganze am Ende genau strukturiert wird hängt von verschiedenen Faktoren ab. Ich würde an deiner Stelle erst mal klein anfangen. Such mal nach den Stichworten von Nox und versuch damit zu spielen. Kleine autonome Bots sind schon eine tolle Angelegenheit.
Zusätzlich gibt es noch gute Bücher zum Thema KI in Spielen. Da kannst du dir auch einiges an Grundwissen aneignen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige