Welche Serverplattform soll ich wählen [geschlossen]

8

Ich werde einen Server für einen Online-Multiplayer mit folgenden Anforderungen schreiben:

  • Ziemlich einfaches rundenbasiertes Spiel (denken Sie an ein Kartenspiel), das vollständig auf dem Server gespielt wird (Sicherheitsgründe)
  • Muss in der Lage sein, mehrere Spiele (Tische) mit 4 Spielern pro Tisch auszuführen, aber kein Lobby-System erforderlich (ein anderer Server kümmert sich darum)
  • Kann so viele Spieler wie möglich gleichzeitig unterstützen; Benötigt möglicherweise mehrere Server
  • Chatten Sie zwischen Spielern
  • Socket-Verbindung zu einem Flash / AIR-Client
  • Muss in der Lage sein, mit anderen Servern zu kommunizieren (für Spielerkonten und dergleichen)

Jetzt denke ich über zwei Optionen nach:

  • Smartfox (oder gleichwertig)
  • Eine benutzerdefinierte Java-Lösung in so etwas wie Tomcat

Warum Smartfox?

  • Es verwaltet mehrere Räume und chattet nativ
  • Es hat vermutlich Lösungen für bekannte Multiplayer-Gaming-Probleme

Warum Brauch?

  • Smartfox hat viele nicht benötigte Funktionen, die die Leistung beeinträchtigen
  • Smartfox kommuniziert mit einem XML-basierten Format, ich könnte ein effizienteres Binärformat verwenden.
  • Ich weiß nicht, ob das Ausführen des gesamten Spielmodells auf dem Server mit dem Erweiterungsmechanismus von Smartfox bequem ist
  • Mehrere Räume und Chat lassen sich leicht neu implementieren
  • Tomcat oder ein leichter Container ist einfacher bereitzustellen als Smartfox
  • Bessere IDE-Unterstützung für die Entwicklung auf Tomcat (automatische Bereitstellung usw.)

Was denken Sie? Sind meine Annahmen richtig? Haben Sie etwas hinzuzufügen? Welche Option sollte ich wählen (oder vielleicht eine ganz andere)?

Bart van Heukelom
quelle
Vielleicht fehlt mir etwas, aber ein "Kartenspiel" ist so einfach, dass man es in trivialer Zeit von Grund auf neu schreiben kann, und die Leistung sollte niemals ein Problem sein.
o0 '.

Antworten:

3

Ich würde definitiv eine benutzerdefinierte Lösung wählen: Auch wenn Sie kurzfristig etwas Zeit verlieren, wird sie definitiv besser skaliert, wenn Sie sie benötigen, und die Erfahrung, die Sie sammeln, wird für Ihre nächsten Spiele massiv wiederverwendbar sein. BlazeDs klingt nach einem hervorragenden Tool für Ihre Anforderungen, aber das Umschreiben eines Java-Spieleservers von Grund auf ist kein so großes Unterfangen, zum Beispiel mit Netty und Protobuf :)

Axelle Ziegler
quelle
Was ist "Netty and Protobuf"?
Quazi Irfan
2
Netty , Protobuf (von den Googles)
Richard Marskell - Drackir
5

In Bezug auf Ihre Punkte zur Unterstützung einer benutzerdefinierten Lösung:

Smartfox hat viele nicht benötigte Funktionen, die die Leistung beeinträchtigen

Da es sich um ein "einfaches, rundenbasiertes" Spiel handelt, ist es unwahrscheinlich, dass die Leistung ein Problem darstellt.

Smartfox kommuniziert mit einem XML-basierten Format, ich könnte ein effizienteres Binärformat verwenden.

Auch bei einfachen rundenbasierten Spielen kann die einfache Entwicklung leicht Vorrang vor der Formateffizienz haben. Wenn Sie also kein effizientes Binärformat entwickeln möchten , tun Sie dies nicht.

Mehrere Räume und Chat lassen sich leicht neu implementieren

Dies ist kein guter Grund, diese Funktionalität selbst zu implementieren. Es ist nur beruhigend zu wissen, ob Sie diesem Weg folgen.

Tomcat oder ein leichter Container ist einfacher bereitzustellen als Smartfox. Bessere IDE-Unterstützung für die Entwicklung auf Tomcat (automatische Bereitstellung usw.)

Sie müssen abwägen, wie viel Zeit Sie sparen, indem Sie eine benutzerdefinierte Lösung entwickeln und schnell bereitstellen, anstatt eine vorhandene Lösung zu verwenden und möglicherweise eine längere Bereitstellung durchzuführen. Es besteht die Möglichkeit, dass die Entwicklungszeit die geringen Vorteile einer schnelleren / einfacheren Bereitstellung ausgleicht.

Zusammenfassend: Ich empfehle, wenn möglich eine vorhandene Lösung zu verwenden. Es wird Ihnen wahrscheinlich viel Zeit sparen. Wie bei der bereits bestehenden Lösung, die für Dich liegt.

Janis Kirsteins
quelle
In Bezug auf Ihren Leistungspunkt: Ja, das Spiel ist einfach, aber es muss eine halbe Million Spieler auf so wenig Servern wie möglich unterstützen (wenn der Kunde seinen Wunsch hat)
Bart van Heukelom
Eine halbe Million gleichzeitige Spieler? Klingt so, als wäre der Kommentar zur Google App Engine einen zusätzlichen Gedanken wert. Das wird in der Lage sein, mit nur einer größeren Rechnung vom Prototyp bis zur vollständigen Bereitstellung zu skalieren.
drxzcl
@drxzcl Ist richtig. Die Google App Engine eignet sich aus Gründen der Skalierbarkeit hervorragend für rundenbasierte Spiele.
AturSams
3

Nachdem ich sowohl SmartFox als auch ElectroServer ausgiebig verwendet habe, empfehle ich immer ElectroServer. Es macht das gleiche wie SmartFox, ist aber nur ein bisschen solider und beinhaltet binäre Unterstützung.

Iain
quelle
1
Was meinst du mit binärer Unterstützung?
user3689
2

Ich würde dringend empfehlen, sich das Google App Engine- Projekt anzusehen .

Sowohl aus Hosting- als auch aus technischen Gründen. Wenn Ihr Spiel nicht schnell ist, sollte dies ein guter Ort sein, um loszulegen und den Umfang zu skalieren.

Code kann in Python oder Java sein.

Neptuns Stolz ist auf Google App Engine. Sehen Sie hier ein Interview mit dem Entwickler .

Kimau
quelle
3
Sieht aber nicht so aus, als würde es Sockets unterstützen, nur HTTP
Bart van Heukelom
2

Schauen Sie sich den folgenden Netty Game Server an . Es unterstützt ein Binärprotokoll. Hinweis: Geschrieben von mir! Hat TCP- und UDP-Unterstützung und verwendet Jetlang für extrem schnelles VM-Messaging.

Abraham Menacherry
quelle
2

Sie sollten sich unbedingt Firebase ansehen, einen Open-Source-Java-Multiplayer-Spieleserver.

Im Vergleich zu Smartfox verwendet Firebase ein Binärprotokoll, ist nicht überfüllt mit Funktionen und bietet eine hohe Leistung.

Wenn Sie Ihr eigenes System rollen, müssen Sie sich um alles kümmern, von der Behandlung von Sockets bis zur Behandlung von Parallelität. Mit Firebase erhalten Sie garantiert jeweils eine Aktion pro Raum.

Hinweis : Firebase wurde von Google erworben und verfügt nicht mehr über eine Open Source-Option.

Probieren Sie es aus: http://www.cubeia.org/

Faul
quelle