Einstieg in Java Game Development

$Golden

Mitglied
Hallo Leute,
ich wollte euch fragen, wie ich am besten ins Game Development in Java reinkomme. Ich kann die Basics von Java und wollte nun ein kleines 2D-Spiel programmieren, nichts besonders aufwändiges. Bis jetzt habe ich JavaFX gelernt, nun aber habe ich im Internet viel gelesen, dass JavaFX nicht so "gut" / kompatibel wie Swing sein sollte. Außerdem weiß ich auch gar nicht wie man Spiele grundsätzlich gut aufbaut! Ich habe diese Playlist auf YT (https://www.youtube.com/playlist?list=PLah6faXAgguMnTBs3JnEJY0shAc18XYQZ) gefunden, ich würde natürlich nicht 1zu1 alles abschreiben, sondern dies als hilfestellung nehmen! Was meint ihr?
Mit freundlichen Grüßen
$Golden
 

InfectedBytes

Top Contributor
Und benutz am besten direkt ein sinnvolles Framework. Auf keinen Fall swing! JavaFX ist zwar schon besser, würde ich aber auch von abraten. Am besten nutzt du sowas wie LibGDX
 

Jardcore

Top Contributor
Ich würde auch LibGDX empfehlen. Aber die Frage ist auch warum gerade Java. Bin selbst überzeugter Java Entwickler und habe mich sehr viele Monate mit LibGDX auseinander gesetzt und ein kleinen Prototypen gebaut.
Dann habe ich das ganze mal in Unity probiert um zu sehen wie der Unterschied im Workflow ist. Um mal einen zeitlichen Rahmen zu nennen: Mit Unity habe ich für den gleichen Prototypen nur einen Bruchteil der Zeit gebraucht. Mit LibGDX drei Monate und mit Unity ca. 3std.
Gut natürlich hatte ich schon die fertigen Assets und ich wusste ungefähr was ich benötige, aber trotzdem ist die Zeitspanne schon gewaltig verkürzt worden.

Wenn es dir um die Entwicklung eines Spiels geht, dann nimm das Werkzeug was dir am schnellsten Hilft.
 

InfectedBytes

Top Contributor
Ich würde auch LibGDX empfehlen. Aber die Frage ist auch warum gerade Java. Bin selbst überzeugter Java Entwickler und habe mich sehr viele Monate mit LibGDX auseinander gesetzt und ein kleinen Prototypen gebaut.
Dann habe ich das ganze mal in Unity probiert um zu sehen wie der Unterschied im Workflow ist. Um mal einen zeitlichen Rahmen zu nennen: Mit Unity habe ich für den gleichen Prototypen nur einen Bruchteil der Zeit gebraucht. Mit LibGDX drei Monate und mit Unity ca. 3std.
Gut natürlich hatte ich schon die fertigen Assets und ich wusste ungefähr was ich benötige, aber trotzdem ist die Zeitspanne schon gewaltig verkürzt worden.

Wenn es dir um die Entwicklung eines Spiels geht, dann nimm das Werkzeug was dir am schnellsten Hilft.
Du vergleichst aber auch ein bisschen Äpfel mit Birnen.^^
LibGDX ist halt "nur" ein Framework, welches einem Arbeit abnimmt. Unity hingegen ist eine vollwertige Game Engine, welche im Grunde bereits alles enthält was man braucht. Zudem natürlich noch der schon erwähnte Asset store
 

Major_Sauce

Bekanntes Mitglied
Moin,

im Grunde würde ich folgendes behaupten:
Unity: Super Tool, ermöglicht wahnsinnig schnelle Entwicklung von Spielen im 2D/3D bereich, mittlerweile meines wissens auch mit VR-Unterstützung und ähnlichem (Wenn nicht nativ dann über Erweiterungen) aber definitiv nichts für den "Anfänger der mal ein wenig von der Spieleentwicklung lernen will".
Wieso ? Ganz einfach, Unity nimmt dir alles ab. Du musst dich nicht mehr wirklich um die Grundstruktur eines Spiels kümmern sondern kannst gleich (mehr oder weniger) mit Content anfangen.
Wenn du wirklich ein gefühl für Spiele bekommen willst, rate ich auch von Engines wie JmonkeyEngine oder LWJGL ab, da auch hier schon die Hälfte der Arbeit erledigt ist.
Für ein richtiges Spiel würde ich auf jeden Fall eine Engine empfehlen, aber es ist vielleicht gar nicht so doof mit Swing anzufangen (bitte kein JavaFX, ist meiner Meinung nach! eher für GUIs oder Applets zu verwenden, ich wiederhole, meine Meinung) Swing bietet dir außerdem den vorteil dass du auch mal merkst was denn alles zum rendern gehört, und wie die Performance davon abhängt.
Wenn du dann mal ein kleines Spiel, sei es nur Snake, mit Swing entwickelt hast, wirst du wesentlich einfacher in die Engine finden, da du dann verstehst was denn da überhaupt die Engine macht, wenn es eine Open Souce Engine ist, weißt du auch wesentlich mehr über Fehlerbehandlung und ähnliches, da du einfach mal den Code nachschlagen kannst.
Wenn du irgendwelche Fragen bezüglich der Spieleprogrammierung unter Swing/AWT/SWT hast, kurze PM an mich und ich schaue mir das mal an.
Ansonsten kannst du natürlich auch den Meinungen da oben folgen, wollte nur mal mein Statement dazu abgeben ;)

