Wasserstrahl animieren: ein Thread je Tropfen?

Status
Nicht offen für weitere Antworten.
D

Deady1

Gast
Hallo,
bin gerade bei der Konzeption eines neuen Spiels und möchte u.a. einen Wasserstrahl animieren.
Der Strahl schießt etwa 30 Sekunden lang und besteht aus ca. 300 einzelnen Tropfen.
Ausgangspunkt ist immer der Spieler, der Zielpunkt verschiebt sich jedoch permanent (MouseAction), so dass kein Auftreffpunkt und keine Flugbahn (ballistisch) der vorherigen gleicht.
Während des Spiels müssen zudem die Auftreffpunkte der einzelnen Tropfen ausgelesen und mit einer Matrix verglichen werden, um später so eine Art Trefferstatistik anzeigen zu können.

Meine Fragen: Sollte ich jeden einzelnen Tropfen in einem eigenen Thread laufen lassen? Müssen die Tropfen dazu in einer ArrayList vorgehalten werden oder gibt es etwas Näherliegendes? Worauf muss ich achten, um das Ganze performant hinzukriegen? Hat jemand schon mal etwas Ähnliches gebaut, so dass ich vielleicht abkupfern kann?

Vielen Dank für Eure Hilfe!
Deady
 

EgonOlsen

Bekanntes Mitglied
Deady1 hat gesagt.:
Meine Fragen: Sollte ich jeden einzelnen Tropfen in einem eigenen Thread laufen lassen?
Auf gar keinen Fall! 300 Threads! Das wäre absoluter Wahnsinn. Du speicherst die Tropfen einfach in irgendeiner Struktur, berechnest für einen nach dem anderen die neue Position und zeichnest dann. Wo kommt diese fehlgeleitete Threadaffinität hier im Forum her? Ich verstehe es nicht :autsch:
 

AlArenal

Top Contributor
Was kommt am Ende dabei heraus, "Pinkelprinz - Das Spiel"?

Aber Egon hat Recht, 300 Threads sind Wahnsinn. Was sollten die auch die ganze Zeit über treiben?
 
D

Deady1

Gast
... ja, ich glaube, der Name ist schon ganz nah dran. Ich will tatsächlich Fliegen "abschießen". "Lord of the Flies", oder so ...
Zum Üben, sozusagen. Gibts da vielleicht schon was in der Art?

schon mal danke vorab
Deady1
 

schalentier

Gesperrter Benutzer
Hi,

also ein Spiel hat i.A. schon eine gewisse Komplexitaet, und wenn du es gut machen willst, brauchst du ein paar Ueberlegungen vorher.

Jedes Spiel besteht im Kern aus einem Mainloop:

Code:
while( isRunning() ) {
  processPhysic( getTimeDelta() );
  processUI();
  processAI();
  
  renderAll();
}

Das kannste jetzt z.B. schoen ObjektOrientiert in Klassen fuer jeden Vorgang packen und alles greift auf ein zentrales Model zu. Das wird von renderAll() dann auch genutzt um die Grafik in einem Rutsch zu malen.

processUI() verarbeitet Nutzereingaben. Dazu wuerde ich alle MouseEvents, KeyEvents, etc in eine Queue packen. Dabei kann auch gleich das Mapping von Eingabe (zb LMB pressed) -> Befehl (zb shoot) passieren (was dann auch konfigurierbar ist).

processAI() prinzipiell das gleiche wie UI nur kommen die Events vom Computergegner/Netzwerk/etc.

processPhysic( delta ) bewegt das Modell einen Zeitschritt weiter (uebergeben wird die Zeit seit dem letzten Aufruf --> gleiche Ablaufgeschwindigkeit wie unterschiedlichen Frameraten).

Tjo und renderAll() zeichnet alles. Z.b. auf ein Offscreen BufferedImage, welches von dem anzeigenden Panel mit einem anderen getauscht wird, wenn renderAll() fertig ist.

