Weitere Level Einstellungen in der Gameflow.lua
Wie wir in der Einführung zu Lua gelesen haben, hat ein Level die folgenden 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)
Erinnern wir uns:
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. Hinter dem Levelblocknamen (hier als Beispiel level1) folgen weitere Attrbiutte, die wir durch einen "." hinzufügen und zwischen Anführungszeichen setzen: |
1 Horizont
Um ein Horizont im Level zu sichtbar zu machen, benötigen wir folgenden Eintrag:
level1.horizon = true
Ansonsten gelten die gleichen Voreinstellungen im TombEditor wie früher, sprich ein Häkchen bei Sykbox unter den Room Options. Und die Decke mit einer transparenten Textur. Nachzulesen in diesem Tutorial.
Benutzen wir einen Horizont wie aus "Tomb Raider IV" oder "Tomb Raider - Die Chronik" können wir noch eine Farbe für den Himmel angeben:
level1.layer1 = Flow.SkyLayer.new(Color.new(0, 0, 0), 15)
(Color.new(0, 0, 0)
Hier legen wir die Farbe fest entsprechend den Standard RGB Werten. 0,0,0 wäre z.B. schwarz
(Color.new(0, 0, 0, 15)
Die vierte Zahl legt die Geschwindigkeit der Wolken fest.
Vernünftige Werte gehen hier von -16 bis +16.
Minuswerte lassen die Wolken von Osten nach Westen laufen, positive Werte von Westen nach Osten.
Seit der TEN Version 1.0.1 kann man nun auch eine zweite Layer haben.
level1.layer2 = Flow.SkyLayer.new(Color.new(0, 255, 0), -15)
Die Einstellungen zur Farbe und Geschwindigkeit gelten dabei wie bei layer1.
Anmerkung:
Der "colAddHorizon" Eintrag , damit ein Balken zwischen Horizont und Himmel verschwindet, wurde nicht übernommen. Es gibt dafür folgenden Workaround.
2 Regen und Schnee
Um Regen und Schnee im Level sichtbar zu machen, benötigen wir folgenden Einträge:
Seit Version 1.0.2 gibt es eine vereinfachtere Schreibweise:
level1.weather = WeatherType.Snow
Schnee
level1.weather = WeatherType.Rain
Regen
Zusätzlich jeweils die Stärke des Regens oder Schnees:
level1.weatherStrength = 1.0
Hier gehen Werte von 0.1 bis 1.
Beispiel für Regen:
Beispiel für Schnee:
Macht man keinen Eintrag, gibt es weder Regen noch Schnee.
Auch hier gelten die gleichen Voreinstellugen im Tomb Editor wie früher, sprich ein Häkchen bei Sykbox und Wind unter den Room Options. Und die Decke mit einer transparenten Textur.
3 Gewitter
Um einen Blitz am Himmel zu sehen und Donnergeräusche zu hören setzen wir folgenden Eintrag:
level1.storm = true
Anmerkung:
Natürlich muss dazu der Horizont und die Himmelsfarbe vorher aktiviert worden sein. (siehe oben)
4 Nebel
Um Distanznebel (nicht verwechseln mit der Fog Bulb) im Spiel zu sehen, fügen wir folgenden Eintrag unserem Level hinzu:
level1.fog = Flow.Fog.new(Color.new(0, 0, 0), 12, 20)
Color.new(0,0,0)
Hier legen wir die Farbe fest entsprechend den Standard RGB Werten. 0,0,0 wäre z.B. schwarz
Flow.Fog.new(Color.new(0, 0, 0), 0, 20)
Die beiden letzten Zahlen legen die Mindest- und die Maximalsichtweite fest, bei der der Nebel zu sehen ist. Hier im Beispiel Anfang bei 0 Block und Ende nach 20 Blöcken im Tomb Editor auch Squares genannt.
Anmerkung:
Man muss kein ForceVolumetricFX mehr deaktivieren, dieses gibt es auch in den Setupeinstellungen der Tomb Engine auch gar nicht mehr.
5 Sichtweite
Um die Sichtweite zu ändern, gibt es seit Version 1.0.1 folgenden Eintrag:
level1.farView = 20
Er bestimmt die Sichtweite in diesem Level in Blöcken (squares).
Anmerkung:
Seit Version 1.0.1 gibt es keine Beschränkung mehr von 127 Blöcken. Theoretisch gehen 1 - 1000 und mehr, könnte dann aber wohl Probleme beim Rendern geben, je nach PC Leistung.
6 Secrets
level1.secrets = 2
Seit Version 1.0.4 kann man nun eintragen, wieviele Secrets es pro Einzellevel zu finden gibt. Dies erscheint dann auch unter Statistics.
Ein Level Block mit den erweiterten Einträgen könnte also folgendermaßen aussehen:
level1 = Level.new()
level1.nameKey = "tombofdanger"
level1.scriptFile = "Scripts\\tombofdanger.lua"
level1.ambientTrack = "108"
level1.levelFile = "Data\\tombofdanger.ten"
level1.loadScreenFile = "Screens\\image.jpg"
level1.horizon = true
level1.layer1 = Flow.SkyLayer.new(Color.new(93, 93, 93), 15)
level1.layer2 = Flow.SkyLayer.new(Color.new(0, 255, 0), -15)
level1.weather = WeatherType.Rain
level1.weatherStrength = 1.0
level1.storm = true
level1.fog = Flow.Fog.new(Color.new(255, 0, 0), 1, 20)
level1.farView = 20
level1.secrets = 2
Flow.AddLevel (level1)
Display More