Java-Rollenspiel-Graphik

nomeal

Mitglied
Hallo Community,

ich bin gerade dabei ein kleines 2D Rollenspiel zu programmieren. Nun habe ich 2 Fragen.

Wie realisiere ich den Hintergrund(Boden) und Wald(Wo Truppen nicht durchlaufen sollten)

Beides auf ein Panel?; Alle Bäume einzeln draufzeichnen?
Und wie mache ich, dass Truppen nicht "über" Bäume laufen können?
Wie realisiere ich, dass ich mit der Maus einzelne Truppen markieren kann und dann wohinklicken kann um dorthinzulaufen/anzugreifen ...

Wie ihr seht stehe ich noch bei der Planung, also bitte keine Antworten wie : Lern erstmal Java oder so...

Danke schonmal im Vorraus :)

FG FRISTLOS
 

Fu3L

Top Contributor
Grundsätzlich hast du einmal das Modell und den Blick dadrauf.
D.h.: Du hast irgendein Objekt in der Art "Spielfeld" und darauf befinden sich Objekte wie "Baum" oder "Stein". Wenn nun die KI oder der Spieler ein Einheit bewegen will, muss eben berechnet werden, ob die Stelle auf dem Spielfeld betretbar ist oder nicht. (Was nicht gaanz trivial ist bei vielen Objekten und einer großen Karte)
Das ganze wid dann von einem "Renderer" gezeichnet. Der nimmt Informationen des Spielfeldes und zeichnet entsprechend alles was sich dadrauf befindet.
Beide Teile werden kontrolliert von einer übergeordneten Spiellogik, die auch das Neuzeichnen anstoßen sollte. Diese weiß auch, welcher Teil der Map gezeichnet wurde. Das ist wichtig, denn nur so kannst du anhand von Koordinaten eines Mausklicks errechnen, welchen Teil des Spielfeldes ein Spieler mit seiner Maus selektiert hat. (Dann kann die Logik auf dem Spielfeld sowas aufrufen wie getGameObjektAt(worldX, worldY)).

Das ist der grobe Überblick, damit du nicht ganz ratlos dastehst. ;)
 

nomeal

Mitglied
Grundsätzlich hast du einmal das Modell und den Blick dadrauf.
D.h.: Du hast irgendein Objekt in der Art "Spielfeld" und darauf befinden sich Objekte wie "Baum" oder "Stein". Wenn nun die KI oder der Spieler ein Einheit bewegen will, muss eben berechnet werden, ob die Stelle auf dem Spielfeld betretbar ist oder nicht. (Was nicht gaanz trivial ist bei vielen Objekten und einer großen Karte)
Das ganze wid dann von einem "Renderer" gezeichnet. Der nimmt Informationen des Spielfeldes und zeichnet entsprechend alles was sich dadrauf befindet.
Beide Teile werden kontrolliert von einer übergeordneten Spiellogik, die auch das Neuzeichnen anstoßen sollte. Diese weiß auch, welcher Teil der Map gezeichnet wurde. Das ist wichtig, denn nur so kannst du anhand von Koordinaten eines Mausklicks errechnen, welchen Teil des Spielfeldes ein Spieler mit seiner Maus selektiert hat. (Dann kann die Logik auf dem Spielfeld sowas aufrufen wie getGameObjektAt(worldX, worldY)).

Das ist der grobe Überblick, damit du nicht ganz ratlos dastehst. ;)


Wie sollte denn eine übergeordnete Spiellogik so aussehen?
 

Fu3L

Top Contributor
schau dir quaxlis tutorial an, da hast du eigentlich alles was du brauchst.

Im Grunde ja und ich würde es nomeal auch empfehlen als Einstieg, aber Quaxlie hat ja durchaus einige Vereinfachungen getroffen. Deshalb hab ich auch als Einstieg, damit MVC mal gehört wurde, das Grundgerüst erläutert ;)

Wie sollte denn eine übergeordnete Spiellogik so aussehen?

Also son Thread sollte da schon drinne sein. Siehe Quaxlies Tutorial ;) Das ist zu viel Stoff und Überlegung, um das hier so einfach zu erläutern.
 

Network

Top Contributor
Ich glaube dein Problem ist es, dass du die Spiellandschaft als ein ganzen einzigen Hintergrund siehst. Solche 2D Rollenspiele bestehen jedoch meistens aus ganz vielen kleinen gleichgroßen Tiles, normalerweise so groß wie die Spielfigur selbst, die sich wie ein Puzzle zu einem einzigen riesigen Hintergrund zusammensetzen.

Bevor sich eine Spielfigur dann zum nächsten Tile bewegt, wird erstmal abgefragt ob das Nachbartile überhaupt begehbar ist. Wenn nicht wird die Bewegung stoniert.
So ein Nicht-Begehbares-Tile hat als zugeordnetes Bild dann z.B. eine Kiste.

