# Browsergameumsetzung mit JSPs sinnvoll?



## oetzi (20. Aug 2008)

Hallo zusammen,

kurz die Hintergründe:
Ich bin frisch ausgebildeter Fachinformatiker, habe aber noch recht wenig in Richtung Webprogrammierung gemacht. Quasi Basics in PHP und Co und selber mal vor ca. 1,5 Jahren ein bischen mit JSPs rumgespielt. Ich habe eher in der Java-Richtung (clientbasiert) Erfahrung (wenn auch nicht viel  )

Jetzt dachte ich mir, dass es mal Zeit wird in dieser Richtung was zu machen. Einerseits aus Spaß an der Freud, aber durchaus auch unter dem Aspekt der Weiterentwicklung.
Da dachte ich mir bietet sich ein Browsergame an. Einerseits finde ich es einfach ganz interessant sowas mal anzugehen, andererseits ist es auch komplex genug, um nicht einfach nur eine kleine Webseite mit ner Navi an der Seite zu machen. (Das wäre keine wirkliche Übung/Weiterentwicklung)
-> Es soll ein Rollenspiel werden, sprich Diablo for Browser 

Nach dem ich jetzt viel kreuz und quer gelesen habe und Informationen eingeholt habe, bin ich drauf und dran, die Umsetzung mit JSPs zu machen.

Gerade weil ich einen "Echtzeit"-Aspekt intergieren will, wurde mir empfohlen, dies über Java bzw. Sockets zu machen, was wohl einiges performanter wäre, als über AJAX und Co.
Die Echtzeit, habe ich mir im Bezug auf die Kämpfe vorgestellt. Sprich man klickt nicht einfach auf nen Button und kriegt dann das Ergebnis serviert, sondern man kann zeitlich beschränkt verschiedene Aktionen ausführen. Beispiel: Spieler A schlägt normal zu, danach gibt es eine Art Cooldown-Zeit bis er wieder irgendwas machen kann.

In folgender Weise habe ich vor das Projekt umzusetzen:
Grundtechnik: JSPs
Framework: Struts (kenne ich noch gar nicht)
Struktur: MVC (kenne ich von der Theorie her, aber noch nicht wirklich mit gearbeitet)

Da ich halt auf keine langjährigen Erfahrungen zurückgreifen kann, wollte ich hier mal nachfragen, ob ihr diese Idee der Umsetzung unterstützen könnt?

Habt ihr vielleicht Tipps und Tricks, die ein fortgeschrittener Anfänger ^^ brauchen kann, um vielleicht nicht direkt von Anfang an was falsch zu machen?

Schönen Gruß
oetzi


----------



## wolfgke (14. Sep 2008)

Also mit "Java und Sockets" meinte er wohl eher, dass du es wohl eher als Applet machen solltest.

Wenn du das nicht willst (und bei Java bleiben willst), wirst du wohl kaum um Ajax herumkommen + möglicherweise Comet o. ä..

Ob der Rest sinnvoll ist, kann ich nicht entscheiden, aber nach dem, was ich weiß, kommt es mir weniger geeignet vor.


----------



## 0x7F800000 (15. Sep 2008)

JSP's erzeugen auf der serverseite XML. 
Könntest du bitte näher erläutern, wie du das in XML ausformulieren willst? ???:L Und vor allem: warum...?


----------



## HLX (15. Sep 2008)

Ein Browsergame in JSP und Struts zu Entwickeln ist quatsch.

Die Java-Alternative wurde schon genannt: Applets

Ansonsten wäre Flash zu empfehlen.


----------



## wolfgke (15. Sep 2008)

@Andrey


> Könntest du bitte näher erläutern, wie du das in XML ausformulieren willst? Und vor allem: warum...?



Advocatus Diaboli-Modus an:

Wie? Naja: in XML über Comet die aktuellen Positionsdaten aller sichtbaren Elemente der Spielwelt senden.

