Seite 126 von 180 ErsteErste ... 2676116122123124125126127128129130136176 ... LetzteLetzte
Ergebnis 1.876 bis 1.890 von 2699

Thema: Der SDK-Fragen-Thread

  1. #1876
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Ich habe folgendes Problem. Ich habe zu der Abfrage AI_isFinancialTrouble() in CvPlayerAI weiter differenziere Abfragen hinzugefügt. Das Problem ist, dass ich diese wie AI_isFinancialTrouble() per Python aufrufen will. Dafür muss ich diese zwangsweiße Virtuel CvPlayer.h hinzufügen. Nur, wenn ich das mache, kann das Spiel dann nicht mehr speichern bzw die Savedaten können nicht mehr komprimiert werden.

    Code:
    	virtual bool AI_isPoorFinancial() const = 0;																											// Exposed to Python
    	virtual bool AI_isBankruptcy() const = 0;																											// Exposed to Python
    	virtual bool AI_isFinancialTrouble() const = 0;																											// Exposed to Python
    Habe ich noch was übersehen? Entscheident ist allein, ob die Virtuellen Deklaration da sind. Die Nutzung spielt keine Rolle.
    Geändert von rucivfan (29. September 2014 um 19:45 Uhr)

  2. #1877
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.016
    Ich hatte irgendwann einmal etwas mit "Stream" und "Write" vergessen, dann funktionierte das mit dem Laden nicht. Vielleicht wird "AI_isFinancialTrouble" auch gespeichert, und er erwartet nun, dass die neuen virtual bools auch gespeichert werden?

  3. #1878
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Das sind Methoden, keine Attribute, die man speichern könnte.

  4. #1879
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Na super, jetzt habe ich einen weiteren Mist von Firaxis gefunden.

    Es gibt in BTS schon immer in bestimmten Situationen einen Unterschied zwischen der Anzeige und den realen Weg einer Einheit. Jetzt weiß ich auch, warum das so ist.

    Code:
    gDLL->getFAStarIFace()->Initialize(&GC.getPathFinder(), getGridWidthINLINE(), getGridHeightINLINE(), isWrapXINLINE(), isWrapYINLINE(), pathDestValid, pathHeuristic, pathCost, pathValid, pathAdd, NULL, NULL);
    gDLL->getFAStarIFace()->Initialize(&GC.getInterfacePathFinder(), getGridWidthINLINE(), getGridHeightINLINE(), isWrapXINLINE(), isWrapYINLINE(), pathDestValid, pathHeuristic, pathCost, pathValid, pathAdd, NULL, NULL);
    Das definiert beim Start die Funktionen für die kürzeste Wegeberechnung. Es werden also die gleichen Funktionen für die Anzeige und der realen Bewegung verwendet. Aber es gibt einen Unterschied beim Aufrufen!

    Code:
    int pathCost(FAStarNode* parent, FAStarNode* node, int data, const void* pointer, FAStar* finder)
    {
    [...]
    pSelectionGroup = ((CvSelectionGroup *)pointer);
    [...]
    }
    Während pSelectionGroup bei der direkten Bewegung die richtige Selektiongroup ist, wird bei der Anzeige eine schlechte Kopie verwendet. Die Kopie hat mit den Original nur die Einheiten-ID-Liste gemein. So kann man diese nicht verwenden, weil die Attribute sonst nur Startwerte sind. Jedoch wird das eine oder andere Attribut im Kürzeste Wegecode verwendet und damit führen Anzeige und Bewegen nicht zum gleichen Ergebnis.


  5. #1880
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ich wollte gerade Visual Studio 2012 installieren: Das Programm benötigt 2,8 GB auf C: auch wenn man es auf einer anderen Partition installiert. Meine Systempartition hat auf dem XP-Rechner 10 GB

  6. #1881
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Vermutlich ne dumme Frage: Wie findet man den Grund für einen Endlosturn raus?
    Tick tock goes the clock...

  7. #1882
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Die Frage ist nicht dumm. Den Grund herauszufinden ist nicht so einfach. Ohne aktives debuggen findet man ihn nur sehr schwer. Das Log kann einen manchmal weiterhelfen, aber nicht immer. Zum Beispiel konnte ich schon Endlosturn mit Logs rausfinden, weil sich zwei Logeinträge ständig wiederholt haben. In der Regel habe ich aber Endlosturn, wo das Log nicht mitloggt und daher nur bleibt, den Code mit Haltepunkte oder einfach mal drauf los stoppen zu lassen und schauen, wo man im Code steht. In der Regel ist es KI Code der Endlos läuft.

  8. #1883
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Zitat Zitat von antriot Beitrag anzeigen
    Vermutlich ne dumme Frage: Wie findet man den Grund für einen Endlosturn raus?
    Debugger anwerfen, um die zuletzt aufgerufene Funktion herauszufinden. Und dann schauen, ob es da eine Schleife gibt, die nicht abbricht.

    (Es gab doch keine Fehlermeldung, oder? Dann kann es kein rekursionsbedingter Stackoverflow sein.)


    Zitat Zitat von rucivfan Beitrag anzeigen
    In der Regel ist es KI Code der Endlos läuft.
    Kann aber auch an XML liegen. Da war doch erst vor kurzen was bei Pie, oder?

  9. #1884
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    XML ja, aber es war der KI Code letztendlich.

  10. #1885
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Ok, aber in welchem Log stehen überhaupt halbwegs sinnvolle Informationen drin?

    Ich hab das ganze schon mit im Debugmodus laufen lassen. Gleiches Ergebnis wie ohne und keine Fehlermeldung. Wie finde ich denn raus, welche Funktion als letztes aufgerufen wurde?
    Tick tock goes the clock...

  11. #1886
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Im MP Log stehe meistens die nützlichsten Informationen drinn.

  12. #1887
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Ich weiß jetzt nicht so richtig worauf ich achten soll. Vielleicht kann ja mal einer von euch reinschauen?

    network-2056.txt ist immer länger geworden, deshalb hab ichs auch mal angehängt.
    Angehängte Dateien Angehängte Dateien
    Tick tock goes the clock...

  13. #1888
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Code:
    Player 6 Unit 1458259 (TXT_KEY_LEADER_WASHINGTON's Kriegselefant) moving from 57:52 to 57:53
    Player 6 Unit 1474645 (TXT_KEY_LEADER_WASHINGTON's Reiter) moving from 57:52 to 57:53
    Was man den letzten 2 Zeiles des Logs schon mal entnehmen kann, dass das Problem bei Spieler Nummer 6 (bei 0 angefangen) auftritt. Das ist wohl Washington.

    Die genannten Einheiten sind wohl nicht schuld. Es wird die folgende Einheit sein, die nicht mehr im Log aufgeführt wird. Wenn man das debuggen sollte, sollte man relativ einfach fündig werden, welche Einheit es ist. Das "Warum" muss aber nicht so einfach zu erkennen sein.

  14. #1889
    Whovian Avatar von antriot
    Registriert seit
    30.09.12
    Ort
    TARDIS Type 40
    Beiträge
    2.641
    Hast du nicht letztens erst einen Fehler im BTS-Bewegungscode entdeckt?
    Tick tock goes the clock...

  15. #1890
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Es kann alles mögliche sein. Wenn du mit Bewegungscode, das von oben meinst auf dieser Seite, so hat das hier mit nichts zu tun. Das ist nur der kürzeste Wegecode und das nur im Zusammenhang mit der Anzeige. Die KI Entscheidung ist was eigenes.

Seite 126 von 180 ErsteErste ... 2676116122123124125126127128129130136176 ... LetzteLetzte

Berechtigungen

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