Java Spieleprogrammierung Tutorial/buch

FAN4TIC

Lt. Commander
Registriert
Nov. 2007
Beiträge
1.738
Hallo zusammen.

Ich nutze meine freie Zeit zwischen Abitur und Studium um meine Programmierfähigkeiten etwas zu erweitern. :)
ch habe durch dieses Tutorial mein Programmier "Wissen" wieder auf den aktuellen Stand gebracht und einiges neues dazugelernt.
(Bin in Kapitel 57 von 64. bis morgen ist das auch durchgearbeitet)

Jetzt suche ich nach einer neuen Lernquelle. Ich möchte meinen Schwerpunkt mal auf Spieleentwicklung setzen und in den etwa drei Monaten die ich frei habe, vielleicht mein erstes kleines Spiel auf die Beine stellen. Nix weltbewegendes. vielleicht ein Bomberman oder ein Raumschiff-Shooter.

ich habe das Internet etwas durchstöbert und nun das hier gefunden:
http://www.javacooperation.gmxhome.de/TutorialStartDeu.html

Diese person arbeitet mit Java Applet , was ich aber eigentlich nicht benötige (?) weil ich kein Browser-Spiel machen möchte.

-----------------------------------------------

Habt ihr eine Buchempfehlung oder ein Onlne Tutorial was sich schwerpunktsmßig mit Spieleentwicklung beschäftigt?
Tutorials gibts genug aber die Aufgaben und Programmbeispiele sind sehr weit weg von Spielen und dem was ich darüber wissen sollte.
Ein Tutorial/Buch was anhand eines Beispiels beim erklären nach und nach ein Spiel entwickelt wäre toll.

Kennt ihr da was?


LG
 
Zuletzt bearbeitet:
http://thenewboston.org macht geniale Videos (auf englisch). Er erklärt unter anderem auch die Spieleentwicklung in Java (leider nicht so ausführlich), dafür hat er aber auch eine Rubrik für Android und kleinere Android-Spiele.

Ansonsten: In irgend einem deutschem Java Forum hat einer ein Tutorial zur Spieleentwicklung gemacht (PDF - 90 Seiten). Der Nutzer heißt Quaxli. Einfach mal nach dem googeln, das wirst du bestimmt schon finden (hab den Link nämlich gerade nicht parat :/ )
 
Java von Kopf bis Fuß, befässt sich zwar nich explizit mit Spieleentwicklung dort gibt es aber ein Kapitel indem man ein kleines Spiel entwickelt. Nebenbei bekommst du den perfekten einstieg in Java. Den brauchst du auch, denn ohne, macht die Spieleentwicklung unter Java keinen Sinn.
 
@RobRob89: Eine Rubrik zu einem Spiel in "Java von Kopf bis Fuß"? Hab beim grobem Durchblättern des Buches leider nichts finden können. Hast du vielleicht gerade eine Seitenangabe da?
 
Vielen Dank erstmal.

Ich hätte gern deutsche Tutorials/Bücher :)
Ist nicht so , als würde ich kein Englisch können aber ist für mich angenehmer auf deutsch zu lernen :P

Das Quaxli Tutorial ist hier (für andere Sucher :) )
KLICK!
WErde es mir mal anschauen.

Zum Buch "Java von Kopf bis Fuß"

Ich hab mir mal das inhaltsverzeichnis angeschaut und ich sehe viele der Themen die ich schon behandelt habe in meinem o.g. Tutorial auch in dem Buch. Neu wären wenige Sachen wie Netzwerk-Sockets.
Soll ich das Buch trotzdem kaufen? Weil 50€ sind schon happig :)
 
Vorweg: Java von Kopf bis Fuß ist und bleibt eines der besten Java-Bücher, die es gibt. Total locker geschrieben, witzig und sehr leicht verständlich. Auch als Fortgeschrittener lernt man noch etwas dazu, doch der Preis von 50€ ist natürlich auch ein Grund, es nicht zu kaufen.

Wenn du selber meinst, dass du schon die "Grundlagen" drauf hast, und alle Themen, die in Java von Kopf bis Fuß durch genommen werden beherrschst, dann solltest du das Buch nicht kaufen, und dir lieber ein gutes Nachschlagewerk kaufen. Ein gutes Buch, was nur die Java Spieleentwicklung habe ich bisher noch nicht gefunden. Das liegt evtl. daran, dass halt kaum jemand Spiele für Java entwickelt, und C/++ hier halt lieber für verwendet werden. Aber auch schon Tutorials und Code-Schnipsel bringen dich hier um einiges weiter. Und ein regelmäßiger Blick in die API sollte auch helfen :)

