Was kann Windows Phone 7?
Feature

Was kann Windows Phone 7?

Microsofts Windows Phone 7 unterstützt sowohl Silverlight als auch XNA – Tom Wendel stellt die Anwendungsmöglichkeiten für Spieleentwickler vor.

Making Games

@ Facebook

Making Games

@ Twitter
comment

Im März hat Microsoft eine Vorabversion seines neuen Betriebssystems für Mobiltelefone veröffentlicht: Windows Phone 7. Und schon auf den ersten Blick lässt sich erkennen, dass im Vergleich zu den Vorgänger-Versionen Windows Mobile 6.x radikale Änderungen vorgenommen wurden. Die leicht unübersichtliche Art des bisherigen Betriebssystems ist einfach nicht mehr zeitgemäß. Die neue Oberfläche setzt eher auf ein minimalistisches und durchgängig textbasiertes Design, genannt »Metro«. Das ist keine neue Erfindung. Das Metro-Design wird von Microsoft bereits auf dem hauseigenen MP3-Player Zune (nur in den USA erhältlich), bzw. in Form der Zune-Software verwendet und hat sich dort bereits bewährt.
Was das neue Betriebssystem verspricht: Ordnung in der Oberfläche, flache Navigationsstrukturen für eine stressfreie und intuitive Bedienung. Das geht natürlich nur durch die Unterstützung der darunter liegenden Technik und der Software-Architektur, um die erforderliche Performance zu erreichen. Zwar stellt Microsoft die Hardware für das Phone nicht selbst, gibt in diesem Punkt aber klare und strikte Vorgaben an die Hardware-Hersteller. Das beinhaltet nicht nur Restriktionen im Bereich der CPU-Leistung oder dem verbauten Arbeitsspeicher, sondern beinhaltet auch Vorgaben zur Screen-Auflösung, verwendeter Anzeige- und Touch-Technik oder der Menge und Anordnung der Knöpfe auf dem Gerät.

Microsofts neues Smartphone-Betriebssystem integriert Xbox Live als eigenen »Hub« inklusive Gamerscore und Cross-Platform-Play.

Die Vorteile: Hat man sich einmal an die neue Oberfläche gewöhnt, sind alle anderen Phone-Devices genauso zu bedienen. Und Entwickler freuen sich, dass alle Applikationen des Geräts in der .NET-Runtime laufen. Es ist kein nativer Code mehr notwendig und auch gar nicht mehr möglich. Indem alle Applikationen kontrolliert in der Sandbox laufen, kann auch eine ordentliche Performance sichergestellt werden. Visualisierungstechnologien gibt es zwei: Zum Einen Silverlight, eine Technologie, die sich bereits im Windows Client und im Web bewährt hat. Silverlight ist für ereignisgetriebene Anwendungen mit hübschen Formularen und Oberflächen geeignet. Alternativ dazu kommt XNA ins Spiel. XNA, als die .NET-Kapselung um DirectX, erlaubt 2D- und 3D-Zeichenvorgänge und Echtzeit-Rendering -- eine prima Vorlagefür die Entwicklung von vollwertigen 3D-Spielen.

Der Startscreen mit den sogenannten »Live Tiles«.Die Oberfläche
Bei genauerer Betrachtung der Metro-Oberfläche fallen zwei Konzepte besonders ins Auge. Zunächst vor allem der Start-Screen, der beim Startup die wichtigsten Informationen anzeigt. Dies wird mit sogenannten Live Tiles realisiert -- kleinen quadratischen Icons, die über die wichtigsten Dinge informieren. Anwendungen können ihre Tiles hier installieren und die wichtigsten Dinge anzeigen. Standardmäßig sind dies Elemente wie Mails, SMS und Bilder, aber auch etwa Xbox live.
Die Navigation läuft über das kapazitive Multitouch-Display. Navigiert man beispielsweise über das Xbox Live Tile auf den »Xbox Live Hub«, erscheint eine weitere Neuerung auf dem Screen. Windows Phone 7 führt den User nicht durch unzählige Menüs und verschachtelte Tiefen der Navigation, sondern platziert Inhalte auf virtuellen, breiten Hubs. Es handelt sich dabei um große Flächen, auf denen die passenden Inhalte angeordnet werden. Das Telefon fungiert hier sozusagen als Lupe auf der Oberfläche, um zu den gesuchten Inhalten zu finden.
Natürlich gibt es auch weiterhin die gute, alte Liste installierter Applikationen, um direkt auf Anwendungen zuzugreifen und diese zu starten. Hier findet sich jede Anwendung wieder, die über den Mobile Marketplace installiert wurde. Dies ist derzeit auch der einzige Weg, Programme auf das Phone zu installieren. Eine gute Möglichkeit, entwickelte Spiele unkompliziert und ohne größeren Aufwand für Endkunden zum Kauf bereitzustellen.

Technische Hintergründe
Wie bereits erwähnt gibt es trotz der noch fehlenden Hardware bereits konkrete Aussagen zur zukünftigen Leistung verfügbarer Geräte. Das ist nicht nur »ganz nett«, sondern auch zwingend erforderlich, wenn Entwickler gefräßige Applikationen wie Spiele für die Plattform entwickeln möchten. In der Spezifikation wird eine CPU mit 1 GHz gefordert, der minimale Arbeitsspeicher auf 256 MB fixiert und auch die GPU muss ordentliche Leistung bringen. Entwickler können sich ebenfalls auf feste Bildschirmauflösungen verlassen. Für das Gerät sind zwei unterschiedliche Auflösungen (QVGA mit 480x800 Pixel und HVGA mit 320x480 Pixel) vorgesehen. Wer schon versucht hat, Anwendungen für Vorgänger-Versionen zu entwickeln, der weiß, dass es dort keine solchen Regulierungen gibt. Programmierer müssen also immer auf die Geräteauflösung achten und dynamisch rendern. Ebenso steht fest, dass das Display über mindestens vier unabhängige Touch-Punkte verfügt. Gewisse Sensoren müssen ebenfalls vorhanden sein. Jedes Gerät hat einen GPS-Sensor, einen Beschleunigungssensor sowie eine ordentliche Kamera -- alles ansprechbar durch die API.
Es wurde ebenfalls schon erwähnt, dass die fremden Anwendungen immer in einem gut abgekapselten Bereich der .NET Runtime laufen. Das bedeutet für den Entwickler, dass nun kein Weg mehr an .NET vorbei führt. Außerdem heißt es, dass das Programm in dieser Sandbox eingeschlossen ist. Es gibt keinen Zugriff mehr auf das Dateisystem oder auf die restlichen Applikationen des Telefons. Dafür existiert aber eine umfangreiche API für die Betriebssystem-Funktionen (darunter GPS-Dateien abfragen, SMS versenden, Sensoren verwenden, Netzwerk-Kommunikation). Das alles bedeutet außerdem, dass Anwendungen nur noch laufen dürfen, wenn sie im Fokus des Benutzers stehen. Erhält eine andere Anwendung den Vorrang, so wird die vorherige Anwendung schlafen gelegt und bleibt inaktiv, solange der User nicht zurückkehrt. Auch das passiert zu Gunsten der Performance, da nun keine ungewollten Prozesse mehr im Hintergrund das System lahm legen können oder ungewollt Ressourcen verbrauchen.
Für alles, was im Hintergrund laufen soll, gibt es System-Dienste. Musik zu hören, während man andere Anwendungen verwendet, ist also überhaupt kein Problem. Auch Internet-Downloads können im Hintergrund weiterlaufen.

