Skalierbarkeit von BunteSuppe

Saturday, 15. April, 2006

Bei der Entwicklung von BunteSuppe wollten wir sicher gehen, dass die Application problemlos skalieren würde, um ein großes Volumen an Spielern aufzunehmen und die ständige Fluktuation der Spieler aushalten zu können. Die Lösung musste die Zahl der Spieler in jedem Room ausgleichen: zu viele und die Spielflächen würden irgendwie chaotisch werden, mit sich ständig bewegenden Steinchen; zu wenige und das Spiel würde langweilig.

Die Lösung, die wir gewählt haben, beinhaltet das Gruppieren der Spieler eines Rooms in Sets und die Bearbeitung der BunteSuppe Database, um neue Sets zu erzeugen und leere Sets zusammenfallen zu lassen. Der nachfolgende Text bietet einen Überblick über das Konzept, wie wir diese Lösung implementiert haben.

Rooms, Sets und Spieler

Rooms

Im Sinne von BunteSuppe ist ein Room ein reservierter Raum oder Platz der eine Mosaik Spielfläche beinhaltet, wo Spieler interagieren können. Jeder Raum hat eine eigene URL (z.B. buntesuppe.de/mein_room).

BunteSuppe bietet einen “öffentlichen” Room auf http://www.buntesuppe.de/mosaik. Spieler, die zum ersten Mal auf der Homepage von BunteSuppe.de (http://www.buntesuppe.de) sind und auf “Betrete das Mosaik” klicken, werden automatisch in den öffentlichen Room geleitet. Account Inhaber können wählen, ob ihr Room dieses mit anderen geteilte Mosaik oder ein Room-spezifisches Mosaik anzeigt.

Account Inhaber können ihren Room individuell gestalten, und ein Banner, einen Retour Link zu ihrer Homepage und bis zu vier URLs anzeigen lassen. Account Inhaber können sich für so viele Rooms anmelden wie sie wollen und können wem immer sie möchten zum Spielen einladen, indem sie diesen die URL der Rooms schicken.

Wiederkehrende Besucher, welche die BunteSuppe Homepage besuchen, werden zu dem Room gelenkt, in dem sie schon zuvor waren. Wenn ein Spieler im Raum http://www.buntesuppe.de/maxmustermann gespielt hat, dann kommt er über den Button “Betrete das Mosaik” immer wieder in den “maxmustermann” Room. Dieses Feature ist wichtig für Room Inhaber und Werbeleute, die nicht wollten, dass “ihre” Besucher in einem anderen Mosaik verloren gehen (wie im /mosaik oder einem anderen Room).

Öffentliche Mosaike

Standardmäßig zeigt der Room eines Account Inhabers das öffentliche Mosaik – http://www.buntesuppe.de/mosaik. Spieler eines Rooms, der das öffentliche Mosaik zeigt, können mit anderen Spieler des öffentlichen Rooms spielen bzw. mit Spieler anderer Rooms, die ebenfalls das öffentliche Mosaik anzeigen lassen.

Das Anzeigen des öffentlichen Mosaiks ist nützlich, um den augenscheinliche Aktivitätslevel und die Zahl der Spieler in einem Room zu erhöhen: ein Room, der nur ein paar Spieler hat, erscheint lebhafter, wenn er mit der Aktiviät des öffentlichen Mosaiks kombiniert ist.

Room-spezifische = individuelle Mosaike

Account Inhaber können sich für ein Room-spezifisches Mosaik entscheiden. Spieler spielen in diesem Room nur mit Spielern desselben Rooms und sehen daher die Aktivität und die Spieler des öffentlichen Mosaiks nicht.

Jeder Room muss mindestens ein Set enthalten und kann mehrere haben, wenn viele Spieler auf einmal interagieren.

Sets

Ein Set ist eine Gruppe von Spielern, die dieselbe Mosaik Spielfläche teilen. Jedes Set kann eine maximale Anzahl an Spielern beinhalten. Dieses Maximum ist bei jedem Set gleich.

Jeder neue Spieler, der einen der Rooms auf BunteSuppe.de betritt, wird automatisch dem ersten Set zugeteilt, welches noch nicht die maximale Kapazität erreicht hat. Spieler in unterschiedlichen Set interagieren auf unterschiedlichen Mosaik Spielflächen.

