Spiel-Oberfläche

TimoH.

Mitglied
Hallo,

ich hätte da einfach mal eine Frage:

Wie soll man Spiel-Oberflächen am besten realisieren. (Menüs, Statusleisten, Fähigkeiten etc.):

Ich arbeite mit ein paar Freunden an einem etwas größeren RPG Projekt (2D) und sind zur Zeit dabei
das Grundgerüst zu schreiben (Also Darstellung etc.).

Jetzt habe ich angefangen mir über oben genanntes Thema Gedanken zu machen und habe auch schon
2 Interfaces gebastelt mit denen ich das realisieren wollte:

Java:
package de.syfy.project.engine.hud;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.image.BufferedImage;

/**
 *
 * @author Timo
 * 
 * Info folgt.
 */
public interface UI_Container {
    
    public void setSize(Dimension d);
    
    public Dimension getSize();

    /*
     * Position relativ zu GamePanel
     * 
     */
    public void setPosition(Point p);
    
    public Point getPosition();
    
    public void setBackground(BufferedImage bg);
    
    public void addItem(UI_Item item);
    
    public void removeItem(UI_Item item);
    
    public void drawContainer(Graphics g);
}

Java:
package de.syfy.project.engine.hud;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.image.BufferedImage;

/**
 *
 * @author Timo
 * 
 * Ausführlichere Info folgt
 */
public interface UI_Item {
    
    public void setImage(BufferedImage img);
    
    public BufferedImage getImage();
    
    public void setSize(Dimension d);
    
    public Dimension getSize();
    
    /*
     * Position ist relativ zu der Position des Containers.
     */
    public void setPosition(Point p);
    
    public Point getPosition();
    
    /*
     * Wird aufgerufen, wenn das Objekt geklickt wird.
     */
    public void itemClick();
    
    /*
     * Wird aufgerufen, wenn der Mauszeiger über das Item kommt
     */
    public void itemHover();
    
    public UI_Container getUIContainer();
    
    public void drawItem(Graphics g);
}

Nun stellt sich mir aber die Frage, ist es eventuell besser Swing bzw. AWT GUI-Elemente zu nutzen,
oder ist es strukturell schöner das dann doch selbst zu machen.

Was ist eure Meinung, würde mich interessieren :)

mfg Timo
 

Kr0e

Gesperrter Benutzer
Naja.... Es kommt auf das Spiel an... Wenn du ein schönes Mitteralterspiel machst,
wären moderne Scrollbalken eher hässlich und unpassend. Generell würde ich aber sagen, dass Swing dir gewaltige Möglichkeiten bietet, was das Look&Feel angeht. ALso Finger weg von AWT!

Wenn du nur button brauchst, ist es wohl besser, das selbst zu machen. Aber Sachen wie Listen, Textfelder etc selbst machen kann ewig dauern. Sowieso würde ich kein Java2D für SPiele verwenden.

Ich mache zur Zeit etwas ziemlich ähnliches... Ein 2D Coop-RPG. Mit Slick + Isomtrischen GRafiken... Wenn du Fragen hast... ;)

Aber strukturell ist es wohl schöner, Swing zu nehmen. Sonst fängst du bei null an...
 

TimoH.

Mitglied
na das mit dem bei "null" anfangen ist nicht unser Problem, da wir für dieses Projekt viel Zeit aufbringen werden und wirklich alles von "Unten" aufrollen wollen.

Naja aber du hast wohl recht für dinge wie Listen bzw. Textfelder werden wir dann doch auf Swing zurückgreifen.

Am Ende noch: Was ist an Java2D so schlimm? :(
 

Kr0e

Gesperrter Benutzer
Naja für Tetrisspiele und simple Junp'n'Run Spiele gehts vlt noch..

Das Problem ist eifnach die Geschwindigkeit! OpenGL 2D (z.b. die Slick Library) bringt endlosen Performanceschub... einfach durch die Hardwarebeschleunigung... Das zeichnen von Images, das Zeichnen von Primitiven etc... Es kommt immer auf die Komplexität des Spiels an... Bei komplexen Spielen bloß kein Java2D. Bei openGL hat man allerdings ein Problem (Alles hat eben eine Schattenseite...) es ist nicht so leicht ein GUI für OpenGL zu finden. Es gibt da ein paar wie z.B. "Nifty GUI", "FengGUI"...

Ein ausgesprochen gute Lösung wäre es, Swing auf OpenGL zu rendern... Das ist allerdings schwer... Ein Forenmitglied names Marco13 hat Swogl entwickelt, welches genau das kann: Swing auf openGL zu rendern. Es ist LPGL und obwohl die Website lange nicht mehr aktualisiert wurde, ist er in vollem Gange mit einer 2.0 Version^^ Einfach mal ne PM, falls in dieser Richtung Interesse besteht ;) Ich hab für mein Spiel etwas ähnliches gemacht, allerdings ist mein Spiel nicht OpenSource ;)

