Inhaltsverzeichnis

Breitbildauflösung

Gothic 2 ohne verzerrtes Bild bei Breidbildauflösungen

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!

Anmerkungen

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