Im Falle des öffentlichen Mosaiks, können Spieler einem Set zugeteilt sein, das aus Spielern desselben Rooms und Spielern aus dem öffentlichen Room besteht und interagieren am selben Mosaik, obwohl sie in verschiedenen Rooms sind. Im Falle eines individuellen Rooms werden die Spieler jedoch nur zu Sets mit Spielern des selben Rooms eingeteilt.

Sind die Spieler einmal einem Set zugeteilt, interagieren die Spieler nur mit anderen Mitgliedern dieses Sets. Die Spieler bemerken nicht, dass sie in Sets eingeteilt sind und können sich daher auch nicht aussuchen, welchem Set sie zugeteilt werden.

Spieler

Aktive Spieler

Aktive Spieler sind Spieler, die in den letzten 60 Sekungen ein Steinchen bewegt oder einen anderen Spieler bewertet haben. Die Gesamtanzahl der Spieler eines Sets ist bestimmt durch die Anzahl der sich im Set befindlichen aktiven Spieler.

Inaktive Spieler

Inaktive Spieler sind Spieler, die in den letzten 60 Sekunden kein Steinchen bewegt oder einen anderen Spieler bewertet haben. Diese Spieler sind ähnlich wie Zuschauer. Sie können die Bewegungen der Steinchen der anderen Spieler sehen, obwohl sie nicht am Spiel teilnehmen. Inaktive Spieler werden beim Bestimmen der Gesamtanzahl der Spieler in einem Set nicht berücksichtigt.

‘Schlafende’ Spieler

Spieler, die seit 30 Minuten kein Steinchen bewegt oder einen anderen Spieler bewertet haben, werden als schlafend betrachtet. Diese Spieler sehen die Bewegungen der anderen Spieler in der Mosaik Spielfläche nicht mehr. Sie werden auch nicht beim Bestimmen der Gesamtanzahl der Spieler in einem Set berücksichtigt.

‘Abgelaufene’ Spieler

Spieler, die seit 35 Minuten kein Steinchen bewegt oder einen anderen Spieler bewertet haben, werden als abgelaufen betrachtet. Wenn ein Spieler abgelaufen ist, dann wird er aus dem Room und von BunteSuppe gelöscht, außer er ist angemeldet.

Set Erzeugung

Wenn die Anzahl der aktiven Spieler in einem Set die maximale Auslastung des Sets überschreitet, wird ein neues Set erzeugt, um die Anzahl der aktiven Spieler in jeder Mosaik Spielfläche auszugleichen.

Die Erzeugung eines neuen Sets beinhaltet folgende Schritte:

  1. Die Daten der momentanen Mosaik Spielfläche werden dupliziert.
  2. Die Hälfte der aktiven Spieler werden in ein neues Set transferiert, während die andere Hälfte im existierenden Set verbleibt.
  3. Eine neue Mosaik Spielfläche wird erzeugt, wobei die Steinchen auf denselben Positionen sind wie im originalen Mosaik.
  4. Die Spieler werden übergangslos auf die neue Mosaik Spielfläche transferiert, die Spieler der existierenden Spielfläche spielen auf ihrer Spielfläche weiter.

Set Collapsing

Wenn alle Spieler in einem Set entweder inaktiv, schlafend oder abgelaufen sind, werden die Daten des Sets von der Database gelöscht und die Mosaik Spielfläche hört auf zu existieren.

Wie es funktioniert

Um eine optimale Anzahl an Sets per Room aufrecht zu erhalten, überprüft das System alle 5 Sekunden jeden Room, um zu bestimmen,

  1. Ob ein Set mehr als die maximale Anzahl an aktiven Spielern beinhaltet; und
  2. Ob ein Set jetzt null (zero) aktive Player (oder eher keine nicht-abgelaufenen Player) beinhaltet.

Neue Sets werden in Rooms erzeugt, welche Sets mit mehr als der maximalen Anzahl an aktiven Spielern haben und Sets mit keinen aktiven Spielern werden zerstört. Abgelaufene Spieler werden dabei auch vom System als Teil dieses Prozesses gelöscht.