Info zu meinem Java-Kenntnissstand
Zunächstmal sollte ich erwähnen, dass ich Java gerade mal ein Jahr lang "praktiziere". Ich bin in der Schule in den Informatikkurs geangen, weil ich keine Lust mehr auf Lego-Roboter und Co. hatte (die ich zuletzt mit VisualBasic programmiert hab). Naja wie auch immer: In der schule fingen wir mit Java an und ich hab mich supi zurecht gefunden, aber man sollte erwähnen: Man fliegt nur drüber und geht nicht tiefer als unbedingt notwendig. Am Ende des Schuljahres haben wir uns in Gruppen aufgeteilt und sollten eigenständig lernen und Projekte entweder zum Thema "Graphic" oder zum Thema "Netzwerk" erstellen. Ich muss relativ stolz dazu sagen, dass ich dafür einen Pong-Clon geschrieben habe, mit mehspieler-Modus, KI und allem was dazugehört. Hab für dieses Schuljahr 15 Punkte bekommen, was im normalen Notensystem ne 1+ ist. Trotzdem bin ich nur ein Einsteiger.
Anmerkung: Ich habe ein bin auf das Forum gestoßen, hab ein bisschen herumgestöbert und durfte feststellen, dass mein Pong-Clon vom Quellcode her eigentlich totaler Mist ist...
Jetzt aber endlich zu meiner Idee
Ich hab jetzt hier schon öfter mal Mario-Clone gesehen und kam dann auf die Idee, selbst ein Jump 'n' Run Spiel zu schreiben. Bei Mir soll das ganze am Ende weit komplexer sein, aber die Grundidee und damit auch die Engine sollten relativ gleich sein. Um etwas genauer zu werden möchte ich ein Spiel im Stil von Castlevania programmieren. Man könnte es auch Klon nennen, ist relativ nebensächlich. Und hierbei stellt sich mir jetzt allerdings die Frage: Womit muss ich anfangen und wie fange ich das an?
Frage 1:
Was ist für ein solches Spiel besser: Swing oder Java2D? Meinen Pong-Clon habe ich mit JPanels und Co. zusammengebastelt, aber irgendwo habe ich gelesen, dass für komplexxere Dinge Java2D besser wäre. Ich habe keinerlei Erfahrung mit Java2D, bin aber durchaus fähig die API zu lesen und es zu lernen, falls nötig.
Frage 2:
Wie gestaltet sich so eine Spielengine und die Spielfläche? Hier mal eine Liste mit Fragen die damit zusammenhängen:
- Das Spiel soll in ein Fenster, ist das Fenster die ausführende Engine oder ist die Engine eine eigene Klasse, die in dem Fenster nur ausgeführt wird?
- Logischerweise soll ein Hauptmenu existieren. Soll das Hauptmenu auch in einer Klasse, die runnable() implementiert hat enthalten sein oder soll vom Hauptmenu erst das eigentliche Spiel gestartet werden (wo dann logischerweise auch runnable läuft, oder ähnliches)?
-Die Welt. Ich möchte die Spielwelt in Räume aufteilen, wobei immer nur die benachbarten geladen werden um nicht die gesammte Welt zu laden (Performance etc.). Man könnte für diese Räume eine Mutterklasse erstellen und dann jeden Raum als Klasse erben lassen, wie kann ich diese Räume dann aufrufen und bereithalten und dann auch wieder entfernen, wenn sie nicht mehr gebraucht werden?
-Wie bringe ich Gravitation ins Spiel? Soll ich einfach die Formel nehmen und angleichen und bei einem Sprung eine vertikale Geschwindigkeit ne oben setzen? Funktioniert das oder ist es komplizierter?
-Kollisionerkennung ist noch so ein Problem. Allgemein hab ich das verstanden, bei meinem Pong wurde bei jeder Zeiteinheit von der while-Schleife in der run()-Methode abgefragt, wo sich was befindet und ob es überlappt. Geht das auch anders? Kann man eine Kollision auch erst dann abfragen wenn sie stattfindet? Und wenn ja, wie?
Zum Thema Grafik werd ich mal noch nichts weiter an Fragen stellen (Bilder von Charakteren und Landschaften einbeziehen etc.), da für mich erstmal im Vordergrund steht das irgendwas läuft, von mir aus ein schwarzes Rechteck in einer grauen Welt...
Um nochmal zu verdeutlichen, wie ich das meine: Ich möchte die Engine etc. möglichst so aufgebaut haben, dass ich möglihst leicht Dinge hinzufügen und enfernen kann, ohne später in allen möglich Klassen für jedes Objekt nochmal irgendwo Code einfügen zu müssen.
Ich weiß, dass ich hier ein schweres Thema mit vielen Fragen angefangen habe. Ich hoffe ihr könnt mir helfen, oder mir Links geben, auf die ich bisher noch nicht gestoßen bin, wobei mir ersteres lieber wäre.
mfG.
Arcus
PS: Verwendet von mir aus tiefste fachsprache, aber erklät die auch ein bisschen, damit ich die auch so langsam mal besser lerne. Wäre schön :toll:
Zunächstmal sollte ich erwähnen, dass ich Java gerade mal ein Jahr lang "praktiziere". Ich bin in der Schule in den Informatikkurs geangen, weil ich keine Lust mehr auf Lego-Roboter und Co. hatte (die ich zuletzt mit VisualBasic programmiert hab). Naja wie auch immer: In der schule fingen wir mit Java an und ich hab mich supi zurecht gefunden, aber man sollte erwähnen: Man fliegt nur drüber und geht nicht tiefer als unbedingt notwendig. Am Ende des Schuljahres haben wir uns in Gruppen aufgeteilt und sollten eigenständig lernen und Projekte entweder zum Thema "Graphic" oder zum Thema "Netzwerk" erstellen. Ich muss relativ stolz dazu sagen, dass ich dafür einen Pong-Clon geschrieben habe, mit mehspieler-Modus, KI und allem was dazugehört. Hab für dieses Schuljahr 15 Punkte bekommen, was im normalen Notensystem ne 1+ ist. Trotzdem bin ich nur ein Einsteiger.
Anmerkung: Ich habe ein bin auf das Forum gestoßen, hab ein bisschen herumgestöbert und durfte feststellen, dass mein Pong-Clon vom Quellcode her eigentlich totaler Mist ist...
Jetzt aber endlich zu meiner Idee
Ich hab jetzt hier schon öfter mal Mario-Clone gesehen und kam dann auf die Idee, selbst ein Jump 'n' Run Spiel zu schreiben. Bei Mir soll das ganze am Ende weit komplexer sein, aber die Grundidee und damit auch die Engine sollten relativ gleich sein. Um etwas genauer zu werden möchte ich ein Spiel im Stil von Castlevania programmieren. Man könnte es auch Klon nennen, ist relativ nebensächlich. Und hierbei stellt sich mir jetzt allerdings die Frage: Womit muss ich anfangen und wie fange ich das an?
Frage 1:
Was ist für ein solches Spiel besser: Swing oder Java2D? Meinen Pong-Clon habe ich mit JPanels und Co. zusammengebastelt, aber irgendwo habe ich gelesen, dass für komplexxere Dinge Java2D besser wäre. Ich habe keinerlei Erfahrung mit Java2D, bin aber durchaus fähig die API zu lesen und es zu lernen, falls nötig.
Frage 2:
Wie gestaltet sich so eine Spielengine und die Spielfläche? Hier mal eine Liste mit Fragen die damit zusammenhängen:
- Das Spiel soll in ein Fenster, ist das Fenster die ausführende Engine oder ist die Engine eine eigene Klasse, die in dem Fenster nur ausgeführt wird?
- Logischerweise soll ein Hauptmenu existieren. Soll das Hauptmenu auch in einer Klasse, die runnable() implementiert hat enthalten sein oder soll vom Hauptmenu erst das eigentliche Spiel gestartet werden (wo dann logischerweise auch runnable läuft, oder ähnliches)?
-Die Welt. Ich möchte die Spielwelt in Räume aufteilen, wobei immer nur die benachbarten geladen werden um nicht die gesammte Welt zu laden (Performance etc.). Man könnte für diese Räume eine Mutterklasse erstellen und dann jeden Raum als Klasse erben lassen, wie kann ich diese Räume dann aufrufen und bereithalten und dann auch wieder entfernen, wenn sie nicht mehr gebraucht werden?
-Wie bringe ich Gravitation ins Spiel? Soll ich einfach die Formel nehmen und angleichen und bei einem Sprung eine vertikale Geschwindigkeit ne oben setzen? Funktioniert das oder ist es komplizierter?
-Kollisionerkennung ist noch so ein Problem. Allgemein hab ich das verstanden, bei meinem Pong wurde bei jeder Zeiteinheit von der while-Schleife in der run()-Methode abgefragt, wo sich was befindet und ob es überlappt. Geht das auch anders? Kann man eine Kollision auch erst dann abfragen wenn sie stattfindet? Und wenn ja, wie?
Zum Thema Grafik werd ich mal noch nichts weiter an Fragen stellen (Bilder von Charakteren und Landschaften einbeziehen etc.), da für mich erstmal im Vordergrund steht das irgendwas läuft, von mir aus ein schwarzes Rechteck in einer grauen Welt...
Um nochmal zu verdeutlichen, wie ich das meine: Ich möchte die Engine etc. möglichst so aufgebaut haben, dass ich möglihst leicht Dinge hinzufügen und enfernen kann, ohne später in allen möglich Klassen für jedes Objekt nochmal irgendwo Code einfügen zu müssen.
Ich weiß, dass ich hier ein schweres Thema mit vielen Fragen angefangen habe. Ich hoffe ihr könnt mir helfen, oder mir Links geben, auf die ich bisher noch nicht gestoßen bin, wobei mir ersteres lieber wäre.
mfG.
Arcus
PS: Verwendet von mir aus tiefste fachsprache, aber erklät die auch ein bisschen, damit ich die auch so langsam mal besser lerne. Wäre schön :toll:
Zuletzt bearbeitet: