Angetestet: Futuro Cube

Um an den Erfolg des Rubik's Zauberwürfel anzuknüpfen, hat das Unternehmen Princip eine offene Plattform zur Entwicklung von Videospielen mit dem Namen Rubik's Futuro Cube entwickelt.

In Pocket speichern vorlesen Druckansicht
Ein elektronischer Rubiks Cube mit LEDs
Lesezeit: 11 Min.
Von
  • Maik Schmidt
Inhaltsverzeichnis

Als Videospiel-Konsolen und Heim-Computer noch nicht in beinahe jedem Haushalt zu finden waren, vertrieben Schüler sich in den Pausen die Zeit gern mit Rubik's Zauberwürfel. Das tschechische Unternehmen Princip, das eigentlich Dienste zum Fahrzeugflotten-Management anbietet, möchte an den Erfolg des Spielzeugs anknüpfen und hat eine elektronische Variante mit dem Namen Rubik's Futuro Cube entwickelt. Allerdings simuliert das Gerät keinen Zauberwürfel, sondern ist eine offene Plattform zur Entwicklung von Videospielen.

Mit dem Futuro-Cube sind auch Gesellschaftsspiele möglich.

Ein Futuro-Cube hat eine Kantenlänge von 52mm und wiegt 125 Gramm. Im Innern werkelt eine Cortex-M3-MCU mit bis zu 72 MHz und 64 KByte RAM. Programme werden in 384 KByte Flash-Speicher abgelegt und für Ressourcen, wie zum Beispiel Audio-Dateien, stehen weitere 128 MByte NAND-Flash zur Verfügung.

Als Ausgabemedien dienen 54 RGB-LEDs und eine Sound-Einheit mit vier digitalen Kanälen. Eingaben erfolgen über die berührungsempfindliche Oberfläche oder mittels des integrierten 3-Achsen-Beschleunigungssensors. Darüber hinaus können die Würfel über eine proprietäre Funkverbindung miteinander kommunizieren. Neue Firmware und Spiele werden über einen Micro-USB-Port eingespielt und über diesen Anschluss wird auch der Akku des Futuro-Cubes geladen. Die Hardware ist genügsam und so hält der Akku im Vollbetrieb bis zu acht Stunden.

Aus dem Make-Testlabor

Die Make-Redaktion probiert viel mehr aus, als ins alle zwei Monate erscheinende Heft passt. Deshalb veröffentlichen wir auf unserer Webseite in loser Folge weitere Testberichte.

Der Futuro-Cube wird in einem schlichten Pappkarton geliefert, der neben dem Würfel eine kurze Anleitung und ein knapp 11 cm kurzes USB-Kabel enthält. Optisch macht das mattschwarze Klötzchen nicht viel her. Zum Start lässt man seinen Arm mit dem Würfel in der Hand kreisen. Anschliessend erscheinen Würfel-Symbole in verschiedenen Farben. Durch Drehen und Wenden kann man damit zwischen den einprogrammierten Spielen navigieren. Zusätzlich gibt eine Stimme in englischer oder tschechischer Sprache Auskunft über den Namen des Spiels oder eine kurze Einleitung. Weitere Sprachen sollen zu einem späteren Zeitpunkt folgen. Die Lautstärke bzw. die Toneffekte lassen sich am Würfel über das Menü ausschalten. Für kleine Kinder ist das Spielzeug durch seine komplexe Bedienung und die kryptische Anzeige nicht geeignet. Laut Hersteller ist es erst für Jugendliche ab 14 Jahren geeignet.

Beim ersten Start begrüßt der Würfel den Benutzer mit einem Tutorial, das die wichtigsten Bedien-Gesten in Form kleiner Spielchen erklärt. Zumeist geht es um das Drehen des Würfels und um das richtige Antippen der Würfelseiten. Der Würfel erkennt übrigens nur, ob eine Seite berührt wurde. Die genaue Position der Berührung erkennt er nicht. Manchmal muss man den Cube auf die richtige Art und Weise kreisen lassen, um eine bestimmte Aktion auszuführen. Allzu schwierig ist das alles nicht, will aber doch gelernt sein.

