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)?


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 :)


Was ist "Netty and Protobuf"?
Quazi Irfan


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.


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.


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


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.


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/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.