Hi Leute,
ich plane derzeit einen Relaunch meines Browsergames. Die grundlegende Frage, die ich mir nun stelle ist: Welche Technologie / Sprache soll zum Einsatz kommen?
Bisher habe ich mit PHP gearbeitet. War damit aber zuletzt nicht mehr so sehr zufrieden, da:
- Performance: PHP scheint mir etwas zu langsam sein bei großen und komplexen Berechnungen (mir ist das beim Kampfsystem aufgefallen).
- Spieler ist Auslöser für Berechnung: PHP-Skripte werden (von sekündlichen Cronjobs mal abgesehen) nur ausgeführt, wenn das Skript aufgerufen wird. Problem hierbei ist, dass es sich bei mir um Echtzeit-Strategie handelt. Schnelle Ladezeiten sind also wichtig. Problem ist derzeit, dass die komplexen Berechnungen etwas dauern, wenn der Spieler die Seite aktualisiert und z.B. dann ein Kampf berechnet werden muss (und evtl. noch 30 Handelsflotten, die gerade angekommen sind).
Aufgrund dessen habe ich mir überlegt, große Berechnungen in eine JVM auszulagern und z.B. mit Java zu berechnen. Ich glaube gehört zu haben, dass das andere Browsergames teilweise auch so machen (z.B. Kampfskript in C++; Rest in PHP).
So könnte ich beispielsweise Truppenbewegungen mit Java berechnen lassen (inkl. zugehörige Änderungen in der Datenbank) und müsste dann größtenteils nur noch SELECT-Abfragen durchführen. Das Java-Programm würde quasi permanent im Hintergrund lauschen, also prüfen ob zu berechnende Dinge in der Datenbank vorhanden sind. Der Spieler wäre also nicht mehr der entscheidende Punkt eine Berechnung auszulösen (wie oben genannt).
Ich habe ja schon die JVM für komplexe Berechnungen als Alternative genannt. Im dem Zusammenhang gibt es natürlich auch Groovy (mit dem Framework Grails). Vorteil von Groovy + Grails wäre:
- Soll anscheinend hochperformant sein.
- Ein sehr gutes Framework mit vielen interessanten Ansätzen und Ideen.
- Groovy ist weniger schreibbarer Code, wie z.B. PHP. Man kann also in weniger Zeit produktiver sein.
Nachteil:
- Einarbeitungszeit
Nun die Frage an euch: Wer hat Erfahrungen? Bzw. was würdet ihr mir empfehlen?
Unheimlich wichtig ist mir:
- Skalierbarkeit.
- hohe Effizienz bei der Nutzung der Hardware, also Performance insgesamt.
MfG