Warum? Man braucht dadurch kein installiertes Java-Plugin

Es gibt in der Tat Browserspiele, die dies so umsetzen (auch wenn das meiner Hinsicht nach für den Entwickler nicht so angenehm ist zu schreiben) - OK, die sind im Allgemeinen einfacher strukturiert, funktionieren müsste es aber.

Wie gesagt - es macht aber keinen wirklichen Spaß.


----------



## 0x7F800000 (15. Sep 2008)

wolfgke hat gesagt.:
			
		

> Warum? Man braucht dadurch kein installiertes Java-Plugin


Da wär's doch für einen selbst aber viel befriedigender, ein gutes Spiel zu schreiben, für das sich ein Plugin-download lohnt, als ein miserables, für das man zwar kein Plugin braucht, das aber auch so niemand spielen will


----------



## oetzi (25. Sep 2008)

oh, das thema war so lange unbeantwortet, dass ich gar nicht mehr drauf geachtet hatte 

jetzt meine reaktion nachdem ich die antworten gelesen habe:
ARG *heul* ich krieg zuviel  

so jetzt im ernst:
Am Anfang dachte ich, dass ich den ganzen Spaß mit PHP umsetze. Habe mir daraufhin meine Gedanken gemacht und in einem PHP Forum, quasi genau wie hier, meine Überlegungen veröffentlich und um ein Feedback gebeten.
Nach seeeehr langem hin und her wurde mir mehr und mehr empfohlen das ganze mit JSPs umzusetzen. 
Die Hauptargumente waren:
- Performance (gerade wegen dem "Echtzeit-Aspekt")
- strukturiertere Programmierung mit Java als mit PHP möglich (bei solch einem größerem Projekt)

Somit bin ich hier bei euch gelandet 
Jetzt sagt ihr mir, dass JSP etc. dafür nicht geeignet sind... Jetzt nicht falsch verstehen! Ich meine das nicht negativ. Im Gegenteil ich bin ja für jedes Feedback dankbar.

Dann vielleicht einfach mal die ganz offene Frage: 

Wie und womit würdet ihr denn so ein Browsergame umsetzen?

Hier nochmal ne Zusammenfassung was es werden soll:
- Rollenspiel
- Echtzeit-Aspekte in Kämpfen (Wenn man sich kloppt, dann nicht abwechselnd, also rundenbasiert, sondern man kann alle X Sekunden eine Aktion ausführen. Je nach Aktion muss man dann länger/kürzer warten bis man die nächste Aktion durchführen kann.
(das sind wohl die relevantesten Elemente)

EDIT: Flash möchte ich übrigens nicht benutzen. Möchte ein "klassisches" Browsergame draus machen


----------



## Gelöschtes Mitglied 6946 (25. Sep 2008)

In dem Fall würde ich mich mal mit vorhandenen Web-Frameworks auseinandersetzen. Im einfachsten Fall Struts 2, aber vielleicht auch etwas komponentenorientiertes wie Wicket. Im Falle von Struts spielt unter Umständen zwar auch JSP eine Rolle, aber a) nicht zwangsläufig und b) beschränkt sich das, wenn man es vernünftig angeht, eh auf Darstellungslogik. Also google mal wild durch die Gegend, lies dir ein paar einfache Start-Tutorials zu entsprechenden Frameworks durch und vielleicht erleichtert dir eines dieser den Aufbau deines Browsergames. Pures JSP- oder Servlet-Gerassel würde ich sein lassen, da man dann doch ein bisschen viel zu tun hat.

Frameworks, dir mir gerade so in den Sinn kommen:
Struts 2
SpringMVC (Teil von Spring)
Wicket
Tapestry
Echo
JSF


----------



## oetzi (25. Sep 2008)

ex'ratt hat gesagt.:
			
		

> Im Falle von Struts spielt unter Umständen zwar auch JSP eine Rolle, aber a) nicht zwangsläufig und b) beschränkt sich das, wenn man es vernünftig angeht, eh auf Darstellungslogik.


versteh ich jetzt nicht wirklich, da mir das hintergrundwissen fehlt.



			
				ex'ratt hat gesagt.:
			
		

> Pures JSP- oder Servlet-Gerassel würde ich sein lassen, da man dann doch ein bisschen viel zu tun hat.



wie meinst du das genau? bzw. was spricht dagegen sich auf eine sache zu konzentrieren?

Weil ich folgendes Vorgehen im Hinterkopf habe, kann ich das nicht direkt nachvollziehen:

- Ich brauche eine Technik, mit der ich was anzeigen kann (View).
- Ich muss Daten halten können, dafür kommt wohl ne MySQL DB in Frage in Kombination mit einer möglichkeit der Datenmanipulation (Model)
- Ich brauche für die "Spielengine" eine Programmiersprache um die Logik zu realisieren. (Controler)

--> So und für all diese Aufgaben könnte ich doch JSF/Servlets und damit Java nutzen oder? 

Vielleicht kann mir jemand ein Gegenbeispiel nennen, womit klar wird wo wie warum man andere Techniken anwenden sollte.


----------



## oetzi (25. Sep 2008)

doppelpost
warum kann ich den eigentlich nicht löschen?


----------



## Gelöschtes Mitglied 6946 (26. Sep 2008)

Hm. Stellen wir uns mal ein einfaches Beispiel vor. Du könntest auf der einen Seite wirklich pur Servlet/JSP benutzen. Dann bastelst du per Hand ein Formular ins JSP, bekommst die Daten ans Servlet geliefert, validierst die und zeigst dann wieder was an. Und das machst du dann zig Mal mit unterschiedlichen Formularen und dann fällt dir ein, dass du was anders machen willst, aber dafür musst du an alle Formulare. Tolle Sache.

Oder du hast irgendein Framework oder nutzt eine Bibliothek, die eine Art Formular-Komponente hat. Da kannst du ganz einfach deine Validierung einbauen und du musst die Daten unter Umständen noch nichtmal per Hand vom Formular in deine Model-Objekte kopieren, weil dir das abgenommen wird. Und wenn du was an allen Formularen ändern musst, dann musst du nur die eine Formular-Komponente ändern, die ja überall verwendet wird.

Das Beispiel ist sicher nicht lupenrein, aber es soll zeigen, dass du bei der ersten Variante, bei der du alles selber machen willst, erheblich mehr Aufwand hast und es außerdem, wenn du nicht gerade dein eigenes tolles Framework schreibst (aka das Rad neu erfindest), Code-Duplikationen drin hast, die bei Änderungen arg nervig sein können.

Aber für den Anfang ist das vielleicht auch nicht schlecht - mal die Grundlagen kennenlernen, bevor man sich ein Framework schnappt, das einem alles abnimmt. Musst du wissen. Google einfach mal nach Tutorials oder so und vergleiche verschiedene Herangehensweisen. Bin jetzt zu faul, das zu tun, aber das bekommst du sicher hin


----------



## Guest (26. Sep 2008)

Java Webtechnologie ist nicht mit PHP vergleichbar. In reinem JSP eine Anwendung zu erstellen ist eigentlich eine Totsünde. JSP ist eine Templatetechnologie und als solche sollte sie auch benutzt werden - auch wenn man aufgrund der Scriptlets Logik mit reinschustern kann.

Business Logik wird nicht im View (JSP) implementiert. JSPs sollten nur zu anzeige der im Controller aufbereiteten Daten dienen - das kann im einfachsten Fall ein Servlet sein, aber mit einem Framework wie Struts2 macht man sich das Leben erheblich leichter.

Ausser JSP kann man zB. auch Freemarker, Velocity oder GXP (Google XML Pages) als Templatesystem verwenden.


----------



## oetzi (26. Sep 2008)

jo dank euch schonmal für eure antworten.
ich muss da mal nachhaken.

ich dachte bis jetzt, dass ich ich JSPs ganz normal Javacode schreiben kann und somit halt jegliche Logik implementieren könnte. 
Desweiteren nahm ich an, dass mir JSPs dazu noch möglichkeiten bieten ausgaben auf webseiten zu erzeugen.
Wo ist da mein Denkfehler?

und noch was:
wie muss ich mir das bei einem framework mit der buisnesslogik genau vorstellen? in welcher form wird mir die arbeit da erleichtert?
ich hatte mir schonmal struts angeguckt, allerdings noch nicht sehr tiefgehend.

@ex'ratt: du hast da schon recht. vielleicht muss ich erstmal die erfahrung machen, was, wo und in welchen bereichen so anfällt bei solch einem großen projekt. erst dann kann ich wohl eher erkennen, wo mir ein framework sinnvoll arbeit abnehmen kann.


----------



## wolfgke (27. Sep 2008)

oetzi hat gesagt.:
			
		

> ich dachte bis jetzt, dass ich ich JSPs ganz normal Javacode schreiben kann und somit halt jegliche Logik implementieren könnte.
> Desweiteren nahm ich an, dass mir JSPs dazu noch möglichkeiten bieten ausgaben auf webseiten zu erzeugen.
> Wo ist da mein Denkfehler?



Ich bin kein Experte, aber zwischen "möglich sein" und "sinnvoll sein" liegen manchmal Welten.


----------



## maki (27. Sep 2008)

>> zwischen "möglich sein" und "sinnvoll sein" liegen manchmal Welten.

Das kann ich nur bestätigen, Java Code in JSP Seiten ist bäääh!


----------



## oetzi (27. Sep 2008)

ja wie denn dann???
nennt mir doch bitte mal konkrete techniken, umsetzungsmöglichkeiten oder ähnliches.


----------



## maki (27. Sep 2008)

Stichwort MVC, auch Model 2 genannt.
Frameworks dazu gibt es wie Sand am Meer (struts, etc. pp.), oder man macht es selbst, mit Servlets und JSPs.


----------



## oetzi (27. Sep 2008)

jo nach dem MVC modell will ich auf jedenfall vorgehen. das ist mir von der theorie her auf jedenfall vertraut.

ok, und servlets werde ich wohl für die logik nutzen. dachte das JSPs zu servlets kompiliert werden. darum meinte ich das mit den JSPs für die logik nutzen. da war ich wohl noch mit den verschiedenen begrifflichkeiten nicht ganz sicher.

Struts hatte ich vor ein paar wochen mir schonmal angeguckt. da hatte ich aber ein problem, welches ich nicht gelöst bekam. werd ich mir die tage nochmal vorknöpfen.

Eine frage habe ich gerade noch:
Ihr sprecht immer von "entweder alles selbst machen, oder nen framework nutzen". was genau nimmt mir eigentlich ein framework ab an arbeit? 

schönen abend noch
oetzi


----------



## HLX (30. Sep 2008)

Ein Framework liefert ein Grundgerüst, dass dir sauberes Entwickeln im Web erleichtert. Du hast z.B. in JSP meist nur noch die reine Darstellung - die sich fast vollständig über Tag-Bibliotheken erstellen lassen sollte. Controller und Model werden über Java-Klassen abgebildet. 

Dann gibt´s noch Features wie I18N, zentrale Navigationsverwaltung etc.


----------



## oetzi (2. Okt 2008)

aha  dank euch für die antworten!

mhh, vielleicht doch noch eine frage 

kann mir wer ein buch zum thema struts und co empfehlen? 
Die Tutorials die ich bis jetzt im Internet gefunden habe sind sicherlich nicht schlecht, verfolgen aber meistens nur ein Beispiel. Und wenn dann dabei irgendwas nicht klappt, kann man halt nicht irgendwo rumblättern und nachlesen.


----------

