Mobile Games mit
Microsoft AzureJürgen Gutsch
Jürgen Gutsch
• Developer, Consultant und Trainer bei der YooApplications AG in Basel
• Stolzer Papa von drei Kindern
• Blogger, Autor von Fachartikeln
• Speaker auf Konferenzen und User Groups
• User Group Leader des .NET-Stammtisch Konstanz-Kreuzlingen
• .NET-Begeisterter Softwareentwickler
• Webentwickler
• Open Source und ALT.NET Enthusiast
• Clean Code Developer
Was wir können
Wir suchen Dich!
Die YooApps bietet fünf interessante Positionen, die es zu besetzen gilt. Trifft eines der fünf Profile unter: www.yooapps.com/jobs auf dich zu, so sende uns noch heute deine Unterlagen an [email protected]!
• Software Engineer im Bereich .Net (80-100%)
• Unity3D Game Developer (80-100%)
• Web- oder Mobile Developer (80-100%)
• Projektleiter / Kundenberater (80-100%)
• User Experience Designer / Konzepter (80-100%)
Das Game
Das Game
• Kräuteranbau auf einem Feld
• Pflegen und Hegen der Kräuter
• Ernten und Verarbeiten der Kräuter
• Verkaufen und Sammeln der Kräuter
• Nutzung von Gutscheincodes
• Geo-Interaktion => Felder an echten Geopositionen
• Standortabhängige Feldqualität
• Reales Wetter am Standort des Feldes
• Highscore
• Push-Benachrichtigung
Das iOS Game
Das iOS Game
Konzept
• Rundenbasiert
• Beliebig viele Runden pro Spieler
• Mehrere Felder pro Runde
• Krauter, Geräte und Felder kosten Geld
• Verkauf von Kräutern bringt Geld
• Aktionen bringen Punkte
• Ziele des Spiels:
• Von allen Kräutern eine bestimmte Menge an Ricolazu senden um echtes Kräuterzucker zu erhalten
• In der Gesamt-Highscore so weit oben wie zu sein.
Anforderungen
• Stabilität
• Ausfallsicherheit
• Skalierbarkeit
• Performance
• Wartbarkeit
• Ausführliches Logging
• Spielhistorie
Zahlen
• Über 17.500 App Downloads
• Knapp 25.500 Felder
• Über 13.000 Spieler
• Über 4.500 aktive Spieler
• Davon Über 2.500 sehr aktive Spieler(>50.000 Punkte)
• Etwa 6.000 Events pro Spielrunde und Spieler
• Ca. 54.000.000 Einträge
(Stand März 2014)
Infrastruktur
• Compute-Instanzen / Web Roles mit
• REST Schnittstelle zur Kommunikation mit den Clients
• Spiellogik zum Großteil auf dem Server
• Background Services / Worker Role
• Für Push-Nachrichten und Schädlingsberechnung
• Relationale Datenbank für Veränderbare Daten
• Nutzerdaten, Highscore
• Bestellungen (von Kräuterzucker)
• Objektdatenbank für nicht veränderbare Daten
• Spielaktionen
• Nur hinzufügen von einzelnen Daten
• Schnelles Lesen von vielen Daten
Microsoft Azure
2 Web Roles 1 Worker Roles
Table Storage
SQL Database
Windows Azure Cache
CQRS Pattern
• Die Spielrunde ist das Aggregate
• Unsere Hauptdomäne in der alle Aktionen stattfinden
• Alle Interaktionen finden in einer Spielrunde statt
• Background-Service und User führen Aktionen aus
• Azure Table Storage wird als Event Store verwendet
• Snapshots werden im Azure Cache abgelegt
• Eigentlich „Event Sourcing + Commands“ statt CQRS
• Querying findet auf dem Snapshot aus dem Eventstore statt und nicht auf einer denormalisiertenDatenbank
Exkurs: CQRS Pattern
Quelle: CAP-Theorem: http://de.wikipedia.org/wiki/CAP-Theorem
• Konsistenz: Alle Knoten sehen zur selben Zeit, dieselben Daten.
• Verfügbarkeit: Alle Anfragen an das System werden stets beantwortet.
• Partitionstoleranz: Das System arbeitet auch bei Verlust von Nachrichten, einzelner Netzknoten oder Partition des Netzes weiter.
CAP-Theorem
Exkurs: CQRS Pattern
Quelle: SQRS Journey: http://msdn.microsoft.com/en-us/library/jj591573.aspx
Exkurs: CQRS Pattern
Quelle: http://www.gridshore.nl/2009/12/21/cqrs-made-easy-with-cqrs4j
Exkurs: CQRS Pattern
Event Store
Aggregate Version Event Details
GR1 1 Field Added GEO=lat,long;Name=MyField;
GR1 2 Quadrant Plowed Q=a1,a2,a3,a4,…
GR2 1 Field Added GEO=lat,long;Name=MyField
GR1 3 Quadrant Seeded Seed=pepermint;Q=a1,a2,a3,a4
GR2 2 Quadrant Plowed Q=b2,b3,c2,c3
GR2 3 Quadrant Seeded Seed=pepermint;Q=b2,b3,c2,c3
GR3 1 Field Added GEO=lat,long;Name=MyField
GR1 4 Quadrant Weeded Q=a1,a2,a3,a4
… … … …
Fragen / Diskussion / Kontakt
Zeit für Fragen und Diskussion jetzt …
… oder jederzeit:[email protected]
Twitter: @sharpcms
FB//:juergen.gutsch
Skype//:juergen.gutsch
Top Related