# java browsergame entwickeln



## FlitzeBogen (18. Okt 2012)

Hi,

ich wollte als kleines Projekt ein GANZ simples Browsergame entwickeln.
Das Problem ist egal wo ich suche, es gibt keine Themen über die Java Webentwicklung (Browserspezialisiert)...

Kann man es überhaupt mit Java machen?
MfG


----------



## Final_Striker (18. Okt 2012)

Hier findest du paar Stichpunkte:
http://www.java-forum.org/java-basics-anfaenger-themen/53685-webbrowser-programmieren.html


----------



## Evil-Devil (18. Okt 2012)

FlitzeBogen hat gesagt.:


> Hi,
> 
> ich wollte als kleines Projekt ein GANZ simples Browsergame entwickeln.
> Das Problem ist egal wo ich suche, es gibt keine Themen über die Java Webentwicklung (Browserspezialisiert)...
> ...



Also Java als Websprache gibt es sicher genug Seiten bei Google. Um HTML/Javascript/CSS kommst du aber nicht herum sofern du nicht ein Applet, Flash oder irgendwelche anderen Plugins nutzen willst.

Bevor du dir also überhaupt zum Browsergame selbst machst, solltest du dich darüber informieren welche Technologien es gibt. Zb. könnte der Server des Browsergames in Java geschrieben sein und mit einer NoSQL Datenbank arbeiten und die Weboberfläche in mit PHP und HTML/CSS/Javascript geschrieben sein...


----------



## twseitex (19. Okt 2012)

Ansatz, wenn es wirklich Java sein soll (und nicht HTML 5 oder Flash oder Silverlight etc.)

Das Game braucht eine GUI, also in der Java Doku von Oracle nach Graphic suchen.
Das Game braucht eine Ereignissteuerung, also in der Java Doku von Oracle nach Thread suchen.
Und und und.

Fazit:
 Das Game auf dem Papier ausgestalten im Layout und in der Steuerung, so konkret wie möglich.

 Eine Java-Anleitung für Java 7 mit Beispielen beschaffen und dort die Kapitel nach Bedarf der Ausgestaltung anschauen.
    Abgleich der Vorstellungen mit dem, was Java kann.
Galileo Computing - <openbook> - Bücher online lesen und herunterladen

 Eclipse Classic beschaffen (Free) und installieren. Dort die Beispiele der Javaanleitung  testen.
Eclipse Downloads

 Klar: Applet-Tag in HTML ist bekannt. Eclipse erstellt das Applet auch selbst.

 Ohne Aneignung der Java-Komponenten - beginnend mit einfachen Oberflächen, also unter Anleitung -
  wird es schwer.

 Ansonsten: Java ist generell alles andere als easy.


----------



## Empire Phoenix (20. Okt 2012)

Also eigentlich kommen bei einem modernen und schön gestalteten browsergame nur 3 sachen in frage:

applet mit 2d oder 3d grafic engine, und normalen networking
Grafisch die wohl schönste Lösung aber eindeutig zuviel für den anfang. 

Wicket, sehr saubere möglichkeit dynamisches webzeugs zu machen, vorteil ist das wicket fast normales html benutzt, komplizierte sachen kann/muss man sich in javascript selber basteln.

GWT, dazwischen, gwt compiliert code der auffem client läuft auf javascript und läst den dann im browser laufen. Ermöglicht eine ziemlich gute reaktionsfähigkeit, würde sagen man kann damit mit flash mithalten vom ergebnis her.

Und dann gibt es noch jsp&jsf&servlets, zumindest servlets sollte man verstehen weil darauf baut der ganze andere kram auf. jsp und jsf zur vollständigkeit halber mla angucken ist auch nicht schlecht, die beiden sind jedoch schon 10 jahre lang veraltet konzeptionell.


----------



## moritzmoritz (21. Okt 2012)

Eines der mir bekanntesten Onlinegames, die in Java programmierst sind, ist Runescape. 

Habe es selber lange gespielt und war begeistert. Ganz ausgeschlossene ist es nicht, mit Java ein Browsergame zu machen, nur muss der User Java installiert haben usw. 

Link: RuneScape - MMORPG - The No.1 Free Online Multiplayer Game


----------



## Noctarius (21. Okt 2012)

Willst du wirklich auf dem Client Java laufen lassen oder soll der Client HTML / JS oder Flash nutzen und nur serverseitig Java zum Einsatz kommen?


----------



## schalentier (21. Okt 2012)

Also ich bin grad ziemlich angetan von Javascript, bzw Coffeescript. 

Mit HTML5 und dem Canvas kann man ziemlich viel machen, im Grunde alles, was man auch mit dem Java-Canvas in nem JPanel machen kann.

