Seit der Version 2023.4.0.84 vom 2. Mai 2023 gibt es im GameMaker Studio 2 eine neue, wichtige Funktion: Template Strings. Das Prinzip ist sehr einfach zu verstehen und kann einem das Leben sehr erleichtern.
Was sind Template Strings?
In der Programmierung bezeichnet der Begriff „Template Strings” eine Technik zur Erstellung von Zeichenketten (Strings), die es ermöglicht, Variablen oder Ausdrücke innerhalb des Textes einzufügen. Template Strings werden auch als „String Interpolation” oder „String Templating” bezeichnet.
Im Gegensatz zu herkömmlichen Zeichenketten, bei denen Variablen oder Ausdrücke durch Konkatenation mit dem Text verbunden werden, erlauben Template Strings die direkte Einbettung von Variablen innerhalb eines Textes. Dies erleichtert die Lesbarkeit und Wartbarkeit des Codes, da die Einbettung von Variablen und Ausdrücken direkt im Text erfolgt, anstatt mehrere Zeichenketten mit den Werten zu verbinden.
Konkretes Beispiel
1 2 | name = „Bytegame.de"; tmpStr = $"Willkommen auf {name}!"; |
Wenn wir das im Draw-Event ausgeben, sieht das so aus:
1 | draw_text(32, 32, tmpStr); |
Okay, mit so einem String mag der Vorteil nicht einleuchten, also schieben wir ein zweites Beispiel nach.
1 2 | age = get_integer("Wie alt bist Du?", 1); tmpStr = $"Du bist {age} Jahre alt."; |
Hier erhalten wir per get_integer()
das Alter des Spielers und geben es wieder aus. Um es direkt mit der alten Methode zu vergleichen:
1 2 | tmpStr = „Du bist „ + string(age) + „ Jahre alt."; // alte Methode tmpStr = $"Du bist {age} Jahre alt."; // neue Methode |
Vorteile
Die Variante mit Template Strings ist nicht nur wesentlich kürzer, sondern weniger fehleranfällig. Wie oft habt ihr schon bei solchen Konstrukten die Leerzeichen vor und nach der Variable vergessen? Genau! Wichtig bei Template Strings in GML ist das Dollarzeichen, damit GameMaker auch weiß, dass man hier einen Template String einbinden will, weil es sonst “Du bist {age} Jahre alt.” ausgibt.
Das Dollarzeichen muss vor dem ersten Anführungsstrich kommen und nicht – wie in manch anderen Programmiersprachen – vor der geschweiften Klammer. So wäre es falsch:
1 | tmpStr = „Du bist ${age} Jahre alt."; |
Das hat Vor- und Nachteile. Der Vorteil ist: Wenn man mehrere solcher Variablen hat, muss man das Dollarzeichen nur einmal schreiben. Der Nachteil ist, dass man geschweifte Klammern innerhalb des Textes mit einer Variable extra kennzeichnen muss, wenn man sie als Code anzeigen will. Das macht man mit einem \
.
1 | tmpStr = $"Du bist {age} Jahre alt und heißt \{name}."; |
Wenn der Spieler beim Alter 18 eingibt, steht auf dem Bildschirm: Du bist 18 Jahre alt und heißt {name}.
Verwendung
In der Spieleentwicklung gibt es so viele Anwendungsbeispiele, dass man sich fragt, warum dieses Feature erst jetzt eingebaut wurde.
Beim Debugging von Spielen ist es oft erforderlich, Informationen über den Spielzustand oder Fehlermeldungen auszugeben. Template Strings ermöglichen es, Variablenwerte in die Log-Nachrichten einzufügen, um sie aussagekräftiger zu machen.
Bei der Erstellung von Benutzeroberflächen für Spiele müssen häufig Textelemente dynamisch aktualisiert werden. Template Strings können verwendet werden, um Texte mit Variablenwerten zu erstellen, die in der Benutzeroberfläche angezeigt werden.
In Spielen, die für verschiedene Sprachen lokalisiert werden sollen, können sie verwendet werden, um Texte dynamisch einzufügen, die je nach Sprache unterschiedlich sein können. Anstelle statischer Texte können Platzhalter in den Template Strings verwendet werden, die zur Laufzeit mit den entsprechenden übersetzten Texten ersetzt werden.
Beim Laden von Assets, wie z. B. Bildern oder Audio-Dateien, kann die Verwendung hilfreich sein, um dynamische Pfad- oder Dateinamen zu erstellen. Dies ermöglicht die effiziente Handhabung einer großen Anzahl von Assets.
Viel Spaß bei der Verwendung von Template Strings!
Weiterführende Links
Mehrfache Sortierung von Arrays
Spielplangenerator für den Ligamodus
FPS Messungen im GameMaker