Ansonsten: Wirf einen Blick auf Java2D (Grundlagen davon werden u.a. in Java von Kopf bis Fuß durch genommen).


Ergänzung: So, ich hab nochmal nachgesehen: Java von Kopf bis Fuß befasst in keinster Weise das Thema Spiele (text basierende ausgenommen). Das einzige "Spiel", was ich finden konnte, versteckt sich irgendwo zwischen Kapitel 4 und 5 und ist text basierend. "Dot-Com-Versenken" schimpft sich dieses und ist für jeden Java-Anfänger machbar; sieht aber auch dementsprechend aus. Ist in meinen Augen kein Spiel, sondern eher eine Spielerei, und auch nicht das, wonach gesucht wird (nach einem Tutorial für 2D-Spiele).

Wenn du etwas suchst, das Java2D in Form von Spielen behandelt, wirst du mit Java von Kopf bis Fuß leider nicht glücklich.
 
Zuletzt bearbeitet:
Nein hab das Buch grad nicht zur Hand, am besten du schaust mal genauer in das Inhaltsverzeichnis anstatt nur grob drüberzublätter ;)
Ergänzung ()

Das Quaxli tut hab ich auch schon vor geraumer zeit man durchgarbeitet das taugt auf jeden fall was... mal ne andere Frage, wie lang programmierst du schon ? Und seit wann lernst du Java?
 
Es gab glaub ich mal ein Buch von O'reilly... Killer Game Programming in Java... das ist auch nicht schlecht...
 
Vielen dank für die zahlreichen Antworten :)

@RobRob89:

kurze Antwort:
eigentlich zwei Jahre :)

Hier mal eine etwas detailierter.
Eigentlich lern ich Java seid 2 jahren in der Schule (informatik leistungskurs)
Das Problem ist wir haben mit nicht standard-Bibliotheken gearbeitet. SuM (Stift und Mäuse) schimpft sich das. Vereinfacht das ganze etwas für den programmierer.
Bsp. gibts eine Klasse TextWerkzeug die auch mit Strings arbeiten kann wie die Klasse String selbst. Es zählt bsp. beim auslesen eines Substrings bei 1 und nicht wie in String üblich bei 0 los.
Hier die Documentation:
http://artikus.ar.funpic.de/info/libs/doc/overview-summary.html

Mit dem lernen kommt auch das programmieren :) also kann man sagen das ich auch seid 2 Jahren programmiere. die Komplexität der Programme nahm von Zeit zu Zeit immer weiter zu.
Anfangs waren es kleine Programme wie Quadratzahlen usw.
Als dann Sachen wie Polymorphie& Beziehungen von Klassen, Algorithmen (Divide and Conquer) , Breiten/Tiefesuche,Such & Sortierverfahren , Dynamische Datenstrukturen usw. gelehrt wurde, wurden auch die Programme komplexer.

Kleines beispiel: (Die Aufgabe 1 von der Übung)

http://osg.informatik.tu-chemnitz.de/lehre/old/ws1112/aup/aup-13.pdf
Genau diesselbe Aufgabe nur das es kein Würfel sondern ein Quadrat war. also nur n*n Blöcke.
Mussten dann mithilfe der Breitensuche ein Programm schreiben und auch eine passende visuelle Simulation auf den bildschirm zeichnen :)
Aber wie oben schon gesagt haben wir nicht standard Bibliotheken genutzt. Auch für GUI Erzeugung gabs eigene Klassen.


Das Tutorial war sogesehen einfach nur um wieder reinzukommen und Java standardklassen zu benutzen. Ich habe das Tutorial in wenigen tagen durcharbeiten können weil vieles schon bekannt war.
 
Gibt es eigentlich irgendein sinnvolles Spiel dass in JAVA entwickelt wurde ausser Minecraft? Und auch das leided SEHR unter JAVA. IMHO
 
Fannon schrieb:
Gibt es eigentlich irgendein sinnvolles Spiel dass in JAVA entwickelt wurde ausser Minecraft?

Naja, die ganzen Browsergames nutzen Java, da wird ja sogar einiges in Deutschland entwickelt.

Wenn du programmieren kannst und als Entwickler arbeiten möchtest, geh nicht in die Spielebranche, sondern betreib das als Hobby. Du tust dir selbst einen großen Gefallen.
 
Browsergames benutzen doch so gut wie immer Flash oder? Und wenn kein Flash, dann geht der Trend sogar langsam richtung JavaScript / HTML5.

Also ich hab auch JAVA programmieren lernen müssen, aber egal an welchem PC ich je hatte, oder auch bei fremden PC'S: JAVA macht ständig Probleme, kann sich nichtmal vernünftig updaten ohne irgendwas wieder zu schrotten etc. Also selbst Flash halte ich für deutlich besser.
Die Performance von JAVA sollte -theoretisch- gut sein, aber ich habe noch kein wirklich performantes JAVA Programm oder Spiel gesehen!
 
