mmofacts.com

PHP vs. Java / Groovy / Grails

gepostet vor 12 Jahre, 10 Monate von D4rk5in

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

gepostet vor 12 Jahre, 10 Monate von BlackScorp

Was hällste von HipHop?

gepostet vor 12 Jahre, 10 Monate von TheUndeadable

> Spieler ist Auslöser für Berechnung: PHP-Skripte werden (von sekündlichen Cronjobs mal abgesehen) nur ausgeführt, wenn das Skript aufgerufen wird.

Du kannst genauso ein PHP-Skript dauerhaft laufen lasse, wie du ein Java/Ruby/Sonstwas Programm dauerhaft auf einem Rechner laufen lassen kannst.

'Damals', als ich jung war, also etwa 2004 hatte ich für mein BG ein PHP-Skript dauerhaft für 'Ticks' laufen lassen... Es lief monatelang ohne Memory-Leaks oder andere Schmerzen zu verursachen.

php -f yourdaemon.php

Aus der Perspektive gibt es keinen Vor- und Nachteil für Java/Mono/etc.

gepostet vor 12 Jahre, 10 Monate von Dunedan

Ich bin ja neuerdings vom Konzept von node.js recht begeistert (auch wenn mich die Tatsache, dass es JavaScript ist abschreckt). Wenn man Performance haben will, dürfte das einer der besten Wege sein.

gepostet vor 12 Jahre, 10 Monate von Phoscur

Ist auch die Platform die ich verwenden werde. Wenn man schon JavaScript Kenntnisse hat, kann man auch in Coffeescript (das zu JavaScript kompiliert) verwenden. Die Syntax sollte vor allem Python und Ruby Jüngern gefallen!

gepostet vor 12 Jahre, 9 Monate von D4rk5in

Danke schon mal für eure Antworten. Ich hab mich in den letzten Tagen mal mit dem ein oder anderen Vorschlägen befasst.

Original von BlackScorp

Was hällste von HipHop?

Davon hab ich schon mal vor einer Weile gelesen. Die Frage, die sich da für mich gestellt hat, war: Warum dann überhaupt noch PHP? Da bin ich ja effizienter und schneller, wenn ich gleich direkt in C/C++ schreibe ... kommt mir zumindest so vor.

Original von Dunedan

Ich bin ja neuerdings vom Konzept von node.js recht begeistert (auch wenn mich die Tatsache, dass es JavaScript ist abschreckt). Wenn man Performance haben will, dürfte das einer der besten Wege sein.

Ich hab mir das mal intensiv angeschaut und auch das kleine Chat-Programm geschrieben, das man auf der Seite von node.js am Anfang findet. Im Internet findet man auch diverse Vorträge, die das Thema "Realtime Web Applications" behandeln. Dort wird auch sehr positiv über node.js berichtet (neben diversen anderen Frameworks). Insgesamt bin ich ebenfalls von dem Konzept sehr begeistert, vor allem weil man sehr gut skalieren kann. Was die Performance angeht, dürfte das auf jeden Fall die richtige Richtung sein ...

Hat sich schon jemand genauer mit node.js befasst?

Also mir ist ja klar, dass ich da JavaScript serverseitig schreiben kann. So wie ich das bisher gesehen hab, schreib ich da eigentlichen meinen eigenen Webserver u.a. damit, oder? Mir fehlt noch ein bisschen das "Feeling" für dieses Konzept dahinter. Prinzipiell brauch ich ja dann gar kein z.B. Apache mehr? Ich schreib mir meinen eigenen Server in Javascript und alles was ich in PHP bis jetzt geschrieben hab, schreib ich auch in JavaScript und bring dem Server eben bei, dass er das ausführen soll?

Wäre nett, wenn jemand, der sich damit auskennt, ein bisschen was darüber erzählen könnte ... Würde michs sehr interessieren!

MfG

gepostet vor 12 Jahre, 9 Monate von Dunedan

Original von D4rk5in

So wie ich das bisher gesehen hab, schreib ich da eigentlichen meinen eigenen Webserver u.a. damit, oder?

Die Bibliotheken dafür (HTTP, usw.) bringt dir node.js bereits mit. Du musst sie halt bloß entsprechend je nach Anwendungszweck einbinden.

Prinzipiell brauch ich ja dann gar kein z.B. Apache mehr?

Korrekt.

Ich schreib mir meinen eigenen Server in Javascript und alles was ich in PHP bis jetzt geschrieben hab, schreib ich auch in JavaScript und bring dem Server eben bei, dass er das ausführen soll?

Ebenfalls korrekt. Genau die Tatsache, dass man letztendlich serverseitig in Javascript programmieren muss, stört mich daran, weil ich nicht so der Javascript-Fan bin. Aber wen das nicht stört ...

gepostet vor 12 Jahre, 9 Monate von nOnAmE^

Also ich verwende node.js mit http://socket.io

Sprich ich entwickel weiterhin meine Webanwendungen via PHP und lasse diese auf meinem Apache laufen.
Mittels socket.io ( Websockets usw. ) greife ich dann auf den node.js Server zu.

Kann dieses Prinzip soweit nur empfehlen :)

gepostet vor 12 Jahre, 9 Monate von Sarge

Bei node.js ist bei der Programmierung nicht unbedingt Javascript das Problem, sondern das durch die Asynchronität ein imho sehr unübersichtliches Callback-Funktionswirrwar entsteht, der in der Regel auch garnicht die mögliche Asynchronität ausnutzt. Zum Glück sehe aber nicht nur ich das so und andere Leute haben sich dazu schon Gedanken gemacht, z.B. sehr interessant: http://tamejs.org/

gepostet vor 12 Jahre, 9 Monate von Dunedan

Original von nOnAmE^

Sprich ich entwickel weiterhin meine Webanwendungen via PHP und lasse diese auf meinem Apache laufen.

Mittels socket.io ( Websockets usw. ) greife ich dann auf den node.js Server zu.


Und wofür genau brauchst du da node.js?

gepostet vor 12 Jahre, 9 Monate von buhrmi

Original von Sarge

Bei node.js ist bei der Programmierung nicht unbedingt Javascript das Problem, sondern das durch die Asynchronität ein imho sehr unübersichtliches Callback-Funktionswirrwar entsteht, der in der Regel auch garnicht die mögliche Asynchronität ausnutzt. Zum Glück sehe aber nicht nur ich das so und andere Leute haben sich dazu schon Gedanken gemacht, z.B. sehr interessant: http://tamejs.org/

Also ich mag das Callback-Wirrwar :) Aber JS erledige ich auch nur noch ausschließlich in CoffeeScript. Mit vanilla JavaScript würd ich's wohl ebenfalls zum Kotzen finden ^^

Auf diese Diskussion antworten