StartTutorialsGame MakerBitmap-Fonts im GameMaker

Bitmap-Fonts im GameMaker

  • 2 Monaten her
  • 3Minuten

Ist ist sehr einfach, in GameMaker eine Schriftart zu laden und damit zu arbeiten. Doch es ist nicht immer das, was man will. Klassische Bitmap-Fonts sehen stylischer aus, vor allem, wenn mehr Retro-Feeling aufkommen soll.

Was sind Bitmap-Fonts?

Normalerweise arbeiten wir mit gewöhnlichen Schriftarten, die das Betriebssystem geladen hat. Diese stellen wir auf unsere Bedürfnisse ein (Größe, Zeichen) und können sie mit draw_set_font() laden.

Bitmap-Fonts sind Grafiken, auf denen sich die Zeichen der Schrift befinden. Sie wurden vor allem in den 1980er und 1990er Jahren eingesetzt. Jeder kann somit eine eigene Schriftart pixeln und sie für sein Spiel nutzen. Für dieses Tutorial habe ich eine Schrift von einer C64-Seite genutzt.

C64 Bitmap Font
C64 Bitmap Font

Dort kann man die benötigte Schrift auswählen. Es gibt aber zwei Einschränkungen:

  1. Man kann nur die Buchstaben a bis z wählen. Keine Sonderzeichen, Umlaute, Satzzeichen oder Zahlen.
  2. Wir benötigen ein Bitmap-Bild mit einer Schrift mit fester Breite. Solche Schriften nennt man auch Mono-Spaced-Schriften.

Auf anderen Seiten, etwa GitHub, findet man noch viele andere Schriften, oder man pixelt selbst. Bspw. wäre es auch denkbar, in Blender eine 3D-Schrift zu erstellen, mit der man arbeitet.

Wichtig: Die nachfolgende Funktion stellt ein Grundgerüst dar. Je nach Schriftart und zusätzlichen Zeichen muss nachgebessert werden.

Schrift einladen

Egal wie wir es anstellen, am Ende brauchen wir eine Schrift, am besten als PNG oder GIF (siehe oben). Diese importieren wir als Import Strip Image. Dann müssen wir nur noch die richtigen Einstellungen finden.

font import
Schrift importieren

Das funktioniert natürlich auch mit Schriften, deren Buchstaben nicht alle in einer Reihe sind.

Die Funktion

Die Funktion ist relativ kurz und wir können einige Parameter einstellen. So lässt sich die Schrift bspw. skalieren sowie Farbe und Alpha-Wert ändern. letPos ist dabei die Zeichenposition pro Zeile.

Die Funktion besteht aus einer for-Schleife, die drei Zustände bearbeitet:

  1. Zeilenumbrüche
  2. Leerzeichen
  3. Normaler Text

Zentral ist die Variable char. Mit string_byte_at(text, i) – 97 wird dem dem aktuellen Textzeichen ein Wert zugewiesen, der zwischen 0 und 25 liegen sollte (a bis z). Wenn der Wert -87 hat, ist es ein Zeilenumbruch, den wir im Text mit \n erzeugen. Wird dieser erkannt, setzen wir xx auf xStart zurück, yy wandert eine Zeile runter, letPos wird auf -1 gesetzt, da es nach der Addition ganz unten wieder auf 0 stehen muss.

Der Wert -65 entspricht einem Leerzeichen. Wenn das aktuelle Zeichen kein Leerzeichen ist, wird der Sprite mit dem Subimage char gezeichnet. Wenn es ein Leerzeichen ist, wird es übersprungen und der Abstand ergibt sich über letPos.

Eigentlich ziemlich simpel.

Mit weiteren Zeichen lässt es sich so (oder besser durch eine Switch) erweitern:

Das kommt direkt nach der Zeile mit string_byte_at. Dann könnte der Text so aussehen:

font3
Bitmap Font mit weiteren Zeichen.

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

Neueste Kommentare

NEWS

PDF

Artikel als PDF

0
Alle ByteGame-Artikel können nun bequem als PDF-Datei heruntergeladen werden. Diese Funktion wurde eingebaut, um vor allem längere Texte ausdrucken oder zumindest offline lesen zu...
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...
0
Would love your thoughts, please comment.x