Pokemon GO (Teil 3)

Abschließend noch der Versuch einer Analyse des Spiels in Bezug auf möglicherweise verwendeten Entwurfsmuster. Entwurfsmuster sind im übrigen mehr oder weniger feststehende Programmierlösungsansätze für wiederkehrende Problemstellungen in der Informatik. Interessanterweise kommt der Begriff aus der Architektur und wurde durch die GoF (Gang of Four) auf die Informatik übertragen.

Von den mehr als 30 Entwurfsmustern sind gerade in der Schule nur ein paar wenige wichtig und relevant: Das MVC-Muster und das Kompositum-Muster.

Das MVC-Entwurfsmuster (Model-View-Controller) dient im wesentlichen der Trennung der zwischen Oberfläche (View), den eigentlichen Funktionen bzw. Daten (Model) und einer Kontrollinstanz (Controller), die unter anderem die Kommunikation zwischen Frontend und Backend steuert und schaut, das kein “Schmarrn” hin und her geschickt wird.

Das Kompositum wird in der elften Klasse in Bayern eingeführt um Listen und Bäume zu implementieren. Allgemein lassen sich damit Teil-Ganzes-Hierarchien implementieren. Ein typisches Beispiel ist die Gruppierungsfunktion in Zeichenprogrammen.

Nun aber zu Pokemon GO. Wobei ich dazu sagen muss, dass sich meine Fähigkeiten im Bereich Software-Entwicklung wohl eher als bescheiden sind. Aber deswegen kann man es ja dennoch mal versuchen.

Wer sich genauer mit Entwurfsmuster auseinandersetzen will, sollte sich zum Einstieg unbedingt die Internetseite von Philipp Hauer anschauen. Dort werden viele Entwurfsmuster an tollen Beispielen mit Implementierungen in Java dargestellt.

MVC-Entwurfsmuster

Die Darstellung der Daten auf verschiedenen Handys und Betriebssystemen und die Kommunikation mit den zentralen Servern (…leider…) spricht für den Einsatz dieses Musters. Wie bei vielen Spielen wohl in der Form des VCM-Paradigmas, da der User ja über die View mit dem Spiel kommuniziert.

Observer-Pattern

Die Spieler müssen über Änderungen in ihrer Umgebung wie Pokemons, Pokestops und Arenen informiert werden. Dafür bietet sich, denke ich, das Oberserver-Pattern an. Daher muss man sich nicht nur bei der Software anmelden, es müssen auch die ganze Zeit die Geodaten übermittelt werden. In Abhängigkeit der Geodaten  werden dann die benötigten Gegenstände eingeblendet.

 

Weitere mögliche Entwurfsmuster

Ab jetzt wird es noch schwieriger weitere Muster zu erkennen, da ich auch einfach zu wenig Erfahrung mit der Umsetzung dieser Muster habe. Daher im Folgende einfach noch eine Liste mit Mustern und Kommentaren:

  • Singleton
    Ein Objekt das nur einmal existieren darf, kann über das Singleton-Entwurfsmuster implementiert werden. Das Spielfenster wäre so ein Fall. Ich denke aber, das es nicht so ungesetzt wurde. Beim selbst Rumprobieren mit der Erstellung von Apps habe ich das noch nie gebraucht.
  • Kompositum
    Das Verwalten der eigenen Items, der auszubrütende Eier, der Mitglieder einer Arena könnte in einer verketteten Liste nach dem Kompositum-Muster umgesetzt sein. Wobei das wahrscheinlich aber auch hier anderes gelöst wurde. Mit Arrays oder fertigen Listen-Datentypen, wobei letztere wiederum mit dem Kompositum umgesetzt sein könnten.

Was jetzt genau, wie umgesetzt wurde hängt im nächsten Schritt aber auch von der benutzten Programmier-Sprache ab. Es scheint aber, dass Java benutzt wurde. Außer natürlich für die iOS-Version. Hier wird natürlich Swift und/oder ObjectiveC benutzt.

Und ansonsten ist es vor allem eine großen Datenbank-Anwendung. Denn eigentlich geht es bei dem Programm ja in erster Linie um das Sammeln und Entwickeln von Pokemons und der eigenen Spielfigur. Eine schnelle Datenbank wird da wohl die Hauptrolle spielen. Und damit ist es eine Programmieraufgabe für die 9. Jahrgangsstufe, die ich dann noch nachreiche.

Fazit

Soweit meine Gedanken. Ich würde mich jetzt freuen, wenn es Leser meine Blogs gäbe, die weiter Licht ins Dunkel bringen und erklären könnten, wie dieses Spiel umgesetzt wurde. Vor allem in Hinblick darauf, was man im Unterricht benutzen kann.

Beteilige dich an der Unterhaltung

1 Kommentar

Schreibe einen Kommentar

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

Durch die weitere Nutzung der Seite (Scrollen, Navigieren) stimmen Sie der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen