Ruby on Rails als Plattform für ein browserbasiertes Online-Spiel auswählen

8

Ich habe einige (ich denke) wirklich gute Ideen für ein Online-Strategiespiel ähnlich Travian. Es gibt einige Inhalte, die ich noch nicht herausgefunden habe, und einige andere Herausforderungen, von denen ich noch nichts weiß.

Dies ist ein ziemlich großes Projekt und vielleicht zu schwer für eine Person, die (noch) kein erfahrener Webentwickler ist. Ich würde es trotzdem gerne ausprobieren, aber ich habe Probleme, eine Plattform zu wählen. Die Welt "Waage" wurde in letzter Zeit viel herumgeworfen und ich habe gesehen, wie Ruby on Rails geschlagen wurde, weil es nicht gut skaliert, also bin ich hierher gekommen, um ein paar Antworten zu bekommen.

Ich mag Ruby on Rails, sowohl Ruby als auch Rails. Ich bin zwar kein Experte darin, aber ich arbeite gerne damit. Ich habe auch schon mit Python + Django gearbeitet und auch mit PHP (was ich nicht mag.)

Idealerweise hätte das Spiel 7000 Spieler pro Server, vermutlich viele Daten pro Sekunde. Wäre RoR nach wie vor eine tragfähige Plattform?

Es tut mir leid, wenn diese Frage vage ist, ich schätze, ich suche nach einem "RoR ist in Ordnung, mach es!" Art der Antwort. Alles, was Sie hinzufügen möchten, ist in Ordnung.

Danke!

    
Emil Ahlbäck 12.01.2011, 13:19
quelle

5 Antworten

6

Wenn ich Sie wäre, würde ich auf nicht blockierende Server wie node.js schauen, nur weil sie VIEL besser dafür geeignet sind, viele Verbindungen für längere Zeit offen zu halten, was Spiele im Vergleich tun müssen zu traditionellen Webservern.

Das sagte

Beim Skalieren einer Web-App sind drei Dinge zu beachten: Speicher, Ausführungsgeschwindigkeit und io (hd und Netzwerk) in dieser Reihenfolge.

Für die Erinnerung sind die Dinge viel besser als früher. Phusion Passenger verwendet Copy-on-Write, um seine Worker zu verzweigen, so dass die Rails-Umgebung unter allen Arbeitern auf einer bestimmten Schicht geteilt wird, was ziemlich signifikant ist. Es hat auch enorme Verbesserungen in der Art und Weise gegeben, wie ruby ​​den Speicher im Vergleich zu "dunklen Zeiten" verwaltet. Wenn Sie 1.8.7 verwenden, möchten Sie die Patches der Ruby Enterprise Edition verwenden (der Unterschied ist wie bei Tag und Nacht). . 1.9.x war so ziemlich ein totales Neuschreiben der Laufzeit, wenn Sie also die Speicherprobleme verwenden, wurde Ruby bereits adressiert.

Für die Ausführungsgeschwindigkeit ist 1.8.7 normalerweise "schnell genug" (zumindest nach dem Anpassen der Speicherbereinigungseinstellungen). 1.9.2 ist in etwa die gleiche Geschwindigkeit wie Python, was es auf die schnellere Seite der interpretierten Sprachen bringt. Wie wichtig dieser Punkt ist, hängt vollständig von der Art Ihrer Anwendung ab.

Letzter Punkt ist IO, was nicht wirklich ein Problem von Schienen ist, sondern eher Ihre Persistenzstrategie. Rubyists neigen dazu, neue Dinge zu lieben, also wirst du erstklassige Unterstützung für Dinge wie redis und mongodb finden, mit einer Menge Leute, die darüber reden, sie zu benutzen und ihre Gewinne / Fallstricke. Ich würde in Mongo schauen, wenn ich Sie wäre und sehen, ob die Haltbarkeit Kompromisse akzeptabel sind.

Ich war in Java / .net, bevor ich auf Schienen ging, und am Ende des Tages wirst du mehr für die Infrastruktur zahlen, aber die Menge wird durch die Zeit, die du in der Entwicklungszeit einsparst, völlig in den Schatten gestellt.

    
Matt Briggs 12.01.2011, 14:16
quelle
6

baue es in Rails, host es auf Heroku.com - fertig. Fast unendliche Skalierung, dass Sie sich keine Gedanken darüber machen müssen, wie es funktioniert (es tut es einfach) und es beherbergt eine Menge von stark frequentierten Facebook-Apps, so kann mehr als nur damit umgehen.

    
John Beynon 12.01.2011 14:58
quelle
1

Wie Sie selbst gesagt haben, haben Sie bereits die Antwort und Sie suchen nur nach aufmunternden Worten :). Ich bin selbst kein RoR-Experte, aber ich glaube nicht, dass Skalierbarkeit auf dieser Plattform ein so großes Problem ist. Ich würde dir raten, einen Architektur-Spike zu machen (XP-Terminologie). Schreiben Sie einen Test mit 7000 Clients und einer Methode, die ähnliche Operationen ausführt wie das, was Sie erstellen möchten. Zum Beispiel könnten Sie Dateien laden, Ansichten rendern oder einfach nur warten ... Der Punkt ist, nur das zu testen, worüber Sie sich Sorgen machen. Viel Glück!

    
Gabriel Ščerbák 12.01.2011 13:30
quelle
0

Das ist eine unmögliche Frage, denn um zu wissen, ob Rails für das geeignet ist, was Sie tun wollen, müssten wir viel mehr darüber wissen, was Sie zu tun versuchen. Der beste Rat, den ich geben kann, wenn ich keine Informationen habe, ist, dass Sie sich die railslab-Skalierungsvideos ansehen, um sie zu bearbeiten für dich selbst.

    
srboisvert 12.01.2011 15:37
quelle
0

Ich denke Ruby on Rails ist eine gute Wahl für das, was Sie brauchen. Tatsächlich haben wir kürzlich eine Plattform für ein Online-Gaming-Turnier geschaffen, bei der Spieler und ihre Spielbots ein Logikspiel spielten.

Wir haben Ruby on Rails und Sidekiq im Backend, ReactJS und WebSocket im Frontend verwendet. Und es hat für eine ziemlich große Anzahl von Spielern gut funktioniert. Hier ist das Tutorial basierend auf dem, was wir während des Aufbaus gelernt haben: Wie man eine Game Engine mit Hilfe von Ruby on Rails

    
Dariya L. 12.03.2018 11:29
quelle

Tags und Links