Auf der Webseite gibt es momentan elf Spiele, drei davon in einer zusätzlichen Multiplayer-Fassung. In der aktuellen Firmware sind diese Spiele bereits enthalten und müssen nicht separat heruntergeladen werden. Der Futuro-Cube eignet sich in erster Linie für Puzzle- und Geschicklichkeitsspiele wie zum Beispiel Gomoku ("Fünf gewinnt") oder das altbekannte Snake. Es gibt aber auch Musikspiele und eine Tetris-Variante. Zu den meisten Titeln gibt es auf der Webseite kurze Videos. Die Umsetzung der Spiele ist durchaus gelungen, allerdings macht der Ausflug in die dritte Dimension meist die Beschränkungen der Hardware nicht wett.

Wer möchte, kann auch eigene Spiele und Anwendungen für den Cube programmieren. Dafür steht Entwicklern das offizielle SDK kostenlos zur Verfügung. Hauptbestandteil des SDK ist eine Anwendung namens Rubik's Futuro Cube Suite. Sie ist sowohl für Windows, OS X und inzwischen auch für Linux verfügbar und dient in erster Linie zur Aktualisierung der Firmware. Über das Menü View > SDK Mode lässt sich aber ein erweiterter Modus freischalten, der einen Shell-Zugriff auf den Cube ermöglicht und auch einen Compiler für eigene Skripte bereitstellt.

Für die Programmierung unter Linux sind noch einige Python- und i386-Pakete nötig, sowie einige Einstellungen zur Rechtefreigabe. Dazu wird ein Benutzer der dialout-Gruppe hinzugefügt:

sudo usermod -aG dialout <username>

Danach ist eine erneute Ab- und Anmeldungen ans System notwendig:

sudo apt-get install python python-imaging
sudo apt-get install python-serial
sudo apt-get install python-wxgtk2.8
sudo apt-get install ia32-lib

Nun wird eine udev-Regel erstellt:

sudo sh -c 'echo SUBSYSTEM==\"tty\",
ATTRS{idVendor}==\"0483\",
ATTRS{idProduct}==\"a0a2\",
ENV{ID_MM_CANDIDATE}=\"0\"
> /etc/udev/rules.d/95-futurocube.rules'

Anschliessend kann man die Anwendung mit der Eingabe ./rubriks-futuro-cube starten.

Die Shell bietet eine umfangreiche Sammlung von Kommandos, mit denen man unter anderem Sounds abspielen und die RGB-LEDs des Cubes steuern kann. Darüber hinaus gibt es jede Menge Befehle, zur Verwaltung des Cubes und seiner Prozesse. Beispielsweise kann man sich mit dem appinfo-Kommando einen Überblick über die Speichernutzung verschaffen:

$>appinfo
Application info:

Flash size: 393216 bytes, available: 8% (20480 bytes)
Bootloader size: 40960 bytes
Application size: 249856 bytes
Script area size: 30720 bytes, start at 0x0804E800, end at 0x08055FFF
MyCube Script area size: 10240 bytes, start at 0x0804C000, end at 0x0804E7FF
Variables size: 40960 bytes
BootKey data size: 256 bytes.
NoInit data size: 2048 bytes.
Init data size: 3116 bytes.
UnInit data size: 59763 bytes.
RAM used: 65187/65536 bytes, 99% used.
RAM bootkey starts at: 0x20000000
RAM noinit starts at: 0x20000100
RAM init starts at: 0x20000900
RAM uninit starts: 0x20001530 bytes
RAM free for stack: 349 bytes
sdata: 0x20000900
edata: 0x2000152c
etext: 0x803c3d4
sbss: 0x20001530
ebss: 0x2000fea3

Der Befehl dir listet alle gespeicherten Audio-Dateien auf und mit dem play-Kommando kann man eine Audio-Datei im Hintergrund abspielen. Der Befehl q unterbricht die Sound-Ausgabe. Für den Shell-Zugriff ist die offizielle Suite nicht notwendig, denn die Cubes werden unter Windows, Mac OS X und Linux als serielle Geräte eingebunden (für Windows ist zusätzlich die Installation eines Treibers notwendig).

Man kann sich mit einem seriellen Monitor wie zum Beispiel screen oder PuTTY direkt mit einem Cube verbinden:

$ screen /dev/tty.usbmodem24321
echoon
$>pleds 4 3 255
__OK__

In der obigen Session wird zuerst das Kommando echoon an den Cube gesendet. Es muss blind getippt werden, denn ohne dieses Kommando sind die Ausgaben des Cubes erst einmal nicht zu sehen. Anschließend werden mit dem pleds-Befehl alle LEDs der Oberseite des Würfels auf weiß gesetzt. Die Shell unterstützt keine Skript-Programmierung. Trotzdem lässt sich mit den Bordmitteln schon einiges anstellen. Beispielsweise kann man den Cube leicht als audiovisuellen Alarm für eingehende E-Mails einsetzen.

