# Browsergame



## ZxSpectrum (22. Aug 2016)

Hallo zusammen,

ich habe mir vorgenommen mich ein wenig mit J2EE endlich auseinanderzusetzen und als Motivation möchte ich ein Browsergame schreiben. Was mich besonders interessiert sind Strategie/Aufbau Browsergames (wie OGame z.B). Jetzt wollte ich diejenigen, die deutlich tiefer in der Materie stecken, nach Meinungen bzw. Ratschlägen fragen. 

Vorweg möchte ich nur sagen, dass ich noch in der Lernphase bin und bitte um keine Antworten wie "Ein Browsergame ist nicht mal eben gemacht"- danke. Ich weiß es.  Es geht mir nur um klärung der technischen Details und Hintergrundsverständnis.

Meine Vorstellung war das ganze mit J2EE JSP (serverseitig) und PHP (clientseitig) zu realisieren. Macht das überhaupt Sinn, oder soll ich PHP komplett weglassen? 

Ist JSP eigentlich überhaupt das richtige für ein Browsergame oder ist es mehr wie mit Kanonen auf Spatzen schießen? Wenn ja, könnt ihr bitte mir sagen warum es sinnlos ist? Vielleicht auch Info, was deutlich besser als alternative dient und warum wäre sehr nett! 

Gibt es andere Java Themen die ich genauer anschauen sollte um mein Ziel besser zu realisieren?

Besten Dank im Voraus!

Viele Grüße

Kamil


----------



## Bitfehler (22. Aug 2016)

Was meinst du denn mit PHP und clientseitig?


----------



## Nuiton (23. Aug 2016)

PHP ist einer der bekanntesten, serverseitigen Sprachen im Netz. Clientseitige Sprachen sind z.B. JavaScript, kann aber natuerlich auch (in dem Fall von NodeJS) als eine serverseitige Sprache fungieren. 

Weder JSP noch PHP ist "am besten" fuer ein Browsergame geeignet. Fakt ist, dass es mehrere PHP Libraries fuer Browserspiele gibt, und auch mehrere Browserspiele in PHP geschrieben worden sind.  

Kritiker behaupten, PHP ist eine unprofessionelle Sprache, da es (eher mehr) eine funktionale Programmiersprache ist, als eine objektorientierende. Ausserdem wird behauptet, PHP waere unsicher, da es sehr leicht ist grosse Sicherheitsluecken zu hinterlassen. Beide Argumente sind nicht falsch, aber auch nicht richtig. Das Stichwort ist, dass wenn man's richtig macht, es auch wirklich egal ist was du benutzt, und wenn man's falsch macht, dann macht es auch nicht viel aus, ob du es in JSP oder PHP schreibst. Das ist genau das gleiche, wenn ich einen teueren und billigen Schraubzieher habe. Wenn ich nicht weiss, wie man einen benutzt, dann spielt es auch keine Rolle wie teuer oder besser der Schraubzieher ist.


----------



## stg (23. Aug 2016)

ZxSpectrum hat gesagt.:


> ich habe mir vorgenommen mich ein wenig mit J2EE endlich auseinanderzusetzen



Das solltest du lassen. J2EE ist seit >10 Jahren tot. Wenn irgendwo J2EE draufsteht, dann kannst du dir sicher sein, dass die Quellen total veraltet sind. Seit Version 5 heißt es schlicht Java EE.



ZxSpectrum hat gesagt.:


> Meine Vorstellung war das ganze mit J2EE JSP (serverseitig) und PHP (clientseitig) zu realisieren. Macht das überhaupt Sinn, oder soll ich PHP komplett weglassen?



JSP ist ebenso veraltet und offiziell von Oracle als "Depricated" eingestuft. JSP wäre aber (wie auch JSF) ohnehin "nur" für die UI, also die Darstellung des UserInterfaces zuständig. Und da sind, sowohl JSP als auch JSF mMn schlichtweg ungeeignet (bzw ganz einfach nicht die optimale Wahl). Beides eignet sich hervorragend für forms-basierte Anwendungen. Allein damit wirst du es schwer haben, eine ansprechende UI zu entwerfen. Aber man kann das natürlich mit anderen Technologien kombinieren... Gegen die Wahl eines Jave EE Servers für das Backend spricht zunächst einmal nichts, aber viel dafür. So bekommst du z.B. Transaktions- und Concurrency-Management geschenkt, was bei einer Multi-User-Anwendung natürlich sehr wichtig sein kann. Ebenso ist eine Java EE Anwendung, sofern man nicht großen murks machts, in der Regel viel leichter skalierbar, als z.B. eine php-Anwendung. Preis dafür ist in der Regel meist ein insgesamt deutlich höherer Resourcen-Verbrauch.
Dass du php client-seitig verweden willst, zeigt aber ganz deutlich, dass dir elementare Grundlagen, die für's Verständnis wichtig sind, noch fehlen. Du solltest dich zu allererst mal mit den Grundlagen zu Netzwerkprotokollen, mehrschichtigen Architekturen, php, JavaScript, AJAX usw. befassen, bevor du dich an ein größeres Projekt wagst.




Nuiton hat gesagt.:


> Kritiker behaupten, PHP ist eine unprofessionelle Sprache, da es (eher mehr) eine funktionale Programmiersprache ist, als eine objektorientierende.



Wieso macht es das zu einer unprofessionellen Sprache? Funktionale Programmierung ist geil, nur kann das kaum jemand, weil man in der Denkweise der imperativen Programmierung gefangen ist. "Always choose the right tool for the right job". Und in Java kommen funktionale Ansätze doch auch immer mehr zum Tragen.


----------



## Nuiton (23. Aug 2016)

stg hat gesagt.:


> Wieso macht es das zu einer unprofessionellen Sprache? Funktionale Programmierung ist geil, nur kann das kaum jemand, weil man in der Denkweise der imperativen Programmierung gefangen ist. "Always choose the right tool for the right job". Und in Java kommen funktionale Ansätze doch auch immer mehr zum Tragen.



Empfinde ich genauso. Ich wuesste jetzt nicht spontan, wo das mal stand, war aber auch kein Medium, dass man sehr viel Anerkennung schenken sollte.


----------



## ZxSpectrum (23. Aug 2016)

Danke für eure Hilfe! Das hat mir erst mal sehr viel geholfen!



stg hat gesagt.:


> Dass du php client-seitig verweden willst, zeigt aber ganz deutlich, dass dir elementare Grundlagen, die für's Verständnis wichtig sind, noch fehlen. Du solltest dich zu allererst mal mit den Grundlagen zu Netzwerkprotokollen, mehrschichtigen Architekturen, php, JavaScript, AJAX usw. befassen, bevor du dich an ein größeres Projekt wagst.


Das stimmt allerdings!  Aus diesem Grund habe ich mir dieses Projekt vorgenommen um von der standard Clientseitigen Entwicklung wegzukommen und auch die anderen Technologien kennenzulernen. 

Tatsächlich habe ich mich gestern noch mit NodeJS ein wenig auseinander gesetzt und fand das ganze sehr interessant. Ich glaube, dass ich auch zu dieser Technologie in der Zukunft tendieren werde. Ich hätte da nur noch eine Frage bezüglich der Sicherheit. Wie sieht der Sicherheitsaspekt aus im Gegensatz zu PHP?

Und noch zum Abschluss für meinVerständnis... Mögliche Lösungen für mein Projekt wären unter anderen (natürlich gibt es davon viel mehr, aber das sind zu erst die, die ich ins Betraht ziehe) 
- NodeJS (Serverseite) + HTMl/JS (Clientseite)
- Java EE (Serverseite) + HTML/JS (Clientseite)
- PHP (Serverseite)       + HTML/JS (Clientseite)


