Seite 171 von 180 ErsteErste ... 71121161167168169170171172173174175 ... LetzteLetzte
Ergebnis 2.551 bis 2.565 von 2699

Thema: Der SDK-Fragen-Thread

  1. #2551
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Lange ist es her, dass ich Einheiten in Base lokalisieren musste, die Entlosschleifen auslösen. Entlosschleifen kommen, wenn der KI-Code ein Ziel ausgewählt hat, aber die letzte Überprüfung beim Bewegen scheitert. Der KI Code sucht immer wieder das scheiternde Ziel heraus. Alternativ kann es auch sein, dass sich Einheiten hin und her als Selectionsgruppe verbinden. Das findet man beim Debuggen mit den SDK heraus, wenn die gleiche Einheit immer den gleichen Code abläuft. Ohne Debuggen geht es nicht.

  2. #2552
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.995
    Aber selbst beim Debuggen weiß ich doch nicht, welche Einheit in der Schleife festhängt. Das Spiel bricht ja nicht ab oder so, es läuft und läuft und nichts passiert. Ich müsste also vorher schon eine Idee haben, um einen Haltepunkt zu setzen, damit ich prüfen kann, ob an diesem Haltepunkt hundert mal die selbe Einheit auftaucht.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  3. #2553
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.995
    Leider bekomme ich beim Debuggen nur, noch bevor die Schleife anfängt, diesen Fehler:
    > CvGameCoreDLL.dll!0513f8c1()
    [Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für CvGameCoreDLL.dll]
    CvGameCoreDLL.dll!05356d48()
    CvGameCoreDLL.dll!0535c5fc()
    CvGameCoreDLL.dll!0536063f()
    CvGameCoreDLL.dll!0530934d()
    CvGameCoreDLL.dll!05304058()
    CvGameCoreDLL.dll!05304b97()
    CvGameCoreDLL.dll!05304b97()
    CvGameCoreDLL.dll!05304b97()
    CvGameCoreDLL.dll!05304b97()
    CvGameCoreDLL.dll!05304b97()
    CvGameCoreDLL.dll!05304b97()
    CvGameCoreDLL.dll!05303956()
    CvGameCoreDLL.dll!0530d98f()
    CvGameCoreDLL.dll!0530cf8e()
    CvGameCoreDLL.dll!05301b41()
    CvGameCoreDLL.dll!053c4af4()
    CvGameCoreDLL.dll!0539e24d()
    CvGameCoreDLL.dll!05398918()
    CvGameCoreDLL.dll!0531075a()
    CvGameCoreDLL.dll!0527ec2d()
    CvGameCoreDLL.dll!04ffd4ad()
    CvGameCoreDLL.dll!04fec694()
    Civ4BeyondSword.exe!00415321()
    KernelBase.dll!76e3b094()
    Civ4BeyondSword.exe!004d6f46()
    Civ4BeyondSword.exe!008f497f()
    kernel32.dll!7633336a()
    ntdll.dll!77449902()
    ntdll.dll!774498d5()
    Civ4BeyondSword.exe!00790074()
    Civ4BeyondSword.exe!00790074()
    Civ4BeyondSword.exe!0078006f()
    Civ4BeyondSword.exe!0078006f()
    Civ4BeyondSword.exe!0078006f()
    Civ4BeyondSword.exe!0078006f()
    Civ4BeyondSword.exe!0064006e()
    Civ4BeyondSword.exe!0064006e()
    Civ4BeyondSword.exe!0069006c()
    Civ4BeyondSword.exe!0064006e()
    Civ4BeyondSword.exe!0064005f()
    Civ4BeyondSword.exe!0064005f()
    Civ4BeyondSword.exe!0075006c()
    Civ4BeyondSword.exe!0075006c()
    Civ4BeyondSword.exe!0075006c()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0073005f()
    Civ4BeyondSword.exe!0073005f()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064002e()
    Civ4BeyondSword.exe!0064006e()
    Civ4BeyondSword.exe!0064006e()
    Civ4BeyondSword.exe!0064006e()
    Civ4BeyondSword.exe!0064006e()
    Der verweist auf nichts Nachvollziehbares, und wenn man "weiter" klickt kommt er immer wieder.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  4. #2554
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Vermutlich liegt das an der VS Express-Version.

  5. #2555
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.995
    Ich benutze Visual C++ Express 2010.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  6. #2556
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Nein, das liegt nicht an der VC-Version. An der Stelle ist leider schon das Kind in den Brunnen gefallen und das Programm ist irgendwo einem korrupten Pointer gefolgt. An der Stelle kann man dann über den Stackpointer nichts mehr nachvollziehen.

    Vielleicht hilft es in CvGame.cpp::doTurn erst grobe Breakpoints zu setzen und sich dann durchzuarbeiten. Wenn du schon sicher bist, dass es an einer Einheit liegt kannst du auch bei den Einheiten die aktuelle Einheit in ne Debug-Datei zu schreiben. Ist die Einheit identifiziert setzt du einen Breakpoint genau für diese Einheit. Glücklicherweise hast du ja wenigstens ein Save um den Fehler reproduzieren zu können

  7. #2557
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.995
    Das Problem ist, dass die oben genannte Fehlermeldung kommt, lange bevor das Spiel bei der Schleife ankommt, in der es feststeckt. Die Meldung kommt fast sofort nachdem ich auf "Runde beenden" geklickt habe. Der Fehler tritt aber erst bei Player 7 oder 8 auf.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  8. #2558
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Wenn es ein Save zum reproduzieren gibt, könnte ich versuchen den Fehler nachzuvollziehen. Welche Modversion ist das Save? Wo finde ich das Save?

  9. #2559
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.995
    Die Modversion ist eine, die ich nicht öffentlich hochgeladen habe, da ich sie nur für mein Spiel benutze. Ich werde sie hochladen, aber das dauert ein paar Stunden. Ich packe das Save dann mit in das Zip, es ist inzwischen zu groß, um hier angehängt zu werden.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  10. #2560
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.995
    So, ich habe gerade den Download-Link für die alte Version bekommen. Der Spielstand, um den es geht, ist in dem Zip enthalten.

    Vielen Dank für dein Angebot, dir das anzusehen.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  11. #2561
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.995
    @Rucivfan:
    Wenn du es heruntergeladen hast, kannst du dann einmal kurz bescheid geben, damit wir den Platz auf dem Server freigeben können? Im Moment belaste ich den Forenserver damit.
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

  12. #2562
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Habe es runtergeladen,

  13. #2563
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Auszug Log letzte bewegte Einheit:

    Code:
    Player 9 Unit 18137389 (TXT_KEY_LEADER_HILLARY's Bautrupp) moving from 38:22 to 37:22
    Player 9 Unit 18137389 (TXT_KEY_LEADER_HILLARY's Bautrupp) moving from 37:22 to 36:22
    Player 9 Unit 18137389 (TXT_KEY_LEADER_HILLARY's Bautrupp) moving from 36:22 to 35:21
    Player 9 Unit 18137389 (TXT_KEY_LEADER_HILLARY's Bautrupp) moving from 35:21 to 34:20
    Player 9 Unit 18137389 (TXT_KEY_LEADER_HILLARY's Bautrupp) moving from 34:20 to 33:19
    Danach folgt eine Einheit mit folgenden Werten. Diese Einheit ist für die Endlos-Schleife verantwortlich.

    ID 41304537
    GroupID 377996956
    Plot (9, 38)
    Erfahrung 17
    Level 5
    Vermutlich Kampf 2 und Stadtverteidigung 2 als Beförderung (von den Bonuswerten der Einheit abgeleitet)
    Besitzer Spieler 9 (Zählung fängt mit 0 an!)
    Stärke 19
    Baurate 75? Kampffähiger Bautrupp?
    Hügelverteidigung 15%
    UnitAIType UNITAI_WORKER

    Um das rauszufinden, brauchte ich abzüglich warten auf Endlosschleife keine Minute. Das schreiben des Beitrags hier dauerte länger. Der Code versucht ständig der Einheit einen Bewegungsbefehl zu geben. Es wird auch ein Bewegungsbefehl gegeben, aber der scheitert in der Ausführung. Würde kein Bewegungsbefehl gefunden werden, der zur Einheit passt, würde es einen Fassert geben und die Bewegungsversuche werden abgebrochen. Leider besitzt der Civ 4 code keine Möglichkeit in der Ausführung gescheiterte Bewegungsbefehle zu erkennen.


    edit:

    Mission MISSION_ROUTE_TO -> (8, 39)
    Mission MISSION_BUILD -> (8, 39), BuildType 12

    edit:

    Vermutlich steht auf den Feld (8, 39) eine feindliche Einheit. Da der Baucode nicht nach Feinde testet, sondern nur nach Wegroute existiert, wird das als gültiger Bewegungsbefehl entschieden. Beim Bewegen stellt sich dann heraus, dass es nicht geht. Man kann auf das Feld nicht ohne Kampf bewegen und eine Modernisierung bauen. Für bautrupps wird mangels gefundene Wegroute der Code kein gültiges Ziel finden, da die Stärke ja null ist.
    Geändert von rucivfan (06. Oktober 2017 um 12:35 Uhr)

  14. #2564
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Nach einer Code-Änderung läuft bei mir gerade die Runde durch. Kampffähige Bautrupps der KI laufen jetzt nicht mehr Endlosschleifen.
    Angehängte Dateien Angehängte Dateien

  15. #2565
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    16.995
    Dann lag es an einem Sappeur, das sind die einzigen Einheiten mit Kampfstärke, die auch Wege bauen können.
    Ich bin ja immer erstaunt, wie schnell du den Fehler findest.
    Ich baue das auch gleich in die aktuelle Version meines Mods ein, damit der Fehler für die Zukunft auch wegfällt.

    Edit: Danke für den Hinweis beim Hafenangriffs-Code. Du hast natürlich Recht, es soll nur feindliche Schiff treffen können.
    Geändert von Kathy (06. Oktober 2017 um 16:29 Uhr)
    That's why I am here: Mein Mod
    Mehr Technologien, mehr Einheiten, mehr Zivilisationen, mehr Gebäude

    Die aktuelle Story zum Mod:
    Die Vereinigten Staaten von Amerika

    Alte Stories zu alten Versionen:
    Alte Storys

Seite 171 von 180 ErsteErste ... 71121161167168169170171172173174175 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •