Java Game Pixel "einfärben"

BraunBerry

Mitglied
Hallo Community,

in meinem Java-Spiel möchte ich eine Charaktererstellung hinzufügen ähnlich wie im Spiel "Starbound". Es soll 3 grundlegende Teile geben (Haare, Shirt, Hose) welche auf den Standardcharakter draufgelegt werden. Ich habe versucht mir ein System zu überlegen, bei dem ich möglichst wenig Dateien brauche und hatte eine Idee: Zum Beispiel die Frisur würde ich in Schwarz-Weiß malen, also mit verschiedenen Graustufen, und dann später im Programm mit einer Farbe "einfärben". Wichtig Dabei ist, dass nicht die transparenten Pixel der .png Datei gefärbt werden. Bei der Kleidung hatte ich die Idee, ein Grundbild zu malen, dessen Farben nicht verändert werden können und ein "Highlight"-Bild anzulegen, auf dem nur die Pixel zusehen sind, welche eingefärbt werden dürfen. Diese Bilder würden dann übereinandergelegt. In Minecraft wird so eine Technik bei der Textur der Spawneier verwendet. Ich wäre euch sehr verbunden, wenn ihr mir erklären könntet, wie man alle undurchstichtigen Pixel eines Schwarz-Weiß Bildes in Java mit einer Farbe bemalt.

Danke im Voraus :D

lg BraunBerry
 

Viktim

Bekanntes Mitglied
Zu deiner Frage, wie man die Farbe ändert:
Ich hab da mal eine Methode geschrieben
Java:
  public static BufferedImage aendereBild(BufferedImage image, Color neueFarbe) {
    for (int i = 0; i < image.getWidth(); i++) {
      for (int j = 0; j < image.getHeight(); j++) {
        Color pixelfarbe = new Color(image.getRGB(i, j), true);
        int rgb = new Color(neueFarbe.getRed(), neueFarbe.getGreen(), neueFarbe.getBlue(), pixelfarbe.getAlpha())
            .getRGB();
        image.setRGB(i, j, rgb);
      }
    }
    return image;
  }

Du must bloß aufpassen, dass der Farbtyp des Bilds RGB und nicht graustufen ist.
 

Jardcore

Top Contributor
Wenn du das ganze ernsthaft machen möchtest würde ich vorschlagen einen Shader zu schreiben. Alles andere hat einfach nur eine schlechte Performance.
Grundsätzlich ist dein Ansatz richtig. Nur dieser kann verbessert werden:
Bei der Kleidung hatte ich die Idee, ein Grundbild zu malen, dessen Farben nicht verändert werden können und ein "Highlight"-Bild anzulegen[...]
Hier solltest du eine extra Farbe wählen, die 'geHighlightet' wird. Pink oder andere abnormale Farben XD
Mit einem HSV Filter kannst du dann die Farbe herausfiltern und mit einem Shader färben.

Vielleicht guckst du dir mal das Framework LibGDX an. Dort kannst du einfache GLSL Shader benutzen.
https://libgdx.badlogicgames.com/
https://github.com/mattdesl/lwjgl-basics/wiki/ShaderLesson1
 

Major_Sauce

Bekanntes Mitglied
@Jardcore da hast du zwar nicht ganz unrecht, aber nötig sind Shader auch nicht unbedingt.
Ich habe nichts von einer Engine oder ähnlichem gelesen, die er verwendet, daher gehe ich davon aus dass er es mit AWT oder Swing macht. In dem Fall wird es mit einem Shader ein wenig knifflig. Mein Tipp dazu:
Du wirst wohl mit BufferedImages oder ähnlichem arbeiten, da der Charakter mit der Kleidung und allem sowieso (fast) immer zu sehen ist, kannst du natürlich einfach nur bilder mit Graustufen benutzen.
Dann musst du eigentlich nur mit einer oder zwei for-loops durch die Pixel des Bildes und dir die Farben anschauen, da gibt es mehrere Möglichkeiten, einfach mal nach "BufferedImage pixel manipulation" suchen und unser lieber freund Goockel wird dir dann bestimmt ein paar Beispiele zeigen.
Shader wären wahrscheinlich einfach overpowered, vor allem da du die ganze Aktion nur einmal beim Start des Spiels durchführen musst.

mfg Major
 

Major_Sauce

Bekanntes Mitglied
Das wäre leider ein wenig realitätsfern. Wenn man das professionell mit Java aufziehen möchte kommt man derzeit nicht an lwjgl oder libgdx vorbei.
Nun ja, es kommt ganz einfach auf die Größe des Spiels an. Natürlich werde ich mit Swing nicht an GTA oder ähnliches rankommen, selbst Starbound wird da schon ziemlich schwierig, aber man kann daraus doch schon ganz nette Spiele machen (Einfach mal nen GameJam verfolgen, da basteln ziemlich verrückte Leute ziemlich schnell ganz nette Spielchen aus dem nichts)
Und ich konnte im Beitrag nichts bzgl. Engine/Bindings finden, daher...

Mfg Major
 

Jardcore

Top Contributor
Und ich konnte im Beitrag nichts bzgl. Engine/Bindings finden, daher...
... kann man nur hoffen :)
Natürlich kann man mit allem Spiele entwickeln, auch mit Zettel und Stift oder nur mit seiner Vorstellungskraft. Das bezweifel ich auch nicht. Wollte nur drauf hinweisen, dass wenn man etwas wie Starbound oder Minecraft plant sollte man nicht mit AWT, Swing oder Java3D arbeiten, sondern gleich die Zeit sparen und zu ausgereiften Frameworks greifen. Das wird auch in jedem guten Tutorial, Buch oder Blog empfohlen.
Schließlich und das ist wohl das wichtigste will man hauptsächlich ein Spiel entwickeln. Deswegen sind Engines wie Unity und co. auch so bliebt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Component System Java 2D Game LibGDX Spiele- und Multimedia-Programmierung 6
$ Einstieg in Java Game Development Spiele- und Multimedia-Programmierung 11
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
BraunBerry Java Game Waypoint System Spiele- und Multimedia-Programmierung 3
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
hdi Das java-forum.org 2D-Game Projekt/Tutorial Spiele- und Multimedia-Programmierung 6
A Java 2D Game Spiele- und Multimedia-Programmierung 4
K Java Game Programming Buch Spiele- und Multimedia-Programmierung 3
M Java online multiplayer game Spiele- und Multimedia-Programmierung 2
J java netzwerk strategie game programmiert Spiele- und Multimedia-Programmierung 4
F Online Game mit Java? Spiele- und Multimedia-Programmierung 11
H LWJGL - Lightweight Java Game Library! Ist Java3D jetzt out? Spiele- und Multimedia-Programmierung 4
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
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
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
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
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

Ähnliche Java Themen

Neue Themen


Oben