Java Spiel wie Supermario erstellen - paar Fragen

Zeboo

Lt. Commander
Registriert
Juli 2008
Beiträge
1.562
Hallo.

Wenn man jetzt so ein Spiel wie das wir von Supermario kennen machen wollen würde:

- Wie sieht eigentlich die Karte aus? Ich meine sobald man sich nach vorne bewegt erscheinen immer wieder neue Objekte und das was hinter einem war verschwindet. Sehe ich das richtig, dass der Spieler(Objekt) eigentlich an der selben stelle steht, es sind immer die anderen Objekte die sich nach vorne bewegen wenn man "läuft"?
- Wie ist das mit der Berührung. Ich kann zum Beispiel zwei Objekte Programmieren die sich beim berühren irgend eine Aktion ausführen. Aber nehmen wir mal so einen "?" Rechteck, was wir aus Mario kennen (na ihr wisst schon, man sößt das mim Kopf an und da kommt ein Pilz raus). Da passiert nur eine Aktion, wenn man das von unten aus berüht. Wenn man das von der seite oder oben berührt passiert nichts => so will ich das auch. Wie stelle ich das in Java eigentlich an?
- Da Java so toll in OO ist, ist es sinnvoll für jedes Level eine eigene Klasse zu schreiben?
- Das ist jetzt was anderes aber: Diese ganzen Mariosounds (das hüpfen, hintergrundlied etc.) darf man das kostenlos verwenden? Ich hätte mich erinnern können, dass das einige nachgemacht Spiele auch haben. Darf man das ohne bedenken verwenden?

Ich danke schonmal
Gruß
 
Zuletzt bearbeitet:
und einige der nachgemachten Spiele wurden ganz doll verklagt ... natürlich darfste das nicht einfach klauen. ...

entweder selber was kreieren oder Lizensgebühren zahlen ... oder bankrott geklagt werden ;p
 
- Wie sieht eigentlich die Karte aus? Ich meine sobald man sich nach vorne bewegt erscheinen immer wieder neue Objekte und das was hinter einem war verschwindet. Sehe ich das richtig, dass der Spieler(Objekt) eigentlich an der selben stelle steht, es sind immer die anderen Objekte die sich nach vorne bewegen wenn man "läuft"?
Wenn du in die Küche bewegst, bewegst du dich, oder die Erde darum? Ist die Frage wichtig? Wichtig ist, wie sich die Dinge relativ zueinander bewegen. Es ist also egal ob du sagst der Spieler ist fix und die Karte bewegt sich oder die Karte fix und der Spieler bewegt sich...

Wie ist das mit der Berührung. Ich kann zum Beispiel zwei Objekte Programmieren die sich beim berühren irgend eine Aktion ausführen. Aber nehmen wir mal so einen "?" Rechteck, was wir aus Mario kennen (na ihr wisst schon, man sößt das mim Kopf an und da kommt ein Pilz raus). Da passiert nur eine Aktion, wenn man das von unten aus berüht. Wenn man das von der seite oder oben berührt passiert nichts => so will ich das auch. Wie stelle ich das in Java eigentlich an?
Ich habe das Gefühl, dass du noch nie mit Kollisionsbafragen gearbeitet hast... es ist kein großes Problem festzustellen, von wo der Spieler kam...

Da Java so toll in OO ist, ist es sinnvoll für jedes Level eine eigene Klasse zu schreiben?
Nein... du hast eine allgemein Level-Klasse, und die lädt eben einen Level...
 
Solche spiele nennt man Jump & Run.
Was die Bewegung angeht Sidescroller, in Jump & Runs bewegt sich aber nicht die Karte (gut in Mario gibt es ein paar das hat aber einen anderen Sinn) sondern der Char was man am Anfang und Ende gut sieht.

Kopieren darfst du die Sounds nicht, allerdings lassen sich solche ziemlich leicht selbst erstellen ...
 