Mfg Major
 

InfectedBytes

Top Contributor
@Major_Sauce Grundsätzlich gebe ich dir Recht, dass man für den Einstieg nicht direkt ne große
Engine nutzen sollte.
Aber wenn man schon ein grafisches Spiel manuell machen will, dann bloß nicht mit Swing!
Wenn man sich mal die ganzen Anfänger "Spiele" ansieht, endet jedes einzelne damit, dass hunderte JLabels (mit ImageIcon) sich flackernd über den Screen bewegen. Furchtbar, einfach nur schlecht. Wenn schon mit Swing, dann indem man paint überschreibt und direkt auf das Graphics objekt seine Bilder zeichnet.
Aber auch hier würde ich eher zu JavaFX raten, da man damit sogar recht effizient zeichnen kann.

Insgesamt würde ich auch von einer kompletten Engine abraten, dafür sollte man aber definitiv ein passendes Framework nutzen, wie z.b. LibGDX. Dort muss man weiterhin alles manuell zeichnen, allerdings muss man sich nicht um den low level kram kümmern (wie z.b. texture binding, etc.). Außerdem hat man dort direkt Vector klassen und andere nützliche features.
 

Jardcore

Top Contributor
Anfänger der mal ein wenig von der Spieleentwicklung lernen will"
Ich glaube hier wird Programmieren mit Spieleentwicklung verwechselt. Zur Entwicklung eines Spiels gehört mehr als die reine Programmierung. Wenn man ein Spiel entwickeln will braucht man zuerst einmal eine gute Idee und dann einen Prototypen. Ein Prototypen kann man relativ schnell mit Unity entwickeln. Wenn man jetzt das ganze zu einem Spiel machen möchte kann man immer noch entscheiden ob man das ganze jetzt in Java/C++ nochmal schreibt und erweitert oder ob man bei Unity bleibt. Am Ende interessiert es den Spieler nicht in was du das Spiel entwickelt hast und welche Sprache du verwendest. Das einzige was zählt ist, ob das Spiel Spaß macht.
Man sollte Spieleentwickung meiner Meinung nach nicht gleichsetzten mit: Man versteht alles über OpenGL und DirectX und man kann genau sagen wie Shader und NormalMaps eingesetzt werden. Man muss auch nicht wissen das ein 3D Objekt aus Verticies besteht und wie eine Textures gerendert werden. Dinge die wichtig sind, sind generelle Abläufe wie, wann, was gemacht wird.
Natürlich schadet es nicht so etwas zu wissen, aber Zeit ist Geld, und niemand braucht heutzutage das Rad neu zu entwerfen. Ich würde sagen man lernt mit Unity sogar schneller die eigentlichen Abläufe der Spieleentwicklung als durch reine Programmierung in Java.
Fall man doch etwas kleines Entwickeln möchte, würde ich auch zu JavaFX raten, geht wesentlich schneller von der Hand und ist besser Strukturiert als Swing.
bitte kein JavaFX, ist meiner Meinung nach! eher für GUIs oder Applets
Hier sagst du es bereits, es ist deine Meinung.
https://gamedevelopment.tutsplus.co...ion-to-javafx-for-game-development--cms-23835 zeigt z.B. wie man das mit FX machen kann :)
 

Major_Sauce

