Windows 8.1 Metro Apps – ein erstes Kennenlernen

Windows 8 habe ich irgendwie komplett ausgelassen. Klar, mal installiert, ein wenig herumgeklickt, aber so wirklich warmgeworden eher nicht und dann schnell zurückgekehrt zu meinem vertrauten Windows 7 bzw. Mac OS und Ubuntu.

Jetzt mit 8.1 habe ich noch einmal einen Versuch gewagt und bin eigentlich sehr zufrieden. Die Metro-Oberfläche fühlt sich sehr nach kurzer Eingewöhnungsphase doch sehr intuitiv an (v.a. mit einem Multi-Touch Touchpad bzw. einem Touchscreen). Als eingefleischter Entwickler kommt einem da nach kurzer Zeit natürlich die folgende Frage in den Kopf:

Wie schwer ist es eigentlich eine Metro App zu schreiben?

Insbesondere, wenn man sich den Windows Store einmal genauer ansieht und bemerkt, dass es da scheinbar noch an vielen Ecken Luft für neue Apps gibt (mal ganz vorsichtig ausgedrückt).

Das Visual Studio…

Ohne Visual Studio (die Entwicklungsumgebung aus dem Hause Microsoft) geht es natürlich nicht. Glücklicherweise gibt es mittlerweile ja die Express-Varianten vom Visual Studio, eine leicht abgespeckte Variante, die man dafür jedoch kostenfrei bei Microsoft beziehen kann. Vermutlich soll hier ein wenig der Schwarzmarkt eingedämmt werden. Es gibt hier verschiedene Versionen für die unterschiedlichen Anforderungen (Phone Apps, Store Apps, Dot NET App, …). Ich habe mich für die Visual Studio Express 2013 für Windows entschieden.

vs_new_projectDas erste mal geöffnet erhält man im Visual Studio ein Begrüßungsfenster, in dem ich kurzerhand „Neues Projekt erstellen“ gewählt habe, woraufhin das nebenstehende Fenster erscheint.

Unter Vorlagen -> JavaScript habe ich dann den Eintrag „Windows Store“ ausgewählt und dort dann die Vorlage „Leere App“.

Anschließend öffnet sich die gewohnte „Projektansicht“. Ein Blick auf den Projektmappen-Explorer zeigt, dass trotz der Vorlage „Leere App“ bereits einige Dateien angelegt wurden.

projektmappeOffensichtlich handelt es sich dabei um essentielle Dateien, die minimal für eine Windows Store App benötigt werden sowie Platzhalter für den eigentlichen Code.

In der package.appxmanifest können bequem die Basiseigenschaften der App zusammengeklickt werden. Neben den unterschiedlichen Logos kann hier festgelegt werden, welche Funktionen/Berechtigungen die App benötigt, welche Bildschirm-Orientierungen sie unterstützt und welche Datei letztendlich als Startdatei für die App dienen soll (voreingestellt: Default.html). Ich habe hier gar keine großen Änderungen vorgenommen, sondern nur die Startdatei später auf „index.html“ gesetzt.

Der Projektimport…

Nachdem ich in den letzten Tagen ein wenig an einem Prototypen für ein HTML5 Spiel herumgespielt habe (Arbeitstitel: Spaceship in Trouble, Details hierzu folgen noch!), dachte ich: Probieren wir’s doch einfach damit. Das Spiel basiert auf JavaScript, RequireJS, WebGL und ThreeJS.

Der naive Ansatz: Einfach die Projektdateien in den Windows-Projektordner ziehen, im Projektmappen-Explorer dem Projekt hinzufügen (hierzu die Option „alle Dateien anzeigen“ wählen und anschließend Rechtsklick auf die entsprechenden Dateien und „Zu Projekt hinzufügen“ wählen).

Wie vorher erwähnt noch die Startdatei in der Manifest-Datei auf die neue Index.html setzen.

Tja. Hm… bestimmt sind noch weitere Anpassungen nötig, aber man könnte ja mal… Der Finger wandert zum „Play-Button“ und… – ich traue meinen Augen kaum – das Spiel läuft. Es flackert zwar ganz grässlich, aber es läuft.

Ein kurzes Anpassen der Hintergrundfarbe in ThreeJS und das Flackern verschwindet. Ich bin noch nicht ganz sicher woran es lag, aber dem Problem kann man später noch auf den Grund gehen. Ich habe Blut geleckt…

Nächster Bug: Bei der Tastatursteuerung fällt mir auf, dass das App-Fenster unerwünschter Weise noch eine vertikale Scrollbar hat. Ein html {overflow:hidden;} im CSS bringt tatsächlich den gewünschten Erfolg und lässt die Scrollbar verschwinden.

Es… funktioniert… Wie gewünscht. Die üblichen Gesten beherrscht die App bereits. Schließen, verkleinern, an den linken oder rechten Rand setzen und nebendran andere Apps öffnen. Und… das trotz WebGL. Wenn man überlegt, dass Microsoft bis vor kurzem WebGL noch komplett den Rücken zugekehrt hat. Beachtlich…

Nur etwas langsam… Hm… Die Framerate liegt um die 40 FPS. Das müsste höher sein. Ein Blick auf den Ressourcen-Monitor verrät, dass es nicht die CPU ist. Die läuft schön gemütlich bei 10-20% und ist runtergetaktet auf 0.7 Ghz. Der RAM Verbrauch für die App ist relativ gering (125 MB) und konstant. Data-IO im Prinzip nicht vorhanden. Offensichtlich ist die GPU am Limit, oder ich habe einen anderen fauxpas begangen. Aber erstmal bin ich glücklich. Es funktioniert… Out of the box. Soweit bin ich erstmal begeistert… Es ist 3 Uhr Nachts und ich beschließe das erste Treffen hiermit als Erfolg zu verbuchen.

Sicherlich wird das nicht mein letztes Treffen gewesen sein, und ich bin gespannt, was sich hier rund um die Windows-Entwicklung noch für mich ergeben wird. Ich werde davon berichten!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.