Dazu Node.JS und man kann in der gleichen Sprache und mit der gleichen Codebase die Serverseite entwickeln.

Zur Kommunikation nimmt man z.B. socket.io.

Und mit Coffeescript wird Javascript zu ner echt coolen Sprache. ;-)


----------



## Hansdampf (21. Okt 2012)

Falls du ein simples Spiel zum Laufen bringen willst ohne vorher jahrelang zu studieren oder ziellos in APIs zu wühlen:

1) Schau bei java4k.com vorbei
2) copyPaste vom Quellcode eines der unzähligen Spiele nach Eclipse 
3) run as Applet
4) Code modifizieren und Spaß haben

damit lernst du schneller, besser und hast mehr Freude. 

z.B. das hier (zufällig ausgewählt)
Java4K - Minimum Games, Maximum Fun!

Natürlich ist das bei einer 4k Restriktion kein sauberer OO Programmierstil.
Andererseits bekommen die meisten NIE ein Spiel fertig, weil sie den ganzen Tag über Designpatterns+Technologien nachdenken.


----------



## Noctarius (21. Okt 2012)

schalentier hat gesagt.:


> Also ich bin grad ziemlich angetan von Javascript, bzw Coffeescript.
> 
> Mit HTML5 und dem Canvas kann man ziemlich viel machen, im Grunde alles, was man auch mit dem Java-Canvas in nem JPanel machen kann.
> 
> ...



Naja HTML5 ist ganz nett, doch solange der Standard nicht verabschiedet, geschweige denn sauber umgesetzt ist wird das so nichts werden. Wenn du nur einen Browser unterstützen musst (z.B. Chrome) lassen sich damit schon ganz nette Dinge anstellen, sobald du aber ein kommerzielles Spiel mit möglichst vielen unterstützten Plattformen machen sollst führt derzeit (leider) noch kein Weg an Flash vorbei oder eben ein Java Applet (irgs).


----------



## Hansdampf (21. Okt 2012)

Applets kann man meiner Meinung nach getrost vergessen, falls man ein großes Publikum erreichen will und Flash hat keine Zukunft.



Noctarius hat gesagt.:


> Naja HTML5 ist ganz nett, doch solange der Standard nicht verabschiedet, geschweige denn sauber umgesetzt ist wird das so nichts werden. Wenn du nur einen Browser unterstützen musst (z.B. Chrome) lassen sich damit schon ganz nette Dinge anstellen, sobald du aber ein kommerzielles Spiel mit möglichst vielen unterstützten Plattformen machen sollst führt derzeit (leider) noch kein Weg an Flash vorbei oder eben ein Java Applet (irgs).



Das hat sich zum Glück geändert seitdem es LibGdx gibt 
Kann ich jedem wärmstens empfehlen:
Ich code bequem unter Eclipse mit seinen ganzen Annehmlichkeiten (kein Javascript oder Flash Schrott) und kann den selben Code ohne Anpassungen auf Android laufen lassen.
HTML5 geht über GWT ebenfalls, sogar iOS (bisher mit Einschränkungen).

Libgdx - Desktop/Android/HTML5 Game Development


----------



## Noctarius (21. Okt 2012)

Libgdx - Desktop/Android/HTML5 Game Development schon disqualifiziert, da WebGL in IE nur über Chrome Frame unterstützt wird, ansonsten sehr interessantes Konzept.


----------



## Hansdampf (21. Okt 2012)

Noctarius hat gesagt.:


> Libgdx - Desktop/Android/HTML5 Game Development schon disqualifiziert, da WebGL in IE nur über Chrome Frame unterstützt wird, ansonsten sehr interessantes Konzept.


Es geht ja auch hauptsächlich um Desktop und Android (und iOS) bei LibGdx. HTML5 ist ein netter Bonus.

Du hast von kommerziellen Spielen geschrieben, die auf vielen Plattformen laufen sollen - wie viele kannst du denn aufzählen, die mit WebGL gemacht sind? Da ist doch ein kleiner Riss in deiner Argumentationskette, falls magelhafte Unterstützung in _einem_ Browser das Framework disqualifiziert.


----------



## Noctarius (21. Okt 2012)

Wir hatten über Browsergames gesprochen und da ist HTML5 kein netter Bonus sondern die einzige echte Alternative zu Flash. Wenn es um Grafikrendering geht wird da WebGL die einzige sinnvolle Technik in HTML5 sein.

Vielleicht solltest du die Argumentationskette dann doch noch einmal nachvollziehen.


----------



## Hansdampf (21. Okt 2012)

Als ich LibGdx vorgeschlagen habe, habe ich deinen Beitrag zitiert, in dem es um kommerzielle Spiel auf möglichst vielen Plattformen ging.
	Ich schlage LibGdx vor, von dir kommt nur altklug "disqualifiziert, da WebGl und IE sich nicht verträgt".
	Ein kommerzielles Spiel, das auf WebGL basiert, fällt dir nicht ein. Viele kommerzielle Spiele gibt es im Browser nicht... doch halt!
	Das erfolgreichste Spiel überhaupt: Minecraft. Läuft mit Lwjgl im Browser. 
	Rate mal, was LibGdx als Desktop Backend nutzt... Lwjgl. Kann man prima als Applet einbinden. 
	Hast du nicht Applets neben Flash als einzige Alternative genannt? 
	Mal davon abgesehen, dass du in einen Java-Forum Flash nennst aber nicht Unity... damit erreicht man weitaus mehr Leute (Xbox, PS, Browser,...)

	HTML5 habe ich als "netten Bonus" erwähnt, da man mit Browsergames kaum Geld verdienen kann ("kommerziell"). 
	"Netter Bonus" zudem, da man es per Knopfdruck ohne Entwicklungsaufwand geschenkt bekommt, wie auch die Android Version.
	Android und Desktop (und iOS) habe hervorgehoben, da nur hier ein richtiger Markt ("kommerziell") vorhanden ist und man die meisten Leute erreicht.


	Schieß doch bitte noch ein Eigentor.




Noctarius hat gesagt.:


> Wir hatten über Browsergames gesprochen und da ist HTML5 kein netter Bonus sondern die einzige echte Alternative zu Flash. Wenn es um Grafikrendering geht wird da WebGL die einzige sinnvolle Technik in HTML5 sein.


Tooor! 
Ich versteh dich echt nicht... erst disqualifizierst du LibGdx, da es WebGL beim HTML5 Backend nutzt und nun ist es wieder sinnvoll?


----------



## Noctarius (21. Okt 2012)

Junge du solltest lernen zu lesen und zu denken... eyeyey...
Noch einmal zum mitschreiben auch für die, die sich damit schwer tun.

Ich habe von kommerziellen Browsergames gesprochen. Wenn du meinst, dass sich damit kein Geld verdienen lässt, dann erkläre das z.B. mal meinem Arbeitgeber, aber egal.

Kommerzielle Browsergames, Flash, HTML5, das war was ich oben in einem zusammenhängenden Absatz geschrieben habe... Wenn du da Gedankensprünge machst, dein Pech.

Spiele lassen sich in HTML5 nur mit WebGL sinnvoll umsetzen, da es aber im IE nicht nativ unterstützt wird, ist es spontan disqualifiziert... Junge Junge kannst du da einen Müll reininterpretieren:


> Wenn du nur einen Browser unterstützen musst (z.B. Chrome) lassen sich damit schon ganz nette Dinge anstellen, sobald du aber ein kommerzielles Spiel mit möglichst vielen unterstützten Plattformen machen sollst führt derzeit (leider) noch kein Weg an Flash vorbei oder eben ein Java Applet (irgs)



Ich seh nicht, wo der Zusammenhang zwischen "unterstützten Plattformen" und Browser in diesem Satz nicht gegeben ist.

Aber weißt du was, danke für das Tor... *Augen roll*


----------



## Firephoenix (23. Okt 2012)

Um nochmal auf das Thema Browsergame zu kommen:
Die alten Browsergames die ich noch gespielt habe hatten als nicht-statische Komponenten fast nur Timer die anzeigen wann ein Event (z.B. Bauevent) fertig ist, bzw aktualisierten dannach entsprechend die Seite (z.B. bei Ogame den Kampfbericht verfügbar machen sobald die Flotte angekommen ist).
Was wäre denn euer Vorschlag wie man so ein Verhalten z.B. mit JSF umsetzen könnte (das geht doch sicherlich als alle 0.5 sekunden von der clientseite aus polling zu betreiben oder?)

Gruß


----------



## Noctarius (23. Okt 2012)

Du kannst dafür entweder Timer Events nutzen und regelmäßig pollen, ansonsten gibt es noch Longpolling und Websocket als Alternativen. Diese beiden Versionen benötigen aber entsprechenden Support auf Serverseite. Was es da jetzt genau bei JSF gibt kann ich dir nicht sagen, da ich kein JSF nutze.


----------



## Empire Phoenix (23. Okt 2012)

Jo sobald das ganze nicht alzu dynamisch sein soll kann man das mit jeder der webtechnologien machen. Analog zu php somit auch mit jsp.


----------

