So erstellen Sie Szenarien in GearBlocks

Ein Szenario kann das Gameplay erweitern, indem es eine Herausforderung schafft, Mini Spiel, oder sogar ein ganz neuer Spielmodus. Hier erfahren Sie, wie Sie mit der Herstellung Ihres eigenen Produkts beginnen können.

Einführung

Im Gegensatz zu Open End “Kreativmodus” abspielen, Ein Szenario ist strukturierter. Möglicherweise müssen Ziele erreicht werden, eine begrenzte Teileauswahl oder Werkzeugverfügbarkeit, oder andere Einschränkungen.

Das mitgelieferte Tutorial, Bausatz, und zeitgesteuerte Rundenszenarien wurden alle auf diese Weise erstellt, und sind Beispiele dafür, was Sie mit dem System alles machen können.

Ein Szenario besteht normalerweise aus einer gespeicherten Szene, zusammen mit einem Lua-Skript, das geladen wird, wenn das Szenario startet (Es konfiguriert das Spiel und implementiert das Szenarioverhalten).

NOTIZ: Das in diesem Leitfaden gezeigte Beispielszenario ist im Workshop verfügbar, suchen nach “EinBeispielSzenario”.

Die Szene

Der erste Schritt beim Erstellen eines Szenarios besteht darin, eine Szene einzurichten.

In dem KREATIV Panel, drücke den “Neue leere Szene” Taste, Wähle eine Karte (und konfigurieren Sie Umgebungseinstellungen, wenn Sie möchten), und klicken Sie dann auf die Schaltfläche „Abspielen“..

Wenn Sie möchten, dass Ihr Szenario mit einer leeren Szene beginnt, dann bist du schon fertig, Sie können es so speichern. Jedoch, Oftmals muss ein Szenario mit einigen bereits erzeugten Konstruktionen beginnen.

Zum Beispiel, Hier haben wir einen Gabelstapler, ein grünes Fass auf einer Palette, und ein Flaschenkontrollpunkt:

Es gibt auch einen kreisförmigen Plattenteil, der a darstellt “Goldmünze”, Dies wird eine Vorlage für einige Belohnungen sein, die wir im Szenarioskript erzeugen werden:

Versuchen Sie nun, eine Szene einzurichten, die in etwa wie die hier gezeigte aussieht.

Sobald Ihre Szene fertig ist, Geben Sie die ein SZENE SPEICHERN Bildschirm. Gib ihm einen Namen, Beschreibung, und hinzufügen “Szenario” als Tag, Klicken Sie dann auf die Schaltfläche Speichern:

NOTIZ: Sie müssen den Speicherort mit markieren “Szenario”, damit es von dort geladen werden kann SZENARIO BEGINNEN Bildschirm später.

Szenen-IDs

Für ein Szenario Lua-Skript zur Manipulation von Teilen oder Konstruktionen in der Szene, es muss in der Lage sein, sie zu identifizieren. Jedes Teil und jede Konstruktion verfügt über eine eindeutige Szenen-ID, die hierfür verwendet werden kann.

Um die IDs von Objekten in der Szene herauszufinden, das inklusive “PartInspect” Skript-Mod kann verwendet werden. Laden Sie es von SCRIPT-MODS Bildschirm, unter dem “Integrierte Beispiele” Tab.

Wenn Sie auf ein Teil in der Szene zielen, wird die ID des Bauwerks angezeigt, zu dem es gehört:

Notieren Sie sich die ID-Nummern des Gabelstaplers, Fass, Kontrollpunkt, und “Goldmünzenbelohnung” Konstruktionen in Ihrer Szene.

NOTIZ: Beachten Sie unbedingt die Bau-IDs, keine Teile-IDs!

Das Szenario-Skript

Navigieren Sie zu %USERPROFILE%AppDataLocalLowSmashHammer GamesGearBlocksSavedScenes, und suchen Sie den Ordner Ihrer gespeicherten Szene (z.B. EinBeispielSzenario). In diesem Ordner, Erstellen Sie eine leere Textdatei und benennen Sie sie Szenario.lua:

Beim Laden einer Szene aus dem SZENARIO BEGINNEN Bildschirm, Das Spiel wird automatisch geladen Szenario.lua wenn es es findet.

Bearbeiten Sie die Szenario.lua Datei, und geben Sie den folgenden Lua-Code ein:

-- IDs von Konstruktionen in der gespeicherten Szene:
lokaler PrüfpunktConstructionID = <id kommt hierher>
lokale BarrelConstructionID = <id kommt hierher>
lokale BelohnungTemplateConstructionID = <id kommt hierher>
lokaler GabelstaplerConstructionID = <id kommt hierher>

local checkpointPosition = Vector3.Zero
local rewardTemplatePart = nil