Ansonsten viel Glücik weiterhin ;)

Gruß,

Chris
 

TimoH.

Mitglied
Na dann werde ich mich wohl mal mehr informieren, weil ich denke schon dass es ein etwas komplexeres Spiel wird, und wir das so performant wie möglich machen wollen.

Ich hoffe ich kann den code den ich jetzt schon habe einfach anpassen :D
 

TimoH.

Mitglied
So wir werden jetzt JWJGL nutzen, um unsere Engine zu schreiben ;).

Slick sieht zwar ganz interessant aus, aber wir wollen es dann doch lieber selbst machen hehe
 

Kr0e

Gesperrter Benutzer
Überschätz Slick nicht ;) Slick ist keine Engine, es gibt nicht mal einen Szenengraph.. Aber der Voteil ist, dass dir die lästigen und echt nervigen Sachen abgenommen werden. Soundwiedergabe mit OpenAL ist bereit schön zusammengefasst etc... Ist meiner Ansicht nach definitiv einen Blick wert...
 

muckelzwerg

Bekanntes Mitglied
Swing auf OpenGL zu zeichnen ist eigentlich nicht sonderlich schwer. Wenn ihr euch in die Programmierung vertieft, solltet ihr solche Sachen sowieso recht bald verstehen und selbst lösen können.
Im Wesentlichen schiebt ihr den Rasterinhalt aus Java2D in eine Textur für OGL. Solange ihr beim Aktualisieren der UI aber am Swing-Thread hängt, wird da nichts schneller werden.
Wenn ihr Java2D nur als Zeichnungsbibliothek verwendet, könnt ihr höhere Bildraten erreichen, als die von Java gedeckelten.
Nützen wird euch das aber letztlich auch nichts, weil Java da bereits schnell genug ist. Oder habt ihr vor deutlich mehr als 60fps zu spielen?
Wirklich interessant wird es, wenn ihr zusätzliche Funktionen wie z.B. Shader auf die UI anwenden wollt. Oder wenn ihr statische Objekte habt, die in Java2D umständlich kopiert werden müssen und die ihr stattdessen auf die Grafikkarte schieben könnt.
 

TimoH.

Mitglied
@Kr0e ok^^
naja im endeffekt werden 60FPS ja reichne, soll ja nen RPG werden.

@muckelzwerg
Hab mich jetzt aber mal in LWJGL reingelesen und finde es schon relativ nice gemacht. Wir werden wohl nicht mehr auf Swing zurückgreifen :D. Also hat sich das erledigt.

Und da wir nur ein 2D Spiel schreiben ist ja die Hardwareauslastung gering... Warum sollen wir den CPU unnötig belasten, wenn
wir Hardwarebeschleunigung "geschenkt" bekommen^^
 

Kr0e

Gesperrter Benutzer
Swing auf OpenGL zu zeichnen ist eigentlich nicht sonderlich schwer.

Hm, es geht nicht darum, Swing zu zeichnen, sondern Swing als funktionsfähiges UI auf OpenGL zu übetragen und das ohne ein sichtbares Fenster ;) Auf dem Gebiet kenne ich mich inzwischen recht gut aus, es ist möglich, aber es verlangt viel knowhow! vorallem wenn es dann darum geht, das ganze auch noch möglichst fix zu machen ;)

Swing mit openGL ans laufen zu kriegen ist schon eeeeetwas schwerer als SwingUtilities.paintComponent () ;-)
 

muckelzwerg

Bekanntes Mitglied
TimoH, ich glaube, Du solltest Dich nochmal etwas genauer einlesen und mal ein paar Sachen ausprobieren. :)

Kr0e, Du redest doch von den Funktionen die Marco13 im Wesentlichen abgedeckt hat. Und dahinter steckt nicht allzuviel Magic.
Das Blöde an der Sache ist, dass man die eine zusätzliche Kopie der Inhalte nicht umgehen kann, weil Swing dann in einer Art Kompatibilitätsmodus (=langsam) zeichnet, wenn die Zieldatenstruktur nicht bekannt ist.
Das Ergebnis als Textur nach OGL und die Mausereignisse zurückzuschieben ist ja nicht die Welt. Schneller wird es dadurch dann aber nicht.
 

