Mit welcher Sprache schreibe ich am besten ein Browsergame?



  • Hallo,

    nachdem ich bei der Arbeit leider nur noch mit MFC, ATL und QT programmiere möchte ich wenigstens privat noch etwas tun.
    Da dachte ich mir jetzt, ein Onlinegame zu schreiben.

    Soweit schön und gut. Nun habe ich mir mal eine ganz nette Libary geschrieben, die mir den Webserver miemt, die auch recht gut ist. Jetzt frage ich mich aber folgendes:

    Soll ich das Spiel in c, c++, java, oder doch in php schreiben??

    Hat da jemand erfahrung???

    Vor allem aber, kennt sich jemand mit dem CGI Port vom Apache aus? Wie schnell ist der wirklich? Das er schneller als php sein muss ist klar, und dass ich da auch mit xml tamplates usw. arbeiten kann auch, aber lohnt es sich, ein ganzes onlinegame auf diesem Port basieren zu lassen, oder soll ich doch leiber einen ganz eigenen server benutzen, bei dem ich ja doch erst langzeitstabilität testen muss, usw...???

    Hat vielleicht schonmal jemand CGI auf geschwindigkeit gestestet???

    mfg

    Freshman



  • Hab kein Wort kapiert, sorry.

    Musst mehr erklaeren was du wie machen willst. Und was ein "Apache CGI Port" ist, weiss ich auch nicht 😞

    Freshman22 schrieb:

    Hat vielleicht schonmal jemand CGI auf geschwindigkeit gestestet???

    Sehe keinen Grund warum man nicht fastCGI nehmen sollte - das hat bedeutende Vorteile gegenueber CGI.



  • um nochmal etas klarer zu werden.

    ich möchte ein onlinegame programmieren, am liebsten in c++

    was ist besser:

    Apache, um mit dem über cgi zum user verbinden
    oder
    einen eigenen server bauen, um damit direkt mit dem user zu reden.

    Klar ist ein webserver um das spiel besser, die frage ist nur, ob sich das lohnt.
    Deshalb möchte ich wissen, wie schnell cgi ist, wie große anwendungen es verträgt, usw.



  • Freshman22 schrieb:

    Apache, um mit dem über cgi zum user verbinden
    oder
    einen eigenen server bauen, um damit direkt mit dem user zu reden.

    Kommt darauf an. Ein Spiel ala CS waere mit CGI doch etwas kompliziert zu realisieren, aber Browser-Games sind recht praktisch wenn ein Apache im Hintergrund laeuft...

    Deshalb möchte ich wissen, wie schnell cgi ist, wie große anwendungen es verträgt, usw.

    Ganz erhlich: ich glaube du hast keine Ahnung von der Materie...
    CGI ist eine Schnittstelle, mehr nicht. Ich habe dich auf eine gute alternative zu CGI verwiesen - die du fuer C++ bitter noetig haben wirst.



  • ganz ehrlcih:

    nein, davon habe ich keine ahnung, deshalb möchte ich es ja auch machen.

    wenn ich es könnte bräuchte ich sowas ja nicht zu machen, man möchte sich ja auch fortbilden. Wie gesagt, ich weiß weder, was man mit cgi wirklich machen kann noch was mit fast cgi geht. habe damit nur mal kurz ein kleins Gästebuch ausprobiert. Mehr noch nicht.

    ps.: wenn ich schon alles könnte, dann müßte ich hier nicht fragen



  • ich benutzen CGI zum debuggen und FastCGI um die releaseversionen meiner module laufen zu lassen, das ist ganz praktikabel, denn FastCGI module bleiben eigentlich die ganze zeit geladen, es ist als ob du dll-plugins eingebunden hättest, normale CGI hingegen starten und beenden sich für einen job immer wieder, das ist zum debuggen gut.
    das wäre meiner erfahrung nach auch der einzige unterschied zwischen den beiden, daraus resultiert natürlich das FastCGI eine kurzere latenz der antwortzeiten hat, weil das laden und beenden entfällt.
    Ich hab das auf einem celeron500 mit 128mb und w2k laufen, als server nehm ich mal den apache mal den PI3Web server.

    Einen eigenen würde ich an deiner stelle nur schreiben um zu wissen wie das geht, aber damit ein spiel zu betreiben wäre ein wenig riskant. Es gibt dermassen viele Fallstricke denen man zum Opfer fallen kann, dass selbst der Apache immer weiter gefixt werden muss wegen irgendwelcher bugs die sich negativ auf die sicherheit ausüben können und sowas wäre bei eine spiel echt häftig.
    bsp. du bekommst einen URLRequest der länger ist als der buffer, den du dafür vorgesehen hast und scho gibt'S nen bufferoverflow, ok kann man fixen -> dynamisch buffer größer allokieren, kann ja nichts schiefgehen. aber irgendjemand macht nun über nacht einen request der ins endlose geht und du allokierst dir erstmal das ganze ram bis du vor dem DOS stehst und irgendwann bekommst du keinen speicher, hast vergessen da zu überprüfen und schon schreibst du wieder ins void. klar, man kann URLs ab einer gewissen größe ignorieren z.b. wäre 1MB sicher, dann started aber irgend so ein kiddie die idee, so ca 1000requests zu starten und langsam byte für byte alle requests synchron zu starten sodass du mit deinem kleinem server versuchst 1GB zu allokieren usw...

    solche scenarien gibt es ohne ende und wenn du spieler hast, wirst du auch irgendwelche idioten haben die nichts anderes zu tun haben als den anderen zu zeigen 'welche ungeheuere macht' sie haben indem sie allen das spiel kaputt machen und du bist dann 90% der zeit am fixen des servers anstatt am spielcoden.

    deswegen nutze lieber bewehrte sichere server falls du ein spiel coden möchtest und schreibe nur einen damit du weißt was intern passiert.

    rapso->greets();



  • Von einem Spiel weiß ich, dass es anfangs in PHP geschrieben wurde, aber später dann nach C++ portiert wurde wegen der Geschwindigkeit (wobei die jetzt durch die tausende Grafiken und 4mal soviele Spieler wieder flöten ging).
    Ich könnte mir vorstellen, dass JSP ne ganz interressante Möglichkeit ist.



  • Jaaaaaaa, JSP *sabber* 😉
    Auf jeden Fall ist die Performance von JSP IMHO ziemlich gut. JSP-Seiten werden beim ersten Aufruf in ein Servlet compiliert (was sau lange dauert), aber dann wird nur noch Java-Code ausgeführt.



  • Ach und du kannst das bescheidene, wenig umfangreiche, Java-API vollständig nutzen, was für die Programmierung eines Spiels bestimmt nicht gerade ein Nachteil ist.



  • Wenn du es lieber in C++ coden willst, dann schau mal hier:

    http://cserver.sourceforge.net/

    http://stud3.tuwien.ac.at/~e9626231/cse/home.html

    Ansonst kannst du auch C++/CLI in Kombination mit ASP.NET benutzen:
    http://www.codeproject.com/managedcpp/helloworldmc.asp

    Viel Spaß!


Anmelden zum Antworten