Projekt: Browsergame

hedemi

New Member
Hallo,

mein Name ist Thomas und ich verwende seit ca. 2 Jahren einen erheblichen Teil meiner Freizeit für die Realisierung eines Browsergames. Meine Vorstellung ist ein Mix aus Aufbaustrategie, RPG und Simulation.
Da ein solches Projekt mit der Infrastruktur steht und fällt, habe ich mich bisher hauptsächlich damit befasst. Und da wir hier in einem Serverforum sind, hier die technische Seite des Projekts:

Debian vServer (Initialkosten gering, Erweiterung einfach)
Apache2 mit Mongrelcluster für die WebAPP
MySQL als Datenbank (sqlite für trac)
Postfix als MTA (Spamassassin, amavis und ClamAV)
ejabberd als MUC und Privatchat spielintern (später erweiterbar) dienen soll
(mumble Voicechat ist angedacht als spätere Erweiterung bei bestehendem Interesse der Com)
trac mit git als PMS/Versionierungstool
ruby mit RVM und den gems rubyonrails, xampp4r, ...

Ich habe ein Augenmerk auf Modularität gesetzt und halte dies auch für einen Schlüssel, den ich auch in Zukunft beibehalten möchte. Des Weiteren ist es wie geschrieben ein "Hobbyprojekt". Die Planung ist also langfristig ausgerichtet und das "Arbeiten" soll Spaß machen.

Ich suche also nicht jemanden, der morgen ein funktionierendes BG im Internet anbieten will um des anbietens Willen, sondern denjenigen, der sich jetzt gerade denkt: "Hmm, das klingt interessant, ob er wohl <dies> und <jenes> bedacht hat?"

Zu meiner Person: Ich habe eine Ausbildung im Handwerk gemacht und bin danach auf dem 2. Bildungsweg zur Hochschulreife. Ich werde bald mein Studium abschließen und derzeit auf dem Weg ins Arbeitsleben. Mit meinen knapp 30 Jahren, in denen ich in meiner Freizeit gerne Strategie- und Aufbauspiele spielte, habe ich gewisse Anforderungen an mein Projekt, sowie an eventuelle Helfer.

Dies soll nicht bedeuten, dass man bereits alles können muss. Aber, dass man willens ist mit der Aufgabe zu wachsen und die benötigte Geduld für ein "Hobbyprojekt" mitbringt.

Gerne beantworte ich weitere Fragen per PN oder hier im Thread und freue mich über eure Zuschriften.

Viele Grüße,
Thomas
 
Das ist witzig, du sprichst zwei Dinge an, die mich schon ein paar Stunden Suche gekostet haben. :)
Thin statt Mongrel
Das ist ein guter Vorschlag. Den werde ich mir zu Herzen nehmen und nächstes Wochenende mal eine Testinstallation vornehmen und vergleichen. Ich las, dass Thin ressourcenschonender sein soll. Hast du Erfahrung damit?


Erst gestern habe ich mir die Frage auch wieder gestellt. Was mir an trac gut gefällt ist die einfache Installation und Initialisierung. Redmine kommt mir etwas schwerfällig und komplex vor und scheint weit über meine Bedürfnisse hinauszugehen. Auch gefällt es mir nicht für Redmine die ganzen älteren Versionen von Ruby und den Gems zu installieren. RVM setze ich zwar ein, bin aber nicht auf eine funktionierende Konfiguration, die zwei verschiedene Versionen Ruby + Gems einsetzt, bisher gekommen. Falls dir oder jemand anderem dazu ein gutes HOWTO einfällt, würde ich dies ausprobieren.

Viele Grüße
Thomas
 
Sieh dir mal Thin statt Mongrel an. Das ist heute wohl eher state of the art. Lässt sich auch viel angenehmer einrichten.
Ich würde da ganz weg von gehen. Meine Präferenz in die Richtung wäre entweder Phusion Passenger oder eine Lösung mit JRuby, z. B. TorqueBox. Das bringt dann noch einige Services mit, die sich bei einer ernsthaften Anwendung recht gut verwenden lassen (Messaging, Scheduling).
 
Das sind richtig gute Ratschläge! Danke euch beiden!

Redmine werde ich aber nicht benutzen. Meine Gründe sind dieselben wir bereits oben beschrieben. Ich habe versucht mit RVM eine Umgebung für Redmine zu schaffen, jedoch scheitert dies an der benötigten alten RubyGems Version. Ich müsste also eine ganze Umgebung "von Hand" warten. Das ist mir für ein PMS zu viel Arbeit und da ich in den nächsten Schritten die Webumgebung (Ruby,Rails&Apache) sowieso auf einen eigenen (v)Server ausgliedern möchte, fällt das extra installierte Python nicht so sehr ins Gewicht.

JRuby: Ich hatte mir zu Beginn Gedanken gemacht ob ich nicht in Java schreiben soll. Was mich abgeschreckt hat war die undurchsichtige Lizenzierung von Programmbibliotheken und den IMHO großen Overhead + Securityissues. Damit fühlte ich mich nicht sicher und habe es bleiben lassen. Daher glaube ich. dass JRuby für mich keine Option ist. Sollte ich das falsch verstanden haben, lasse ich mich gern auf eine Diskussion ein.

PhusionPassenger: Der ist irgendwie an mir vorbeigegangen. Was ich seit dem Tipp von Roger Wilco davon gelesen habe fand ich auch interessant und werde das dieses Wochenende mal testen.


Ich habe noch eine Frage bezüglich der Sicherheit, die ich dort im Thread "Einschätzung des Sicherheitslevels meines Servers" stelle. Vielleicht kann der geneigte Leser ja auch dort mal vorbeischauen. Ansonsten wünsche ich ein schönes Wochenende.

Viele Grüße
Thomas
 
Ich würde da ganz weg von gehen. Meine Präferenz in die Richtung wäre entweder Phusion Passenger oder eine Lösung mit JRuby, z. B. TorqueBox.

Da würden mich mal die genaueren Gründe interessieren. Ich finde die Trennung von Webserver / Proxy und Application-Server sehr angenehm und mag daher Passenger nicht so. In einem Benchmark, welches ich zum Testen gemacht habe, landete Thin ganz knapp vor Passenger, aber so unmerklich, dass das keine Rolle spielt. Und Java erlebe ich nur als Ressourcen-Grab.
 
Ich finde die Trennung von Webserver / Proxy und Application-Server sehr angenehm und mag daher Passenger nicht so.
Phusion Passenger hat einige nette Einstellungen für Rack-basierte Anwendungen und auch fortgeschrittene Einstellungen lassen sich damit ganz gut implementieren.

Wenn du Thin, Mongrel oder sonst einen anderen Webserver hinter einem Reverse Proxy betreibts, musst du diese i. d. R. auch ins Monitoring aufnehmen. Bei Phusion Passenger fällt diese Anforderung weg, da der Apache httpd (oder nginx) sowieso schon überwacht wird.

Auch hast du bei einem "getrennten" Setup mit Front-Proxy und Backend-Server i. d. R. eine feste Prozessanzahl. Mit Phusion Passenger können je nach Anzahl der Requests im Rahmen der Konfiguration mehr Prozesse erzeugt werden, vergleichbar mit der Strategie der Prefork und Worker MPMs des Apache httpd.

Letztlich ist es Geschmackssache, es funktionieren beide Strategien. Ich habe für mich jedenfalls festgestellt, dass sich meine Anforderungen mit Phusion Passenger besser umsetzen lassen, als mit Mongrel/Thin.

Und Java erlebe ich nur als Ressourcen-Grab.
Definiere Ressourcengrab.

JRuby wird sicherlich keinen Preis für das schnellste Startup gewinnen. Ebenso würde ich auf einem speicherbeschränkten System (sagen wir einfach mal weniger als für die Anwendung verfügbarer 1 GiB Hauptspeicher) nicht zu JRuby bzw. TorqueBox greifen. Sobald aber eine ernsthafte Anwendung längere Zeit läuft bzw. laufen muss (wie eben bei einer typischen Webanwendung, die nicht alle 5 Minuten neugestartet wird), kann die Hotspot VM ihre Stärken ausspielen.

Du musst dir einfach mal klarmachen, wieviele Mannjahre an Entwicklungsarbeit in diese hineingeflossen sind. Da kann die YARV (Ruby 1.9) einpacken und Ruby 1.8 ohne jegliche VM ohnehin. Bitte in diesem Fall nicht die Java-Sprache mit der Java-Plattform verwechseln.

TorqueBox liefert durch den JBoss AS Unterbau auch zahlreiche brauchbare Dienste mit, die ansonsten wiederum separat installiert und gewartet werden müssten. TorqueBox kann mit AJP (z. B. mod_proxy_ajp oder mod_jk) oder auch ganz normal mit HTTP (via mod_proxy_http) hinter einem Apache httpd betrieben werden, womit du wieder deine Trennung zwischen Frontend- und Anwendungsserver hast.

EDIT: Bezüglich Ressourcengrab: http://torquebox.org/news/tags/benchmarks/
Die Ergebnisse ruhig mit Vorsicht genießen, aber ganz verkehrt sind die Ergebnisse nicht.
 
Last edited by a moderator:
Back
Top