[F4] Was beschäftigt euch gerade beim Modding

  • Bin wieder aus Nuka World zurück, wo ich vom Feinschliff bis Debugging und Balancing an allen Ecken und Enden schraubte.


    Scriptmässig war das wieder mal ein Müllhaufen, wo bei gegebenen Funktionen teils 75% Ausfälle waren, da werden Scripte per Patch geupdatet, ohne die Aufrufer(z.B. Quests oder Actors) neu zu konfigurieren, drei Viertel aller Script-Aufrufe auf Animationen verursachen interne Crashes, OnCellAttach() ist da Gift, man kann keine Animationen auf ungeladene Objekte ausführen. Habe bereits wieder an die zwanzig bis dreissig Scripte debuggt und haufenweise Actors, Objekte und Quests geändert, die falsch konfiguriert waren. Immerhin muss ich nicht alles machen, etwa die Star-Cores fixen, das macht bereits der Community Patch. Das macht man einfach nicht, dass man in Scripten Variablen löscht, selbst wenn man sie nicht mehr braucht. Und was einige Viecher wieder Fehler ins Log spuckten, nur weil die Jungs bei Lazythesda zu faul waren, ein Mal auf Autofill zu klicken.

    Ja und dann bin ich wieder in den "Gigantische Flaschen-Bug" reingelaufen, wo Flaschen aus unerfindlichen Gründen so gross werden, dass sie ganze Zellen bedecken. Nein, das ist kein Mod-Bug, sondern ein Bug von gigantischen Flaschen, selbst auf der XBone gibt es einen Fix-Mod dafür ;)


    Dann habe ich weiter an meiner Siedlung Nuka Town USA rumgeschraubt und noch fehlende Dinge scrapbar gemacht, diese Siedlung läuft gut. Ausser dass ich immer noch nicht sicher bin, wie man jetzt einen bestimmten Map-Marker zur Ausgabe von Workshop-Infos auf der Karte bringt. Wenn nur ein Map-Marker im Workshop-Gelände ist, muss man nichts spezielles machen, aber Nuka Town enthält etwa fünf Marker. Habe schon überall rumgeschraubt, z.B. Location, aber im Moment zeigt gar kein Marker die Infos an. Es scheint aber manchmal auch nicht richtig zu laufen, wenn man solche Änderungen in einem Durchgang macht. Elinora überschreibt ja die Boston Airport-Location in ihrem Faction Housing-Mod, sodass der Info-Marker wieder auf die Prydwen zeigt. Habe das zwar eigentlich rückgängig gemacht, aber es zeigt dann trotzdem nicht auf den Siedlungsmarker. Naja, das sind nur Schönheitsfehler, die Siedlung funktioniert trotzdem einwandfrei, inklusive Karawanenroute ins Ödland.


    Dann musste ich noch die Quantum-PA davor schützen, dass sie von meinen Spawns abgegriffen werden. Manche Fehler kommen wirklich aus Mods. Klar, wenn ich Reisende spawnen lasse, wo es vorher niemanden gab, werden sie mit der Welt interagieren, z.B. meine Quest-Belohnung klauen.


    Insgesamt ist eine richtige Liste an Tweaks zusammengekommen:

    -Scripts debuggt

    -alle Landschaftstexturen leicht röter

    -mehr Gras, Grastextur grüner

    -Brahmiluffs weniger agressiv

    -Heuschrecken und Würmer grösser

    -neuer Gegner Shai-Hulud(ein Riesen-Wurm) eingebaut

    -Nukalurk-Queen grösser, Levelscaling 1.2, mehr Ausdauer(war viel zuleicht)

    -alle Encounter-Zonen von 60 bis 199

    -mehr Wasserquellen

    -ein wenig mehr Ammo-Loot


    Und jetzt schraube ich bereits wieder im Ödland rum, z.B. an meiner neuen Siedlung South Boston Military Checkpoint und generell am Siedlungssystem.

    Eigentlich läufts ja weitgehend vernünftig, aber es passiert immer noch, dass ab und zu Sieldungen falsche Stats(0 Betten, 0 Power, 0 Wasser anzeigen. Klar ist es bereits mit dem Community Patch viel besser, aber es hat noch immer Lücken. Dabei ist der Fehler prinzipbedingt: wenn man schnellreist oder in ein Interior geht, während die Siedlungsressoucen berechnet werden, spucken die teilweise 0 aus. Der Aurufer ist zwar im WorkshopScript, aber die Funktion selbst ist nativ, d.h. unänderbar in der Engine drin. Ich muss jetzt tatsächlich noch mehr Failsafe-Checks einbauen, sodass die Ressourcen wirklich nur berechnet werden, wenn das 3D des Workshops geladen ist. An sich müssen ausschliesslich Caps neu berechnet werden, wenn ich nicht da bin und diese Funktion kann ich vom Rest trennen. Eigentlich sollten sowieso keine Überfälle mehr auftreten, wenn man nicht in der Nähe ist. Eigentlich könnte ich auf diese Werte pfeifen, da sie das Game nicht unspielbar machen und nicht sehr häufig auftreten, aber das ist wie Schorf, an dem ich als Nerd kratzen muss.

    Und die Performance-Optimierungen teibe ich auch noch weiter als beim Patch . Was die Workshop-Scripte Ressourcen vergeuden, wenn ein Workshop noch nie betreten wurde und gar nicht dem Spieler gehört. Dabei ist es ein wirkliches Problem, dass die Workshop-Scripte ständig laufen und die haben Blocks darauf, dass nur ein Workshop gleichzeitig brechnet werden kann. Am Angang kein Problem, nur hat man irgend wann mal soviel Workshops(selbst in Vanilla), dass diese Tage nicht berechnet werden.

  • Es würde mich mal interessieren, wie häufig ihr kaputte Stats(Betten, Wasser, Eenrgie) für Workshops im PipbBoy habt und ob ihr den Unofficial Patch nutzt oder nicht. Wenn ihr sagt, ihr hättet nie kaputte Stats, glaube ich das nicht, das wäre nur Zufall, selbst mit Patch. Es ist zwar theoretisch möglich, dass Mods die Situation verschlimmern, hatte ich auch schon, dass Zellen, die weit weg vom Workshop waren, irrtümlich eine falsche Location-Zuweisung hatten.

    Aber generell werden hier native Funktionen genutzt, die man weder ansehen, noch ändern kann. Es sind keine Scripte, die die wichtigsten Ressourcen berechnen, sondern Funktionen, die tief in der Engine sind.

    Sieht mehr oder wenger so aus und hier liegt auch das Problem:

    Code
    If myLocation.IsLoaded()
         RecalculateRessources()
    EndIf

    Das bedeutet nach Dokumentation, dass die Ressourcen des Workshops neu berechnet wwerden, wenn eine der Zellen der Location geladen ist, das passiert mindestens bei jedem Betreten oder verlassen des Workshops, auch bei neuen Siedlern oder bei Öffnen oder Schliessen des Menus. Jede Zelle, die innerhalb der Workshop-Grenzen liegt, muss das Location-Objekt zugewiesen kriegen, das bestimmt, dass die Location ein Workshop ist. Bei grossen Workshops können das zehn Zellen sein, bei kleinen nur zwei.

    Und hier liegt der Hund begraben, dass eine Location als geladen gilt, wenn eine der Zellen in der Memory ist. Das kann bei grossen Zellen bedeuten, dass weder Workshop noch Betten geladen sind, nur die äusserste Zelle am Rand, die aber keinerlei Ressourcen enhtalten muss(das würde auch erklären, dass die Werte nicht immer sofort auf 0 gehen, sondern je nach Position nur viel zu niedrig sind). Auf jeden Fall sehe ich nach Log-Angaben, dass die drei Werte Power, Wasser und Betten nach RecalculateRessources() von der korrekten Zahl auf 0 sinken können und das bei absolut sauberen Siedlungen.

    Ich kann das etwa bei Jamaica Plains repetieren: Alle Werte sind auf 0, dann hinlaufen, alles normalisiert sich sofort, abgesehen von der Happiness, die gesunken ist. Dann so weit weg gehen, dass ich knapp noch eine Zelle mit dem Scope sehe, dann bis zum nächsten Workshop-Update warten: Werte sind wieder im Keller. Hingegen haben alle anderen Workshops, die gar nicht geladen sind, grüne Werte.

    Ich denke, dass das je nach Spielweise oder Örtlichkeit öfter auftreten kann. Z.B. halte ich mich gerade in South Boston auf, wo ich häufig in die Nähe von Jamaica Plains komme. Es könnte sein, dass UGrids(habe 7) das beinflusst, mehr Zellen befinden sich in der Memory, aber ohne dass sie vollständig 3D geladen sind.


    Anyway, habe wohl jetzt den heiligen Gral der fehlerfreien Stats gefunden, es haben sich bereits alle Stats erholt und ich habe keine einzige Location mit fehlerhaften Werten, kann problemlos zwischen Jamaica Plain und anderen Orten wechseln. Musst sie natürlich besuchen, sonst hätte es nicht funktioniert.

    Code
    if Game.GetPlayer().GetCurrentLocation() == myLocation
       RecalculateResources()
    endif

    Das bedeutet, dass nur neu berechnet wird, wenn sich der Spieler in einer Zelle des Workshops aufhält, da ist die Wahrscheinlichkeit praktisch 100%, dass alle Zellen und der Workshop geladen sind. Andere Ressourcen sind davon nicht betroffen: Kohle und Scrap oder o kommen wie gehabt rein.

  • Als technische Vollidiotin verstehe ich deinen Text nur zu etwa 10% ;)

    würde mich mal interessieren, wie häufig ihr kaputte Stats(Betten, Wasser, Eenrgie) für Workshops im PipbBoy habt

    aber was diese Stats anbelangt: Ich nutze den Unofficial Patch und habe da trotzdem regelmässig Falschanzeigen. Im Vergleich zu den Durchgängen ohne den Patch wahrscheinlich etwas weniger. Genauer kann ich das nicht sagen, weil ich ignoriere inzwischen die Pipboyanzeigen und statte den Siedlungen halt regelmässig einen Besuch ab und schaue dann vor Ort wie das Befinden ist.

    Krieg, Krieg ist immer gleich: Städte werden in Schutt und Asche gelegt, Menschen sterben reihenweise und man findet keine anständigen Haarstylisten mehr, von Pedikürensalons ganz zu schweigen.

  • Der Patch ist ziemlich konservativ, wenn es um Änderungen am Spiel geht. Alles wird so umgesetzt, dass es keine sichtbaren Änderungen gibt(deshalb wird er oft unterschätzt), abgesehen davon, dass Bugs weniger oft auftreten. Die machen das gut so, aber gehen mir damit zuwenig weit. Eigentlich sind es nur völlig nutzlose Zahlen und wenn sie im Schilf sind, ist das nicht mein Gameplay-Fehler, aber mir kratzen kaputte Stats an den Nerven.


    Anyway, die Funktion muss mit oder ohne Patch failen, wenn nicht der komplette Workshop und alles(Pflanzen, Betten, Generatoren) innerhalb der Grenzen vollständig geladen ist. Wenn man von einem Workshop wegläuft und die Funktion ausgeführt wird und sich nicht alles im Speicher befindet, kriegt man kaputte Stats. Wahrscheinlich taucht eben das Problem häufiger auf, wenn man mehr Workshops hat oder wenn man sich so oder anders im Spiel bewegt.


    Das Problem ist, dass man meine Script-Änderungen aus verschiedenen Gründen nicht einfach überall installieren kann, sonst würde ich die schon lange online stellen.

  • If myLocation.IsLoaded()

    Wie wird myLocation denn gesetzt ?

    Ich hätte jetzt erwartet das myLocation mit der jeweiligen location gefüllt wird, in der der Spieler sich befindet,

    was ja letzlich nichts anderes wäre als die Änderung die du vorgenommen hast.


    Außerdem, wenn du Ugrids auf 7 hast, einige Workshops aber 10 Zellen umfassen, dann kann das bei den Workshops ja auch nicht funktionieren, weil eben maximal 7 bzw 8 ( bin mir da noch nicht ganz sicher ) Zellen geladen werden.


    Und dann bleibt noch die frage ob die Ressourcen nur erkannt werden wenn deren 3D geladen, oder sogar gerendered ist.

    Halte ich zwar für unwarscheinlich, weil unnötig, aber immerhin reden wir von Bethesda ^^

  • myLocation ist eine Variable auf dem WorkshopScript, das enthält die Location des Workshops.


    Ich glaube nicht, dass UGrids = 7 bedeutet, dass 7 Zellen geladen sind, sondern 36, ist das nicht der Cell-Buffer?


    Das hier ist der Kommentar von Beth über der Funktion:

    ; we don't normally want to do this when unloaded or everything will be 0

    Bin nicht sicher, ob alles 3D-geladen sein muss, aber die Zellen müssen mndestens vollständig in der Memory sein, oder mindestens jene, die z.B. Betten enthalten. Manchmal ist nicht alles 0, nur Betten, was etwa häufig bei meiner Siedlung Thcket Excavations passiert, wo alle Betten meist am westlichen Rand sind. Ich hatte bei manchen Workshops das Gefühl, dass bestimmte Werte öfter im Keller sind, während es in anderen alle Werte sind, das kann damit zusammenhängen, dass ich Sieldungen oft in der selben Richtung verlasse.


    Auf jeden Fall sah das fast repetierbar so aus: wenn ich Jamaica Plains verliess und zum South Boston Checkpoint lief, konnte es da 0-Werte ausgeben.


    Generell wird die Funktion von DailyUpdate aufgerufen, die in einem täglichen Intervall läuft, aber auch immer, wenn ein NPC hinzukommt oder verschoben wird, oder der Spieler die Location ändert. Letzeres wird verzögert ausgeführt und je nach dem, ob die Scripte gerade beschäftigt sind.


    Also wenn du länger an den Scripten von Beth rumschraubst, traust du ihnen wirklich alles zu. Am Workshop-System besonders störend: Egal ob ein Workshop dir gehört oder ob du nur jemals in die Nähe gekommen bist, alle Workshops laufen in Vanilla und auch mit dem Patch duch sämtliche ellenlamgen Berechnungen, die abgesehen von der Start-Happiness 50 nur 0 sein können. Man kann an Scripten schon den Charakter von Codern sehen und der sieht hier wie folgt aus:

    -Es wird schon alles irgendie klappen oder zumindet meistens.

    -Wieso drei Zeilen Script, wenn man es auch mit dreissig machen kann.

    -Wieso alles in einem Script, wenn man es auch über sieben Objekte und drei Quests mit Alias machen kann.

    Ich sags immer, es ist kein Zufall, dass die Scripter in der Game-Entwicklung arbeiten, überall wo echtes Geld statt Kronkorken verloren gehen können, würde man die auslachen.

  • Man kann an Scripten schon den Charakter von Codern sehen und der sieht hier wie folgt aus:

    -Es wird schon alles irgendie klappen oder zumindet meistens.

    -Wieso drei Zeilen Script, wenn man es auch mit dreissig machen kann.

    -Wieso alles in einem Script, wenn man es auch über sieben Objekte und drei Quests mit Alias machen kann.

    Elegant war früher und ist spätestens mit der objektorientierten Programmierung gestorben.

    Auf der anderen Seite wird das Modding in der Breite aber genau dadurch erst möglich. Heutzutage langt es ein paar Tuts durchzuarbeiten und etwas zu scripten. Dazu musst Du kein Programmierer sein.

    Soviel Mühe wie Du macht sich wohl kaum jemand - auch ich nicht ^^

    Ich sags immer, es ist kein Zufall, dass die Scripter in der Game-Entwicklung arbeiten, überall wo echtes Geld statt Kronkorken verloren gehen können, würde man die auslachen.

    Was erwartest Du, wenn selbst kritische Anwendungsprogramme aus dem Baukasten zusammengestöpselt werden? Dass noch irgendwer Bitschubsereien direkt im Grafikspeicher veranstaltet?

  • Was erwartest Du, wenn selbst kritische Anwendungsprogramme aus dem Baukasten zusammengestöpselt werden?

    Wer weiß es noch - "GEOS"

    Das war Textverarbeitung und Tabellenkalkulation.

    Und das auf einer 5/4 DISKETTE


    Ein Office Paket auf 125kb .. Nicht MB oder GB.. KB !!!!



    Damit (c64) und einem 9 Nadler hab ich 1985 meine Bewerbungen geschrieben :D

    Messinghülsenregen am Morgen vertreibt Kummer und Mops.... :assaultrifle:

  • Ich arbeite beruflich sowohl mit prozeduraler wie mit objektorientierter Programmierung und schreibe jeden Code von Hand. Ich mag Eleganz, selbst wenn sie keiner sieht.

    Wenn ich von Scripten spreche, meine ich immer die, die Anwender mit dem Creation Kit erstellt, bzw. verbrochen haben. Ich bin froh, weiss ich nicht, was die Engine-Coder alles angestellt haben, aber ich bin mir sicher, dass alle Brüder im Geiste sind.

    Okay, vielleicht ist es auch ein Fluch, wenn man duch das Game läuft und ständig denken muss, hier hat einer mit den KI-Packages versagt, da war ein Blindfisch an der Beleuchtung(wie vorhin gerade im Parsons Asylum), dort hat einer auf die Peformance gepfiffen und ah, dieser Lift geht wie soviele nicht richtig, weil da Bastler am Werk waren. Vielleicht sollte ich eine rosarote Brille anlegen, um meine Nerven zu schonen ;)

  • Möglicherweise nicht schlimm, obwohl ich da schnell irgend was rein tun würde, wenn ich sowas sehen würde. Weiss nicht mehr, ob das immer noch so ist wie in Fallout 3, schlimmer ist eine 0 bei der Anzahl, da crasht es garantiert und wenn ich mich richtig erinnere, kam man nicht mal mehr ins Spiel.


    Anyway, ich schraube auch gerade an den gelevelten Listen rum, anlässlich meines bevorstehenden Far Harbor-Besuchs. Ich will mir da die Hölle auf Erden bereiten(wie schon damals in Point Lookout), deswegen setze ich da alle Encounter-Zonen auf mindestens 80 und rüste alle wichtigen Gegner mit grösseren Waffen aus. Habe ja inzwischen einen Patch-Mod erstellt, der sämtliche Waffen-Mods im System zu hübschen Listen für alle Gelegenheiten vereint. Die kann ich nur noch in die gelevelten Listen der Gegner einklinken, etwa LLW_TrapperHeavy oder LLW_LongshoreManHeavy mit Broadsider und Harpunengewehr.

  • Wenn du dir die gelevelte Liste ansiehst, hat es eine Zeile Leveled List Entries. Mit der rechten Maustaste auf dieser Zeile Add Entry wählen, dann erscheint ein leerer Eintrag. Bei Count gibst du eine 1 ein. Dann klickst du da drauf, wo NullReference steht, dann erscheint ein Dropdown, wo du z.B. HuntingRifle wählen kannst.

    Achtung: derAufbau des Dropdowns kann lange dauern und es sieht manchmal so aus, wie wenn FO4Edit hängen würde, tut es aber nicht. Während du auf das Dropdown wartest, solltest du nichts klicken, sonst crasht es wirklich. Das liegt daran, dass ein Eintrag jedes Item(Waffen, Ausrüstung, Nahrung) des Spiels enthalten kann.

    Es könnte übrigens sein, dass der bewusst leer gelassen wurde, da man Items auch per Script n eine gelevelte Liste tun kann. Modder könnten natürlich vergessen, eine solche Liste zu füllen, aber eigentlich sind sie interessiert, dass du ihr Zeug bekommst. Könntest du einen Screenshot von dieser leeren Liste machen?

  • Gut hast du einen Screenshot gezeigt. Das hier ist kein Fehler, sondern eine Anzeige-Einstellung. Du musst in den leeren Bereich rechtsklicken und "Hide no conflict rows" abchecken. Mit dieser Einstellung werden nur Zeilen angezeigt, die vom Master abweichen. Wenn es wie in deinem Fall keinen Master-Eintrag gibt, der vom Mod überschrieben wird, wird gar nichts angezeigt.

  • Gelevelte Listen können in gelevelten Listen stecken. Meistens macht man eine neue Liste für eine Mod-Waffe und weist sie dann einer Vanilla-Liste zu. Das kann auch per Script passieren, was sogar besser ist. Mehrere Mods können so ihre gelevelten Listen in die selbe Vanilla-Liste tun, ohne, dass sie sich gegenseitig überschreiben.

    Rechts unten siehst du ein Tab "Referenced by", wo du sehen kannst von welchen Einträgen ein Eintrag verwendet wird, sehr nützlich.

  • Jup, meine Hardcore-Änderungen scheinen schön zu ziehen,, wie ich gerade in Far Harbor sehe:

    -alle Pipe-Waffen raus(ausser die Shotgun aus dem Raider-Overhaul)

    -normale Jagd-Gewehre bei allem raus, was nicht Kanonenfutter ist, ersetzt durch Sturmgewehre, die bereits ab Level 1 erscheinen können

    -Mutanten, Gunner, Raider und so weiter kriegen nun eine zusätzliche gelevelte Liste, die jeweils auf die Grupppe angepasst ist, z.B. nutzen Raider häufig Railway-Rifle,

    -gelevelte Waffenlisten generell verschärft, wer ein Sturmgewehr haben konnte, kann jetzt eine Minigun tragen

    -Patch gemacht für einige Waffen-Mods(supergeile Miniguns von Skibs etwa)

    -Mutanten können alle Waffen nutzen und tun es auch(Flammenwerfer, Gauss-Rifle, Railway-Rifle, andere Mod-Waffen, Antimaterie-Sniper)

    -alle fiesen gelevelte Gegner(Ghulper, Angler, Ghule, Raider, Mutanten, Gunner, Krallen) um eine Stufe oberhalb Vanilla erweitert, ab Level 81 können Biester auftreten, die ein Level Mult von 1.2 haben, die haben dann immer Totenköpfe

    -alle Viecher können zufällig fetter sein sein, alle Monster-Typen können noch grösser werden


    Und ich versuche gerade mit Cait duch eine Ghulper-Gruppe zu kommen und werde spätetens von meiner neuen Variante Ghulper Destroyer vernichtet, ein Schlag und aus ist, das Vieh ist wie ein Tyrannosaurus Rex. Auch Cait kippt gerade häufiger aus den Latschen, obwohl ich sie verstärkt habe. Dabei sollte ich auf Level 90 für solche Fälle gerüstet sein, mit voll ugegradeten Waffen. Aber genau das ist das Ziel, ich will mich nicht langweilen dadurch, dass ich einfach alles platt machen kann, ich will auch nicht, dass ein Mutanten-Warlord mit einer Pipe-Gun auf mich ballert.


    Aber auch bei den Siedlungen habe ich nachgearbeitet und zwei Far Harbor-Typen gestaltet. Eine ist eher Marine-affin, mit Matrosen- oder Fischer-Klamotten und mit Enterhaken und mal einen Broadsider bewaffnet, die anderen sind eher Trapper und tragen mehr Leder oder auch mal eine Trapper-Rüstung. Alle neuen Siedlungen am Wasser kriegt dann die Matrosen, alle im Wald die Trapper. Das sind voll funktionsfähige Siedler, dazu habe ich noch jeweils für die beiden Typen craftbare Siedler gemacht. So kann ich eher weniger reguläre Siedler mit schweren Scripten spawnen lassen, und sie durch meine craftbaren verstärken, die nur dazu da sind Leben zu simulieren und die Lücken zu füllen.


    Leider habe ich im Moment zwischendurch das Problem, dass das Bild wie nachschmiert, wenn ich mich drehe. Es sieht dann so aus, wie wenn ein Bild eingebrannt wäre, das neue Frames überlagert. Das Problem ist etwa eine Woche alt(keine Updates), plötzlich war es da, und ich kann im Moment keine Verbindung zu einer Änderung von mir machen. Auch bei Google hae ich bisher nix vernüfntigesgefunden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!