PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Debugging und Fallout?



Galerion
02.05.2012, 14:59
Hallo Leute,

heute wollte ich mal eine Frage stellen, die sich im generellen um Debugging von Fallout 3 oder von mir aus auch Fallout: New Vegas befasst. Die beiden Spiele sind ja im großen und ganzen das selbe. Ich kenne mich eigentlich schon ganz gut rund um die Engine und den Editor aus, aber es gibt immer noch oft Random-Abstürze welche ich nicht reproduzieren kann und welche nirgends aufscheinen.

Jeder der mehrere Mods in den Fallout-Spielen installiert hat kennt die Probleme, die Engine ist leider nicht die stabilste und ein wirkliches Debugging-Tool gibt es nicht, beziehungsweise ist es für die Community nicht zugänglich. Da ich schon öfters das Internet durchforstet habe, aber nie wirklich gute Tools gefunden habe, wollte ich hier nachfragen.

Dinge welche mir bekannt sind:
Allgemeinen Debug-Messages (http://geck.bethsoft.com/index.php/ShowWarning) über Scripte.
Den Fallout-Skript-Extender habe ich des öfteren ausprobiert, jedoch bin ich hier nie wirklich an ein Ziel gekommen. (Halte auch nicht mehr sehr viel vom Skript-Extender)
Der normale Log-Output des Editors natürlich.
FO3-Edit Tool.
Kleinere andere Sachen erwähne ich erstmal nicht.

Aber was ich suche wäre zum Beispiel, dass Freischalten des alten Debug-Tools von Oblivion (http://geck.bethsoft.com/index.php/Debug_Text), bin aber auch für andere Tipps und Tricks dankbar, außerdem wäre es sehr interessant welche Erfahrungen ihr im Bereich Debugging gemacht habt und was für euch der beste Weg zu einem guten Ziel ist, ohne viele Abstürze.

Ich würde mich sehr über ein paar konstruktive Antworten freuen. ;)

Boïndil
02.05.2012, 15:10
So einen Thread habe ich auch schon eröffnet und aus den ach so zahlreichen Antworten geschlossen, dass man ganz einfach am Arsch ist, wenn man Crashes nicht repetierbar mit einem speziellen Item oder Vorgang verbinden kann.
Das einzig richtige wäre ein Crash-Dump, nur habe ich das Gefühl, dass sowas bei einer performancefressenden Anwendung ein No-Go im Normal-Betrieb gewesen wäre, da man nach meinen Überlegungen dazu ständig Werte in den Dump schreiben müsste.

Galerion
02.05.2012, 20:11
Aha, sehr interessant. Du meinst also, wenn das Spiel abstürzt, dass die letzte Fehlermeldung irgendwie gespeichert wird oder? Und du diese auslesen kannst, naja die Vorstellung wäre ne gute, aber ich denke hier hat keiner solche Kentnisse um die .exe so umzuschreiben denke ich mal.

Es sei denn es gibt eine Windows-Funktion die vielleicht Abstürze näher beschreibt. "Das Programm funktioniert nicht mehr", sagt ja rein gar nichts aus.

Boïndil
02.05.2012, 20:33
Alle Crash-Dumps und Fehllermeldungen in Windows geben nur Fehler des Programms aus, nicht interne Spiel-Fehler. Mag schon sein, dass ein korrupte Textur einen Crash verursacht, nur nützen einem die Meldungen dazu nichts. Solche Meldungen müssten gezielt intern getrackt werden und nach aussen weiter gegeben werden, aber bei Bethesda meint man offenbar, dass CTD eine ganz normale Reaktion eines Programms ist, indem ein Fehler aufgetaucht ist.
"Nicht behandelte Ausnahme in Anwendung X." bedeutet eben auf Deutsch oft, dass einer wirklcih seinen Job nicht richtig gemacht hat und eine Ausnahme nicht behandelt.
Schade, kann man die Entwickler-Funktionen nicht alle freischalten.

Galerion
02.05.2012, 21:16
Ich finde es auch sehr Schade, dass einige Entwickler-Funktionen deaktiviert wurden, da diese wahrscheinlich speziell an deren Computern angepasst waren und es zu viel Aufwand für Bethsoft gewesen wäre diese in der Endversion für die Modder einzubinden. Aber vielleicht lässt sich ja noch irgend ein Programmierer finden, der diese Funktion für uns gangbar macht, die Hoffnung stirbt ja zuletzt.

Galerion
07.07.2012, 20:41
@ Bondil und eventuell anderen Leuten welche im Fallout 3 Modding-Bereich noch aktiv sind und sich mit dem Thema Debugging auseinandersetzen.

Hab mich gestern verstärkt mit Konsolen-Befehlen herumgeschlagen und einiges ausgetestet, da ja auf der Wiki-Seite vieles nicht beschrieben ist oder auch Falsch. Hier ein paar nützliche Befehle die ich gestern entdeckt habe. Speziell solche Befehle welche für Debugging nützlich sein können. (Ich gebe zur Besseren Übersichtlichkeit alle Befehle mit Anführungszeichen an.

---------------------------------------------------------------
Debugging Befehle:
---------------------------------------------------------------

"SetLightingPasses" "-1" oder "-2" "-3" "0" "1" "2" "3" "..." -> Dieser Konsolenbefehl blendet unbeleuchtete Objekte Stufenweiße aus und zeigt die Objekte an welche beleuchtet werden, da Licht ja einer der großen Performance-Fresser ist, kann man mit diesen Befehl sicher gut Optimieren. Zur Info gibt es aber auch im Editor ein geeignetes Tool.

"TestCode" -> Diesen Befehl finde ich auch sehr nützlich, er zeigt an wie viel Speicher in der aktuellen Zelle verbraucht wird, wenn also der Speicher irgendwie zu hoch ist, könnte man auch Maßnahmen dann ergreifen. (Editor-Funktion gibt es aber auch.)

"OutputMemStats" -> Der Befehl erstellt eine .txt im Spielordner und wirft eine Tabelle aus was alles im Speicher ist.

"OutputTextureUseMap" -> Sämtliche Texturen werden in einer .txt im Spielordner verzeichnet.

"ToggleNavMesh" -> Der Befehl funktioniert leider nicht, kann man ihn aber vielleicht durch .INI Settings gangbarmachen? Wäre sicher äußerst hilfreich.

"TSCR" -> Wenn du diesen Befehl eintippst werden alle Scripte sozusagen eingefroren und auch keine neuen gestartet. Sehr hilfreich, wenn man testen will ob ein Absturz durch einen Script ausgelöst wird.

---------------------------------------------------------------
Anzeigen des Debug-Textes: (noch kein Erfolg)
---------------------------------------------------------------

Da ich wiedermal versucht habe, dass eigentliche Debuggin-Tool irgendwie sichtbar zu machen, habe ich versucht direkt .INI Files durch die Konsole zu ändern, weil ich herausgefunden habe, dass nicht alle Settings immer in Fallout drinnen 1:1 identisch sind, sprich in der .INI wird zwar ein Wert verändert, aber im Spiel ist er noch der alte.

Ersteinmal müsst ihr wissen welche INISetting ihr ändern wollt und wie sie (wirklich) gerade eingestellt ist.

Ihr könnt zum Beispiel "help" eintippen und danach ein bestimmtes Suchwort, welches alle Settings anzeigt worin dieser Name,Abkürzung,Buchstabe vorkommt. Wenn ihr zum Beispiel "Help Console" eingebt, wirft er euch einige Settings aus. (Nur ein Teil)

iConsoleTextYPos:menu = 900
iConsoleTextXPos:menu = 80
iConsoleVisibleLines:menu = 23
iConsoleHistorySize:menu = 100
iConsoleFont:menu = 1
iConsoleLineSpacing:menu = 35

Dies sind bereits geänderte Werte von mir, ich habe die Console am Anfang besser angepasst, dass sie für meine Zwecke zu klein eingestellt ist und die alten Werte zu früh ausgeblendet werden. Wie geht man also vor, wenn man die INISettings direkt in der Console ändern will:

Eingabecode --> "SetINI "Setting:Category Wert"" (Ihr müsst die inneren Anführungszeichen auch mit eintippen. Setting steht für den Namen und Category für die Sparte wo das Setting drinnen steht.)
Beispiel --> "SetINI "iConsoleTextYPos:Menu = 1000""

So wird die INI-Setting im Spiel sofort übernommen, jedoch noch nicht gespeichert. Durch den Befehl: "SaveINIFiles" werden die Änderungen in die FALLOUT.INI welche ihr in euren Dokumenten unter MyGames findet abgespeichert.

Zum eigentlichen Thema, wenn ich "Help Debug" eingebe wirft er mir folgendes aus.

iDebugTextFont:Menu = 3 (Dies sollte die Größe oder Schriftart sein, welche angezeigt werden soll.)
rDebugTextColor:Menu = 15916116 (Dies sollte die Farbe sein, in der der DebugText angzeigt werden sollte.)
iDebugTextLeftRightOffset:Display = 80 (Wo am Bildschrim der DebugText angezeigt wird. Hatte eine Vermutung das er nicht im sichtbaren bereich ist, welche ich aber noch nicht bestätigen konnte.)
iDebugTextTopBottomOffset:Display = 20 (Wo am Bildschrim der DebugText angezeigt wird. Hatte eine Vermutung das er nicht im sichtbaren bereich ist, welche ich aber noch nicht bestätigen konnte.)
SDebugText:Display = Actor (Welche Page normalerweiße als erstes Angezeigt werden müsste.)

iDebugTextLeftRightOffset und iDebugTextTopBottomOffset hab ich bereits in der .INI außerhalb des Spiels geändert, diese Werte wurden aber im Spiel dann nie richtig angezeigt, erst als ich dieses Verfahren wie oben beschrieben angewendet habe. Ich denke, dass dies leider bei einigen Settings so ist.

---------------------------------------------------------------
Analysieren eins Spielstandes und eventuelle Bereinigung: (Fixen von Abstürzen)
---------------------------------------------------------------

Da die Saves wie wir wissen auch Crashes auslösen, hab ich mir gedacht solch einen Save muss man doch öffnen können. Mit den normalen Text oder Hex-Editor kommt da nur Krauterwelsch raus und man kann nur einfache Wörter wie Open und Close von Türen oder Schaltern finden. Doch durch zufall auf der Wiki-Seite bin ich draufgekommen das man auch eine sogenannte Dump-File erstellen kann. Hier wird alles schön in Tabellen format aufgelistet was in jenen Save im Spiel berührt wurde. Leider kann man diese Dump-File wie der Name schon sagt nicht im Spiel einladen. Das Spiel zeigt an, dass dieser Save veraltet ist und dieser Save-Typ nicht mehr verwendet wird. Vielleicht kann man aber diese Dump-File irgendwie in eine .Fos datei zurückverwandeln?

Ihr könnt eine Dumpfile durch:
"SaveGame TESTDUMPFile.te 1"

---------------------------------------------------------------

Soviel zu meinen letzten Erkenntnissen, ich werde auch weiter herumprobieren. Wenn jedoch jemand von euch auch schon mit der Console und etc. Erfahrung gemacht hat und mir bei gewissen Ansätzen helfen kann/will freue ich mich natürlich sehr. Außerdem freue ich mich auch wenn ich den einen oder anderen mit einigen Befehlen hier weiterhelfen konnte.