Ich bin daran interessiert, eine Art Multiplayer-RPG als rein browserbasiertes Spiel mit geringen oder keinen Plugin-Anforderungen zu entwickeln. Nachdem ich einige Nachforschungen angestellt habe, bin ich zu folgendem Plan gekommen. Ich bin mir bewusst, dass einige der Tech, auf die ich hier referenziere, nicht über alle Browser (speziell IE) übernommen werden, aber ich bin bereit, das im Moment zu akzeptieren.
Auch - mir ist bewusst, dass ein MMO ein hohes Ziel ist, auf das ich mich in jedem Fall bemühen muss. Aber nachdem ich in der Vergangenheit viele kleinere Projekte in einer ähnlichen Richtung gemacht habe, möchte ich das wirklich gut machen endlich.
Also eine grobe Skizze, ich würde gerne von grellen Problemen hören, die jeder in dieser Anordnung sehen kann:
KUNDE: WebGL / Javascript (wahrscheinlich three.js ). Verwenden Sie den lokalen Browserspeicher, um Spielinhalte zu speichern, und akzeptieren Sie, dass durch das Löschen des Browsercaches diese entfernt werden.
MESSAGING: Kodieren Sie Nachrichten zwischen Client / Server mithilfe von Google-Protokollpuffern , um den Aufwand zu verringern und die Größe zu reduzieren. Die Nachrichtenübermittlung erfolgt über WebSocket.
SPIELSERVER: läuft auf gevent in Python (scheint eine gute Lösung zu sein, um mit vielen Nebenläufern umzugehen). Würde mit dem Sharded-Muster erstellt, basierend auf dem Design hier:
DB SERVER: MySQL für die Datenbank, PHP zwischen dem Spielserver und der DB.
DETAILS: Ich beabsichtige, den Spieleserver einen einzelnen Client ungefähr 15-20 Mal pro Sekunde aktualisieren zu lassen und clientseitige Vorhersage zu verwenden, um die Lücken zu füllen. Clients können Schlüsseleingaben / -nachrichten im Bereich von 30 fps an den Server senden. Ich würde lieber eine Erfahrung machen, die so nah wie möglich an der Echtzeit ist und nicht auf Turn-Based basiert. Mein Hauptanliegen ist das TCP-basierte Protokoll von WebSocket, wird dies das Ganze unmöglich machen?
Scheint diese Lösung SO realistisch?
vielen Dank,
Im Allgemeinen erhalten Sie mit der localStorage-API 5 MB Speicherplatz. Wenn du wirklich ein 3D-Spiel mit Sound / Musik hast, wird es sehr schnell von deinem Vermögen aufgefressen werden (wie groß ist eine gute MP3-Qualität heutzutage?). Sie müssen sehr aggressiv sein, wenn Sie Ihre Assets komprimieren, und müssen höchstwahrscheinlich einen Mechanismus entwickeln, mit dem Sie während des Spiels Inhalte in den lokalen Speicher streamen können.
Ich würde fragen, warum Sie PHP zwischen dem Spielserver und der Datenbank benötigen. Kann der Game Server nicht direkt mit der Datenbank sprechen und Ihnen etwas Arbeit ersparen?
Viel Glück mit Ihrem Projekt.
Tags und Links python javascript multiplayer webgl gevent