local isGoalAchieved = false

WICHTIG: Anstelle von jedem <id kommt hierher>, Ersetzen Sie die entsprechende Bau-ID-Nummer, die Sie zuvor notiert haben.

Nächste, Fügen Sie die folgenden Funktionen hinzu, Sie deaktivieren Tools und andere Funktionen, und erstellen Sie die Benutzeroberfläche. Wir werden diese während der Initialisierung aufrufen:

lokale Funktion „disableFeatures“.()
	-- Legen Sie Variablen fest, um Spielfunktionen zu deaktivieren.
	NoBuilderTool.Value = true
	NoMaterialTool.Value = true
	NoLinkerTool.Value = true
	NoPainterTool.Value = true
	NoGrabberTool.Value = true
	NoSceneTool.Value = true
	NoPartSpawnDestroy.Value = true
	NoConstructionSaveLoad.Value = true
	NoSceneSave.Value = true
end

local function initUI()
	-- Erstellen Sie ein UI-Fenster.
	Win = Windows.CreateWindow()
	Win.SetAlignment( align_RightEdge, 20, 300 )
	Win.SetAlignment( align_TopEdge, 80, 200 )
	Win.Title = 'FORKLIFT CHALLENGE'
	Win.Show( WAHR )
	Win.IsCloseable = false

	-- Fügen Sie eine Textbeschriftung hinzu.
	Label = Win.CreateLabel()
	Label.SetAlignment( align_HorizEdges, 10, 10 )
	Label.SetAlignment( align_VertEdges, 10, 10 )
	Label.FontSize = 30
	Label.Alignment = textAnc_MiddleCenter
	Label.Text = "Benutzen Sie den Gabelstapler, um das Fass in die Zielzone zu bringen ..."
Ende

Dann, Fügen Sie den folgenden Codeblock hinzu:

lokale Funktion onRewardConstructionSpawned( Konstruktion )
	-- Entfrieren Sie den erzeugten Teil.
	ConstructionOps.SetConstructionFrozen( Bau.ID, FALSCH )
end

local function spawnRewards( numParts )
	-- Fügen Sie dem ConstructionSpawned-Ereignis einen Handler hinzu.
	-- Dies wird vom Spiel erhöht, wenn ein Bauwerk entsteht.
	ConstructionSpawned.Handler.add( onRewardConstructionSpawned )

	-- Teil-Spawnen vorübergehend aktivieren.
	NoPartSpawnDestroy.Value = false

	-- Erzeuge die Belohnung "Goldmünze" Teile, indem Sie sie aus der Vorlage duplizieren.
	if rewardTemplatePart then
		for i = 1, numParts tun es
			-- Ein zufälliger Ort in der Nähe des Kontrollpunkts.
			lokale spawnPosition = checkpointPosition + Vector3.__neu( math.zufällig() * 5 - 2.5, math.zufällig() * 2 + 2, math.zufällig() * 5 - 2.5 )
			lokale spawnOrientation = Quaternion.Euler( math.zufällig() * 360, math.zufällig() * 360, math.zufällig() * 360 )

			-- Erzeuge das Duplikatteil.
			PopConstructions.DuplicatePart( BelohnungTemplatePart.ID, spawnPosition, spawnOrientation )
		end
	end

	-- Deaktivieren Sie das Spawnen von Teilen wieder.
	NoPartSpawnDestroy.Value = true

	-- Räumen Sie auf, indem Sie unseren ConstructionSpawned-Ereignishandler entfernen.
	ConstructionSpawned.Handler.remove( onRewardConstructionSpawned )
Ende

Das spawnRewards( numParts ) Die Funktion erzeugt eine Reihe von Belohnungsteilen an zufälligen Orten, by duplicating them from the template part. We’ll call this function when the player achieves the goal.

Nächste, add the following to your Lua script:

local function onConstructionEnteredCheckpoint( Konstruktion )
	-- Check if the construction that entered the checkpoint is the barrel.
	-- Wenn ja, then the goal was achieved.
	if not isGoalAchieved and (construction.ID == barrelConstructionID) then
		Label.Text = "<color=yellow>Gut gemacht, have some gold coins!</Farbe>"
		spawnRewards( 10 )
		isGoalAchieved = true
	end
end

local function initScene()
	-- Start by making all constructions in the scene non-targetable.
	for construction in Constructions.Instances do
		ConstructionOps.SetConstructionTargetable( Bau.ID, FALSCH )
	Ende

	-- Then make the forklift targetable so the player can get in and drive it.
	ConstructionOps.SetConstructionTargetable( forkliftConstructionID, WAHR )

	local checkpointConstruction = Constructions.GetInstance( checkpointConstructionID )
	lokaler checkpointPart = checkpointConstruction.GetPart( 0 )

	-- Zwischenspeichern der Weltposition des Kontrollpunktteils zur späteren Verwendung.
	checkpointPosition = checkpointPart.Position

	-- Fügen Sie dem OnConstructionEntered-Ereignis des Prüfpunktverhaltens einen Handler hinzu.
	-- Dies wird immer dann erhöht, wenn ein Bauwerk den Kontrollpunkt betritt.
	for behaviour in checkpointPart.Behaviours do
		if behaviour.Name == 'Checkpoint' then
			behaviour.OnConstructionEntered.add( onConstructionEnteredCheckpoint )
			break
		end
	end

	-- Cache die Belohnung "Goldmünze" Vorlagenteil zur späteren Verwendung.
	lokale BelohnungTemplateConstruction = Constructions.GetInstance( BelohnungTemplateConstructionID )
	BelohnungTemplatePart = BelohnungTemplateConstruction.GetPart( 0 )

	-- Verschieben Sie den Schablonenteil 1 km unter die Erde, damit der Spieler es nicht sieht!
	ConstructionOps.FreezeConstructionAtGround( BelohnungTemplateConstruction.ID, Vector3.__neu( 0, -1000, 0 ) )
Ende

Das initScene() Die Funktion stellt sicher, dass nur der Gabelstapler vom Spieler anvisiert werden kann, speichert einige Variablen zur späteren Verwendung zwischen, und richtet einen Kontrollpunkt ein OnConstructionEntered Ereignishandler.

In dem onConstructionEnteredCheckpoint( Konstruktion ) Ereignishandler, wenn das Fass den Kontrollpunkt betreten hat, dann ist das Ziel erreicht und wir bringen die Belohnungen hervor.

Endlich, Fügen Sie diesen letzten Codeblock hinzu:

----- Game-Event-Handler -----

-- Das GameReady-Ereignis wird vom Spiel ausgelöst, wenn die Szene beendet ist
-- Wird geladen (d.h. die Karte und alle darin gespeicherten Konstruktionen).
-- Hier fügen wir diesem Ereignis einen Handler hinzu, Darin initialisieren wir alles für das Szenario.
lokale Funktion onGameReady()
	Funktionen deaktivieren()
	initUI()
	initScene()
end
GameReady.Handler.add( onGameReady )

----- Eingabefunktionen -----

-- Aufräumen() wird vom Spiel aufgerufen, wenn das Skript entladen wird.
Funktion Bereinigung()
	Windows.DestroyWindow( Gewinnen )

	-- Stellen Sie sicher, dass Sie unseren GameReady-Ereignishandler entfernen.
	GameReady.Handler.remove( onGameReady )
Ende

Das onGameReady() Der Event-Handler ruft unsere Initialisierungsfunktionen auf, wenn das Spiel spielbereit ist. Der Code in Aufräumen() stellt sicher, dass wir ordentlich aufräumen, wenn der Spieler das Szenario verlässt.

Speichern Sie Ihr Skript und schon können Sie das Szenario ausprobieren!

Spielen Sie Ihr Szenario

Geben Sie nun die ein SZENARIO BEGINNEN Bildschirm, und unter dem “Lokal gespeichert” Tab, Sie sollten Ihr Szenario finden:

Versuchen Sie es zu spielen…

Und prüfen Sie, ob Sie über die nötigen Fähigkeiten als Gabelstapler verfügen…

Um die Belohnung zu bekommen…

OK, Das war nicht gerade eine schwierige Herausforderung, aber hoffentlich gibt es Ihnen eine Vorstellung von den Möglichkeiten!

Mehr Informationen

Dieser Leitfaden kratzt nur an der Oberfläche dessen, was mit Szenarien möglich ist.

Um mehr zu lernen, Die integrierten Szenarien sind eine gute Referenz, Sie finden sie hier: C:\Programmdateien (x86)\SteamsteamappscommonGearBlocksGearBlocks_DataStreamingAssetsScenes.

Wenn Sie versuchen möchten, sie zu ändern, Kopieren Sie sie in Ihr lokales Verzeichnis Gespeicherte Szenen Ordner zuerst!

Endlich, Hier ist die vollständige Dokumentation für GearBlocks Lua-Skripting-API. Dies wird sich im Laufe der Zeit weiterentwickeln, wenn ich weitere Features und Funktionen in der API verfügbar mache, Setzen Sie also ein Lesezeichen für zukünftige Referenzzwecke!

Dieser Leitfaden über GearBlocks wurde geschrieben von Gefahr726. Von hier aus können Sie die Originalveröffentlichung besuchen Verknüpfung. Wenn Sie Bedenken bezüglich dieses Leitfadens haben, Bitte zögern Sie nicht, uns zu erreichen hier.

Über den Autor