Fannon schrieb:
Gibt es eigentlich irgendein sinnvolles Spiel dass in JAVA entwickelt wurde ausser Minecraft? Und auch das leided SEHR unter JAVA. IMHO
Bang Howdy fällt mir da spontan ein, das hat auch keine Performance Probleme wie Minecraft, womit es wohl an den Minecraft Entwicklern liegt. Es gibt da die JMonkeyEngine, die Spiele damit sollten auch gut laufen, hatte da mal vor Ewigkeiten eines ausprobiert.
Das Problem dieser Spiele ist nicht Java sondern die fehlende Optimierung, während es für C(++) nur einige dutzend Engines gibt die in hunderten Spielen verwendet und somit sehr gut optimiert wurden, ist das bei Java selten der Fall, es wird eben zu wenig für Spiele genutzt.

Wehrwolf schrieb:
Naja, die ganzen Browsergames nutzen Java, da wird ja sogar einiges in Deutschland entwickelt.
Die nutzen kein Java sondern JavaScript!
Als Ausnahme fällt mir da nur RuneScape ein

Fannon schrieb:
aber egal an welchem PC ich je hatte, oder auch bei fremden PC'S: JAVA macht ständig Probleme, kann sich nichtmal vernünftig updaten ohne irgendwas wieder zu schrotten etc.
Java hat auf dem Desktop kaum eine Bedeutung, es konnte sich nie wirklich durchsetzen, weil es damals (Java 1.4) zu lahm war und ab da hatte man eben schon den Ruf der Langsamkeit. Mit Eclipse und der SWT Bibliothek hätte sich das ändern können, da die wirklich gut ist, aber das Paradebeispiel Eclipse leidet eben auf Grund seiner Plugin-Architektur: Es muss nur mal ein Plugin kurz Mist machen und Eclipse hängt für einige Sekunden, das wird dann Java zugeschrieben, wäre mit C(++) aber auch passiert. Man hat aber eben einen weiteren modernen Grund gefunden warum Java "langsam" ist. Das wirklich resourcenfressende Minecraft ist wohl mit das modernste Negativbeispiel, wie schlechte Programmierung den Ruf des langsamen Java fördern kann.

Fannon schrieb:
Die Performance von JAVA sollte -theoretisch- gut sein, aber ich habe noch kein wirklich performantes JAVA Programm oder Spiel gesehen!
Die Performance ist nicht nur theoretisch gut, sondern wirklich sehr gut. Deshalb wird Java viel bei Serveranwendungen eingesetzt, denn da funktioniert es wunderbar. Aber der Desktop und Spiele wurden von Sun eben jahrelang stiefmütterlich behandelt, weshalb es sich da nie durchgesetzt hat, und es auch keine wirklichen Paradebeispiele gab, die zeigen konnten, dass Java sich da durchsetzen kann. Der kleinste Fehler (wie beim Eclipsebeispiel beschrieben) kann eben wieder dazu führen, dass es als langsam gilt.
 
Zuletzt bearbeitet:
Ich habe auch schon mit dem Gedanken gespielt auf C++ zu wechseln.
Aber da in meinem Studienplan nur Java als Programmiersprache explizit genannt wurde wollte ich erstmal meine Java "Skills" aufbessern.
Auf C++ kann ich denk ich mal nachher immer noch wechseln. ist ja beides objektorientiert obwohl C++ einige Unterschiede zu Java hat.
Und ich glaub für größere Games wäre C++ auch die bessere Wahl :)
 
Wenn Leute damit nicht umgehen können sollten sie es einfach lassen.

Wieso reden alle über eine schlechte Performance bei Minecraft :D wo ich das mal in einer Urversion gespielt hatte, lief das doch wie Schnitzel o.O?

Aber back to Topic ... programmiere erstmal mit der Standard-2D API was vernünftiges. Wenn du 3D o.ä. willst gibts verschiedenste Basic und Engine Apis, wie z.b. die oben angesprochene JMonkeyEngine.

Du kannst Java übrings ~5% Geschwindigkeit anziehen, da alle 3D AIS's im Grund her C API's sind. Das heißt es muss über JNI eine verbindung geschaffen werden, was die 5% ausmacht ...
Dies kommt halt daher, das Java nun mal Platform unabhängigkeit und in einer virtuellen Maschine ausgeführt wird. Somit ist ein direkter zugriff auf die Hardware wie es mit C der fall ist nicht so einfach möglich.