Bekanntes Mitglied
Ich glaube hier wird Programmieren mit Spieleentwicklung verwechselt
Kommt ganz drauf an was man für ein typ ist.

Prototyp: kommt drauf an was er machen will. Wenn er jetzt zum Bleistift bei LudumDare oder vergleichbaren GameJams mitmachen will, ist meißt das ganze Spiel ein Prototyp und da man aus dem Kontext erahnen kann dass Golden bisher gar-bis fast keine Zeit in Spieleentwicklung investiert hat, wird das erste Spiel meiner Erfahrung nach wahrscheintlich nur einer von 20 Prototypen. Wie gesagt, meine Erfahrung, vielleicht hast du da andere Erfahrungen gemacht, ich sehe nur oft Leute die verzweifelt schreiben dass Sie schon 10 mal angefangen haben und trotzem jedes mal denken Sie sollten es nochmal mit einem frischen Projekt versuchen.

Idee ist natürlich wichtig, Protoyp auch, und natürlich kommt da auch noch das ganze Grafik-geraffel und Sound ect. dazu, aber auch hier kommt es ganz dauf an was man für ein Mensch ist. Es gibt natürlich leute die gerne Grafiken zusammenschrauben oder and guten Sounds rumsitzen und so wenig vom Code mitbekommen möchten wie möglich, es gibt aber auch das krasse Gegenteil, besstes Beispiel: ich habe neulich ein kleines 2d Game gesehn das komplett aus Code bestand. Da hat sich jemand einen kleinen Grafik-Editor zusammengeschustert der kleine Pixelarts dann als Code (Array mit Farbcodes) ausgibt und hat den Code dann direkt in den Sourcecode kopiert. Natürlich keine schöne Lösung, aber da sieht man mal dass es auch Leute gibt die gerne den ganzen Tag nur void, int, boolean und ähnliches sehen.

@Major_Sauce
bloß nicht mit Swing!
indem man paint überschreibt und direkt auf das Graphics objekt seine Bilder zeichnet
Swing und dann Paint überschreiben, hätte ich vielleicht dazuschreiben sollen. JavaFX ist auch super, da hast du schon recht, vor allem da man da auch direkt in den 3d Bereich gehen kann wenn man möchte und HTML ist ja soweit ich weiß auch Möglich ?!
Hab mir JavaFX noch nicht so genau angeschaut, ich durfte nur damals die Erfahrung machen dass man sich freut wie Hulle wenn man doch mal endlich die ersten Pixel auf das verdammte JPanel oder Canvas bekommt :D

Ach ja, Jardcore, im Grunde ist fast alles nur meine eigene Meinung, bei deinen Antworten wahrscheinlich genauso wie bei jeder anderen. Ich meine früher war assembler das non-plus-ultra, heute tun mir die Entwickler vor Rollercoaster Tycoon leid, weil die das alles in Assembler schreiben durfte, daher würde ich jetzt behaupten dass man nicht anfangen sollte damit Spiele zu Entwickeln, aber die Meinung der Entwickler damals war wohl anders. Jeder hat seine eigene Meinung, ist wohl auch besser so.

Mfg Major
 

XyMorgan

Aktives Mitglied
Die Frage ist so einfach oder auch schwer zu beantworten wie:

welches Auto soll ich mir kaufen? :) -> fahren tuen alle.

Hab mal in das Tutorial reingeschaut. Ist mehr oder minder Plain Swing. Ist zwar nicht komplett fertig aber aus meiner Sicht durchaus brauchbar. Finde ist ein guter Startpunkt um mit der Spieleentwicklung in Java anzufangen. Vor allem schult es deine Skills in Java.

Vorteile: Auf Basis Swing kannst später so ziemlich alles mit rein nehmen und wenn du später was anderes mit rein genommen hast, kannst Swing austauschen. Wenn es mal um Kompatibilität geht.

Fängst mit dem Tutorial an, tauscht irgendwann den Grafikkrams gegen OpenGL (jogl oder wat auch immer), und wenn es dann auf Platform X nicht läuft tauschst Swing gegen was natives.

Der Rest vom Javacode, game-Logik usw. musst nix austauschen. Probleme & Fehler kannst selbst beheben.

Nachteile: Musst erstmal viel lernen und viel selber machen.


Vorteile von Frameworks: Bekommst viel geschenkt, findest oft ne gute Community (zumindest bei den Bekannten)

