StartTutorialsGame MakerSkripte für Textformatierung

Skripte für Textformatierung

  • 1 Monat her
  • 3Minuten

Für Aufgaben, die immer wieder anfallen, schreibt man in GML Skripte. Das ist äußerst praktisch und spart viel Arbeit. Mittlerweile kann man sogar mehrere Funktionen in ein Skript stecken, was die Übersicht erhöht. Da Textformatierungen in fast allen Spielen vorkommen, zeige ich hier meine drei am häufigsten verwendeten Funktionen, die ich immer wieder (aktuell GMS 2.3) anpasse.

Texte formatieren

Texte kommen in fast allen Spielen vor. Manchmal nur für Menüs, oft aber für Spielebeschreibungen, Statistiken, Dialoge etc. Dabei kann es sich bei Texten auch um Zahlen handeln. Im Grunde geht es um alles, was wir normalerweise mit draw_text() an den Spieler weitergeben.

Diese Texte wollen schön formatiert sein. GML bietet uns bereits einige Möglichkeiten. Wir können Schriften definieren, Farben, horizontale und vertikale Ausrichtung sowie Transparenz. Aber drei wichtige Formatierungen müssen wir selbst vornehmen:

  • Text mit Schatten
  • Text mit Umrandung
  • Text, der an einer bestimmten Pixel-Breite umgebrochen wird

Genau darum kümmern wir uns in diesem Tutorial. Die Skripte kannst Du natürlich individuell anpassen.

Ursprung der Skripte

Die nachfolgenden Skripte sind nicht von mir. Schatten und Umrandung verwende ich schon ewig und passe sie an die jeweilige GMS-Version an, sofern sich etwas in GML ändert. Wo der Ursprung dieser Skripte liegt, kann ich leider nicht mehr sagen.

Das Skript draw_text_limit_width() kommt ursprünglich von gmlscripts.com. Eine tolle Seite, aber die Skripte sind, soweit ich gesehen habe, schon etwas veraltet.

Anpassungen an GMS 2.3

Wer die Version 2.3 von GameMaker Studio verwendet, kann die Skripte sofort verwenden. Im Vergleich zu älteren Versionen habe ich die Argumente geändert und eine ausführliche Beschreibung hinzugefügt. Dadurch taucht automatisch in der unteren Hilfe-Zeile das passende Argument auf. Es fühlt sich also an, als würde man eine normale GML-Funktion aufrufen.

Außerdem ist der ganze Code ausführlich kommentiert, weswegen ich auf weitere Erklärungen verzichte. Sollte es dennoch Fragen geben, könnt ihr diese gerne als Kommentar hinterlassen.

Im Titelbild sieht man übrigens alle drei Skripte im Einsatz.

draw_text_shadow()

draw_text_outline()

draw_text_limit_width()

Dieses Skript sollte man nicht im Draw-Event verwenden! Am besten im Create-Event, etwa so:

Die Schrift müssen wir schon hier definieren, damit das Skript die Breite berechnen kann. Anschließend kann die Variable txt im Draw-Event verwendet werden. Bspw so:

Hat Dir dieser Artikel gefallen? Dann würden wir uns sehr über Unterstützung freuen.

Sven Gramatke
Sven Gramatke//www.gravitationart.com/
Schreibt gelegentlich Artikel. Schwerpunkte sind Gamedesign, Programmierung (GML, PHP und JS), Retro und Berichte.
Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments

NEWS

Revision 2022

Revision 2022 – Eine Satellitenveranstaltung

0
Wer zu Ostern noch nichts vor hat, sollte über einen Besuch der Revision nachdenken. Diese Demoszene-Party startet am Karfreitag, den 15. April und endet...
news logo 696x400

Revorix Update 1.9

1
Revorix hat ein neues Update bekommen: Patch 1.9 Hauptfeature sind Ressourcen-Events mit der Möglichkeit wechselnde Ressourcen spenden zu können gegen noch zu enthüllende Überraschungen. Außerdem...
news logo 696x400

Godot 3.4.2 veröffentlicht

0
Kurz nach Version 3.4.1 wurde schon 3.4.2 der Spieleengine veröffentlicht. Grund für das schnelle Update war ein Fehler. Bein Rendering unter macOS konnte es...
news logo 696x400

CRYENGINE 5.7 Roadmap enthüllt

0
Nach langer Wartezeit wurde nun die Roadmap für die CRYENGINE 5.7 enthüllt. Crytek räumt dabei interne Schwierigkeiten ein. Intern sind wir bei der Entwicklung auf...
manasoup

Tolle Projekte in der Manasoup-Gamejam

0
Die Manasoup-GameJam ist zu Ende und es gibt viele tolle, unglaubliche Spiele, die man kostenfrei runterladen und spielen kann. Herzlichen Glückwunsch an die Gewinner -...
0
Would love your thoughts, please comment.x
()
x