Schalter und Variablen im RPG Maker MV

Wenn man den RPG Maker MV nutzt wird man feststellen, dass im Event-Editor unter anderem die Begriffe Schalter, Variablen und Selbstschalter auftauchen. Gemeinsam ist diesen drei Konstrukten, dass in ihnen Daten gespeichert werden können. Je nach Anwendungszweck sollte man hier das am besten passende Konstrukt wählen. Grundsätzlich unterscheiden sich die drei Konstrukte in ihrem Gültigkeitsbereich. Schalter und Variablen gelten global und können aus jedem beliebigen Event heraus ausgelesen und verändert werden. Die Selbstschalter hingegen sind nur im Kontext des aktuellen Events gültig.

Der Event-Editor des RPG Maker MV

Neben dem Gültigkeitsbereich gibt es noch einen Unterschied in den Werten, welche Schalter und Variablen abbilden können. Schalter können nur zwei Werte (EIN und AUS) speichern. Sie sind damit mit einem boolean-Datentyp vergleichbar. Daneben gibt es Variablen; diese speichern eine Ganzzahl. Sie sind damit mit einem Integer-Datentyp zu vergleichen. Bei der Arbeit mit den globalen Schaltern und Variablen sollte darauf geachtet werden, das die Nutzung der jeweiligen Variablen dokumentiert wird, da diese leider nicht benannt werden können. Stattdessen besteht ihre Bezeichnung aus einer Nummer z.B. 0001.

Java und vorzeichenlose Typen

Zur Entwicklung von Anwendungen nutze ich im Normalfall die Programmiersprache C#. In dieser gibt es sogenannte Signed und Unsigned-Datentypen. Im Deutschen würde man dazu vorzeichenbehaftete und vorzeichenlose Typen sagen. Bei einem vorzeichenbehafteten Typ wird die Hälfte des Wertebereiches für die Darstellung negativer Zahlen und die andere Hälfte für die Darstellung positiver Zahlen genutzt. Dies führt allerdings dazu das man die Hälfte des positiven Wertebereiches einbüßt. So gibt es für den UInt32 und den Int32 unter C# bzw. der CLR folgende Wertebereiche:

UInt32    0 bis 4.294.967.295
Int32    −2.147.483.648 bis 2.147.483.647

An dieser Stelle spielen vorzeichenlose Datentypen ihre Stärke aus, da sie über einen größeren Wertebereich für positive Zahlen verfügen – bei gleichem Speicherverbrauch. So ist die Nutzung vorzeichenloser Datentypen immer dann interessant, wenn man größere positive Zahlen speichern möchte. Wenn man sich nun die Datentypen bei Java anschaut, so wird man feststellen, das es unter Java keine vorzeichenlosen Typen (mit der Ausnahme des 16 Bit großen Typs char) gibt. Möchte man nun z.B. die Werte von 0 bis 255 speichern, was bei der Verarbeitung von Daten aus bestimmten Dateiformaten vorkommt, müsste man in Java hierfür einen short (16 Bit) anstatt eines byte (8 Bit) nutzen, da selbst das byte unter Java vorzeichenbehaftet ist und nur den Bereich von -128 bis 127 abbilden kann. Möchte man diesen zusätzlichen Speicherplatz nicht hergeben, so gibt es auch unter Java eine Möglichkeit größere Werte in einem byte zu speichern:

byte unsigned = (byte)200;
int value = (int)unsigned^-256;

In der ersten Zeile wird die Zahl 200 gecastet und der Variable unsigned zugewiesen. Das Bitmuster in der Variable entspricht dann der Zahl 200. Da der Typ allerdings als vorzeichenbehaftet interpretiert wird, würde ein:

System.out.println(unsigned);

zur Ausgabe der Zahl -56 führen. Möchten wir den Wert der Variable vorzeichenlos ermitteln, muss eine XOR-Operation mit -256 ausgeführt werden, welche schließlich zum Ergebnis 200 führt.