Dafür entwickelst du auch um Faktor x schneller, nicht nur aus diesem Grund legen vorallem viele normale Software Häuser immer mehr auf Java.

Nichts desdo trotz kommt es am Ende immer noch auf den Entwickler an. Das bemerke ich gerade spürbar bei meinem OpenGL Android Game. Wenn es nur mit 30fps rumkurgt wo andere Spiele selbst mit normalen 2D 60fps haben und dort wesentlich mehr los ist als bei mir :freak:
 
Ich würde mal behaupten, dass Java in den nächsten paar Jahren wieder attraktiver wird. Das Java langsam ist, mag bis vor wenigen Jahren noch der Fall gewesen sein, Grund: Die PCs waren meiner Meinung nach noch nicht schnell und leistungsfähig genug, um die Java VM mit guter Performance wieder zu geben.
Doch da die PCs mit den Jahren ja immer schneller werden, und irgendwann auch die Java VM mit links ausführen können, wird es zu keinen Performanceproblemen mehr kommen. Bald steht Betriebssystemunabhängigkeit im Vordergrund, und das werden (hoffentlich) dann bald auch die großen (Spiele-) Firmen merken, und mehr auf Java setzen.

Zu Minecraft: Minecraft ist einfach schlampig programmiert in manchen Sachen. Doch da die vielen Unwissenden die Schuld mal wieder auf Java schieben, kommt so leider ein schlechter Ruf zu Stande. Aber an Minecraft sieht man auch, was mit Java alles realisierbar ist, und dass noch viele Möglichkeiten offen stehen.

Und generell zu Java-Spielen: In welcher Sprache sind den die tausenden Android-Spiele geschrieben worden? Denn auch unter Android Spielen findet sich das ein oder andere gute 3D-Game wieder. Da sieht man auch hier, dass einiges mit Java möglich ist.
 
AlexLi schrieb:
Das Java langsam ist, mag bis vor wenigen Jahren noch der Fall gewesen sein, Grund: Die PCs waren meiner Meinung nach noch nicht schnell und leistungsfähig genug, um die Java VM mit guter Performance wieder zu geben.
Doch da die PCs mit den Jahren ja immer schneller werden, und irgendwann auch die Java VM mit links ausführen können, wird es zu keinen Performanceproblemen mehr kommen.
Java war langsam, weil Java langsam war, und aus keinem anderen Grund.
Das ist aber schon lange vorbei und nicht erst irgendwann in der Zukunft.

AlexLi schrieb:
Bald steht Betriebssystemunabhängigkeit im Vordergrund, und das werden (hoffentlich) dann bald auch die großen (Spiele-) Firmen merken, und mehr auf Java setzen.
Glaskugel?
Betriebssystemunabhängigkeit für Spiele lässt sich auch mit C(++) erreichen, dann eben nicht auf Basis von DirectX sondern OpenGL.

AlexLi schrieb:
Und generell zu Java-Spielen: In welcher Sprache sind den die tausenden Android-Spiele geschrieben worden? Denn auch unter Android Spielen findet sich das ein oder andere gute 3D-Game wieder. Da sieht man auch hier, dass einiges mit Java möglich ist.
Du hast da zwar schon Recht, aber die Android Dalvik-VM ist doch sehr verschieden zu der Desktop-VM, ob das so einfach übertragbar ist, da bin ich mir nicht sicher. Zumal Android doch auch auf eigene 3D-Klassen setzt, OpenGL ES nehme ich mal an, das gibt es für Java nicht, nur total angestaubte Lösungen für den Desktop.
 
Wehrwolf schrieb:
Wenn du programmieren kannst und als Entwickler arbeiten möchtest, geh nicht in die Spielebranche, sondern betreib das als Hobby. Du tust dir selbst einen großen Gefallen.
Dieses unterstütze ich.

Und sonst schließe ich mich ice-breaker an. Schön, dass ab und an mal jemand mit diesen Vorurteilen aufräumt, die einfach nicht zu beseitigen sind. Minecraft hat Javas Ruf in der Tat einen Bärendienst geleistet, da jeder Depp denkt, er könnte Performanceprobleme auf Java schieben. Weiß schließlich jedes Kind, dass Spiele nur in C++ geschrieben werden können! :freak:

Aber sollen sie es glauben. Wer Ahnung hat, fällt auf solch Gelaber ohnehin nicht herein. Deswegen wird es ja auch serverseitig gern verwendet.
Ob Javas Zukunft gesichert ist, da würde ich mich allerdings nicht so weit aus dem Fenster lehnen. Java altert und ist träge in der Weiterentwicklung. Es gibt längst modernere Sprachen, die um Aufmerksamkeit buhlen.
 
Zurück
Oben