Auch die Daten aller Sensoren sendet der Cube auf Wunsch kontinuierlich über die serielle Schnittstelle. Dazu ist lediglich das Kommando motion abzusetzen. Die Ausgabe der Daten erfolgt ähnlich wie bei GPS-Empfängern als komma-separierte Liste von Werten:

$MOT,-003,-249,0000,4,4,00,1,-,-,-,-,-*46
$MOT,-004,-250,-002,4,4,00,1,-,-,-,-,-*56
$MOT,-003,-250,-002,4,4,00,1,-,-,-,-,-*51
...

Auf dem eigenen Futuro-Cube-Channel auf Youtube sind einige Lernvideos zur Programmierung des Würfels verfügbar.

Mehr Freiheiten als die Shell bietet die Programmierung des Cubes in der Programmiersprache PAWN. PAWN ist eine untypisierte Sprache, die sich aufgrund ihres geringen Resssourcen-Bedarfs gut für eingebettete Systeme eignet. Ihre Syntax ähnelt der von C.

PAWN-Skripte lassen sich mit jedem Text-Editor erstellen und dann mit der Futuro Cube Suite übersetzen und auf dem Cube installieren. Ein triviales Beispiel sieht wie folgt aus:

#include <futurocube>

main()
{
SetColor(cORANGE)
DrawSquare(GetCursor())
PrintCanvas()
printf("Hello, world!\r\n")
}

Dieses Skript färbt die aktive Seite des Cubes orange und gibt den Text "Hello, world!" auf der Konsole aus. Genau wie in C bildet die Funktion main den Einstiegspunkt ins Programm und genau wie in C lassen sich mit der #include-Anweisung weitere Dateien einbinden. Dabei enden diese Dateien nicht auf .h sondern auf .inc. PAWN-Programme haben per Konvention die Extension .p.

Die Datei futurocube.inc ist Bestandteil des SDK und definiert alle Funktionen, die in der API zur Verfügung stehen. Ein PDF-Dokument erklärt in recht abenteuerlichem Englisch die Programmierung des Cubes und beschreibt auch kurz alle Funktionen der API.

Noch steckt das Projekt in den Kinderschuhen und so gibt es beispielsweise noch keine Funktionen, die die Funkeinheit der Cubes unterstützen. Diese sollen aber in Kürze nachgeliefert werden. Alle anderen Eigenschaften werden bereits unterstützt und so färbt das folgende Programm alle Seiten des Würfels kontinuierlich in wechselnden Farben ein:

#include <futurocube>

main()
{
new i
new j

for (;;)
{
if (++i >= 256)
i = 0

for (j = 0; j < 6; j++)
{
SetRgbColor(i + j*16,
64 + i + j * 32,
128 + i + j * 65)

DrawSide( _w( j, 0))
}

PrintCanvas
Sleep
}
}

Bei der Sound-Ausgabe müssen Entwickler sich momentan mit den knapp 300 mitgelieferten Samples begnügen. Es soll demnächst aber auch die Möglichkeit geben, eigene Audio-Dateien auf den Cube zu laden.

Beim Entwurf des SDK und der Cube-Firmware haben sich die Entwickler durchaus Gedanken gemacht. So lassen sich PAWN-Skripte zum Beispiel an Ereignisse knüpfen. Solche Ereignisse werden unter anderem ausgelöst, wenn der Cube geladen wird oder die Beschleunigungssensoren bestimmte Bewegungen erkennen. Auch lassen sich die Cubes mit PAWN-Skripten personalisieren. Endet ein Skriptname auf .mycube.p, wird das Skript immer dann ausgeführt, wenn das Hauptmenü aufgerufen wird.

Rubik's Zauberwürfel reloaded.

Ob der Futuro-Cube das Zeug zu einer erfolgreichen Videospiel-Konsole hat, dürfte stark von der Kreativität der Entwickler und der Anzahl der verfügbaren Spiele abhängen. Einen App-Store hat der Hersteller nicht geplant, will aber in Kürze ein Forum eröffnen, in dem Programmierer ihre Eigenentwicklungen vorstellen können. Das SDK ist konzeptionell ausgereift und auch die Implementierung ist auf einem guten Weg, so dass die Entwicklung eigener Software leicht vonstatten geht. Die größte Hürde für den Erfolg dürfte allerdings der happige Preis von 88,60 Euro sein. (ogo) (ogo)