Bei den meisten 2D-Rollenspielen kann man sich ja meistens auch nur von Tile zu Tile einzeln bewegen per Klick auf eine Pfeiltaste.

Gruß
Net
 

BRoll

Bekanntes Mitglied
Wichtig ist das du die Map in einzelne Tiles aufteilst,
aus denen sie sich zusammensetzt. (Wie schon erwähnt)
Dazu sollte entweder bekannt sein, welche Tile-ID bzw. Bild
nicht betreten werden darf, oder du machst es abhängig von
der Position des Teils und setzt dann dort einen Marker (zb. Boolean)
für nicht passierbar.

Zb, stell dir vor deine Map ist ein 2D Integer Array:

int[][] map=new int[mapbreite][maphoehe]

Und darin sind die Tile-IDs für Bilder usw gespeichert.
(Dies ist nur sinnvoll mit einer Hintergrundähnlichen Map,
wenn es viele Objekte zum interagieren auf der Map gibt,
sollte man Objekte und keine IDs verwenden, die dann einzeln
angesteuert werden können).

Wenn jetzt der Spieler von X=5 und Y=1 einen Schritt nach Rechts
laufen will, musst du vorher abfragen: Ist die Stelle passierbar.
Und das geht auf zwei Weisen:

1.Tile-ID abfragen

die Bewegung nur zulassen wenn istTileIDBetretbar(map[6][1])
(da in map die IDs gespeichert sind)

2. Zusätzliche Block-Route

Bei dieser Variante legst du ein boolean Array genauso wie die map an:

boolean[][] passierbar =new boolean[mapbreite][maphoehe]

dann darfst du denn spieler nur laufen lassen wenn passierbar[6][1]==true

Wenn du jedes TIle als Objekt machst, kannst du ja das Objekt ganz einfach selber
fragen ob es betretbar ist.

Wie dein Spiel jetzt genau werden soll, hab ich nicht ganz verstanden.


Schau mal diese beiden Videos von mir an und sag was es eher werden soll,
bzw was genau du davon auch realisieren möchtest;
Eher so:Java RPG Game - "Dungeon Researcher" - YouTube
Oder so:Java Strategy Game Test - YouTube

hoffe du hast es einigermaßen verstanden was ich sagen wollte ;)

mfg BRoll
 

Titanpharao

Bekanntes Mitglied
Über einen MouseListener kannst du dir die Position wo du in die Spielwelt geklickt hast hohlen und dann "ziehen" und beim loslassen halt ein Rechteck bilden und schauen, ob deine Figur sich in diesem Feld befindet.

AStar (A*) Algorithmus wäre für dein blocken/laufen Problem optimal, gibts 100 Beispiele im Internet.(Glaube da kopiert immer einer vom nächsten hrhr)

Sonst die Map wie schon oft oben beschrieben als ein DoppeltesArray[][] speichern.

Und die Map füllen mit einer "MapTile" Klasse die dann z.b. die Information trägt ob Baum oder Weg ;)
und natürlich ob "durchgehbar" oder "blockierend".

@BRoll Grafiken sind wohl nicht unsere Stärke ;)
 
Zuletzt bearbeitet:

nomeal

Mitglied
Wichtig ist das du die Map in einzelne Tiles aufteilst,
aus denen sie sich zusammensetzt. (Wie schon erwähnt)
Dazu sollte entweder bekannt sein, welche Tile-ID bzw. Bild
nicht betreten werden darf, oder du machst es abhängig von
der Position des Teils und setzt dann dort einen Marker (zb. Boolean)
für nicht passierbar.

Zb, stell dir vor deine Map ist ein 2D Integer Array:

int[][] map=new int[mapbreite][maphoehe]

Und darin sind die Tile-IDs für Bilder usw gespeichert.
(Dies ist nur sinnvoll mit einer Hintergrundähnlichen Map,
wenn es viele Objekte zum interagieren auf der Map gibt,
sollte man Objekte und keine IDs verwenden, die dann einzeln
angesteuert werden können).

Wenn jetzt der Spieler von X=5 und Y=1 einen Schritt nach Rechts
laufen will, musst du vorher abfragen: Ist die Stelle passierbar.
Und das geht auf zwei Weisen:

1.Tile-ID abfragen

die Bewegung nur zulassen wenn istTileIDBetretbar(map[6][1])
(da in map die IDs gespeichert sind)

2. Zusätzliche Block-Route

Bei dieser Variante legst du ein boolean Array genauso wie die map an:

boolean[][] passierbar =new boolean[mapbreite][maphoehe]

dann darfst du denn spieler nur laufen lassen wenn passierbar[6][1]==true

