Seite 31 von 32 ErsteErste ... 21272829303132 LetzteLetzte
Ergebnis 451 bis 465 von 473

Thema: Debug-Dll

  1. #451
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    Ich werde sie als höher einstufen. Ich habe aber auch weniger Einheiten. Heute hatte ich den Eindruck als ob statt abstürzen jetzt lags auftreten. Ich habe alle meine Städte optimiert. Dabei fror das Spiel immer mal wieder für ein paar Sekunden ein. Wenn dann keine grossen Aktionen erfolgten War das Spiel nach ca 10 sec wieder bedinbar. Das gleiche trat auch bei den Aufträgen für die Städte auf.

    Ich denke nicht das dieser Fehler im Autolack auftreten kann da dort keine Manuellen Kommandos erteilt werden wahren der Rechner ausgelastet ist.
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

  2. #452
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.146
    Zitat Zitat von Builder Beitrag anzeigen
    Ich denke nicht das dieser Fehler im Autolack auftreten kann da dort keine Manuellen Kommandos erteilt werden wahren der Rechner ausgelastet ist.
    Ein guter Punkt. Darauf bin ich noch nicht gekommen. Wie öft stürzt es denn bei der zur Zeit während der Runde ab? Würdest du die Absturzäufigkeit als "Spielbar" einstufen, oder immer noch als sehr lästig? Zum Vergleich: Ich habe derzeit 3 - 4 Abstürze in er Runde, dann meistens einen, während ich die Städte durchgehe, ob ich noch etwas beschleunigen möchte und einen letzten im Rundenwechsel, nachdem ich ca. die Hälfte der Städte mit neuen Bauaufträgen versorgt habe.

  3. #453
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    Im moment ist es gut spielbar. Alle 2 - 3 Runden stürst es mal ab. Meist wenn ich zwischendurch hier reinsehe. Aber derzeit ist es nicht wirklich problematisch. Da war es vorher um längen komplizierter. Ich denke derzeit daran mal auf Raumschiff zu gehen. Das wäre dann ein echter Meilenstein.

    Das Handy hat aus Autoplay Autolack gemacht war mir gar nicht aufgefallen.
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

  4. #454
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.146
    Alle 2 - 3 Runden? In welchem Zeitalter? Wenn es irgend etwas nach Imperialismus ist, dann ist das definitiv ein Fortschritt. Hängt natürlich auch ein bisschen von der Weltgröße ab (auf Duell würde es mich wundern, wenn es überhaupt abstürzt).

  5. #455
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    Ich denke ich bin bis WK2 weil ich Massenproduktion erforscht habe. Die Karte ist Riesig custom Continents.
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

  6. #456
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.146
    Dann ist es ein Fortschritt. Massenproduktion könnte auch noch 1. Weltkrieg sein, aber ich glaube, du hast Recht. In jedem Fall ist es nach dem Zeitalter des Imperalismus.

  7. #457
    Registrierter Benutzer
    Registriert seit
    14.08.11
    Beiträge
    282
    Hi Kathy,
    ich halte die derzeitige Version für sehr stabil. Habe schon länger keine Abstürze mehr gehabt... und das auch bei riesig und mit teils mehr als 20 Civs!

    Alles gut...

    Frohe Weihnachten
    Gruß Matt

  8. #458
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.146
    Ich hatte gerade diese Fehlermeldung:
    Assert Failed

    File: CvCityAI.cpp
    Line: 3406
    Expression: (MAX_INT / 1000) > iValue
    Message:

    ----------------------------------------------------------
    Leider nicht im Debug-Modus, so dass da nicht hingesprungen wurde. Aber vielleicht kann man doch erkennen, worum es geht.

    Edit: Leider ist die Stelle nicht eindeutig, daher kann ich den Ursprung nicht weiter eingrenzen.
    Geändert von Kathy (30. Dezember 2013 um 22:20 Uhr)

  9. #459
    Registrierter Benutzer Avatar von Builder
    Registriert seit
    05.12.08
    Beiträge
    3.480
    Da steht doch die Zeilennummer das sollte doch auffindbar sein.
    "Vegetarisch" ist indianisch und heißt "zu blöd zum Jagen"

    Bekennender Steam Hasser;)

  10. #460
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.146
    Ist es nicht. Ich hatte weiter vorne schon gefragt, ob man bei Visual C++ die Zeilennummern einblenden kann - niemand konnte mir sagen, wie. Und 3406 Zeilen kann ich nicht fehlerfrei durchzählen.

  11. #461
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.020
    Ich habe vor kurzen die Zeilennummern eingeblendet beim neueinrichten. Aber man kann auch STRG + G drücken und die Nummer eingeben! Dann springt man dahin.

    STRG + G zur Zeile springen ist quasi die Standardtastenbelegung in Editoren für sowas. Ich kenne kein Programm, wo das nicht STRG + G ist. Das gleiche gilt für STRG + F für die Suche.

    edit: Bei Visual Studio 2010 kann man unter Debuggen -> Optionen und Einstellungen -> Text-Editor -> AlleSprachen -> Zeilennummern die Zeilenanzeige aktivieren.
    Geändert von rucivfan (31. Dezember 2013 um 12:02 Uhr)

  12. #462
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.146
    Vielen Dank.

    Die Fehlermeldng betrifft diese Stelle:
    Code:
    BuildingTypes CvCityAI::AI_bestBuildingThreshold(int iFocusFlags, int iMaxTurns, int iMinThreshold, bool bAsync, AdvisorTypes eIgnoreAdvisor)
    {
    	BuildingTypes eLoopBuilding;
    	BuildingTypes eBestBuilding;
    	bool bAreaAlone;
    	int iProductionRank;
    	int iTurnsLeft;
    	int iValue;
    	int iTempValue;
    	int iBestValue;
    	int iI, iJ;
    
    	bAreaAlone = GET_PLAYER(getOwnerINLINE()).AI_isAreaAlone(area());
    
    	iProductionRank = findYieldRateRank(YIELD_PRODUCTION);
    
    	iBestValue = 0;
    	eBestBuilding = NO_BUILDING;
    
    
    	if (iFocusFlags & BUILDINGFOCUS_CAPITAL)
    	{
    		int iBestTurnsLeft = iMaxTurns > 0 ? iMaxTurns : MAX_INT;
    		for (iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)
    		{
    			eLoopBuilding = ((BuildingTypes)(GC.getCivilizationInfo(getCivilizationType()).getCivilizationBuildings(iI)));
    
    			if (NO_BUILDING != eLoopBuilding)
    			{
    				CvBuildingInfo& kBuilding = GC.getBuildingInfo(eLoopBuilding);
    
    				if (kBuilding.isCapital())
    				{
    					if (canConstruct(eLoopBuilding))
    					{
    						int iTurnsLeft = getProductionTurnsLeft(eLoopBuilding, 0);
    
    						if (iTurnsLeft <= iBestTurnsLeft)
    						{
    							eBestBuilding = eLoopBuilding;
    							iBestTurnsLeft = iTurnsLeft;
    						}
    					}
    				}
    			}
    		}
    
    		return eBestBuilding;
    	}
    
    	for (iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)
    	{
    		if (!(GET_PLAYER(getOwnerINLINE()).isBuildingClassMaxedOut(((BuildingClassTypes)iI), GC.getBuildingClassInfo((BuildingClassTypes)iI).getExtraPlayerInstances())))
    		{
    			eLoopBuilding = ((BuildingTypes)(GC.getCivilizationInfo(getCivilizationType()).getCivilizationBuildings(iI)));
    
    			if ((eLoopBuilding != NO_BUILDING) && (getNumBuilding(eLoopBuilding) < GC.getCITY_MAX_NUM_BUILDINGS())
    			&&  (!isProductionAutomated() || !(isWorldWonderClass((BuildingClassTypes)iI) || isNationalWonderClass((BuildingClassTypes)iI))))
    			{
    				//don't build wonders?
    /************************************************************************************************/
    /* BETTER_BTS_AI_MOD                      05/08/09                                jdog5000      */
    /*                                                                                              */
    /* City AI                                                                                      */
    /************************************************************************************************/
    				// BBAI TODO: Temp testing, remove once centralized building is working
    				bool bWonderOk = false;
    				//if( isHuman() || getOwner()%2 == 1 )
    				//{
    					bWonderOk = ((iFocusFlags == 0) || (iFocusFlags & BUILDINGFOCUS_WONDEROK) || (iFocusFlags & BUILDINGFOCUS_WORLDWONDER));
    				//}
    
    				if( bWonderOk ||
    /************************************************************************************************/
    /* BETTER_BTS_AI_MOD                       END                                                  */
    /************************************************************************************************/
    					!(isWorldWonderClass((BuildingClassTypes)iI) || 
    					 isTeamWonderClass((BuildingClassTypes)iI) || 
    					  isNationalWonderClass((BuildingClassTypes)iI) ||
    					   isLimitedWonderClass((BuildingClassTypes)iI)))
    				{
    					if ((eIgnoreAdvisor == NO_ADVISOR) || (GC.getBuildingInfo(eLoopBuilding).getAdvisorType() != eIgnoreAdvisor))
    					{
    						if (canConstruct(eLoopBuilding))
    						{
    							iValue = AI_buildingValueThreshold(eLoopBuilding, iFocusFlags, iMinThreshold);
    
    							if (GC.getBuildingInfo(eLoopBuilding).getFreeBuildingClass() != NO_BUILDINGCLASS)
    							{
    								BuildingTypes eFreeBuilding = (BuildingTypes)GC.getCivilizationInfo(getCivilizationType()).getCivilizationBuildings(GC.getBuildingInfo(eLoopBuilding).getFreeBuildingClass());
    								if (NO_BUILDING != eFreeBuilding)
    								{
    									iValue += (AI_buildingValue(eFreeBuilding, iFocusFlags) * (GET_PLAYER(getOwnerINLINE()).getNumCities() - GET_PLAYER(getOwnerINLINE()).getBuildingClassCountPlusMaking((BuildingClassTypes)GC.getBuildingInfo(eLoopBuilding).getFreeBuildingClass())));
    								}
    							}
    							if (isProductionAutomated())
    							{
    								for (iJ = 0; iJ < GC.getNumBuildingClassInfos(); iJ++)
    								{
    									if (GC.getBuildingInfo(eLoopBuilding).getPrereqNumOfBuildingClass(iJ) > 0)
    									{
    										iValue = 0;
    										break;
    									}
    								}
    							}
    
    
    							if (iValue > 0)
    							{
    								iTurnsLeft = getProductionTurnsLeft(eLoopBuilding, 0);
    
    								if (isWorldWonderClass((BuildingClassTypes)iI))
    								{
    									if (iProductionRank <= std::min(3, ((GET_PLAYER(getOwnerINLINE()).getNumCities() + 2) / 3)))
    									{
    										if (bAsync)
    										{
    											iTempValue = GC.getASyncRand().get(GC.getLeaderHeadInfo(getPersonalityType()).getWonderConstructRand(), "Wonder Construction Rand ASYNC");
    										}
    										else
    										{
    											iTempValue = GC.getGameINLINE().getSorenRandNum(GC.getLeaderHeadInfo(getPersonalityType()).getWonderConstructRand(), "Wonder Construction Rand");
    										}
    										
    										if (bAreaAlone)
    										{
    											iTempValue *= 2;
    										}
    										iValue += iTempValue;
    									}
    								}
    
    								if (bAsync)
    								{
    									iValue *= (GC.getASyncRand().get(25, "AI Best Building ASYNC") + 100);
    									iValue /= 100;
    								}
    								else
    								{
    									iValue *= (GC.getGameINLINE().getSorenRandNum(25, "AI Best Building") + 100);
    									iValue /= 100;
    								}
    
    								iValue += getBuildingProduction(eLoopBuilding);
    								
    								
    								bool bValid = ((iMaxTurns <= 0) ? true : false);
    								if (!bValid)
    								{
    									bValid = (iTurnsLeft <= GC.getGameINLINE().AI_turnsPercent(iMaxTurns, GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getConstructPercent()));
    								}
    								if (!bValid)
    								{
    									for (int iHurry = 0; iHurry < GC.getNumHurryInfos(); ++iHurry)
    									{
    										if (canHurryBuilding((HurryTypes)iHurry, eLoopBuilding, true))
    										{
    											if (AI_getHappyFromHurry((HurryTypes)iHurry, eLoopBuilding, true) > 0)
    											{
    												bValid = true;
    												break;
    											}
    										}
    									}
    								}
    
    								if (bValid)
    								{
    									FAssert((MAX_INT / 1000) > iValue);
    									iValue *= 1000;
    									iValue /= std::max(1, (iTurnsLeft + 3));
    
    									iValue = std::max(1, iValue);
    
    									if (iValue > iBestValue)
    									{
    										iBestValue = iValue;
    										eBestBuilding = eLoopBuilding;
    									}
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    	return eBestBuilding;
    }
    Leider verstehe ich es nicht ganz, was wohl auch damit zusammenhängt, dass ohne Debug-Modus keine Variablen enthalten waren. Ich sehe keine Definition von MAX_INT - ist das eine globale Variable?

  13. #463
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.020
    MAX_INT ist eine feste Konstante. Das ist die größte Speicherbare positive Zahl eines 32bit-Integers. Weil iValue mal 1000 genommen wird, wird vorher abgefragt, dass iValue kleiner Max-Wert durch 1000 ist. Sonst würde es zu einen Zahlenüberlauf kommen. Das heißt, dass die nächst höher Stelle der notwendigen Zahl verloren geht.

  14. #464
    Moderator Avatar von Kathy
    Registriert seit
    11.10.07
    Beiträge
    17.146
    Das bedeutet, wenn ich es richtig verstehe, die KI ist an dieser Stelle überfordert, weil iValue zu hoch ist, uns sie darum nach dem Integer-Überlauf eine falsche Entscheidung trifft?

  15. #465
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.020
    überfordert ist das falsche Wort. Der Zurückgegebene Wert ist einfach ein falscher Wert. Kann in speziellen Fällen zu falschen Entscheidungen führen.

Seite 31 von 32 ErsteErste ... 21272829303132 LetzteLetzte

Berechtigungen

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