Marco13

Top Contributor
Ein ausgesprochen gute Lösung wäre es, Swing auf OpenGL zu rendern... Das ist allerdings schwer... Ein Forenmitglied names Marco13 hat Swogl entwickelt, welches genau das kann: Swing auf openGL zu rendern. Es ist LPGL und obwohl die Website lange nicht mehr aktualisiert wurde, ist er in vollem Gange mit einer 2.0 Version^^ Einfach mal ne PM, falls in dieser Richtung Interesse besteht ;)

Oder mal bei http://www.java-forum.org/codeschnipsel-u-projekte/120521-swogl-swing-meets-opengl.html#post777842 reinschauen ;)
 

muckelzwerg

Bekanntes Mitglied
Nein, natürlich ist das mehr Arbeit als ein Bubblesort. :)
Aber im Prinzip gibt es ja nur den glTexSubimage()-Weg wenn man eine Softwarebibliothek zum Zeichnen verwenden will.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Server für Spiel aufsetzen, was Shutdown ist Spiele- und Multimedia-Programmierung 3
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
ItundMathe1994 TicTacToe Spiel programmieren Spiele- und Multimedia-Programmierung 2
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
Leon.tr3x Mein erstes Programm/Spiel Spiele- und Multimedia-Programmierung 10
O Texas Hold'em Poker als Online-Spiel mit Freunden Spiele- und Multimedia-Programmierung 5
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
Excess Spiel abzugeben Spiele- und Multimedia-Programmierung 1
I Superhelden - Spiel Spiele- und Multimedia-Programmierung 14
E Hauptmenü und Spiel ???? Spiele- und Multimedia-Programmierung 2
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
R Interaktives Spiel Spiele- und Multimedia-Programmierung 5
L Spiel im Editor testen Spiele- und Multimedia-Programmierung 4
Jackii dispatchUncaughtException in Quiz Spiel mit GUI Layout Spiele- und Multimedia-Programmierung 6
D Textbasiertes Spiel Spiele- und Multimedia-Programmierung 8
K Android Spiel Programmieren Spiele- und Multimedia-Programmierung 6
L BrickBreaker Spiel Spiele- und Multimedia-Programmierung 3
A Spiel Figur ansprechen und bewegen Spiele- und Multimedia-Programmierung 3
it_is_all Dialogbox im Spiel - Text in Blöcke aufteilen Spiele- und Multimedia-Programmierung 4
F Koordinieren und Essen von Snake - Spiel Spiele- und Multimedia-Programmierung 14
G Entity Verwaltung in einem 2D Spiel Spiele- und Multimedia-Programmierung 1
E Möchte Spiel Programmieren Spiele- und Multimedia-Programmierung 7
S Connect6 Spiel - Code in ei Spiele- und Multimedia-Programmierung 2
A Spiel nach Abfrage beenden oder neustarten Spiele- und Multimedia-Programmierung 1
G Welten Generierung 2D Spiel Spiele- und Multimedia-Programmierung 4
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
T Probleme bei "Pixel-Fighting"-Spiel: Unausgewogene Mannschaften??? Spiele- und Multimedia-Programmierung 4
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
L Coordinate Space JavaFX 2d Spiel Spiele- und Multimedia-Programmierung 0
C Vier Gewinnt Spiel Programmiertipp Spiele- und Multimedia-Programmierung 11
N Jump and run Spiel - wo anfangen / weitermachen? Spiele- und Multimedia-Programmierung 11
K Spiel zum zuordnen von Dienstgraden und Dienstgradabzeichen Spiele- und Multimedia-Programmierung 5
M Textbasiertes Spiel programmieren Spiele- und Multimedia-Programmierung 4
T 2d-Spiel Licht Spiele- und Multimedia-Programmierung 5
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
T Spiel rendern Spiele- und Multimedia-Programmierung 2
Grevak Sounds im Spiel Spiele- und Multimedia-Programmierung 5
B Fehlerhafte Mob Bewegungen in Tower Defense Spiel Spiele- und Multimedia-Programmierung 2
F Spiel ähnlich wie SimCity/o.ä programmieren Spiele- und Multimedia-Programmierung 5
X Erklärung zu einem Tic Tac Toe Spiel Spiele- und Multimedia-Programmierung 1
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Kollisions abfrage bei 3D spiel? Spiele- und Multimedia-Programmierung 12
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
P [Spiel]Welche Bilder sind gleich Spiele- und Multimedia-Programmierung 2
E GUI zum Spiel hinzufügen Spiele- und Multimedia-Programmierung 19
S 2D Spiel - Physics Spiele- und Multimedia-Programmierung 16
S 2D Spiel "Der Sprung" Spiele- und Multimedia-Programmierung 7
A 2D Spiel ohne Tiles Spiele- und Multimedia-Programmierung 10
V welche vorgehensweise beforzieht ihr bei einfachem Quizz Spiel ? Spiele- und Multimedia-Programmierung 4
S Quaxli's Heli Spiel läuft nicht nach Plan Spiele- und Multimedia-Programmierung 2
G Methode sleepen während das Spiel weiterläuft Spiele- und Multimedia-Programmierung 3
T Spiel Überprüfung Spiele- und Multimedia-Programmierung 3
P Spiel laggt nach unbestimmter Zeit tierisch. Spiele- und Multimedia-Programmierung 27
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
W Spiel ist langsam/laggt Spiele- und Multimedia-Programmierung 18
J Ascii Spiel Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
O Vollständige Musik in Spiel einbauen (wav - Format) Spiele- und Multimedia-Programmierung 8
Y Quiz Spiel Spiele- und Multimedia-Programmierung 1
J Conways Spiel des Lebens nachprogrammiert Spiele- und Multimedia-Programmierung 1
B Spiel Programmieren, die Anfänge Spiele- und Multimedia-Programmierung 6
D [OpenGL] Spiel in der Art von Age of Empires Spiele- und Multimedia-Programmierung 4
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
S Spiel installeren lassen und organisieren Spiele- und Multimedia-Programmierung 3
J Lichtupdate in tile-basiertem Spiel Spiele- und Multimedia-Programmierung 4
P Erstes Spiel (Strategie) Spiele- und Multimedia-Programmierung 31
J Mein erstes Spiel [Spielevorstellung] Spiele- und Multimedia-Programmierung 2
Bananabert Spiel Renderer Images und Strings Spiele- und Multimedia-Programmierung 4
N Spiel Menü error ! Spiele- und Multimedia-Programmierung 5
S Anfangsmenü mit Spiel verknüpfen Spiele- und Multimedia-Programmierung 16
S Spiel ruckelt trotz 50 fps Spiele- und Multimedia-Programmierung 16
D Spiel-Bilddaten auswerten Spiele- und Multimedia-Programmierung 7
Creylon [LWJGL] Spiel Exportieren Spiele- und Multimedia-Programmierung 2
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
Devil0s Spiel laggt trotz 90 FPS (bei der Anzeige) Spiele- und Multimedia-Programmierung 9
N Webanwendung als eine Art Spiel Spiele- und Multimedia-Programmierung 8
L Korrekte Darstellung von Wasser in 2D Spiel Spiele- und Multimedia-Programmierung 4
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
J wohin mit der Logik des Spiel Spiele- und Multimedia-Programmierung 2
R Experimente mit Quaxlis Spiel Spiele- und Multimedia-Programmierung 12
W Spiel-Grundlagen selbst austüfteln: Kollisionen? Spiele- und Multimedia-Programmierung 3
Kenan89 Java 2D Spiel Spiele- und Multimedia-Programmierung 39
M Automaten Spiel Spiele- und Multimedia-Programmierung 27
J Tic tac toe spiel Neustart Spiele- und Multimedia-Programmierung 5
S 2D Spiel im Vollbild langsamer als im Fenster Spiele- und Multimedia-Programmierung 11
A TicTacToe Spiel Spiele- und Multimedia-Programmierung 3
S Verbesserungvorschläge Spiel Z Spiele- und Multimedia-Programmierung 31
S Spiel abbrechen Spiele- und Multimedia-Programmierung 3
J Greenfoot "Little Crab" Spiel Erweiterungen Spiele- und Multimedia-Programmierung 6
P Spiel HUD erstellen Spiele- und Multimedia-Programmierung 6
E Spiel neustarten Spiele- und Multimedia-Programmierung 4
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
V Basisprinzipien Breakout-Spiel Spiele- und Multimedia-Programmierung 8
E Spiel startet nach exportieren nicht Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen


Oben