Spielt man Gothic 2 mit einer Breitbildauflösung, dann wird das Bild nach dem Laden eines Spielstandes verzerrt (in die Breite gestreckt) angezeigt, bis entweder eine Kamerafahrt oder ein Dialog startet.
In diesem kleinen Tutorial werde ich euch erklären, wie ihr dafür sorgt, dass diese Problem in eurer Mod nicht auftritt.
1. Zuerst erstellen wir auf dem Startpunkt jeder Welt ein oCTriggerskript mit einem FireDelay von 1 Sekunde, als
Triggertarget geben wir PERMA1 an, aktivieren die Kollisionsabfrage (cdDyn = true), setzen „NumCanBeActivated“ auf 1 und machen die Boundingbox groß genug, damit man auf jeden Fall im Trigger startet.
2. Jetzt erstellen wir 2 weitere Triggerskripte in jeder Welt mit dem Namen „Perma1“ und „Perma2“.
Hierbei stellen wir „Perma2“ als Triggertarget von „Perma1“ ein und umgekehrt.
Weitere Einstellungen: FireDelay 2, scriptFunc: SKRIPT_PERMA .
3. Jetzt brauchen wir nur noch eine „Kamerafahrt“ in jeder Welt. Also setzen wir eine zCCSCamera mit dem Namen „KAM_FIX_TEST“ in die Welt mit folgenden Einstellungen:
camTrjFOR:OBJECT targetTrjFOR:OBJECT loopMode:NONE splLerpMode:UNDEF ignoreFORVobRotCam:FALSE ignareFORVobRotTarget:FALSE adaptToSurroundings:FALSE easeToFirstKey:FALSE easeFromLastKey:FALSE totalTime:-9 (Ja, minus 9) autoCamFocusVobName:PC_HERO autocamPlayerMovable:TRUE autoCamUntriggerOnLastKey:TRUE autoCamUntriggerOnLastKeyDelay:0
Nicht alle Optionen müssen unbedingt so eingestellt werden, aber bei meinen Tests hat es zumindest so funktioniert.
Am wichtigesten sind totalTime:-9 und UntriggerOnLastKey:TRUE.
Jetzt hängt noch einen Cam Spline-Keyframe an die Kamera.
Seid vorsichtig mit weiteren Änderungen an der Kamera. Der Spacer war bei mir sehr absturzfreudig, vermutlich wegen dem totalTime:-9.
4. Jetzt zu den Skriptänderungen: Im Ordner [Gothic2]\\_work\\Dataßscripts\\content\\story\\Events erstellen wir eine Datei namens B_PermaTrigger.d. Inhalt:
func void Skript_Perma() { if (Spiel_geladen ==1) { Spiel_geladen =0; Wld_SendTrigger ("KAM_FIX_TEST"); //PrintScreen ("Kamera gefixt",-1,-1,"font_old_10_white.tga",4); }; //PrintScreen ("aktiv",0,0,"font_old_10_white.tga",3); };
In die Startup.d überschreiben wir die INIT_Global mit
func void INIT_GLOBAL() { // wird fuer jede Welt aufgerufen (vor INIT_<LevelName>) Wld_SendTrigger ("KAM_FIX_TEST"); Spiel_geladen =1; Game_InitGerman(); };
Anschließend deklarieren wir noch die Variable „Spiel_geladen“ in der Story_Globals.d .
5. Jetzt sind wir eigentlich fertig. Testet die Änderungen aber ausführlich und vergesst nicht die neuen Trigger und die Kamerafahrt in jede Welt zu setzen!
1. Bekannte Nachteile dieser Methode:
- Kurz nach dem Laden das Spiels bewegt sich die Kamera etwas.
- Nach dem Laden einer neuen Welt und aktivieren des Triggers im Startbereich, muss das Spiel gespeichert und geladen werden, damit der Fix wirkt.
2. Eventuell sind nicht alle Änderungen nötig und es gibt bestimmt bessere Wege das verzerrte Bild zu verhindern, aber ich bin mit dem Ergebnis erst mal zufrieden.
3. Wenn am Spielanfang ein Dialog startet, ist es besser, den Permatrigger erst nach dem Dialog zu starten z.B. so: Teleport direkt nach einem Dialog
4. Vergesst außerdem nicht, dass bei Breitbildauflösungen das Bild oben und unten abgeschnitten wird. Bei Kamerafahrten sollte also das wichtige immer in der Mitte des Bildes sein!
So, ich hoffe, dass ich nichts vergessen habe.
Bei Problemen könnt ihr mir im Forum einfach eine PN schreiben: http://forum.worldofplayers.de/forum/private.php?do=newpm&u=9073
Gruß,
davied