Könnt man eine selbst weiterentwickelnde Software schreiben?

  • Das ist ein allgemeines Problem bei Strategiespielen. Die einzige Möglichkeit, die KI zu verbessern ist, ihnen Vorteile zu geben...

    Gothic1 kenne ich nicht und bei Gothic2 könnte ich am Anfang auch unmöglich einen Ork besiegen oO
    Mir kommt es bei Starcraft2 eher vor, dass die Einheiten auf höcheren Schwierigkeitsstufen mehr Leben haben als normal(natürlich schicken sie auch mehr Einheiten... viel mehr xD). Weiss aber nicht so genau, wie es dort mit der KI funktioniert.

  • Um mal von Gothic wegzumkommen :D, wie könnte man ein unbesiegbares Bot für ein RPG erstellen? Ich möchte nemlich für mein MMORPG in C++, das noch lange nicht fertig ist, einen so zu sagen unbesiegbaren Gegner erstellen. Am Anfang soll er heit ganz schwach sein und sich praktisch die Techniken vom Gegener abgucken und selber aneignen (sprich in DB speichern) und vergleichen welche in welcher Situation besser ist. Das Problem ist nur, dass ich dann alles mögliche berechnen müsste sprich: Entfernung, Ausdauer, Schnelligkeit, LP, Energie, Stärke usw vom Gegner berechnen müsste. Aleine dafür bräuchte ich schon einen eigenen Server glaube ich mal, weil sonst das ganze Spiel auf einmal stocken würde ^^.
    Ich glaube aber eher nicht, dass die NPCs in Gothic dies alle miteinbeziehen, oder lieg ich da falsch? Also wäre nett, wenn ihr mir mal sagen könntet, wie normalerweise ein Gegner so das alles berechnet.

    Nur keine Hektik - das Leben ist stressig genug

  • Normalerweise (d.h. in so ziemlich allen MMOPRGs ;)), gibt es so eine KI gar nicht, da wird nicht analysiert sondern einfach nur draufgehauen. Wenn die Entwickler einen unbesiegbaren Endgegner machen wollen, geben sie ihm einfach eine absurd hohe Regenerationsrate oder Spezielattacken die dich mit einem Schlag besiegen...

  • Das Bot soll aber sehr realistisch wirken, als ob ein sehr inteligenter, schnell-tippender Mensch dahinter sitzen würde. Und realistisch kann der ja nur sein, wenn er so spielt, als wäre er ein Mensch, oder nicht? Ich möchte ihm auf jeden fall nicht unbesiegbar machen, er kann ruhig von einem sehr sehr guten Spieler besiegt werden, aber das soll eben nur selten vorkommen. Außerdem soll er genau die gleichen Vorrausetzungen haben wie jeder andere Spieler auch. Genau das macht das alles so komplitziert :D.

    Nur keine Hektik - das Leben ist stressig genug

  • Wenn er nur durch eigene Kämpfe dazulernt:
    Es werden immer Kampfabschnitte betrachtet:
    Hat er nach dem Intervall einen Vorteil erarbeitet, wird so weitergemacht.
    Hat er einen Nachteil, wird der grobe Ablauf gespeichert. Passt das Verhaltensmuster des Gegners zu einem abgespeicherten Muster, wird der passende Gegenpart dzu gestartet (natürlich nur, wenn das dem Bot einen Vorteil bringt).

    Beispiel:
    Ist die Entfernung groß, startet der NPC eine Sprintattacke, der Spieler bleibt ruhig stehen, weicht aus und schlägt dem NPC in den Rücken. Passiert das oft, wird Sprintattacke als negativ für große Entfernungen eingespeichert. Stattdessen wartet der NPC ab und nährt sich dem Spieler ruhig. Gegebenenfalls weicht er aus und schlägt zu. Entwickeln die Spieler dagegen eine Taktik, z.B. Abstand noch weiter vergrößern und Bogen ziehen, werden die Voraussetzungen geändert. Die Sprintattacke ist nut gegen Schwertkämpfer ineffektiv. Gegen Bogenschützen hat sie sich hingegen als sehr effektiv bewiesen und wird somit eingesetzt.

  • Wenn er nur durch eigene Kämpfe dazulernt:
    Es werden immer Kampfabschnitte betrachtet:
    Hat er nach dem Intervall einen Vorteil erarbeitet, wird so weitergemacht.
    Hat er einen Nachteil, wird der grobe Ablauf gespeichert. Passt das Verhaltensmuster des Gegners zu einem abgespeicherten Muster, wird der passende Gegenpart dzu gestartet (natürlich nur, wenn das dem Bot einen Vorteil bringt).

    Beispiel:
    Ist die Entfernung groß, startet der NPC eine Sprintattacke, der Spieler bleibt ruhig stehen, weicht aus und schlägt dem NPC in den Rücken. Passiert das oft, wird Sprintattacke als negativ für große Entfernungen eingespeichert. Stattdessen wartet der NPC ab und nährt sich dem Spieler ruhig. Gegebenenfalls weicht er aus und schlägt zu. Entwickeln die Spieler dagegen eine Taktik, z.B. Abstand noch weiter vergrößern und Bogen ziehen, werden die Voraussetzungen geändert. Die Sprintattacke ist nut gegen Schwertkämpfer ineffektiv. Gegen Bogenschützen hat sie sich hingegen als sehr effektiv bewiesen und wird somit eingesetzt.


    Das ist ein spitze Ansatz !