Also nix in Threads. Es sei denn du willst fuer Mehrprozessorsysteme optimieren, dann wird alles bissel komplizierter :)
 
D

Deady1

Gast
Wow, vielen Dank!
Ich habe auch schon einiges an Gehirnschmalz investiert und mir die erforderlichen Abläufe, die benötigten Objekte und Methoden zurecht gelegt. Werde am Wochenende mal mit einem einfachen Modell beginnen, zunächst in 2D.
Ich hoffe, dass ich mit JBuilder2005 und J3D-Addin von der JDK-Seite her so halbwegs in die richtige Richtung laufe.

Nochmals Vielen Dank für die Hinweise!
Deady1
 
D

Deady1

Gast
... interessanter Artikel ...,
... habe aber leider nur die Hälfte verstanden.

Habe nun die ersten knapp dreihundert Codezeilen geschrieben und ungefähr ein Dutzend Baustellen mit ungelösten Problemen. Wird wohl noch ein wenig dauern bis zur Beta von "Herr der Fliegen".
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Blenderdatei mit JMoneyEngine animieren Spiele- und Multimedia-Programmierung 2
Z Objekte animieren mit Threads Spiele- und Multimedia-Programmierung 4
Luk10 (LWJGL) Aufwendiges Animieren von Texturen Spiele- und Multimedia-Programmierung 16
F LWJGL Smoother animieren lassen (wie bei JOGL = Animator) Spiele- und Multimedia-Programmierung 3
D 2D animieren aber wie? Spiele- und Multimedia-Programmierung 48
M Schornstein: Rauch simulieren/animieren ? Spiele- und Multimedia-Programmierung 6
raptorrs Teile einer CAD-Assembly Gruppe in JAVA animieren? Spiele- und Multimedia-Programmierung 3
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
H Exeption in thread "Thread-2" NullPointerExeption: init methode? Spiele- und Multimedia-Programmierung 25
O Thread pausieren und wieder starten Spiele- und Multimedia-Programmierung 2
kaoZ Animation in eigenen Thread auslagern..... Spiele- und Multimedia-Programmierung 1
gamebreiti Daemon Thread Spiele- und Multimedia-Programmierung 4
M Point & Click Thread Probleme Spiele- und Multimedia-Programmierung 20
N JPanel Inhalt aktualisiert nach Thread.sleep nicht Spiele- und Multimedia-Programmierung 2
S Thread und jpanel-paintcomponent kombinierbar?? Spiele- und Multimedia-Programmierung 14
Kenan89 Alternative zu Thread Runnable Spiele- und Multimedia-Programmierung 2
O Universe <- show Thread Spiele- und Multimedia-Programmierung 14
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
C ***** bitte thread löschen *** Spiele- und Multimedia-Programmierung 3
A KeyListener - Thread Problem Spiele- und Multimedia-Programmierung 2
D Snake n+1-Thread Spiele- und Multimedia-Programmierung 2
B Applet startet, aber führt den Thread nicht aus Spiele- und Multimedia-Programmierung 7
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
G Thread startet nicht im Vollbild modus Spiele- und Multimedia-Programmierung 3
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
Developer_X Thread in Java3D Spiele- und Multimedia-Programmierung 8
D Methode in eigenem Thread auslagern Spiele- und Multimedia-Programmierung 9
S Probleme mit Thread beim Streaming Spiele- und Multimedia-Programmierung 1
F Problem mit Thread.sleep() Spiele- und Multimedia-Programmierung 7
Tapsi Thread wartet auf Threads Spiele- und Multimedia-Programmierung 7
M Thread.sleep() problem Spiele- und Multimedia-Programmierung 10
0 Workaround für Thread.sleep()-Bug Spiele- und Multimedia-Programmierung 15
M Roundbased - Thread anhalten Spiele- und Multimedia-Programmierung 8
S Thread unterbrechen Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben