28. Mär 2024, 23:12 Hallo Gast.
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge. Hierbei werden gemäß Datenschutzerklärung Benutzername und Passwort verschlüsselt für die gewählte Dauer in einem Cookie abgelegt.


Select Boards:
 
Language:
 


Autor Thema: [SuM 1½] Unterstützung für KI-Erstellung gesucht  (Gelesen 20449 mal)

Rimli

  • Moderator
  • Galadhrim
  • **
  • Beiträge: 716
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #15 am: 22. Dez 2009, 20:09 »
Das mit der Flag hab ich auch schon probiert und das funzt aus dem selben Grund nicht:

Wenn die Kaserne zerstört ist ist "Player_1_Building_Plot_3 _1" nicht mehr vorhanden und die neue Kaserne kann die Referenz nichtübernehmen -> Flag ist immer noch False -> Kaserne wird aufgebaut, obwohl schon eine wieder gebaut wurde -> mit der Zeit unendlich viele Kasernen auf einem Bauplatz

Reshef

  • Edain Team
  • Istar
  • *****
  • Beiträge: 7.028
  • Größenwahn ist ein Typisch menschliches Laster.
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #16 am: 22. Dez 2009, 20:20 »
Warum kann den die neue Kaserne nicht genauso heissen?
Zb beim spawnen von Einheiten, können nie 2 einheiten gleichen namens existieren. Wenn aber nun der eine Trupp tot ist, kann wieder ein neuer gleichen namens gespawnt werden.
Ist das beim bauen nicht das selbe?

Rimli

  • Moderator
  • Galadhrim
  • **
  • Beiträge: 716
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #17 am: 23. Dez 2009, 16:49 »
Hallo Resh!

Also ich hab die Skripte jetzt bisschen umgeändert und es funktioniert jetzt! Anscheinend hast du recht, die neue Kaserne kann genauso heißen. Jedoch hab ich das bei meinen vorherigen Scripts irgendwie nie hinbekommen (man muss höllisch aufpassen mit "deactivate upon success" und "is active") aber so funktioniert es jetzt:

Plot 3 - Build Gondor Barracks (active, deactivate upon success)
*** IF ***
True.
*** THEN ***
   Player '<This Player>' gets $ 350
  Build building 'GondorBarracks' at a foundationUnit 'Gondor_Player_1_BP_3'
  Set timer 'Rebuild_Plot_3' to expire in 60.00 seconds.
  Find unnamed 'GondorBarracks' Owned by Player '<This Player>' nearest team Team 'PlyrCivilian/Start_Team' and reference as UnitRef 'Player_1_Building_Plot_3_1'

Plot 3 - Destroyed Building  (active, NOT deactivate upon success)
*** IF ***
Timer 'Rebuild_Plot_3' has expired.
*AND*  Unit 'Player_1_Building_Plot_3_1' has been destroyed.
*** THEN ***
  Enable Script 'Plot 3 - Start Rebuild Building'.
  Set timer 'Rebuild_Plot_3_Do_The_Work' to expire between 30.00 and 90.00 seconds.
  Set timer 'Rebuild_Plot_3' to expire in 120.00 seconds.

Plot 3 - Start Rebuild Building (NOT active, deactivate upon success)
*** IF ***
Timer 'Rebuild_Plot_3_Do_The_Work' has expired.
*** THEN ***
  Enable Script 'Plot 3 - Rebuild Building'.

Plot 3 - Rebuild Building (NOT active, NOT deactivate upon success)
*** IF ***
Counter 'Player_1_money' IS Greater Than or Equal To  350
*** THEN ***
  Build building 'GondorBarracks' at a foundationUnit 'Gondor_Player_1_BP_3'
  Set timer 'Rebuild_Plot_3' to expire in 60.00 seconds.
  Find unnamed 'GondorBarracks' Owned by Player '<This Player>' nearest team Team 'PlyrCivilian/Start_Team' and reference as UnitRef 'Player_1_Building_Plot_3_1'
  Disable Script 'Plot 3 - Rebuild Building'.

Ich speichere das Geld des Spielers durch ein seperates Skript, das ständig ausgeführt wird, in einem Counter. Gibt's da ne bessere Möglichkeit, der Counter ist nämlich leider nicht immer ganz genau, da ja Geld ausgegeben werden kann kurz bevor das Skript dies im Counter aktualisiert. Die Folge wäre, dass das RebuildSkript inaktiv wäre, ohne dass ein Gebäude hätte gebaut werden können.

Reshef

  • Edain Team
  • Istar
  • *****
  • Beiträge: 7.028
  • Größenwahn ist ein Typisch menschliches Laster.
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #18 am: 23. Dez 2009, 16:55 »
*** IF ***
    True.
*** THEN ***
  Store amount of  Player 'Player_1' money to the counter 'Geld'
Sowas? Müsstest du nurnoch jedes Frame ausführen.

Rimli

  • Moderator
  • Galadhrim
  • **
  • Beiträge: 716
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #19 am: 23. Dez 2009, 17:15 »
Jo genau.

Mach ich jetzt auch:
*** IF ***
    True.
*** THEN ***
  Store amount of  Player '<This Player>' money to the counter 'Players_money'
  Show 'Players_money' with text Localized String: 'Players Money'

Reshef

  • Edain Team
  • Istar
  • *****
  • Beiträge: 7.028
  • Größenwahn ist ein Typisch menschliches Laster.
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #20 am: 23. Dez 2009, 18:01 »
Dann versteh ich dein problem nicht.
Wird der Counter auch im Spiel angezeigt?
Denn die MotW.map sollte ja nur die Ki beeinflussen.

Rimli

  • Moderator
  • Galadhrim
  • **
  • Beiträge: 716
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #21 am: 23. Dez 2009, 18:47 »
Ja hab's rein gemacht, nachdem du's gesagt hast. ;)

Die Anzeige ist nur zu Testzwecken.

Rimli

  • Moderator
  • Galadhrim
  • **
  • Beiträge: 716
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #22 am: 1. Jan 2010, 16:34 »
So ich würde gern nochmal um eure Hilfe bitten.

Ich will, dass die KI ihre kaputten Zitadellen und Festungs-/Lagermauern erkennt und versucht wiederaufzubauen.

Diese Skriptsequenz hab ich orientiert an der EA SuM1 KI erstellt, die funzt jedoch nicht (die Skripts werden ausgeführt, aber die Zitadellen/Mauern werden nicht wiederaufgebaut ...)

Initialize Repair (active, deactivate upon success)
*** IF ***
    True.
*** THEN ***
   'Citadels' : add 'GondorCampKeep'
   'Citadels' : add 'GondorCastleBaseKeep'
   'Citadels' : add 'GondorOutpost'
   'Defense' : add 'GBCampWall'
   'Defense' : add 'GBCastleElevator'
   'Defense' : add 'GBMGateDoor'
   'Defense' : add 'GondorCastleWall'
   'Defense' : add 'GondorCastleGateL'
   'Defense' : add 'GondorCastleGateR'

Initialize Repair Teams (active, NOT deactivate upon success, every 60 seconds)
*** IF ***
    True.
*** THEN ***
  Team 'Repair Citadel' will recruit  3  units of type 'Citadels' from nearby recruitable allied teams.
  Team 'Repair Defense' will recruit  5  units of type 'Defense' from nearby recruitable allied teams.

Repair Now (active, NOT deactivate upon success, every 60 seconds)
*** IF ***
    True.
*** THEN ***
   Team 'Repair Citadel' use Ability 'Command_StartCitadelSelfRepair'.
   Team 'Repair Defense' use Ability 'Command_StartSelfRepair'.

Irgendwelche Ideen?

MCM aka k10071995

  • Bezwinger der Toten
  • ****
  • Beiträge: 3.846
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #23 am: 1. Jan 2010, 16:50 »
Zitat
die Skripts werden ausgeführt, aber die Zitadellen/Mauern werden nicht wiederaufgebaut
Woher weißt du, dass die Scripts ausgeführt werden? Könnte eventuell helfen, dass zu wissen.
Ansonsten kommt es mir komisch vor, dass ein Team eine Unit rekrutiert, die aber eigentlich gar nicht benannt ist. Wenn man zwei Festungen hat, woher weiß das Spiel, was gemeint wird?
Entweder helfen dir die Fragen oder sie helfen mir, damit ich mich reindenken und dir helfen kann. :)

Es kommt immer darauf an, etwas zu tun, was der Gegner nicht erwartet.


Rimli

  • Moderator
  • Galadhrim
  • **
  • Beiträge: 716
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #24 am: 1. Jan 2010, 18:34 »
Hallo MCM!

Ich weiß, dass sie ausgeführt werden, indem ich den Suffix "-scriptdebug2" in der SuM Verknüpfung benutze.
Die game.dat zeigt dann alle Skripts an, die ausgeführt werden, Werte von Variablen und man kann in einem normalen Gefecht entweder pausieren, "schrittweise" das Spiel ausführen lassen sowie mit 10-facher Geschwindigkeit spielen (wie das spulen im Replay).
Probier's mal aus, hilft beim Arbeiten mit Skripten ungemein. :)

Das mit dem Team, das unbenannte Zitas rekrutiert, sollte funzen. EA macht das in SuM1 auch so. Es kann zwar durchaus sein, dass da immer nur die drei gleichen Zitadellen ausgesucht werden (z.B. die drei nächsten vom Punkt 0,0,0 im Koordinatensystem der SuM-Maps, kA wie das Skript das genau macht), jedoch müssten doch dann immer genau diese drei Zitadellen garantiert wieder aufgebaut werden ...
Es wird jedoch gar keine Aufgebaut, auch wenn ich z.B. nur zwei Zitadellen habe.

MCM aka k10071995

  • Bezwinger der Toten
  • ****
  • Beiträge: 3.846
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #25 am: 1. Jan 2010, 18:47 »
Woher in Gottes Namen kennst du das?^^
Aber danke, ich werds mir merken. Kennst du zufälllig noch weiteres so nützliches? Und was ist mit Scriptdebug(1). Gibt es auch eine 3?
Und entweder habe ich dich oder du hast mich falsch verstanden. Ich meinte das so: Das Spiel weiß nicht, welche von mehreren Zitadellen es nehmen soll und nimmt dann gar keine. In SUM 1 könnte das aus folgenden Gründen trotzdem funzen:
1. In den SUM 1 Bases sind die Gebäude benannt
2. Eventuell gibt es auch Scripts, die du übersehen hast und die die Gebäude benennen.
3. Falls das alles stimmt, kann EA einfach was in der Game.dat geändert haben.

Ich würde einfach vorher Scripts einbauen, die die entsprechenden Gebäude benennen oder die Scripts losgelöst von Namen mit "ofType"-Scripts durchführen.

Es kommt immer darauf an, etwas zu tun, was der Gegner nicht erwartet.


Rimli

  • Moderator
  • Galadhrim
  • **
  • Beiträge: 716
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #26 am: 23. Jan 2010, 22:15 »
Weitere Fragen. ^^

Was muss ich tun, damit neue Spells und neue Fähigkeiten  bei Helden von der KI benutzt werden?

Bei den Spells muss ich ja die Library bearbeiten, dass die KI die neuen Sciences kauft.
Aber dann ist ja noch niergends definiert, gegen wen die KI welchen Spell wie benutzt?!

Neue Einheiten müssen ja in der Skirmishaidata.ini eingetragen werden, damit die KI sie baut, ist das richtig?
Gilt das auch für neue Verstärkungseinheiten, oder muss ich diese niergends eintragen, damit die KI - vorausgesetzt sie bekommt den entsprechenden Spell gebacken - die Einheiten benutzt?

Und das mit der Zitadelle gilt immer noch: Wenn irgendjemand eine Idee hat, wie man die KI dazu bringen könnte, ihre Zitadellen bei Bedarf nachzubauen: Jeder Hinweis ist willkommen.

Turin Turumbar

  • Administrator
  • Hüter von Anduril
  • *****
  • Beiträge: 3.703
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #27 am: 23. Jan 2010, 22:28 »
http://www.the3rdage.net/item-235?addview
Das Tutorial erklärt eigentlich alles was man in Sachen AI Coding machen kann, denke alle Sachen, die du wissen willst, also das mit den Heldenfähigkeiten und den Einheiten, kannst du dort nachlesen.

Rimli

  • Moderator
  • Galadhrim
  • **
  • Beiträge: 716
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #28 am: 23. Jan 2010, 23:38 »
Ja danke, das Tutorial kenne ich und es ist auch sehr nützlich - jedoch behandelt es nicht das Hinzufügen von neuen Spells und Einheiten ...

Ich hab mir die KI-Skripte für das Kaufen der Spells gerade angeguckt. Da sind viele Bugs von EA drinnen, z.B. 1. Skript Purchase Heal und Activate Script Purchase Lone Tower

Drunter steht jedoch das Skript Purchase Rebuild und da steht wieder drin Activate Script Purchase Lone Tower.

Wenn man bei Purchase Lone Tower im Skript nachguckt, steht hier als Bedingung Rebuild Purchased = True. Das ist jedoch nie der Fall, da nach EAs tollem Skriptsystem der Rebuild Spell ja nie gekauft werden kann, da das entsprechende Skript nie aktiviert wird.  8-|
Ich rate allen Moddern, da mal nachzugucken. Kann mir nicht vorstellen, dass die KI so wie das hier aussieht in SuM2 effizient Spells nutzt ... (Hab da allerdings keine Erfahrung, da ich nie SuM2 gegen die KI gespielt habe.)

Turin Turumbar

  • Administrator
  • Hüter von Anduril
  • *****
  • Beiträge: 3.703
Re: [SuM 1½] Unterstützung für KI-Erstellung gesucht
« Antwort #29 am: 24. Jan 2010, 00:14 »
Natürlich sind Heldenfähigkeiten in dem Tutorial, auf Seite 3 und 4 fängt das einfache an, auf den folgende geht Sul dann extrem ins Detail. Die Einheiten fehlen wirklich, aber das ist eigentlich nur copy and Paste mit entsprechendem anpassen der skirmishaidata.ini