Welche Softwarearchitektur nutzt Pokémon Go?

20.07.2016

Der Aktienkurs von Nintendo schießt mit über 70% in die Höhe und Schlagzeilen über Unfälle erscheinen fast täglich. Kein anderes Spiel – nein, keine andere Software – hat in den vergangenen Jahren einen so großen Einfluss auf das tägliche Leben gehabt, wie Pokémon Go. Doch aus Entwicklersicht ist für mich vor allem die Softwarearchitektur hinter dem mobilen MMO-Spiel interessant.

Pokémon Go wurde von Niantic Labs, einem Tochterunternehmen von Google entwickelt. Bereits mit dem AR-Spiel Ingress konnte Niantic Labs beweisen, dass sie eine Softwarearchitektur für MMO Spiele mit mehreren hunderttausend Spielern bereitstellen können. [1] Doch dass bei Pokémon Go gleich mehrere Millionen Spieler unterwegs sind, hätte vor einigen Wochen noch niemand geahnt.

Natürlich geben weder Niantic Labs, noch Google Informationen bzgl. der in Pokémon Go verwendeten Softwarearchitektur öffentlich preis. Jedoch gibt es eine Möglichkeit, Informationen zu erhalten, aus denen sich Annahmen hinsichtlich der verwendeten Infrastruktur und Softwarearchitektur ableiten lassen. Wirft man einen Blick auf die Seite mit den Stellenausschreibungen von Niantic Labs, so findet man folgende Informationen:

  • Google Cloud und/oder Amazon Web Services dienen als globale Hostingplattformen
  • eine NoSQL-Datenbank (sehr wahrscheinlich Google BigTable) dient als persistenter Speicher
  • die Android (Java) und iOS (C++) Apps sind nativ implementiert
  • die 3D Welt wird mit der Game-Engine Unity3D entwickelt (C#)
  • Pokémon Go läuft in einer zusammenhängenden, weltweiten Instanz („coherent world-wide instance“)

Aus diesen und weiteren Informationen ergibt sich folgendes (grobes) Architekturschaubild:
Softwarearchitektur Pokemon Go

Quelle: quora.com/What-is-the-client-server-architecture-for-Pokemon-Go-like

[1] quora.com/How-many-people-are-playing-Ingress-worldwide
[2] recode.net/2016/7/13/12181614/pokemon-go-number-active-users

Zurück zur Übersicht

Kommentar verfassen

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

*Pflichtfelder

*