[Modding] Wohl und Wehe des Modding

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Ich habe gerade ungefähr eine Stunde damit zugebracht, herauszufinden, warum eine meiner Mods in SoD plötzlich Textsalat produziert: Mod installiert, mit Near Infinity den dlg dekompiliert, angesehen - und die über die Mod eingefügten Texte waren entweder durch zufällige Zeilen ausgetauscht (z.B. eine Textzeile von Imoen, wenn man sie anwählt) oder verrutscht.
Geprüft, ob ich versehentlich falsche tra-Dateien einlese z.B. über einen Copy&Paste-Fehler, wär ja nicht das erste mal, war nicht; geschaut, ob eine ältere Version von Near Infinity dasselbe Problem bringt (da ich schonmal mehrmals in NI den Pfad refreshen musste, bis Texte richtig angezeigt wurden), war nicht; auf anderes Spiel installiert, hier waren die Texte in Ordnung; meine vermeintlich frische SoD-Installation verwendet, auch Textsalat; das eigentliche SoD-Installationspaket über den Client nochmal verifizieren lassen und davon eine Kopie verwendet: hurra, jetzt klappt wieder alles!
Dann also meine Änderung im Spiel getestet, und was pasiert? Eine Cutscene startet nicht, obwohl die Aktion dazu als unterste in der Transaktionsliste steht. Es gibt keine Kondition, die nicht zutreffen könnte, die Cutscene wird kompiliert... Nachdem ich also eine knappe Stunde mit der Frage "warum werden die tra-Referenzen nicht wie gewohnt verwendet" zugebracht habe, sitze ich nun hier und versuche herauszufinden, warum in diesem einen Fall die Regel "die Engine verarbeitet die Liste der Transaktionen von unten nach oben" nicht eingehalten wird.

Zum Testen des ganzen hatte ich einen alten Spielstand verwendet, was, wie wir alle wissen, Textsalat bei den Namen und NPC Kommentaren etc. verursachen kann. Ihr könnt Euch meine Erheiterung denken, als mir dann genau diese Zeile angezeigt wurde:

enough.jpg

lol.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Ich bin gerade dabei, die cre-Datei von der Arath NPC Mod zu korrigieren. Sie hat unter anderem auch noch zugewiesene, falsche Soundset-Strings. Diese werden in der Regel bei der Installation mit den korrekten überschrieben. Trotzdem habe ich die Datei von diesen Strings befreit und dabei folgenden Zufallsfund gesehen:
hihi
Arath_cre.jpg
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Ich modde ja für BGT und die EE. Bei BG:SoD kann ich bzgl. Kreaturen, Skripten und Items eigentlich fast davon ausgehen, dass die BGII-Ressourcen auch vorhanden sind (nicht alle, aber erfreulich viele), EET sowieso. Aber BG:EE nicht, da muss ich das nachprüfen. Gucke ich in diesem konkreten Fall also, ob ein bestimmter Zauber auch in der BG:EE vorhanden ist. Stellt sich raus - ja, ist er, aber mit dem Namen:

OfCourseYouAre.jpg

...Wie konnte ich nur zweifeln! :p
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Hier noch ein Bild aus dem supergeheimen Baldurans Seatower-Workroom. Manche generischen Charaktere, die ohne Questrelevanz die Gegenden bevölkern, haben ein Skript, dass sie randommäßig in der Gegen rumlaufen lässt. Das führt dann zu Situationen wie diesen, in denen der HC mit einem wichtigen Questcharakter supergeheime Dinge besprechen möchte, nachdem gerade eine Unterwanderung durch den Feind festgestellt wurde und... die Besucherin hört sich das mal eben mit an. Der Turm ist ja schließlich öffentlich zugänglich, nicht wahr?

neugierig.jpg
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Ich habe bei G3 gewartet, dass die Admins den Link zur Modseite des Balduran's Seatower auf der G3 Hauptseite unter "Quests & Others" direkt verlinken.
Stellt sich raus: es war verlinkt, aber unter dem Reiter "In Progress" - und ich kann das als Mod selbst über die Einstellungen auf der Modeite zu "Quests & Others" verschieben.
lol
 

Jarl

Senior Member
Registriert
28.04.2006
Beiträge
972
Hab BST gleich mal für einen neuen Durchlauf installiert ;)

Bin gespannt.

Grüße!
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
DeepL hat "Hooded Man" aus SoD gerade mit "Kapuzenmann" übersetzt. Das fand ich süß. Ey, Kapuzenmann! Sieh dich vor, bis ich dich erwische! :D
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Das passt hier auch schön rein. Stellt sich raus, dass beim Edwin Romanzen-Mod auch Textzeilennummern doppelt vergeben waren. Die Texte des setup wurden dann mit Textzeilen aus dem Modinhalt überschrieben. Und daher fragte mich dann der Installer beim Testen:
EdwinRomance_NehmtDieMacht.jpg
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Das hat jetzt nichts mit Modding zu tun, sondern eher mit den urkomischen Situationskomiken, die das Spiel (und überhaupt das Leben) so hinkriegen. Timing ist alles! Heute: - kaum spricht Noober uns an, wird meine HC erschöpft...
noober_pc_weary.jpg
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Hier ein schönes Beispiel für das Pathfinding. Es ist in der Ee ja nicht wirklich perfekt. Allerdings ist das hier ein Verhalten, was mir in der alten Engine auch aufgefallen ist: Charaktere, die die Gruppe ansprechen wollen, laufen nicht zur Gruppe, wenn sie in Bewegung ist, sondern zu dem Punkt, den die Gruppe auch ansteuert.
So kommt es, dass Roger den ungebetenen Gästen von seinem wichtigen Job erzählt!
Roger_impotant_job.jpg
 

Morywen

Senior Member
Registriert
18.10.2017
Beiträge
2.716
Das ist prima. Wenigstens die NPCs finden den Weg, oder so ...
In der EE in IWD hatte ich, obwohl gerade erst Kuhldar erreicht wurde, schon dreimal das Problem, dass Partymitglieder ineinander hingen und nur mit Mühe zu trennen waren. Das ist echt ätzend, in der Classic machte Mal ein Charakter Pinkel- oder Raucherpause. Dieses zusammen kleben an einer Stelle hat eher etwas von BG 3, wo in einigen Szenen, die Begleiter mit dem Maincharakter verschmelzen. Da denke ich dann, so nahe Bekanntschaft möchte ich mit niemandem schließen.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Bei mir ging das bisher gut, Klopf auf Holz.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Ich muss die Timer, wann Dialoge gestartet werden, noch irgendwie verbessern. Die unfreiwillige Situationskomik ist manchmal nur schwer auszuhalten. Philosophische Fragen werden gewälzt, nachdem der letzte besiegte Kreischling grad auf dem Boden aufgeschlagen ist. Tiefsinnige Fragen werden gestellt, wenn man grad ein Phantom in einer Höhle ansprechen wollte und direkt davor steht. Und eben wieder: Brage fragt meine HC, wie es ihr denn eigentlich ginge. Das ist zwar sehr nett, aber es war direkt nach dem Aufwachen. Nach einer heißen Liebesnacht mit Ajantis. Der noch mit im Bett lag und brav wartete bis Brage fertig war, um seine Geliebte zu fragen, wie sie geschlafen hätte.
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.380
Ich glaube, dass das nicht so einfach wird. Und ich würde da auch nicht so viel Zeit investieren. Einfach weil es der Erheiterung des HC dient, nicht an den Mod-Inhalten liegt (ist in der Vanilla ja auch so) und weil man glaube ich gar nicht alles abgefangen bekommt.

Und nicht vergessen: du müsstest dafür ne Menge Variablen setzen. Und in Installationen mit vielen Mods ist die Anzahl der GLOBAL-Variablen schon öfter mal kritisch für die Spielgeschwindigkeit. Oder eben die Länge der baldur.bcs (das war doch der Name des allgemeinen Skripts?), die permanent abgearbeitet werden muss.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Ja, ich weiß, dass es nicht so einfach ist. Ich hatte spontan an einen weitweren Timer gedacht, das wäre also "nur" eine weitre Variable, der immer nochmal so ~30s läuft, nachdem grad ein Kampf vorbei ist oder nachdem die Gruppe gerastet hat. Rastdialoge vor dem Rasten kann ich leider nicht so einfach detektieren, von daher kann es immer mal sein, dass eine heiße Liebesnacht von einem der Bhaalträume gefolgt wird o.ä. In RE hatten wir dafür einen extra Timer eingefügt, damit zumindest nicht zwei Verehrer in derselebn Rast auftauchen.
So ein zusätzlicher Timer würde schon viel abfangen, glaube ich. Da könnte ich auch Modübergreifend für alle NPCs denselben verwenden, was nochmal die Anzahl reduzieren würde. Und - tada - richtig eingesetzt auch gleich verhindern würde, dass verschiedene NPC ihre Dialoge direkt hintereinander triggern.