Anwendungen, die dennoch aus dem Hintergrund aktuelle Infos an den User geben wollen, können den Notification Service verwenden. Das ist ein Dienst, der Nachrichten aus dem Internet entgegennimmt und an den Benutzer weitergibt -- das funktioniert etwa in Form von »Toasts«. Der User kann dann entscheiden, ob er die Applikation zur Visualisierung wieder in den Vordergrund holt. Beispiel: Eine Fußball-Applikation soll mich über den aktuellen Stand eines Spieles informieren. Ich möchte diese Anwendung aber nicht permanent auf dem Bildschirm haben, weil ich inzwischen andere Dinge tun möchte. Diese Applikation kann jetzt aber beim Start den Notification-Dienst abonnieren und bitten, bei Aktualisierung des Zwischenstandes eine Nachricht an das Telefon zu senden. Nachdem das passiert ist, verschwindet die Anwendung dann zum Beispiel einfach wieder in den Hintergrund. Ein Server-Dienst, der irgendwo im Internet auf der Lauer nach Toren liegt, sendet bei Gelegenheit eine Nachricht an den Notification Server, damit dieser alle Abonnenten über den Treffer informiert. Das geschieht über ein kleines Popup, das eine kurze Nachricht enthält. Klickt der User auf das Popup, wird automatisch die Fußball-Anwendung in den Vordergrund geholt, damit diese Details zum Tor präsentieren kann.

Die kostenlosen Developer Tools enthalten »Visual Studio 2010 Express for Windows Phone«, den Device Emulator, Silverlight und das XNA Game Studio.

Anwendungen entwickeln
Was gibt's denn nun konkret für Entwickler zu tun? Da aktuell noch keine echte Hardware existiert, sind Entwickler vollständig auf den Device-Emulator angewiesen, den es bei Microsoft kostenlos zum Download gibt. Ebenso wird eine Entwicklungsumgebung benötigt. Für C# und .NET bietet sich natürlich Visual Studio an. Seit Version 2010 (verfügbar seit dem 12. April) steht für Mobile-Entwickler auch eine kostenfreie Express-Variante zur Verfügung. Sobald Silverlight als Oberflächen-Technologie hinzukommt, spielen auch die Designer-Tools wie Expression Blend eine Rolle. Auch diese gibt es für die Mobile-Entwicklung zukünftig zum freien Download. Das bedeutet im Klartext, dass Entwickler die nötigen Tools vollständig ohne Kosten beziehen können.
Ist Visual Studio dann erst einmal installiert, kann man direkt über die Projektvorlagen ein passendes Grundgerüst für seine Applikationen erstellen lassen. Leider muss man sich auch hier schon für eine der beiden Technologien zur Anzeige der Oberfläche entscheiden. Beide Möglichkeiten sind für die Entwicklung von Spielen aber grundsätzlich geeignet. Entwickler müssen sich an dieser Stelle die Frage stellen, ob die fertige Anwendung vermutlich eher auf interaktiven Oberflächen basiert und von Usereingaben getrieben wird, oder ob es sich eher um eine render-intensive Anwendung handelt. Schach zu implementieren fällt sicher in Silverlight leichter (selbst, wenn kleine Animationen enthalten sind), ein ordentlicher 3D-Shooter ist aber ganz klar ein Kandidat für XNA.

XNA als Mittel der Wahl
Zweifelsohne sind viele Casual Games locker mit den Möglichkeiten von Silverlight zu realisieren. Sollte der Funktionsumfang für das geplante Spiel ausreichen, so ist Silverlight sicher immer zu bevorzugen, da in dieser Umgebung die Interaktion mit dem Betriebssystem wesentlich einfacher funktioniert. Elemente erhalten einfache Klick-Ereignisse, außerdem ist der Support im Emulator etwas weiter fortgeschritten. Dennoch möchte ich an dieser Stelle etwas mehr auf die Möglichkeiten von XNA eingehen und die durchaus spannende Umsetzung von 3D-Spielen auf einem Handy betrachten.

Wer XNA kennt, wird mit dem Framework für Windows Phone 7 sicher gut zurechtkommen. Mit XNA Game Studio 4.0 wird nahtlos an Version 3.1, der Vorgängerversion angeknüpft. Vorherige Versionen erlaubten bereits die einheitliche Entwicklung von 3D-Spielen für die Plattformen PC, Xbox 360 und Zune. Dies wird unter anderem durch eine Kapselung der nativen API DirectX für managed Code erreicht. Und genau da liegt auch der große Vorteil dieser Technologie. Spiele, die auf XNA basieren, sind prinzipiell auf mittlerweile vier unterschiedlichen Gerätetypen spielbar. Hauptsächlich wird das ermöglicht, indem verschiedenste Ressourcen wie Audio-Dateien, Bilder oder 3D-Modelle bereits vom Compiler für die entsprechende Zielplattform vorbereitet werden. Kleinere Abweichungen gibt es zwar immer noch, aber die größte Code-Basis bleibt gleich. Es ist offensichtlich, dass Entwickler im Bereich der Eingabe die meisten Anpassungen vornehmen müssen. Während ein PC über Tastatur und Maus verfügt, wird die Xbox 360 naturgemäß in den allermeisten Fällen mit einem Xbox-Controller gesteuert. Mit Windows Phone, und somit für das gesamte Framework 4.0, kommt eine Reihe neuer Eingabegeräte ins Spiel. Die Haupteingabe wird auf dem Telefon mit dem Touchscreen getätigt. Der Screen liefert eine unbestimmte Menge von Berührungspunkten, die vom Spiel ausgewertet werden können. Mit der Einführung von ordentlichen Multitouch-Monitoren auch im PC-Bereich, spielt diese neue Eingabemöglichkeit auch hier eine größer werdende Rolle. Doch auch die Sensor-Ausstattung des mobilen Gerätes bedeutet Eingabe. Beschleunigungssensoren geben Auskunft über die physikalische Bewegung des Handys, Licht-Sensoren über die Umgebungsbeleuchtung und GPS-Module liefern Informationen über die globale Position des Gerätes. All diese Schnittstellen bieten neue Möglichkeiten der Spielesteuerung.
Kleine Einschränkungen gibt es aber doch. Speziell im 3D-Bereich müssen sich Entwickler auf die Verwendung von mitgelieferten Shadern, in XNA »Effects« genannt, beschränken. Die fünf Standard-Shader taugen aber schon recht gut und liefern ordentliche Ergebnisse.
Das alles bietet eine gute Basis für eine Generation neuer Mobile-Games. Vor allem unter dem Aspekt der einheitlichen Basistechnologie für gleich vier, okay, sagen wir drei interessante Gerätetypen und dem zentralen und unkomplizierten Vertriebsweg des Marketplaces. Das verspricht eine relativ kurze Entwicklungszeit und wenig Marketingaufwand.

Wo gibt's mehr Infos?
Eines darf man nicht vergessen: Es geht hier noch um eine sehr frühe Version des kommenden Betriebssystems -- das merkt man dem Emulator auch noch an. Es läuft vieles noch nicht stabil oder wirft noch »NotImplementedExceptions«. Dementsprechend ist die Informationsdichte noch etwas dünn. Ein guter Startpunkt ist auf jeden Fall die Windows Phone 7-Website. Dort gibt es nicht nur Benutzerinformationen, sondern auch die nötigen Links zu den Entwickler-Tools. Ebenso interessant sind aber auch die Videos der vergangenen Mix-Konferenz (alle Links finden Sie im Extra-Kasten), der deutschen Microsoft Entwicklerplattform MSDN in der Rubrik Webcasts, dem Blog meines Kollegen »Dr. Mobile«, Frank Prengel oder direkt auf Channel 9, dem internationalen Video-Channel für Software-Entwickler. Informationen und Tutorials speziell zu XNA finden Sie ebenfalls auf meinem eigenen Blog.
Tom Wendel


Tom Wendel
ist Developer Evangelist bei Microsoft.

Ob als Tontechniker im Theater oder als Ameisenbändiger (www.antme.net): Tom Wendel ist bemüht, auf spielerische Weise die Programmierkunst zu lehren und verbindet Hightech mit einer ordentlichen Portion Spaß und Unterhaltung.