----------



## Xyz1 (23. Aug 2016)

Ein Browsergame ist nicht mal eben gemacht 

Tatsächlich hab ich mal selbst eines geschrieben. Clientseitig solltest du HTML, JS, AJAX, jQuery, AngularJS, und, was es sonst noch so gibt, einsetzen. Serverseitig scheinst du noch überhaupt keine Ahnung zu haben. So wird jemand schnell SQL-Injection betreiben können. Ganz im ernst, ich fänd es schade, wenn dir hier jemand "DEIN" Browsergame schreiben würd imho.

http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js , https://developers.google.com/speed/libraries/ , verwenden die meisten, weil es eben oft bezogen wird  Darunter sind zu finden:

Naja, das, was da steht.


----------



## ZxSpectrum (23. Aug 2016)

DerWissende hat gesagt.:


> Ein Browsergame ist nicht mal eben gemacht


Sicherlich. Es geht aber weniger um ein Browsergame, mehr um lernen. Ich bin nicht der Fan von "ich mach mal irgendwas". Ich finde es persönlich sehr hilfreich ein Ziel vor den Augen zu haben um die Motivation aufrecht zu halten.



DerWissende hat gesagt.:


> Serverseitig scheinst du noch überhaupt keine Ahnung zu haben.


Tja... Jeder hat mal klein angefangen 



DerWissende hat gesagt.:


> Ganz im ernst, ich fänd es schade, wenn dir hier jemand "DEIN" Browsergame schreiben würd imho.


Ich glaube, ich kann dir an dieser Stelle nicht folgen. Kannst du bitte erläutern was  du meinst?

Danke für die Links


----------



## VfL_Freak (23. Aug 2016)

Moin,


ZxSpectrum hat gesagt.:


> Ich glaube, ich kann dir an dieser Stelle nicht folgen. Kannst du bitte erläutern was du meinst?


nun ja, er meint damit, dass es dir zum Lernen nix bringt, wenn Dir jemand fertigen Code "hinklatscht"!
Du lernst halt mehr, wenn Du Dir das Ganze selbst erarbeitest - somit auch Fehler machst, und begreifst was Du falsch gemacht hast und wie Du es beheben kannst !!

Also poste Deinen Ansatz und stell' dann konkrete Fragen dazu ... dann wird das schon  
Gruß Klaus


----------



## ZxSpectrum (23. Aug 2016)

VfL_Freak hat gesagt.:


> nun ja, er meint damit, dass es dir zum Lernen nix bringt, wenn Dir jemand fertigen Code "hinklatscht"!
> Du lernst halt mehr, wenn Du Dir das Ganze selbst erarbeitest - somit auch Fehler machst, und begreifst was Du falsch gemacht hast und wie Du es beheben kannst !!


Aha? Und was soll das bitte mit diesem Thema zu tun haben? In diesem Thema geht es doch darum, welche Technologien dafür geeignet sind...
Tut mir Leid, wenn ich es so sage, aber immer die Profis, die den Senf dazu geben müssen, egal ob es Sinn macht oder nicht.



VfL_Freak hat gesagt.:


> Also poste Deinen Ansatz und stell' dann konkrete Fragen dazu ... dann wird das schon
> Gruß Klaus


Steht ganz oben...


ZxSpectrum hat gesagt.:


> Es geht mir nur um klärung der technischen Details und Hintergrundsverständnis.


 Es gibt noch keine Ansätze. Ich fange doch nicht an, wenn ich nicht weiß, wo´s längst geht.


----------



## VfL_Freak (23. Aug 2016)

ZxSpectrum hat gesagt.:


> Und was soll das bitte mit diesem Thema zu tun haben?


na ja, Du hattest gefragt ... 

Der Rest von mir war dann als Anregung gedacht


----------



## Xyz1 (23. Aug 2016)

Sind wir schon bei die 5 1/2 Phasen beim Erschleichen von Lösungen für .... eigene Projekte?


----------



## ZxSpectrum (23. Aug 2016)

Da ich sehe, dass das ganze an dem Thema vorbei zu gehen anfängt, würde ich vorschlagen, dass das Thema geschlossen wird. Vielen Dank für die Hilfreichen Tipps, an die, die tatsächlich mit denen gekommen sind. Es wird mir sicherlich den Start vereinfachen ohne meine Zeit vergeudet zu haben 
Und vielen Dank (einfach um dir den Seelenfrieden zu schenken) an denjenigen, der die anderen mit eigenem Maß misst.
P.S. Meiner Meinung nach fragen stellen was sich für sowas gut eignet hat überhaupt nicht zu tun mit "bitte macht es für mich". Es ist vor vorteil Argumente zu bringen, wenn diese Sinn machen und einfach mal nichts sagen, wenn man nichts zu sagen hat... Seitdem du hier bist, geht das gleich nur am Thema vorbei...


----------



## Xyz1 (23. Aug 2016)

Mal 'ne Frage, warum glaubst du, heißt es J2EE ?


----------



## Joose (23. Aug 2016)

ZxSpectrum hat gesagt.:


> .... würde ich vorschlagen, dass das Thema geschlossen wird.


Ich werde das Thema noch offen lassen.
Nirgends habe ich gelesen das du nach (fertigen) Code gefragt hast sondern nur um Tipps bzw. Erfahrungswerte. Daher bitte ich solche "Vorwürfe" zu unterlassen 
Ansonsten wer noch was zum Thema beitragen kann, darf natürlich weiterhin posten.


----------



## Nuiton (23. Aug 2016)

ZxSpectrum hat gesagt.:


> Es geht aber weniger um ein Browsergame, mehr um lernen. Ich bin nicht der Fan von "ich mach mal irgendwas". Ich finde es persönlich sehr hilfreich ein Ziel vor den Augen zu haben um die Motivation aufrecht zu halten.



Ja, also lernen ist auch kein Prozess der von alleine passiert. Ich glaube nicht, dass man sich ein Ziel setzen kann, wenn man nicht weiss, was man machen moechte. In diesem Fall solltest du dich einfach mal umschauen, wie z.B. nach Tutorials (in PHP, mit NodeJS, oder mit JSP). 

Das Problem mit JSP (oder auch JSF) wurde ja schon teilweise erlaeutert. Vielleicht kann dieser Artikel ja vielleicht noch so einige Dinge bestaetigen. 

Ansonsten koenntest du vllt. eine Art "mind map" erstellen um zu sehen, wo du dich gerade so befindest. Ein Browserspiel besteht ja aus mehreren Teilen, wie z.B. der Login, die Registration, die Profile, das Spiel selbst, vielleicht auch ein Forum, eine Nutzer-Inbox, ein Rangsystem, ein Punktesystem, und und und.


----------



## Xyz1 (23. Aug 2016)

Registrierung kann z. B. umgangen werden, wenn man viele Accounts erstellt (mit denselbem Passwort), und den Benutzern sagt, sie sollen ein wählen und das pw ändern.


----------



## ZxSpectrum (23. Aug 2016)

Nuiton hat gesagt.:


> Ansonsten koenntest du vllt. eine Art "mind map" erstellen um zu sehen, wo du dich gerade so befindest. Ein Browserspiel besteht ja aus mehreren Teilen, wie z.B. der Login, die Registration, die Profile, das Spiel selbst, vielleicht auch ein Forum, eine Nutzer-Inbox, ein Rangsystem, ein Punktesystem, und und und.


Das ist schon länger fertig. 
Ok, Leute! Vielen Dank für eure Hilfe. Ich habe meine Wahl getroffen und habe mit NodeJS an der Serverseite und JS an der Clientseite angefangen zu arbeiten. All meine Fragen wurden beantwortet. Vielen Dank nochmals!


----------