Gegen das "ich habe mich grad um einen Questcharakter herum platziert aber bevor ich ihn ansprchen kann labert ein NPC mit seinen eigenen Gedanken los"-Problem ist es nicht so einfach. Ich hatte dafür früher häufiger ein !Range(15,[NEUTRAL) (oder so, Syntax ungenau) in meinen Skriptblöcken drin. Was dann aber dazu führte, dass die NPCs in Städten fast nichts mehr gesagt haben, weil das die ganze Zeit neben den Commonern die Dialoge verhindert hat.
Es kommt ja nicht so häufig vor. Aber richtig schief gelaufen stört mich das in der Immersion.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
richtig eingesetzt auch gleich verhindern würde, dass verschiedene NPC ihre Dialoge direkt hintereinander triggern.
Mit Abständen zwischen den Dialogen würde Ajantis meine HC nicht auf Blümchen am Weg aufmerksam machen... nachdem sie gerade Kivan angeschrien hat, dass sie die Details zu Deherianas Tod nicht hören möchte. Die Dialoge kamen auch direkt hintereinander... vielleicht sollte ich als letzten Kraftakt für diese Mod das BG1NPC Projekt mit so einem Timer ausstatten, wenn mir da was gutes eingefallen ist.
 

Belryll

Senior Member
Registriert
05.01.2009
Beiträge
708
Da könnte ich auch Modübergreifend für alle NPCs denselben verwenden, was nochmal die Anzahl reduzieren würde. Und - tada - richtig eingesetzt auch gleich verhindern würde, dass verschiedene NPC ihre Dialoge direkt hintereinander triggern.
Gegen das "ich habe mich grad um einen Questcharakter herum platziert aber bevor ich ihn ansprchen kann labert ein NPC mit seinen eigenen Gedanken los"-Problem

Ein Timer, der die Gespräche zwischen NPCs bzw. HC und NPCs besser verteilt, wäre eine ziemlich gute Ergänzung, so er umsetzbar ist.

Zusätzlich zu Obigem wird der HC nach meiner Beobachtung auch gerade am Anfang teils derart bombardiert mit Gesprächen, dass sie die Ereignisse und/oder Dialoge der Haupthandlung stören können (oder umgekehrt), wohingegen die letzten Etappen des Spiels meist aus Schweigen bestehen. ich vermute, das liegt daran, dass man viele NPCs in kurzem Zeitabstand in die Gruppe aufnimmt und die Dialoge einen ähnlich eingestellten Timer haben?
Auch scheint mir manchmal, dass Dialoge gebündelt auftreten. Das mag manchmal Zufall sein, manchmal daran liegen, dass irgendwelche Begebenheiten das Triggern von Dialogen verhindern, z.B. Spielfortschritt oder Umgebung (Dungeons), und alle auf einmal ausgelöst werden, sobald diese Begebenheiten sich verändert haben.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Ja, nach einem Dungeon können manche Timer ausgelaufen sein haben und dann bei mehreren NPCs zu Dialogen führen.
Ich habe beim Spielen von BG:EE gemerkt, dass eine Dreiviertelstunde Abstand zwischen den Lovetalks (in dem Fall von Ajantis) viel zu eng war. Er hatte ihr bereits kurz nach dem Befreien der Nashkeller Mine einen Heiratsantrag gemacht, ich meine wut? So sehr hatte ich das nicht verzögert, wobei ich zugegebenemaßen erstmal Ajantis eingesammelt und dann Brage gesucht und seine Unschuld bewiesen hatte, aber das dauert wenn man weiß was man tut ja auch nicht soooo lange.
Hier die Zeitabstände sinnvoll zu setzen ist schwierig, da es auch vom Spielstil des Spielers abhängt. Dazu bietet das BG1NPC Projekt die verschiedenen Timeroptionen bei den Romanzen, aber die sind halt für die rein zeitlich gesteuerten Lovetalks. Danach kommen "nur" noch die nach Spielstory gesteuerten. Was man machen könnte, wobei das jetzt kein Angebor von mir ist, ist, die zeitlich gesteuerten jeweils von der Kapitelzahl abhängig zu machen. Also nicht alle zeitlichen ab Start nur durch Teimer triggern und wenn der Spieler sich aufhält triggern sie alle in Kapitel 1 und danach ist Stille, sondern halt nur Lovetalks 1-3, und dann in Kapitel 2(3,4,5) kommen dann jeweils wieder ein paar oder so.
Aber richtig gleichmäßig verteilt kriegt man das nie hin, da es wie gesagt auch davon abhängt, wie viel Zeit sich der Spieler lässt. Was aus Sicht des Modders nicht passieren darf, ist, dass ein "Zyklus" an Lovetalks noch nicht "fertig" ist aber der Spieler schon in die nächste Spielphase übrgeht. Wenn das falsch getimet ist, dann kriegt man so meta-Durchläufe, wo man in BGII vor dem Starten ins Unterreich nochmal 5 mal an verschiedenen Stellen rastet und herumreist weil "NPC-Romanze x hatte noch nicht den wichtigen Rastdialog".
 

Morywen

Senior Member
Registriert
18.10.2017
Beiträge
2.716
Das kann auch zu sehr witzigen Situationen führen. Ich habe mit meiner Schwester gespielt und wir haben etwas getrödelt nach BG zu gehen. Wir kommen aus dem Dungeon an der alten Brücke, mir fällt der Kartenname gerade nicht ein, da erzählt Ajantis, dass er einen Brief an seine Eltern geschickt hat. Da muss er wohl einen Kobold als Boten bestochen haben...
Es ist auch als Spieler schwierig, die Zeitabstände zu wählen. Ich spiele nicht immer im gleichen Tempo. Wenn ich Yeslick mitnehmen will, mache ich einen Speedrun zu den Mantelwaldminen. Es kann aber auch vorkommen, dass ich es nicht eilig habe nach Nashkell zu kommen und mache erst ein paar Karten vorher.
 
Oben