# Browsergame Client Server



## Mich90 (29. Jun 2011)

Guten Abend 

Ich habe mir die letzten Tage und Wochen ein neues Projekt in den Kopf gesetzt.
Es soll ein Onlinegame (Browsergame) werden, was auf Runden basiert (ein Tag = eine Runde).

Dazu soll die Datenbasis erstmal auf MySQL basieren. Ein Server soll das Spiel steuern und am Ende jeden Tages die Runde auswerten usw.
Ich habe allerdings ein paar Fragen zu der Implementierung:

Ist Java hier überhaupt sinnvoll?
Sollte man lieber das ganze auf PHP / JavaScript / ... basieren lassen?

Wenn das auf Java basieren sollte, benötigt man ja Client und Server. ( Ich meine mit Client und Server hier nicht die Hardware, sondern die geschriebenen Java-Programme. )
 Hier die Fragen:

Ist es sinnvoll, die gesamte Kommunikation mit der Datenbank über den Server zu machen? Oder ist es sinnvoller, den Client direkt mit der Datenbank zu verbinden?
Empfehlt ihr Hibernate oder lieber SQL?
Gibt es Tutorials für einen solchen Aufbau? Welche Klassen (außer normale Client-Server) sind noch interessant und könnten beachtet werden?

Ich denke mal, es werden noch mehr Fragen, aber das sind erstmal die wichtigsten...
Hat jemand so etwas schonmal umgesetzt? Würde mich gerne mal schlauer machen, da ich bis jetzt nur kleine Einzelspieler-Spielchen umgesetzt habe.

Viele Grüße
Micha


----------



## Gast2 (29. Jun 2011)

Ich würde dafür PHP nehmen.
Allein schon aus kostengründen 



> Wenn das auf Java basieren sollte, benötigt man ja Client und Server. ( Ich meine mit Client und Server hier nicht die Hardware, sondern die geschriebenen Java-Programme. )


Nein, nur der Server wird in Java geschrieben.
Der Client ist in deinem Fall dann der Browser des Users. Da brauchst du kein Java.



> Ist es sinnvoll, die gesamte Kommunikation mit der Datenbank über den Server zu machen? Oder ist es sinnvoller, den Client direkt mit der Datenbank zu verbinden?


Nein, der Client darf auf keinen fall direkten Zugriff auf die Datenbank haben (Sicherheit).


----------



## Antoras (29. Jun 2011)

Mich90 hat gesagt.:


> ist Java hier überhaupt sinnvoll?


Warum nicht?


Mich90 hat gesagt.:


> Sollte man lieber das ganze auf PHP / JavaScript / ... basieren lassen?


Nimm das was du besser kannst. Die Kombination Java/JavaScript schließt sich dabei nicht aus.


Mich90 hat gesagt.:


> Wenn das auf Java basieren sollte, benötigt man ja Client und Server.


Brauchst du immer. Egal bei welcher Technologie. Bei Browserspielen ist der Browser der Client.


Mich90 hat gesagt.:


> Oder ist es sinnvoller, den Client direkt mit der Datenbank zu verbinden?


Denk nicht mal im Traum daran...


Mich90 hat gesagt.:


> Empfehlt ihr Hibernate oder lieber SQL?


Wenn du keinen triftigen Grund hast auf SQL zu setzen, dann empfehle ich objektorientierte DBs, vllt. auch NoSQL. Gerade db4o als ODB ist von Java aus viel intuitiver und unkomplizierter zu bedienen als relationale DBs.



Mich90 hat gesagt.:


> Gibt es Tutorials für einen solchen Aufbau?


Schwierig zu sagen. Mit Java hast du die Möglichkeit neben einer browserbasierten Lösung auch den Client in Java zu schreiben (aber dann ist es ja kein Browserspiel mehr wenn es außerhalb vom Browser läuft). Dank GWT und RAP ist es auch möglich JavaScript basierte Weboberflächen zu erstellen und das ohne JavaScript zu können.


----------



## Mohackl (30. Jun 2011)

Greetings,

schau dir mal grails.org/ an. Damit kannst du wunderbar und schnell Webapplikationen erstellen. Es ist am Anfang immer ein gutes Gefühl, wenn das Grundgerüst recht schnell steht.

Oder, eine andere Möglichkeit ist die Google AppEngine. Mit ihr kannst du ohne Probleme in 20 Minuten schöne Ergebnisse erzielen. Wenn du dich mit dem GWT auseinander setzt ist auch eine Oberfläche schnell möglich.

Interessant hierbei ist die Möglichkeit zeitgesteuert Aktionen durchzuführen. So könnte der Server ohne Probleme jeden Tag einmal den "Zug durchführen". Auch hast du bei der AppEngine direkt einen Datenbankzugriff (BigTable) dabei.

Man muss sich nur ein wenig einschränken was das Nutzen von Serverzeit angeht. So ist es z.B. wohl besser den Zug nicht in einem Task unterzubringen, sondern ihn z.B. auf 10 Task aufzuteilen: Einer erstellt die Rohstoffe, ein anderer zieht die Einheiten, ein dritter ermittelt die Kampfergebnisse usw.

Grails basiert auf Groovy, also einer sehr Java-nahen Sprache. Da sie auf der JVM läuft kannst du auch normales Java nutzen.

GoogleAppEngine kann sowohl mit Java wie aber auch mit Python und sogar auch mit Go entwickelt werden.


Viel Spass,
Mohackl.


----------



## Empire Phoenix (30. Jun 2011)

Also entweder php oder nen Java Application server (aka Tomcat,Galssfish ect)

php hat ganz klar den Vorteil das man viel schneller anfangen kann was zu amchen und zu sehen

Java hat dann vorteil das wenn man erstmal alles konfigureirt (kann bei J2EE servern schonmal 2-3 Tage dauern bis man das hinbekommt) es einfacher zu programieren sit und man wengier implizite fehler machen kann. 

Bei beiden gibt es schöne Frameworks mit dennen man den Client machen kann.


Alternativ währe noch die Möglichkeit Server,Java Applet bzw Server java webstart Client genannt, die den Vorteil hat das man wie gewhnt Swing und ein normals Java programm als Server einsetzten kann.

Das sit dann ehere ine frage des erwarteten Umfangs. (Zb macht es wenig spass 50 mb bilder bei jedem start, da währe ein echter Client über webstart überlegen)


----------