Wenn du jedes TIle als Objekt machst, kannst du ja das Objekt ganz einfach selber
fragen ob es betretbar ist.

Wie dein Spiel jetzt genau werden soll, hab ich nicht ganz verstanden.


Schau mal diese beiden Videos von mir an und sag was es eher werden soll,
bzw was genau du davon auch realisieren möchtest;
Eher so:Java RPG Game - "Dungeon Researcher" - YouTube
Oder so:Java Strategy Game Test - YouTube

hoffe du hast es einigermaßen verstanden was ich sagen wollte ;)

mfg BRoll




So in der Art wie dein Strategie-Spiel würd ich es auch gerne machen. Vielleicht ist es ja möglich, dass ich dich per PM mal was frage??
 

Bile Demon

Bekanntes Mitglied

[OT]Bist du nicht der Typ mit dem krassen Snail-Spiel? Ich hab mir deine Videos jetzt aus Spaß einfach auch mal angesehen. Deinen "Strategy Game Test" hast du in einer Woche geschrieben? Ich hoffe, dass du da sehr viel älteren Code wiederverwendet hast, weil sonst würde das mein Weltbild arg ins Wanken bringen ;)

Sogar wenn ich mich dazu bringen könnte, eine Woche lang konsequent ohne nennenswerte Pausen from scratch an so einem Spiel zu arbeiten, wäre ich nichtmal sicher, ob ich etwas ähnliches in der kurzen Zeit hinbekäme.[/OT]
 

BRoll

Bekanntes Mitglied
[OT]Bist du nicht der Typ mit dem krassen Snail-Spiel? Ich hab mir deine Videos jetzt aus Spaß einfach auch mal angesehen. Deinen "Strategy Game Test" hast du in einer Woche geschrieben? Ich hoffe, dass du da sehr viel älteren Code wiederverwendet hast, weil sonst würde das mein Weltbild arg ins Wanken bringen ;)

Sogar wenn ich mich dazu bringen könnte, eine Woche lang konsequent ohne nennenswerte Pausen from scratch an so einem Spiel zu arbeiten, wäre ich nichtmal sicher, ob ich etwas ähnliches in der kurzen Zeit hinbekäme.[/OT]

[OT]
Tut mir wirklich leid dein Weltbild ins wanken zu bringen,
aber es ist nicht gelogen. Ich will auch damit nicht angeben oder sowas,
ich bin halt da irgendwie schnell. Ich weiß nicht woran das genau liegt,
vielleicht weil ich bevor ich was programmier den Quellcode komplett
im Kopf "schreibe" ,und dann nur noch abtippe was ich mir gedacht habe.
Klar kommen dann noch Fehlersuche usw dazu, aber mit der Zeit
und Erfahrung wird auch das weniger.

Das Spiel ist in einer Woche Hausboot Urlaub in den Niederlanden entstanden,
hab einfach immer abends dann den Laptop ausgepackt und ca 2-3 stunden programmiert.

Ist aber auch nicht fertig, Gegner usw fehlt noch, bloß ist die Spieltechnik usw schon fertig.

Aber alten Code benutze ich , auch wenns nicht gerade schlau ist, nicht.
Nur die Main methode mit dem Thread und Frame kopier ich.
Mir machts sozusagen Spaß was neu zu schreiben.

Ja und das "krasse Snail-Spiel" ist auch von mir xD
Da saß ich dann aber auch länger, zumahl alle Sprites noch selber gemacht werden mussten.
:)[/OT]
 

Bile Demon

Bekanntes Mitglied
[OT]Dann bleibt mir dazu nur noch zu sagen: Good job! :)

Mit den Dingern als Referenzarbeiten wirst du es sicher nicht schwer haben, später bei irgendeiner Spielefirma zu landen. Vor allem wenn du noch betonst, dass du mal eben so ein Spiele-Grundgerüst (für ein beliebiges Genre) in nichtmal 20 Nettostunden hinbekommst.

Ich glaub ich muss mir davon mal ne Scheibe abschneiden ^^[/OT]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
$ Einstieg in Java Game Development Spiele- und Multimedia-Programmierung 11
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
J 2d Ansicht mit Java 3d Spiele- und Multimedia-Programmierung 13
F Abbyy finereader aus java starten, Ergebnis zurück? Spiele- und Multimedia-Programmierung 2
P Zeichenübungen mit Java Spiele- und Multimedia-Programmierung 4
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
I Minecraft Java programmierungs fehler "MineCraft" Spiele- und Multimedia-Programmierung 6
J Java 2D Sicht Spiele- und Multimedia-Programmierung 13
H wma Datei abspielen: java.io.IOException: Resetting to invalid mark Spiele- und Multimedia-Programmierung 11
M Würdet ihr sagen Java Applets eignen sich gut Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben