Ouya Konsole – ein erster Bericht

Ouya Mikroconsole
Ouya Mikroconsole

Längere Zeit kein Blogeintrag, es wird Zeit dies zu ändern.

Beim VSTBo vorige Woche hatten Janina und ich Gelegenheit, auf der Ouya Konsole von ZeHa mal probezuspielen. Ich fand die Idee einer Konsole unter Android schon immer recht reizvoll, zumal die Ouya eine für Entwickler offene Plattform darstellt.

Was ist eigentlich die Ouya? Die Ouya ist eine durch Crowdfunding finanzierte offene Spieleplattform auf Androidbasis, die nicht zuviel kosten soll. Der Launchpreis lag bei 99 US$. Grundsätzlich sind Softwaretitel für die Ouya frei herunterladbar zum ausprobieren und probespielen. Nach dem guten alten Sharewareprinzip können dann Features oder ganze Inhalte im Shop nachgekauft werden. (Mehr zur Ouya bei Wikipedia)

Das Gerät ist schön handlich, ein Würfel mit ca 8cm Kantenlänge. Angeschlossen wird die Konsole per HDMI, USB und Netzwerk stehen noch neben WLAN zur Verfügung. Eingeschaltet wird das Gerät auf Knopfdruck von oben. Die Konsole hat einen Lüfter, dieser ist hörbar, stört aber nicht. Der Stromverbrauch beträgt angeblich kaum mehr als 5 Watt im betrieb. Dies ist natürlich sehr schön.

Als Betriebssystem läuft Android 4.1 mit einer speziellen Ouyashell. Allermeistens bekommt der Benutzer Android nicht zusehen. Der Vorteil liegt darin, daß Spiele für Smartphones und Tablets so relativ einfach auf die Ouya portierbar sind und dadurch eine riesiges Softwareangebot entstehen könnte. (Stand heute is das leider noch nicht der Fall.)

USB Sticks können angeschlossen und benutzt werden, sofern diese mit FAT32 formatiert sind.

Die Controller liegen gut in der Hand, die Abdeckung zu den Batteriefächern sind etwas komisch und nicht leicht zu finden. Ähnlich den Controllern der XBox gibt es 2 analoge Sticks, ein D-Pad, 4 Feuertasten und 4 Schultertasten. Ouyaspezifisch gibt es ein kleines Touchpad und einen spezielle Ouyabutton, der Menüs aufruft. Angebunden werden die Controller kabellos per Bluetooth, leider dauert das Pairing manchmal etwas arg lange. Leuchtdioden zeigen an, ob der Controller aktiv ist und welche Nummer er hat.

Mir persönlich gefallen die Controller gut, sie liegen gut in der Hand, sind etwas größer als etwas Controller der Playstation und die Anzeige für das Pairing und die Controllernummer ist weniger klotzig als bei der Xbox. Leider klemmen die Tasten ab und an, wobei ich dort die Batteriefachabdeckungen im Verdacht habe.

Im Gegensatz zu herkömmlichen Konsolen gibt es keine Spiele mehr auf externen Speichermedien. Die Konsole wird über LAN oder WLAN mit dem Internet verbunden und anschließend Software aus dem Store heruntergeladen.

Um im Store Spiele installieren zu können, ist leider zwingend entweder eine Kreditkarte nötig, oder man kauft sich entsprechende Guthabenbons (z.B. bei www.game.co.uk, die auch Bezahlung per Paypal akzeptieren). Ich habe bislang zwar einen Code gekauft, aber musste noch nichts zwingend darüber bezahlen. Ein 10 oder 15$ Code reicht anfangs gut aus, Spiele kosten selten mehr als 1 oder 2$.

Spiele gibt es ca 200 von wechselnder Qualität. Darunter sind leider keine wirklich professionellen Titel. Wer solche sucht, macht um die Ouya lieber einen großen Bogen. Dafür gibt es jede Menge kleinerer sogenannter Indiegames, die kurzweilig sind und Spaß machen. Auch Retrospiele und eine gute Anzahl Emulatoren sind im Angebot.

Emulatoren gibt es für C64, MSX, Atari ST, Atari 2600, Sega Megadrive, NES, SNES, Gameboy und Gameboy Color, PC Engine, PSX und N64. Dadurch hat man zumindest auf einer kleinen Konsole am Fernseher geballten Konsolenpower, den man sonst erstmal aus dem Schrank schleppen muss. Alleine daher lohnt sich das Gerät sehr schnell!

Entwicklen kann man wohl für das Gerät entweder über diverse Frameworks, aber auch direkt in Java wie für Android üblich. Ausserdem gibt es wohl irgendwie einen Weg mit C und libSDL zu programmieren, mindestens der Emulator  atabee (Atari ST Emulator auf Basis von Hatari , yummy!) ist ein direkter Port vom PC in C mit libSDL.

Wie schon beim Wiz damals, reizt mich an der Plattform, potentiell selber dafür Spiele entwickeln zu können. Beim Wiz ist jaleider nicht mehr viel los, die Plattform ziemlich tot, aber eine kleine Konsole im Wohnzimmer ist natürlich etwas anderes.

Mein persönliches Fazit: Bei der Ouya ist viel Potential vorhanden, aber noch nicht ausgeschöpft, die vielen Emulatoren erlauben aber heute schon zumindest für Retrogamer wie mich ein sattes Spielvergnügen.

Mehr zur Ouya: http://ouya.tv/
Gutes Forum und News: http://ouya-gaming.de/

Neues Retrogaming Portal retro-zocker.de

retro-zocker.de

Unter http://retro-zocker.de/ gibt es eine neue Portalseite bzgl Retrogaming auf allen Systemen, Konsolen und Rechnern. Natürlich auch Atari und co., aber auch Playstation, Megadrive und ZX Spectrum. Also quasi alle Systeme, die ich da habe und sammele.

Seite und Forum sind deutschsprachig. Aktuell ist noch im Forum wenig los, vielleicht mag der eine oder andere ja auch mal reinschauen?

CMake Toolchaindefinition für GP2X Wiz

Ich hatte schon vor längerer Zeit eine Toolchaindefinition zur Verwendung des GP2X Wiz GNU Crosscompilers mit CMake geschrieben. Diese möchte ich natürlich öffentlich zugänglich machen.

Damit kann man Projekte, die CMake (Was ist CMake?) verwenden, einfacher für den GP2X Wiz übersetzen.

Verwendet wird die Toolchaindefinition mit CMake wie folgt:

cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain-GP2XWiz.cmake ..
cmake -DCMAKE_TOOLCHAIN_FILE=Toolchain-GP2XWiz.cmake <Pfad zur CMakeLists.txt>

Download

Die Tücken der Spieleportierung

Gestern habe ich wegen dem stürmisch schlechten Wetter, bei dem man ja kaum vor die Tür wollte, am Nachmittag ein wenig programmiert. Ziel sollte es sein, das alte Spiel Megadash, ursprünglich für den Atari ST in GFABASIC geschrieben, auf PC bzw den GP2X Wiz zu portieren.

Ansich ging das ganz gut, binnen 2 Stunden hatte ich die meisten notwendigen Teilmodule in C neugeschrieben, eine Umgebung mit Code::Blocks aufgesetzt, meine ParadizeLib eingebunden und generell auch zum Laufen gebracht.

Am Ende des vorigen Nachmittags hatte ich dann das Spiel mit allen Mechaniken am Laufen, wie die Steine fallen, etc. Nur das Timing habe ich irgendwie nicht 100% abgebildet bekommen. Stellen, die im Originalspiel zwar mit Tücken bestückt waren, aber spielbar waren, funktionieren in meinem Port irgendwie nicht mehr. Die Steine erschlagen den Spieler an Stellen, wo man im Originalspiel erfolgreich “um sein Leben” rennen konnte.

Ich habe verschiedene Timingparameter angepasst, aber keinen zufriedenenstellenden Zustand gefunden. Entweder ist es immer noch zu schwer, oder viel zu leicht und auch da nicht immer nachvollziehbar.

Mal sehen, ob der Fehler noch gefunden wird. Im Moment liegt es jedenfalls als begonnenes Projekt auf der Platte.

ParadizeLib – meine Abstraktionsschicht für die Abstraktionsschicht

Toller Titel, ich weiss ;)

Im Jahr 2009 habe ich mir ja eine Opensource Handheld, einen GP2X Wiz zugelegt. Natürlich wollte ich dafür auch programmieren. Mit Quadromania war auch irgendwann mein erstes Spiel in C fertig und auch schrittweise erweitert.

In Zuge dessen fiel mir dann auf, daß SDL nicht gleich SDL ist. Auch wenn man SDL benutzt, muss man leider gerade was Joystickabfrage angeht immer noch Softwareweichen vorsehen, je nach Target. Beim GP2X Wiz zum Beispiel ist der SDL Joystick zwar vorhanden, aber er bietet keinen Achsenevents, da er digital arbeitet. Also muss man im Code ummappen.

