Am Puls von Microsoft

Hinge it! Wir basteln uns Spielchen für das Surface Duo

Hinge it! Wir basteln uns Spielchen für das Surface Duo

Das Microsoft Surface Duo (Dr. Windows berichtete) ist in der letzten Zeit in aller Munde und zu mindestens in den Vereinigten Staaten auch bald käuflich zu haben. Da bietet es sich doch an, etwas speziell für dieses neue Mitglied der Microsoft Surface Familie zu basteln. Da außerdem mindestens in Bayern noch Sommerferienzeit ist, denken wir dabei einmal nicht an die viel beschworene Produktivität des Gerätes, sondern an Spiel Spaß und Freizeit und bauen uns ein kleines Spielchen. Da sich das Spiel vor allem um das sagenumwobene Scharnier (Hinge) dreht, bekam es den bezeichnenden Namen „Hinge It!“.

Spielidee

Das Gameplay von Hinge It! (GitHub) ist schnell erklärt. Sobald die App auf einem aufgeklappten Surface Duo gestartet wurde, muss ein immer wieder zufällig erzeugter Winkel mithilfe des Scharniers (Hinge) schnellst möglichst mit dem Surface Duo nachgefaltet werden. Je schneller, um so besser.

Umsetzung

Microsoft bietet für die verschiedenen Programmiersprachen SDKs beziehungsweise Frameworks an, um auf die einzigartigen Features des „Nicht-Smartphones“ leicht zugreifen zu können. In unseren Fall bauen wir das Spiel mittels Xamarin.Forms und somit wird das NuGet Package „Xamarin.Forms.DualScreen“ zur Vereinfachung herangezogen.

Da der HingeSensor (Docs) eine plattformspezifische API ist, binden wir diesen im HingeIt.Android Projekt in der MainActivity.cs ein. Dabei hören wir explizit auf das “OnSensorChanged”-Event des Sensors.

Wenn sich nun der Winkel der beiden Bildschirme des Gerätes zueinander ändert, werden wir darüber informiert und schicken eine App-weite Notification Message heraus, welche den neuen Winkel enthält. Dies geschieht in der Methode HingeSensor_OnSensorChanged. Wäre dies mehr als ein Bastelprojekt, würde ich hier stark auf eine andere Informationsübermittlung als blind gefeuerte interne Notifications setzen. Eine Alternative wäre dann beispielsweise über die DualScreenInfo (Docs) und manuelles Pullen immer auf dem aktuellsten Stand zu bleiben, in welchem Winkel sich das Scharnier befindet.

Unsere MainPage.xaml.cs hört auf diese von der Activity gesendeten Notifications und verarbeitet diese in der Methode OnHingeSensorChanged. In dieser wird nicht nur der gelieferte Winkelwert gespeichert, sondern auch die Oberfläche der App unter Beachtung des Status des Spieles aktualisiert.

Das Regelwerk, in welchem State das Spiel gerade ist, wird in der selbigen Datei in der Methode GetPageState() bestimmt und als PageState Enum zurück gegeben.

Anhand dieser beiden Informationen wird der Bildschirm beispielsweise rot, wenn die Entfernung zum Winkel zu groß ist, orange wenn sich dieser annährt und grün wenn der Spieler den Winkel innerhalb des Unschärfebereichs (Threshold) getroffen hat.

Hat der Spieler gewonnen, kann dieser entweder das Spiel neu starten oder seine Zeit mit anderen Spielern teilen.

Spielen im Android Emulator

Da wir bisher keine echten Geräte in den Händen halten können, müssen wir zur Entwicklung, zum Testen und Spielen auf den Surface Duo Emulator zurückgreifen.

Surface Duo Emulator

Um in dem nicht faltbaren Emulator dennoch den Winkel ändern zu können, hat Microsoft die simulierten Sensoren des Emulators etwas umfunktioniert und verbogen. So können Änderungen des Schanierwinkels mittels der Einstellung unter „Virtual sensors / Pressure (hPa)“ angepasst werden. Achtung, hier sind nur Werte zwischen 0 und 360 sinnhaft, der Slider an sich lässt weitaus größere Eingaben zu.

Viele offene Fragen

Da dies ein kleines Bastelprojekt ist, sind noch etliche Fragen unbeantwortet. So zum Beispiel, ob wirklich 0 – 360 Grad als Spannweite angenommen werden sollen oder lieber nicht „zusammengeklappte“ Werte wie 45 – 270, oder ob man nicht beispielsweise eine Sekunde warten muss, bevor der „Zielwert“ auch als „getroffen“ angesehen wird. Fragen über Fragen, welchen man sich zu einem späteren Zeitpunkt noch einmal zuwenden kann.

Jede/r ist eingeladen mitzuwirken

Das Projekt liegt wie immer zur freien Verfügung auf GitHub bereit. Schaut es euch an, baut daran weiter, habt Spaß mit der neuen Technik! Zum Kompilieren benötigt ihr nur ein kostenfreies Visual Studio (for Mac) und zur Ausführung den Surface Duo Emulator.

Ich freue mich über jegliche Beteiligung am Projekt, egal in welcher Art auch immer.

Bitte beachtet

Wie auch sonst bei unseren Bastelprojekten auf Dr. Windows handelt es sich auch bei diesem hier um eine Machbarkeitsstudie. Sie ist weder fehlerfrei noch ideal und sollte somit in keiner Weise außerhalb einer Beispiels- und Lernumgebung eingesetzt werden.

Über den Autor

Tobias Scholze

Tobias Scholze

Bayrischer Open Source- und Community-Enthusiast, Verfechter des neuen Microsoft und Wandler zwischen den Betriebssystemwelten. #communityrocks Von Herzen ein Nerd mit der festen Überzeugung, dass man gemeinsam und durch den Einsatz von moderner IT die Welt für jeden ein Stückchen besser machen kann.

Anzeige