De/Level Transition (Portal 2): Difference between revisions

From Valve Developer Community
< De
Jump to navigation Jump to search
No edit summary
No edit summary
Line 4: Line 4:


=Coop=
=Coop=
Hier ist ein Weg um Test-Raum-Sequenzen für Coop-Kapmagnen zu erstellen.
Dies ist eine Anleitung, wie eine Serie von Testräumen für Coop-Kapmagnen erstellt werden können.


==Erstelle deine Map==
==Erstelle deine Map==


Um zu beginnen [[Creating a Portal 2 Coop Map|Erstelle eine Coop-Map]]. Nun füge eine [[func_instance]] hinzu und ändere die VMF Datei zu instances/coop/coop_lighting_ents.vmf. (Das einzige was wir in ihr verwenden ist [[point_servercommand]].)
Um zu beginnen, [[Creating a Portal 2 Coop Map|Erstelle eine Coop-Map]]. Nun füge eine [[func_instance]] hinzu und ändere die VMF-Datei zu instances/coop/coop_lighting_ents.vmf. Wir verwenden lediglich das [[point_servercommand]] daraus.


==Modifiziertes Endlevel==
==Modifiziertes Endlevel==


Die Ende-des-Levels Einheit befindet sich in der instances/coop/coop_endlevel_room.vmf Instanz und beinhaltet die Funktion, die Map zu beenden.
Die Funktion, die das Level beendet, befindet sich in der instances/coop/coop_endlevel_room.vmf-Instance. Lade diese Instance in Hammer und speichere eine Kopie davon, zum Beispiel als my_coop_endlevel_room.vmf.
   
   
In einem kleinen Raum in dieser Map findest Du ein [[logic_script]] genannt transition_script. (Du kannst den Find Entities Befehl nutzen um es auszuwählen.Du wirst sehen, dass seine Entity Scripts Eigenschaft auf debug_scripts/mp_coop_transition_list.nut gestellt ist.
In einem kleinen Raum in dieser Instance findest Du ein [[logic_script]] namens transition_script. Du kannst den Find-Entities-Befehl benutzen, um es auszuwählen. Du wirst sehen, dass die Entity-Scripts-Eigenschaft auf debug_scripts/mp_coop_transition_list.nut gestellt ist.


'''Verändere um GlaDOS Willen nicht diese Datei!''' Sie ist ein wichtiger Teil von Portal 2. Verändere stattdessen die Entity-Scripts-Eigenschaft, um auf Dein eigenes Script zu verweisen – zum Beispiel debug_scripts/my_mp_coop_transition_list.nut. Jetzt speichere die Instance.


 
Gehe zurück zu deinem Coop-Level, wähle die func_instance aus, die deinen Endlevel-Raum beinhaltet, und ändere die VMF-Datei, um auf deine modifizierte Version zu verweisen. In diesem Beispiel also  my_coop_endlevel_room.vmf.
'''Verändere nicht diese Datei!'''  Sie ist Teil von Portal 2 und Du willst sie in GLaDOS Namen nicht anfassen.  Verändere stattdessen die Entity Scripts Eigenschaft um auf eine Map deiner Wahl zu verweisen-- z.B. debug_scripts/my_mp_coop_transition_list.nut.  Jetzt speichere die Map.
 
Gehe zurück zu deinem Coop Level, wähle die func_instance aus, die deinen Endlevel Raum beinhaltet, und editiere die VMF Datei um auf deine modifizierte Version zu verweisen.


==Modifiziertes Script==
==Modifiziertes Script==
Gehe jetzt zu scripts/vscripts/debugscripts in der Portal 2 Installation und erstelle dieses Script. (Erneut, verändere in GLaDOS Namen nicht das Valve Script.)  Alles was Du wirklich brauchst sieht so aus:  
Gehe jetzt zu scripts/vscripts/debugscripts in Deinem \Portal 2\Portal2-Odner und erstelle das Script, in diesem Beispiel also my_mp_coop_transition_list.nut (Noch einmal: Verändere um GLaDOS Willen nicht das Original-Valve-Script!). Was Du in diesem neuen Script brauchst, ist so etwas:


<source lang="text">
<source lang="text">
Line 69: Line 67:
</source>
</source>


Das obere Feld, MapPlayOrder, ist deine geordnete Map-Liste. (Für diejenigen unter Euch die mit der Programmiersprache Squirrel nicht vertraut sind, beachtet bitte, dass jede map in Anführungszeichen gesetzt wird und es muss ein Komma ''zwischen'' jede map gesetzt werden. Die letzte map bekommt kein Komma...  und vergesst nicht die letzte eckige Klammer!)
Das obere Feld, MapPlayOrder, ist eine Liste Deiner Maps in der richtigen Reihenfolge. Für diejenigen unter Euch, die mit der Programmiersprache Squirrel nicht vertraut sind: Beachtet bitte, dass jede Map in Anführungszeichen gesetzt und ein Komma ''zwischen'' jede Map gesetzt werden muss. Die letzte Map bekommt kein Komma. Vergesst nicht die abschließende eckige Klammer!


Um nach deiner Map zur Lobby zu kommen, füge "mp_coop_lobby_2" als letzte map in der Liste hinzu (MapPlayOrder).
Um nach Deiner Map zurück zur Lobby zu kommen, füge "mp_coop_lobby_2" als letzte Map in der Liste hinzu (MapPlayOrder).


==Testen==
==Testen==
Erstelle deine coop maps und nutze deinen modifizierten Endlevel Raum anstelle des vorgegebenen. Compiliere sie alle.
Erstelle deine Coop-Maps und nutze deinen modifizierten Endlevel-Raum anstelle des vorgegebenen. Kompiliere alle Maps.


Jetzt kannst Du [[Testing Portal 2 Co-Op Maps Alone|deine maps testen]]. Lade einfach die erste Map und spiel sie. Wenn Du an ihrem Ende angelangt bist, wird Portal 2 zur nächsten map wechseln. Sobald Du am Ende der Liste angekommen bist wirst Du einfach zum Hauptmenü zurückkehren.
Jetzt kannst Du [[Testing Portal 2 Co-Op Maps Alone|Deine Maps testen]]. Lade einfach die erste Map und spiele sie. Wenn Du an ihrem Ende angelangt bist, wird Portal 2 zur nächsten Map wechseln. Sobald Du am Ende der Liste angekommen bist, wirst Du einfach zum Hauptmenü zurückkehren.


(Diese Methode kann erweitert werden um eine Vernetzung wie im Spiel zu erstellen. Schau dir mp_coop_transition_list.nut an für Inspirationen.)
Diese Methode kann erweitert werden, um ein Hub-Level wie im Spiel zu erstellen. Schau dir mp_coop_transition_list.nut für Inspirationen an.


=Einzelspielermodus=
=Einzelspielermodus=
Der Einzelspielermodus ist ähnlich.
Das Prozedere für den Einzelspielermodus ist ähnlich.


==Modifizierter Übergangs Manager==
==Modifizierter Übergangs Manager==


Im Einzelspielermodus befindet sich die Ende-des-Levels Einheit in der [[func_instance]] arrival_departure_transition_ents.vmf im maps/instances/transitions Ordner. Lade diese map in Hammer und '''speicher sie unter einem anderen Namen''', wie zum Beispiel my_arrival_departure_transition_ents.vmf.
Im Einzelspielermodus befindet sich die Funktion, die das Level beendet, in der [[func_instance]] arrival_departure_transition_ents.vmf im maps/instances/transitions-Ordner. Lade diese Instance in Hammer und '''speichere sie unter einem anderen Namen''', zum Beispiel my_arrival_departure_transition_ents.vmf.


Innerhalb dieser Einheit, befindet sich im kleinsten Raum ein [[logic_script]] genannt @transition_Script. Die Script Einheit Eigenschaften (Script Entity Properties) dieses Scripts verweisen auf transitions/sp_transition_list.nut.
In dieser Instance befindet sich im kleinsten Raum ein [[logic_script]] namens @transition_Script. Die Script-Entity-Eigenschaften dieses Scripts verweisen auf transitions/sp_transition_list.nut.


'''Verändere nicht diese Datei! (...GLaDOS)'''. Verweis bitte stattdessen auf eine von dir erstellte Kopie z.B. transitions/my_sp_transition_list.nut.
'''Verändere nicht diese Datei! (...GLaDOS)'''. Verweise stattdessen auf eine von dir erstellte Kopie, zum Beispiel transitions/my_sp_transition_list.nut.


Während Du schon hier bist, kannst Du optional den [[game_text]] genannt @end_of_playtest_text ändern um eine Textzeile nach dem Ende der letzten Map anzuzeigen.  Ändere dafür einfach die Message Text Eigenschaften.
Wenn Du schon hier bist, kannst Du optional auch den [[game_text]] namens @end_of_playtest_text ändern, um eine Textzeile nach dem Ende der letzten Map anzuzeigen.  Ändere dafür in den Eigenschaften einfach den Message Text.


Speicher deine modifizierte VMF Datei.
Speichere diese modifizierte VMF Datei.


==Modifiziertes Script==
==Modifiziertes Script==
Es passiert viel im Script, selbstverständlich wäre eine einfachere Version ausreichend für eine simple Serie von Testräumen. Da Du dich aber entschlossen hast, nicht den easy way zu gehen, ist hier das Minimum, das Du tun musst.
Es passiert viel in diesem Script, zweifellos wäre eine einfachere Version ausreichend für eine simple Serie von Testräumen. Es gibt aber ein Minimum, das Du tun musst.
 


Geh in die Liste der Maps und suche nach "demo_paint", der letzten map in der datei. Füge deine Maps dahinter ein. (Bedenke, map-Namen werde in Anführungszeichen gesetzt und haben ein Komma danach, ''außer'' bei der letzten map. Und vergess nicht die eckige Klammer am Ende.)
Geh in die Liste der Maps und suche nach "demo_paint", der letzten Map in der Datei. Füge deine Maps dahinter ein. (Bedenke: Map-Namen werden in Anführungszeichen gesetzt und es folgt nach jeder Map ein Komma ''außer'' bei der letzten Map. Und vergiss nicht die eckige Klammer am Ende.)


Das Resultat sollte wie folgt aussehen:
Das Resultat sollte wie folgt aussehen:
Line 119: Line 116:
</source>
</source>


Die tatsächliche Einheit (Logic) um maps zu wechseln befindet sich in TransitionFromMap. Um Portal 2 nach dem Anzeigen des End-Txtes zum Hauptmenü wechslen zu lassen, such nach diesen Zeilen:
Die tatsächliche Funktion, um Maps zu wechseln, befindet sich unter TransitionFromMap. Um Portal 2 nach dem Anzeigen des End-Textes zum Hauptmenü wechseln zu lassen, such nach diesen Zeilen:


<source lang="text">
<source lang="text">
Line 126: Line 123:
</source>
</source>


und füge diese Zeile nach diesen ein:
und füge danach diese Zeile ein:
<source lang="text">
<source lang="text">
EntFire( "@command", "Command", "disconnect", 2.0 )
EntFire( "@command", "Command", "disconnect", 2.0 )
</source>
</source>


Speicher deine Datei. (Achtung, speichere deine modifizierte Kopie dieser .nut file-- Überschreibe nicht die Valve Datei in GLaDOS Namen!)
Speichere Deine Datei. Achtung: Speichere Deine modifizierte Kopie dieser .nut-Datei, in diesem Beispiel also my_sp_transition_list.nut. Überschreibe nicht die Valve-Datei!


==Compiliere und... Teste==
==Kompiliere und teste==
Erstelle und compiliere deine zusätzlichen maps. Jetzt kannst Du zurück zu deiner ersten map gehen und sie von Hammer aus starten; Portal 2 wird laden und deine erste öffnen. Wenn Du am Ende angekommen bist, wird Portal 2 deine nächste Map vom Script laden und zum Hauptmenü wechseln nachdem alle geschafft sind.  
Erstelle und kompiliere deine zusätzlichen Maps. Jetzt kannst Du zurück zu deiner ersten Map gehen und sie von Hammer aus starten; Portal 2 wird laden und diese erste Map öffnen. Wenn Du am Ende angekommen bist, wird Portal 2 deine nächste Map vom Script laden und zum Hauptmenü wechseln, nachdem alle geschafft sind.  




[[Category:Portal 2 Tutorials]]
[[Category:Portal 2 Tutorials]]

Revision as of 08:55, 24 May 2012

Template:Otherlang2

Coop

Dies ist eine Anleitung, wie eine Serie von Testräumen für Coop-Kapmagnen erstellt werden können.

Erstelle deine Map

Um zu beginnen, Erstelle eine Coop-Map. Nun füge eine func_instance hinzu und ändere die VMF-Datei zu instances/coop/coop_lighting_ents.vmf. Wir verwenden lediglich das point_servercommand daraus.

Modifiziertes Endlevel

Die Funktion, die das Level beendet, befindet sich in der instances/coop/coop_endlevel_room.vmf-Instance. Lade diese Instance in Hammer und speichere eine Kopie davon, zum Beispiel als my_coop_endlevel_room.vmf.

In einem kleinen Raum in dieser Instance findest Du ein logic_script namens transition_script. Du kannst den Find-Entities-Befehl benutzen, um es auszuwählen. Du wirst sehen, dass die Entity-Scripts-Eigenschaft auf debug_scripts/mp_coop_transition_list.nut gestellt ist.

Verändere um GlaDOS Willen nicht diese Datei! Sie ist ein wichtiger Teil von Portal 2. Verändere stattdessen die Entity-Scripts-Eigenschaft, um auf Dein eigenes Script zu verweisen – zum Beispiel debug_scripts/my_mp_coop_transition_list.nut. Jetzt speichere die Instance.

Gehe zurück zu deinem Coop-Level, wähle die func_instance aus, die deinen Endlevel-Raum beinhaltet, und ändere die VMF-Datei, um auf deine modifizierte Version zu verweisen. In diesem Beispiel also my_coop_endlevel_room.vmf.

Modifiziertes Script

Gehe jetzt zu scripts/vscripts/debugscripts in Deinem \Portal 2\Portal2-Odner und erstelle das Script, in diesem Beispiel also my_mp_coop_transition_list.nut (Noch einmal: Verändere um GLaDOS Willen nicht das Original-Valve-Script!). Was Du in diesem neuen Script brauchst, ist so etwas:

// Map order
MapPlayOrder<- [
"mp_coop_easiest",
"mp_coop_easiest_two"
]

function TransitionFromMap()
{	
	local nextmap = -2
	
	// Loop through maps
	foreach( index, map in MapPlayOrder )
	{
		if( GetMapName() == MapPlayOrder[index] )
		{
			// This is the map we're on
			nextmap = -1
		}
		else 
		{
			if (nextmap == -1)
			{
				// This is the first map past that one
				nextmap = index
			}
		}
	}
		
	printl( "nextmap = " + nextmap )
		
	if (nextmap > 0)
	{
		// We found a map; go to it
		EntFire( "@command", "command", "changelevel " + MapPlayOrder[nextmap], 1.0 )
	}
	else
	{
		// No map found; we're done
		EntFire( "@command", "command", "disconnect", 2.0 )
	}
}

Das obere Feld, MapPlayOrder, ist eine Liste Deiner Maps in der richtigen Reihenfolge. Für diejenigen unter Euch, die mit der Programmiersprache Squirrel nicht vertraut sind: Beachtet bitte, dass jede Map in Anführungszeichen gesetzt und ein Komma zwischen jede Map gesetzt werden muss. Die letzte Map bekommt kein Komma. Vergesst nicht die abschließende eckige Klammer!

Um nach Deiner Map zurück zur Lobby zu kommen, füge "mp_coop_lobby_2" als letzte Map in der Liste hinzu (MapPlayOrder).

Testen

Erstelle deine Coop-Maps und nutze deinen modifizierten Endlevel-Raum anstelle des vorgegebenen. Kompiliere alle Maps.

Jetzt kannst Du Deine Maps testen. Lade einfach die erste Map und spiele sie. Wenn Du an ihrem Ende angelangt bist, wird Portal 2 zur nächsten Map wechseln. Sobald Du am Ende der Liste angekommen bist, wirst Du einfach zum Hauptmenü zurückkehren.

Diese Methode kann erweitert werden, um ein Hub-Level wie im Spiel zu erstellen. Schau dir mp_coop_transition_list.nut für Inspirationen an.

Einzelspielermodus

Das Prozedere für den Einzelspielermodus ist ähnlich.

Modifizierter Übergangs Manager

Im Einzelspielermodus befindet sich die Funktion, die das Level beendet, in der func_instance arrival_departure_transition_ents.vmf im maps/instances/transitions-Ordner. Lade diese Instance in Hammer und speichere sie unter einem anderen Namen, zum Beispiel my_arrival_departure_transition_ents.vmf.

In dieser Instance befindet sich im kleinsten Raum ein logic_script namens @transition_Script. Die Script-Entity-Eigenschaften dieses Scripts verweisen auf transitions/sp_transition_list.nut.

Verändere nicht diese Datei! (...GLaDOS). Verweise stattdessen auf eine von dir erstellte Kopie, zum Beispiel transitions/my_sp_transition_list.nut.

Wenn Du schon hier bist, kannst Du optional auch den game_text namens @end_of_playtest_text ändern, um eine Textzeile nach dem Ende der letzten Map anzuzeigen. Ändere dafür in den Eigenschaften einfach den Message Text.

Speichere diese modifizierte VMF Datei.

Modifiziertes Script

Es passiert viel in diesem Script, zweifellos wäre eine einfachere Version ausreichend für eine simple Serie von Testräumen. Es gibt aber ein Minimum, das Du tun musst.

Geh in die Liste der Maps und suche nach "demo_paint", der letzten Map in der Datei. Füge deine Maps dahinter ein. (Bedenke: Map-Namen werden in Anführungszeichen gesetzt und es folgt nach jeder Map ein Komma außer bei der letzten Map. Und vergiss nicht die eckige Klammer am Ende.)

Das Resultat sollte wie folgt aussehen:

// ---------------------------------------------------
// 	Demo files
// ---------------------------------------------------
"demo_intro",
"demo_underground",
"demo_paint",

// ---------------------------------------------------
// 	Your title
// ---------------------------------------------------
"your_first_level",
"your_second_level"
]

Die tatsächliche Funktion, um Maps zu wechseln, befindet sich unter TransitionFromMap. Um Portal 2 nach dem Anzeigen des End-Textes zum Hauptmenü wechseln zu lassen, such nach diesen Zeilen:

		EntFire( "end_of_playtest_text", "display", 0 )
		EntFire( "@end_of_playtest_text", "display", 0 )

und füge danach diese Zeile ein:

		EntFire( "@command", "Command", "disconnect", 2.0 )

Speichere Deine Datei. Achtung: Speichere Deine modifizierte Kopie dieser .nut-Datei, in diesem Beispiel also my_sp_transition_list.nut. Überschreibe nicht die Valve-Datei!

Kompiliere und teste

Erstelle und kompiliere deine zusätzlichen Maps. Jetzt kannst Du zurück zu deiner ersten Map gehen und sie von Hammer aus starten; Portal 2 wird laden und diese erste Map öffnen. Wenn Du am Ende angekommen bist, wird Portal 2 deine nächste Map vom Script laden und zum Hauptmenü wechseln, nachdem alle geschafft sind.