Ergebnis 1 bis 10 von 10

Thema: Civ4 BTS Audio Probleme mit Crash To Desktop

  1. #1
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55

    Civ4 BtS Civ4 BTS Probleme mit Crash To Desktop

    Hallo zusammen,
    ich hoffe hier kann mir jemand einen Lösungsansatz aufzeigen das ich mein geliebtes Evergreen Civ4 BTS weiterzocken kann.
    Ich habe einen Win10 PC + Notebook mit mehr als ausreichend Specs und die BTS Installation mit letztem Patch 3.19 für noCD am Laufen. Letze DirectX 9.c ist auch nachinstalliert und das Spiel lässt sich starten.
    Beide Systeme haben eine Realtek Onboard Sound Lösung mit letztem Treiberstand.
    BTS wird mit einem eigenen MoD gefüttert den ich schon seit mehreren Jahren aufbaue. Aktuell ist dieser rund 1GB
    groß mit viel Unitartstyles usw. Nun zu meinem Problem. Das Spiel stützt regelmässig im Spiel und exit zum Hauptmenü ab. Auch bei "Verlassen" wenn der Defeat oder History Soundtrack kommen soll habe ich einen Crash To Desktop.
    Ich bin mir langsam sehr sicher das es am Audio liegen muss. Wenn ich in der CIV4MainMenus.xml den Soundtrack entferne <Soundtrack/> dann stürzt mir das Spiel nicht mehr ab wenn ich zurück ins Hauptmenü springe. Ebenso wenn ich in der civilationIV.ini das Audio komplett ausschalte läuft das Spiel ohne Probleme aber halt kein Sound
    Ich habe schon echt eine Menge versucht Aber seit Win10 ist dieses Thema echt nervig mit ständigen CTD.
    Unter Win7 ist BTS mit meiner Mod noch relativ problemlos gelaufen da gab es vielleicht alle 10 mal exit zum Hauptmenü einen crash.
    Es ist ja immer wieder zu lesen das Civ4 mit den onboard Realtek Lösungen Probleme hat.
    Scheint ein Thema mit den Treibern und der CiV4 BTS Programmierung zu geben und dann auch noch Win10
    Komisch ist nur das es auch mal helle Momente gibt wo auf einmal alles geht für ein paar Minuten. Da lade ich ein Spiel wechsele unzählige male wieder ins Hauptmenü oder verlasse das Spiel und alles ist okay, wie als wenn es glückssache ist wie sich Civ4BTS mit dem Audiotreiber unter Win10 versteht, alles sehr sehr seltsam
    Im Spiel selber habe ich als Audioeinstellung "Systemeinstellung übernehmen" ausgewählt, dass wäre angeblich die beste Option für die onboard chips.

    Ich habe mir nun zum testen einen Sound Blaster Z bestellt und werde es mal mit dieser Audio Karte versuchen.
    Hat jemand noch Ideen wie man das Eingrenzen kann?
    Geändert von xaster (07. August 2017 um 17:43 Uhr)

  2. #2
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    So nun wieder ein Stück weiter.... Die Soundblaster Z ist da, Die Onboard Audio Treiber entfernt und den Chip im BIOS deaktiviert. Ebenso habe ich den nVidia HDMI Sound im Gerätemänager deaktiviert. Die neue Z Karte eingebaut und neuesten Treiber von März installiert. Die Soundkarte im Vergleich zum Onboard ist super löst aber die Probleme mit Civ4 BTS leider nicht, ist immer noch das gleiche.

    Nun habe ich erneut ein paar Tests vorgenommen. Ich finde es sehr merkwürdig das BTS mit meiner Mod einfach nicht stabil mit Audio läuft. Hierzu habe ich nun einen Test gemacht.
    Eine Kopie von Mod Next War erstellt und einfach angefangen meine Art files in diese Kopie "\Assets\Art" zu füttern ohne das diese in der XML verknüpft sind. Es scheint wohl so zu sein das Civ4 trotzdem alle Artfiles einliest auch wenn sie in XML keine
    Verlinkung zu den *.nif's gibt !!! War mir so auch noch nicht bewusst.
    Zu Anfang wenn der "Art" Ordner noch relativ klein ist um die 400MB dann startet die Test MoD recht schnell und die Probleme sind nicht zu sehen. Wenn "Art" aber über 800MB gefüllt ist dauert der Start schon gute 35 Sekunden und dann geht es schon los mit den Crashes bei Exit zum Hauptmenu.

    Hat jemand eine Idee welche Limitierung das sein könnte ? und ob es eine Lösung gibt ?

  3. #3
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Hallo, ich würde sagen mit deiner Analyse im zweiten Beitrag kommst du der wahren Ursache schon recht nahe. Der Fehler hat meiner Meinung nach nichts mit Soundproblemen zu tun sondern mit dem hohen Verbrauch von Arbeitsspeicher(?). Irgendwann schlägt das Allokieren von neuem Speicher fehl und das Spiel stürzt ab. Man darf hier nicht vergessen, dass Civ4 noch eine 32-Bit-Anwedung ist. Sofern das während des Spielens auftritt kann man den Fehler dann auch schlecht reproduzieren, der Speicherverbrauch ja recht dynamisch ist.
    (Bei dir lag die Sache anders, da das Problem wohl schon beim Starten des Spiels auftritt.)

    Lösungsvorschläge (unvollständige Liste; von leicht umsetzbar bis schwer):
    • Mit http://ntcore.com/4gb_patch.php in der Exe von Civ4:BTS das Flag setzen, welches dem Programm die Verwendung von mehr Speicher erlaubt. Danach sollte Civ4 bis zu 4 GB (Arbeitsspeicher + Grafikkartenspeicher) verwenden können.

    • Den Speicherverbrauch senken. Da hast du ja schon eine gute Lösung bei der Reduktion der Art-Files gesehen. Es könnte auch was bringen, die Art-Dateien in ein großes Archiv zu packen.
    Dafür gibt es das Tool PakBuild, https://forums.civfanatics.com/threa...kbuild.136023/
    Ich habe keine Anleitung für die Benutzung parat, aber wenn du dir die vorhandenen FPK-Dateien anschaust oder eine Anleitung ergooglest sollte die Verwendung schnell klar werden.
    (Achtung beim Packen werden die Originaldateien entfernt. Ist immer ratsam auf einer Kopie der Mod zu arbeiten.)
    Ob überhaupt der Speicherverbrauch gesenkt wird weiß ich ehrlich gesagt gar nicht, aber die Ladezeit beim Spielstart sinkt in jedem Fall.

    • Durch mir unbekannte Tricks in der Mod-DLL die Speicherallokierungsprobleme vermeiden. Das wurde in der Caveman2Cosmos-Mod geschafft. Die Mod ist aus Programmierer-Sicht genial (Multithreading im Rundenwechsel, MAF-Problem gelöst, etc.), aber leider so überfrachtet, dass sie quasi unspielbar ist

  4. #4
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Hallo @Ramkhamhaeng, erst mal vielen Dank für deine Hinweise.
    Den 4GB Patcher habe ich direkt eingesetzt und meine Civ4BeyondSword.exe damit bearbeitet. Leider verschwindet das Problem nicht.
    Aktuell bin ich dabei meinen "\Assets\Art" Ordner gründlich aufzuräumen. Alle nicht benutzen dds und nif files werden in zip archive gepackt das sie beim starten nicht geladen werden. Ich habe normal in einem Unit Ordner bearbeitete und angepasst Dateien liegen bzw. Backups die ich damit nun verstecke. Ich dachte eben immer das die Arts nur dann geladen werden wenn eine XML darauf verweist, so kann man sich irren. Weiterhin habe ich auch noch sehr viele unkomprimierte dds files. Darunter eben buttons und auch einige units texturen die ich nun nach und nach als DX3 komprimieren werde.

    Mit PaKBuild kenne ich mich aus nur finde ich das Tool mehr zum finalisieren der MOD. Solange in den Arts noch rumgebastet wird ist das packen doch sehr aufwendig. Ich habe meinen ganzen Unitartstyle mal gepackt für einen Test brachte aber nix.

    Ich finde die Ladezeit halt doch sehr lang. Gerade dauert es gute 60 Sek. bis das Haupmenu da ist.
    Ich lade den MOD direkt mit der exe Erweiterung/Verknüpfung z.b. "E:\Games\Sid Meier's Civilization 4\Beyond the Sword\Civ4BeyondSword.exe" mod=\EH
    mal sehen ob die Ladezeit runter geht wenn ich mit dem Aufräumen und dds komprimieren fertig bin.

    Wenn jemand noch weitere Ideen hat... immer her damit. Ich wäre echt mega Happy wenn das Problem zu lösen wäre.
    Sehr merkwürdig ist eben das diese Problem auch einfach mal nicht zu sehen ist. Da funktioniert alles wie es soll.
    Wäre ein Fehler in XML müsste es ja immer sichbar sein. Habe auch den civcheck-XML im Einsatz der zeigt mir keine Fehler

  5. #5
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    Nach etlichen Stunden habe ich nun die Arts aufgeräumt und konnte gute 150MB einsparen.
    Sehr viel habe ich noch nicht testen können, aber subjektiv scheint es zu weniger Crashs zu kommen.
    So langsam scheint die Grenze des machbaren für Civ4 BTS erreicht zu sein..... nur was nun tun

    Mein Mod besteht ja zum Glück aus 98% rein XML modding, einzig den DCM v2.6 LINK habe ich gemerged und dieser
    benutzt eine eigene CvGameCoreDLL.dll ansonsten werden nur ein paar Anpassungen im XML notwenig
    was aber echt Kleinkram darstellt. Das könnte man kurzfristig wieder entfernen

    Jetzt wäre die Idee meinen XML MOD mit einem vernünfigen Basis Mod zu kombinieren der eine gut gemachte CvGameCoreDLL.dll hat. Damit sollen dann die jetzigen Probleme behoben und das Spiel Fit (Bugfixes etc.) gemacht werden. Im Idealfall sollte dieser auch über das DCM verfügen. DCM ist aber kein muss, wäre nur schön zu haben.
    Ich bin leider in Python und CvGameCoreDLL combilen garnicht gut einfache Sachen gehen,
    XML Merge stellt aber kein Problem da.
    Kann mir jemand einen guten Basis MOD empfehlen mit dem ich das Game verbessern kann ?
    Geändert von xaster (09. August 2017 um 12:40 Uhr)

  6. #6
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55

    Poison

    Nach wieder einigen Stunden habe ich nun den Code für DCM komplett entfernt sowie die Unit nukebomber die nur mit der DCM dll funtioniert. Im Grunde habe ich nun BTS Next War mit umfangreichen XML/Artsyle Veränderungen vor mir.
    Das besagte Problem mit den Crash to Desktop bleibt mir aber erhalten. Da ich jetzt ja keine GameCore im Mod benutze
    habe ich mir die "Debug DLL for BTS 3.19" installiert. Mit dem Ergebnis das beim Laden der MoD eine Fehlermeldung 2x kommt.

    Code:
    Assert Failed
    
    File:  CvXMLLoadUtilitySet.cpp
    Line:  1295
    Expression:  bSuccess
    Message:  
    
    ----------------------------------------------------------


    Hab die Datei unter ..\Sid Meier's Civilization 4\Beyond the Sword\CvGameCoreDLL\CvXMLLoadUtilitySet.cpp gefunden.
    Das ist die besagte Funktion darin:

    Code:
    /------------------------------------------------------------------------------------------------------
    //
    //  FUNCTION:   SetGlobalClassInfo - This is a template function that is USED FOR ALMOST ALL INFO CLASSES.
    //		Each info class should have a read(CvXMLLoadUtility*) function that is responsible for initializing
    //		the class from xml data.
    //
    //  PURPOSE :   takes the szTagName parameter and loads the ppszString with the text values
    //				under the tags.  This will be the hints displayed during game initialization and load
    //
    //------------------------------------------------------------------------------------------------------
    template <class T>
    void CvXMLLoadUtility::SetGlobalClassInfo(std::vector<T*>& aInfos, const char* szTagName, bool bTwoPass)
    {
    	char szLog[256];
    	sprintf(szLog, "SetGlobalClassInfo (%s)", szTagName);
    	PROFILE(szLog);
    	logMsg(szLog);
    
    	// if we successfully locate the tag name in the xml file
    	if (gDLL->getXMLIFace()->LocateNode(m_pFXml, szTagName))
    	{
    		// loop through each tag
    		do
    		{
    			SkipToNextVal();	// skip to the next non-comment node
    
    				T* pClassInfo = new T;
    
    				FAssert(NULL != pClassInfo);
    				if (NULL == pClassInfo)
    				{
    					break;
    				}
    
    				bool bSuccess = pClassInfo->read(this);
    				FAssert(bSuccess);
    				if (!bSuccess)
    				{
    					delete pClassInfo;
    					break;
    				}
    
    			int iIndex = -1;
    			if (NULL != pClassInfo->getType())
    			{
    				iIndex = GC.getInfoTypeForString(pClassInfo->getType(), true);
    			}
    
    			if (-1 == iIndex)
    			{
    				aInfos.push_back(pClassInfo);
    				if (NULL != pClassInfo->getType())
    				{
    					GC.setInfoTypeFromString(pClassInfo->getType(), (int)aInfos.size() - 1);	// add type to global info type hash map
    				}
    			}
    			else
    			{
    				SAFE_DELETE(aInfos[iIndex]);
    				aInfos[iIndex] = pClassInfo;
    			}
    
    
    		} while (gDLL->getXMLIFace()->NextSibling(m_pFXml));
    
    		if (bTwoPass)
    		{
    			// if we successfully locate the szTagName node
    			if (gDLL->getXMLIFace()->LocateNode(m_pFXml, szTagName))
    			{
    				gDLL->getXMLIFace()->SetToParent(m_pFXml);
    				gDLL->getXMLIFace()->SetToChild(m_pFXml);
    
    				// loop through each tag
    				for (std::vector<T*>::iterator it = aInfos.begin(); it != aInfos.end(); ++it)
    				{
    					SkipToNextVal();	// skip to the next non-comment node
    
    					(*it)->readPass2(this);
    
    					if (!gDLL->getXMLIFace()->NextSibling(m_pFXml))
    					{
    						break;
    					}
    				}
    			}
    		}
    	}
    }
    Nun was zum Teufel ist das ?
    Geändert von xaster (10. August 2017 um 17:28 Uhr)

  7. #7
    Registrierter Benutzer Avatar von klops
    Registriert seit
    20.05.16
    Ort
    Hannover
    Beiträge
    4.888
    Zitat Zitat von xaster Beitrag anzeigen
    Nun was zum Teufel ist das ?
    " PURPOSE : takes the szTagName " --->



    Sorry, hilft jetzt nicht wirklich weiter, aber technisch kann ich dazu leider nichts sagen. Finde die Problematik allerdings seltsam/interessant

  8. #8
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    GELÖST

    Ein hartes Stück arbeit geht nun mit einer Lösung zu Ende. Ich wollte es erst nicht glauben aber
    es ist schlichtweg die Civ4 Art Struktur für die Crashes verantwortlich!!!
    In den Jahren wo ich den Mod aufbaue ist er immer mehr gewachsen. Zuletzt war der Art Folder gut ein 1GB
    groß. Das schafft dann unser kleines Civ4 BTS nicht mehr, bracht ewig zum Laden wie schon angemerkt und läuft zunehmend instabil gerade beim Wechsel ins Haupmenu oder beim ingame Verlassen des Spiels kam es bei mir sporadisch aber immer häufiger zum CTD.
    Die ganze Fehlersuche war im Grunde für die Katz, da sind jetzt Tage und Wochen drauf gegangen.
    Na ja hat mit eine neue Soundkarte beschert mit der ich sehr zufrieden bin und ich konnte meine Art Folder mal gründlich aufräumen und Komprimieren.

    Die Lösung wurde von @Ramkhamhaeng schon mal angesprochen und ist PakBuild Einen Herzlichen Dank dafür
    Ich habe nun meine Art Unit, Leaderheads, Terrain, Folder in verschiedene .pak files zusammengefasst.
    Das sind jetzt ein 6..7 Stück mit 100-200MB jeweils. Diese ersetzen dann in "Assets" die kompletten Art files.
    Das Mod managment bzw. Änderungen sind jetzt natürlich umständlicher mit entpacken ändern neu packen usw.
    ABER jetzt läuft der Mod wie aus einem Guss... Ladenzeiten sind jetzt keine 10Sek. mehr, einfach geil

    Nun da ich im Zuge der Fehlersuche das DCM v2.6 komplett entfernt habe ist meine Mod jetzt eigentlich Civ4 BTS mit jede Menge Artstyle, Techtree, Terrain, Buildings, Wonder usw.
    Ich suche mir jetzt eine gute Basis mit vernünftiger GameCore.ddl was Art Seitig nicht so überladen ist um mein Mod auf das nächste Level zu bingen. Ich glaube es wird der aktuelle K-Mod werden der bringt einige Verbesserungen mit sich. Oder hat jemand noch eine Idee/Vorschlag ?

  9. #9
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Schön, dass der Tipp geholfen hat
    Das Problem mit dem Update ist weniger nervig als befürchtet, da du nicht bei jeder Änderung neu Paken musst. Liegen die Dateien gleichzeitig gepackt und ungepackt vor, werden die ungepackten bevorzugt. D.h. du kannst deine Änderungen recht leicht testen.

    K-Mod ist sicher eine gute Ausgangsbasis. Ist etwas umfangreicher als die Better AI Mod.

  10. #10
    Registrierter Benutzer Avatar von xaster
    Registriert seit
    10.02.06
    Beiträge
    55
    ja es sind eben manchmal die erst unmöglichen Dinge die am Ende dann doch ganz logisch sind
    Mir ist echt ein Stein vom Herzen gefallen dachte schon zeitweise das die Civ4 Show bei mir gelaufen ist.
    Aber jetzt ....... Relaunch
    Ja vermutlich wird es der K-Mod hoffe nur das sich der Aufwand lohnt.... das wird mich einige Zeit kosten und schade um dem DCM
    aber was solls, die besser KI entschädigt dann wohl

Berechtigungen

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