1668mib schrieb:
Ich habe das Gefühl, dass du noch nie mit Kollisionsbafragen gearbeitet hast... es ist kein großes Problem festzustellen, von wo der Spieler kam...

Vllt hast du es überlesen. Also nochmal, ich habe das schon gemacht. Falls Objekt A Objekt B berührt soll was passieren. Zb verschwindet der eine Objekt bei mir, oder prallen sich ab. Ist ja eigentlich nichts großartiges. Was ich nicht weiß wie das gehen kann ist, dass die Objekte wissen wo unten und oben ist und so nur auf die Kollisionen die von unten aus kommen speziell reagieren. Oder du kennst Kollisionen anders wie ich, aber wenn du erklärst wie du das machst, dann lerne ich sogar noch was :)

I-HaTeD2 schrieb:
Was die Bewegung angeht Sidescroller, in Jump & Runs bewegt sich aber nicht die Karte (gut in Mario gibt es ein paar das hat aber einen anderen Sinn) sondern der Char was man am Anfang und Ende gut sieht.

Ah das wollte ich wissen. Also wenn man durch die ganze Map geht ist das quasi wie im browser seiten Runter zu scrollen, nur scrollt man da von Rechts nach Links ja?
 
Zuletzt bearbeitet:
Dann brauchst du dabei nur schauen, aus welcher Richtung die Berührung stattfindet.. ist das so schwer?


Ah das wollte ich wissen. Also wenn man durch die ganze Map geht ist das quasi wie im browser seiten Runter zu scrollen, nur scrollt man da von Rechts nach Links ja?
Das hängt davon ab, wie du es implementierst...
 
Ein Problem wäre dann das andere Objekte auf der Map mögliche Gegner mitbewegen würden (Kollision vorausgesetzt).

In Shot'em Up Sidescrollern bewegt sich im Hintergrund die Karte die einfach unter allem anderen liegt (eine echte Karte auf der man läuft gibt es so also nicht).

Du könntest die bestehende Open Source Jump & Runs ansehen vom Code her, da dürften einige sicherlich in Java geschrieben sein. Wenn du den Code aus solch einem Projekt verwendest musst du dich natürlich an die Lizenz halten, ansonsten lernt man aus Codeanalyse und eigenem probieren schon sehr viel.
 
Also ich habe sowas selber mal umgesetzt bzw. bin da noch dran (was das Ausschmücken des Spieles angeht).

Jetzige Features sind:
-Menüs (auch skriptbar)
-Spielszenen (auch Minispiele)
-Parallax Scrolling (also die hier diskutierte Technik)
-Das Spiel selbst mit Spielfigur, Animationen, Kollision usw usw usw

Also wenn konkrete Fragen da sind bzw. ein allgemeines Gespräch in die Thematik gewünscht ist, stelle ich mich gerne zur Verfügung. (Auf PN gibt´s meine ICQ)
 
Zur Kollisionsabfrage:
Code:
       x/y------------------------------x+width/y
         |                                |
         |                                |
         |                                |
         |                                |
         |                                |
      x/y+height----------------------x+width/y+height

      x = X-Koordinate           width = Breite des Rechtecks
      y = Y-Koordinate           height = Höhe des Rechtecks
Ein simpler Ansatz wäre abzufragen, ob nur die untere Seite berührt würde:
Code:
 - Wenn Mario.X-Wert >= Links-Unten-X-Wert und kleiner Rechts-Unten-X-Wert und Mario.Y-Wert gleich Links-Unten-Y-Wert, dann
 - function Aktion
     .....
Links-Oben = x, y
Rechts-Unten = x + Breite, y + Höhe (siehe Grafik)

Eine andere Lösung wäre mit Bewegungsvektoren zu arbeiten um Aktionen auszulösen, aber auch da wirst du so eine Abfrage wie oben brauchen.
 
Zuletzt bearbeitet:
Ja, so ähnlich. Was verwendest du eigentlich als Interface? GDI oder DDraw?
 
Zurück
Oben