Nachteile: Lernst, je nach Framework, nicht umbedingt viel Java dazu. Bei Fehlern kannst z.T. lange warten bis es behoben wird. Musst dich ggf. in spezielle IDEs einarbeiten. Wenn du an Grenzen des Frameworks kommst wird es schwer darüber hinaus zu kommen.
 

Viktim

Bekanntes Mitglied
Hi,

Ich geb auch mal meinen Senf dazu...
Wenn du erstmal mit kleinigkeiten anfangen möchtest, dann mach erst das Swing tutorial, und versuche dann mithilfe von @Jardcore 's JavaFX Tutorial das gleiche Spiel nachzubauen ;) hab ich mal aus Spaß gemacht (Ich hab vorher noch nie wirklich mit JavaFX zu tun gehabt), und das hat super Funktioniert ;)
Dann hast du den Grundaufbau bestimmt verstanden, und kannst mal mit LibGDX und all den netten Sachen, die schon angesprochenwurden probieren, was "vernünftiges" zu machen ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Suche Tutorial zum Einstieg in OpenGl mit Java (JOGL) Spiele- und Multimedia-Programmierung 2
F Spieleentwicklung - Einstieg Spiele- und Multimedia-Programmierung 5
Y 2D Games Einstieg Spiele- und Multimedia-Programmierung 6
H jMonkeyEngine 3: Einstieg Spiele- und Multimedia-Programmierung 16
C Einstieg in jMonkeyEngine Spiele- und Multimedia-Programmierung 2
c_sidi90 Einstieg in die 3D Programmierung Spiele- und Multimedia-Programmierung 6
S Einschätzung zu Java3D-Einstieg Spiele- und Multimedia-Programmierung 3
E Der effizienteste Einstieg in die Spieleprogrammierung Spiele- und Multimedia-Programmierung 3
H Einstieg erfolgreich ;), nun nur noch paar Fragen^^ Spiele- und Multimedia-Programmierung 13
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
A Minecraft Java Buch fehlermeldung Spiele- und Multimedia-Programmierung 61
yakazuqi Minecraft java.lang.Error: Watchdog Spiele- und Multimedia-Programmierung 3
L Fehler bei "Nochmal Spielen" (Java) Spiele- und Multimedia-Programmierung 1
N Minecraft Java Error Spiele- und Multimedia-Programmierung 6
M "Java Datei" Cannot be resolved to a variable Spiele- und Multimedia-Programmierung 2
1Spinne Minecraft Fabric Modding Java Error Spiele- und Multimedia-Programmierung 2
Joris Minecraft Minecraft Java Server Spiele- und Multimedia-Programmierung 6
Shanic Minecraft Minecraft Forge Server "Falsche Java Version" Spiele- und Multimedia-Programmierung 6
O Browser-basiertes online Pokerspiel mit Java Spiele- und Multimedia-Programmierung 1
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
G VST-Plugins in Java verwenden Spiele- und Multimedia-Programmierung 0
P Audio Visualizer mit OpenGL in Java? Spiele- und Multimedia-Programmierung 4
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
D Minecraft [Minecraft] Java Start Fehler (Core-Dump) Spiele- und Multimedia-Programmierung 1
T Welche packages aus der java api doku ist hilfreich zur Android Spieleprogrammierung Spiele- und Multimedia-Programmierung 2
A Programmieren eines Memorys mit Java (in Eclipse) Spiele- und Multimedia-Programmierung 5
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
C Java findet FluidSynth nicht Spiele- und Multimedia-Programmierung 2
I Java Andere Fenster in Borderless-Mode setzen Spiele- und Multimedia-Programmierung 16
leon_krys Java-Bußgeldrechner Spiele- und Multimedia-Programmierung 5
G [Java/KryoNet/LibGDX] Mutliplayer Packet Frage Spiele- und Multimedia-Programmierung 2
P Website mit Java Backend? Spiele- und Multimedia-Programmierung 1
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
J Fertigungstechnik.. PLS HALP.. Quellcode vom Text in java-Klasse speichern Spiele- und Multimedia-Programmierung 2
E Kalah Java Implementation Spiele- und Multimedia-Programmierung 1
G [Java] Vereinfachung von Boolean Abfragen Spiele- und Multimedia-Programmierung 3
G [LibGDX/Java] ArrayList Object Speicher Spiele- und Multimedia-Programmierung 3
T Java 3D Spiele- und Multimedia-Programmierung 2
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
J Java Buttons Spiele- und Multimedia-Programmierung 6
T Java Kalender Spiele- und Multimedia-Programmierung 5
Ice4P4rty Java Optische Oberfläche Spiele- und Multimedia-Programmierung 2
MABY Eine mp3 Datei in Java abspielen Spiele- und Multimedia-Programmierung 14
D Java Bomberman Probleme java.lang.NullPointerException Spiele- und Multimedia-Programmierung 1
N Spiele-Menü in Java Spiele- und Multimedia-Programmierung 9
J HDMI Ausgänge mit Java programmieren? Spiele- und Multimedia-Programmierung 18
H Yu-Gi-Oh! Mit Java was tun? Spiele- und Multimedia-Programmierung 6
G Component System Java 2D Game LibGDX Spiele- und Multimedia-Programmierung 6
S Pong java.lang.StackOverflowError Spiele- und Multimedia-Programmierung 3
C Java aus Klasse rausgehen Spiele- und Multimedia-Programmierung 2
MaxG. Java Internet Radio Spiele- und Multimedia-Programmierung 6
G [Java Server] Allgemeine Frage zum Thema Networking in Videospielen Spiele- und Multimedia-Programmierung 15
P java.lang.NoClassDefFoundError: in Greenfoot Spiele- und Multimedia-Programmierung 0
G Java Achsen invertieren Spiele- und Multimedia-Programmierung 2
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
BraunBerry Java Game Pixel "einfärben" Spiele- und Multimedia-Programmierung 6
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
BraunBerry Java Game Waypoint System Spiele- und Multimedia-Programmierung 3
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
D Java sound pulseaudio Spiele- und Multimedia-Programmierung 0
David Schwarzbeck Java 3 dimensionale Kollisions Abfrage Spiele- und Multimedia-Programmierung 2
M Gesellschaftsspiel Mühle in Java programmieren Spiele- und Multimedia-Programmierung 3
beatles Java Minesweeper - OS X und Win7 Unterschied Spiele- und Multimedia-Programmierung 2
D Minecraft Java JDK installiert - Minecraft läuft nichtmehr in 64 Bit Spiele- und Multimedia-Programmierung 2
E TMX - Dateien in Java laden Spiele- und Multimedia-Programmierung 1
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
windl MoviePlayer in Java Spiele- und Multimedia-Programmierung 0
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
F Klausurersatz: Ein Java-Programm erstellen und dieses präsentieren. Spiele- und Multimedia-Programmierung 2
E Java Jump and Run Map zu groß Spiele- und Multimedia-Programmierung 14
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
J programm mit java-plugin Spiele- und Multimedia-Programmierung 2
D Java Webgame, welche Frameworks oder Techs sind von Nöten? Spiele- und Multimedia-Programmierung 5
P Java 2D Bug? Spiele- und Multimedia-Programmierung 8
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
R Java App sendet Midi Daten über Flash Spiele- und Multimedia-Programmierung 3
O Java Zeile aus Textdatei zufällig ausgeben Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
J Java Kollisionsabfrage Spiele- und Multimedia-Programmierung 21
Flo. android java tastatureingaben abfangen. Spiele- und Multimedia-Programmierung 1
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
P Java Grafiken mit Rechnungen verknüpfen Spiele- und Multimedia-Programmierung 4
U Minecraft Mit Java auf Minecraft Server anmelden Spiele- und Multimedia-Programmierung 11
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
C virtueller stereomix (java sound API) Spiele- und Multimedia-Programmierung 0
S Engine2D - Java 2D Engine Spiele- und Multimedia-Programmierung 20
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
C Java Kollisionserkennung Spiele- und Multimedia-Programmierung 4
U Blender in Java Spiele- und Multimedia-Programmierung 8
J Java Fussballspiel Player-KI in der Bewegungsphase Spiele- und Multimedia-Programmierung 4
K Java 15/Slide/Boss Puzzle Spiele- und Multimedia-Programmierung 2
T Java 3D - Step oder IGES Spiele- und Multimedia-Programmierung 1
H 3D Spiele mit Java - Diskussion Spiele- und Multimedia-Programmierung 35
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
M Bilder in Java Spiele- und Multimedia-Programmierung 7
A Minecraft Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Spiele- und Multimedia-Programmierung 7
N Minecraft java lernen minecraft Spiele- und Multimedia-Programmierung 20

Ähnliche Java Themen

Neue Themen


Oben