Irgendwann dachte ich dann über eine Abstraktionsschicht nach und die ParadizeLib war das Ergebnis. Hier wird grundlegendes Einstellen des Bildschirms über SDL, Einsammeln von Tastendrücken, Joystick und Mauseingabe auf plattformunabhängige Aufrufe gelegt. Das Benutzerprogramm benutzt nur die ParadizeLib, die dann sich danach richtet, ob für einen GP2X Wiz oder eben ein normales Linux compiliert wird.

Die ParadizeLib abstrahiert zum Beispiel einen Joystick mit 2 Achsen und bis zu 4 Tasten. Am PC kann das dann ein USB Gamepad sein, am GP2X Wiz ist es aber das Steuerkreuz und die zugehörigen Tasten.

Lange Rede, kurzer Sinn, das Projekt gammelte seit 2 Jahren auf meiner Platte rum, und ich dachte mir, bevor ich es vergesse, mache ich es lieber OpenSource und arbeite vielleicht daran ab und an weiter.

Ich habe hier eine kurze Seite eingerichtet, vgl. im Menu, aber das eigentlich Repository liegt bei Google Code und ist per Mercurial abrufbar. Die Projektseite lautet http://code.google.com/p/paradizelib/

Wer Spass daran hat, kann sich die Library ja mal ansehen und vielleicht weiter daran entwickeln. Ich stehe gerne für Diskussion zur Verfügung. Irgendwann schreibe ich auch hoffentlich mal ein Spiel, welches diese Library auch verwendet.

DOs and DO NOTs for developing Embedded Systems software

Zum Thema “Was sollte man tun und was nicht, wenn man Software für Embedded Systems entwirft und usitzt?”habe ich mal einen Artikel zusammegestellt. Dieser Artikel ist natürlich subjektiv, ich bin gerne bereit zu diskutieren. Die meisten Aspekte habe ich aber derweil schon aus verschiedenen Onlinequellen bestätigt bekommen.

http://www.final-memory.org/?page_id=2113

Im Prinzip habe ich dort mal zusammengefasst, was ich alles seit der Universität gelernt habe. Teile davon praktisch im Job, viele andere aber auch fortbildungsmäßig aus dem Netz. Im Vordergrund steht vorallem, fiese Fallen von faul programmierten C zu umgehen. Viele der Regeln und Vorschläge sind auch sprachunabhängig und können natürlich auch auf andere Programmiersprachen angewendet werden.

Ich selber habe viele dieser Regeln früher zum Beispiel nicht beherzigt. Wenn ich die Sourcen zu meiner Diplomarbeit ansehe, dann habe ich viele davon eklatant verletzt. Aber irgendwo will man ja auch einen Lerneffekt erkennen.

Als weitergehende Lektüre kann ich auch das “Embedded C Coding Standard” von Michael Barr empfehlen.

Irgendwann schreibe ich vielleicht auch noch einengrößeren zusammenhängenden Artikel oder auch ein kleines Buch. Die Liste kann sicherlich noch erweitert werden.

Hatari auf dem GP2X Wiz – der erste Sonnenschein

Seit ein paar Tagen versuche ich den Atari ST(e) Emulator Hatari (http://hatari.berlios.de/) auf den GP2X Wiz zu portieren.

Nach viel Rumprobieren, Fluchen, Aufregen und bösen Postings in die Mailingliste habe ich zumindest einen ersten Ansatz, der Wiz zeigt den Atari Desktop, den man per Touchscreen bemausen kann ;)

Hatari auf dem GP2X Wiz (erstes Mal der grüne Desktop)
Hatari auf dem GP2X Wiz (erstes Mal der grüne Desktop)



Ich hoffe soweit zukommen, daß man wenigstens Demos schauen und Spiele spielen kann, denen ein Joystick reicht.

Gepatcht habe ich bisher nur die Datei  screen.c und eine spezielle Konfigurationsdatei erstellt.

Mehr Richtung Wochenende! *Freude Freude Freude*

STay cool, STay Atari /|\

Welche Libs und Programme sind eigentlich auf dem Wiz installiert?

Obige Frage hat mich mal interessiert und ich habe mir dann ein kurzes Shellskript geschrieben, welches einige Informationen sammelt und diese in eine Textdatei schreibt. Mir geht es dabei vorallem um Elemente der installierten Linuxumgebung und nicht um die sichtbaren GP2X GUI Programme, wie den Flashplayer oder die Spiele.

Gesammelt werden folgende Informationen:

  • Kernelversion
  • Binaries in /usr/bin
  • Erkannte Shared Libraries
  • Erkannte C-headerfiles (von letzteren gibt es keine offiziellen auf dem NAND)

Die Ergebnisse findet ihr im angehängten File: wiz-information.tar.bz2