Einführung LUA Dateien
Die TEN Engine kommt mit der Programmiersprache LUA. Das bedeutet, dass das gewohnte Scripting, so wie wir es vom alten Level Editor her gewohnt waren, entfällt. Auch ist TEN nicht kompatibel mit der TRNG Engine und ihren Script Befehlen.
Statt einer script.txt und einer English.txt finden wir nun folgende Dateien mit der Endung ".lua" im Scripts Ordner der TEN Engine. Wir sehen diese übrigens, auch wenn wir im neuen TombIDE bei einem neuen TEN Project das Scripting Studio öffnen.
Wichtig:
Änderungen und neue Einträge in den Lua Dateien können wir einfach speichern und dann unser Level starten.. Man muss nicht mehr aus einer ".txt" Datei eine ".dat" Datei konvertieren.
1 Überblick über die einzelnen LUA Dateien
EventSequence: Dieses EventSequence Modul wird benötigt, um in der Level Lua Datei eine EventSequence setzen zu können.
Gameflow: Diese ist mit der script.txt vergleichbar, hier kann man neue Level hinzufügen und Eigenschaften im Level festlegen, wie Hintergrund Audio Track, Name des Levels, Ladebild usw.
Settings: Beinhaltet einige Einstellungsmöglichkeiten über Fehlerdokumentation und spezielle Moves von Lara wie Crouchroll usw. (befindet sich noch in Entwicklung).
Strings: Diese ist mit der English.txt vergleichbar. Hier befinden die Namen der Inventargegenstände, der Level usw. Auch neue Textzeilen, die man im Spiel einblenden kann.
Timer: Dieses Timer Modul wird benötigt, um in der Level Lua Datei einen Timer setzen zu können.
Util: Diese Datei, enthält einen Code mit einigen Funktionen, die das LUA Scripten einfacher machen.
Anmerkung:
Zusätzlich gibt es noch Lua Dateien, die man für jedes Level und die Title anlegt, hier im Beispiel TestLevel.lua und Title.lua.
2 Gameflow.lua
Schauen wir uns die Gameflow.lua Datei etwas genauer an. Hier können wir wie bei der alten script.txt Datei unsere Level verwalten, neue hinzufügen oder Eigenschaften für unsere Level hinzufügen.
Die Gameflow.lua lässt sich in 3 Blöcke einteilen:
erster Block: Festlegung allgemeiner Systemdateien und Grundeinstellungen für alle Level wie z.B. die generelle Sichtweite.
Title Block: Eintragungen für das Title Level (dieses sieht man beim Start des Levels).
Level Block : Eintragungen für ein Level. (für mehrere Level erstellt man hier mehrere Level Blöcke)
3 Hinzufügen eines neuen Levels
Um ein neues Level in der Gameflow.lua hinzuzufügen, benötigen wir diese Grundeinträge:
level1 = Level.new()
level1.nameKey = "tombofdanger"
level1.scriptFile = "Scripts\\tombofdanger.lua"
level1.ambientTrack = "108"
level1.levelFile = "Data\\tombofdanger.ten"
level1.loadScreenFile = "Screens\\image.jpg"
Flow.AddLevel (level1)
level1
Um Einträge der verschiedenen Level unterscheiden zu können, vergeben wir für jeden neuen Levelblock einen Namen. Man kann zur Vereinfachung z.B. wie hier im Beispiel Level1, Level2 nehmen.
Für jedes Level benötigen wir noch diese 2 Standardeinträge, die sich nach umserem vergebenen Namen im Levelblock richten und sich je am Anfang und am Ende unseres Levelblocks befinden:
Anfang des Levelbocks:
level1 = Level.new()
Ende des Levelblocks:
Flow.AddLevel (level1)
Hinter dem Levelblocknamen (hier als Beispiel level1) folgen weitere Standard Attribute, die wir durch einen "." hinzufügen und zwischen Anführungszeichen setzen:
Level1.namekey=
Diesen Namen muss man auch in der Strings.lua hinzufügen. (siehe Kapitel Hinzufügen eines Levels in der Strings.lua)
Level1.scriptfile=
Hier verweisen wir auf den Namen der Lua Datei, die jedes Level haben muss und die man neu erstellt. (siehe "Anlegen einer neuen Lua Datei für das neue Level)"
Level1.ambientTrack=
Hier legen wir die Hintergrundmusik fest, die beim Starten des Level als Loop läuft. Standardmäßig im Engine/Audio Ordner.
Level1.levelFile=
Das ist der Name der Level Datei, die sich standardmäßig im Engine/Data Ordner befindet.
Anmerkung:
Die Endung von den neuen Tomb Engine Leveln ist ".ten" und nicht mehr ".tr4".
Level1.loadScreenFile=
HIer verweisen wir auf das Bild, welches beim Laden des Levels geladen wird. Standardmäßig im Engine/Screens Ordner.
Anmerkung:
Es gibt noch weitere Attribute wie ".horizon", ".fog", ".layer1" usw. Diese werden in einem weiteren Tutorial erklärt.
3.1 Hinzufügen eines Levelnamens in der Strings.lua
Nun müssen wir noch den Levelnamen, den wir unter "level1.namekey=" vergeben haben, in der Strings.lua eintragen.
Hierzu öffnen wir die Strings.lua im TOMBIDE und kopieren am besten die Struktur eines vorherigen Strings und setzen ihn am besten am Ende des Strings ein, allergins vor TEN.Flow.SetStrings(strings)
Hinter der geschweiften Klammer des vorletzten Strings dürfen wir nicht vergessen ein Komma zu setzen.
Nun vergeben wir zunächst den Namen, den wir auch bei "level1.namekey=" vergeben haben, hier als Beispiel "tombofdanger".
Die anderen "" sind Platzhalter für die verschiedenen Sprachen, in die erste "" Zeile setzen wir als hier als Beispiel "Tomb of Danger" für Englisch. Diese wird dann auch bei der Auswahl der Levels im Spiel erscheinen.
Anmerkung:
Leider weiß ich noch nicht, ob der TombIDE nun andere Sprachen als Englisch unterstützt. Auf jeden Fall ist man auf der sicheren Seite, wenn man jeweils die "" Zeile für Englisch nimmt.
3.2 Anlegen einer neuen Lua Datei für das neue Level
Nun müssen wir noch eine neue Lua Datei mit dem Namen anlegen , den wir unter "Level1.scriptfile=" vergeben haben.
In TombIDE gehen wir dazu rechts in den FileExplorer im Scripting Studio und erstellen eine neue .lua Datei.
Anmerkung:
Wichtig ist bei File Format ".LUA (Lua file)" auszuwählen.
In die leere .Lua datei setzen wir noch folgenden Code:
LevelFuncs.OnLoad = function() end
LevelFuncs.OnSave = function() end
LevelFuncs.OnStart = function() end
LevelFuncs.OnControlPhase = function() end
LevelFuncs.OnEnd = function() end
Anmerkung:
Später können wir in diese Datei noch Funktionen setzen, bestehend aus Programmiercode, die wir mit den neuen Volume Triggern verbinden können, um damit Ereignisse, Bedingungen, Aktionen usw. in diesem Level auszulösen.
Nun sollte alles für unser neues Level funktionieren. Natürlich müssen wir dieses erst im TombEdtior mit einer ".prj2" Datei anlegen und unter Level Settings die richtigen Zuweisungen machen. Dies habe ich im ersten Tutorial über die TEN Engine erklärt.