Ich mache mir gerade Gedanken, über das Grundkonzept, welches ich für mein Spiel verwenden soll.
Derzeit hab ich ein paar Probleme mit dem verarbeiten von Eingaben und muss einiges mit synchronize am laufen halten. So läuft es bisher:
Ich starte einen Thread, in dem die Endlosschleife des Spieles läuft, also Spielwelt integrieren, Spielwelt zeichnen und von vorne...
Nun verarbeite ich die Nutzereingaben über die Listener des JPanel, auf dem ich das ganze Zeichne.
Das Problem ist nun, dass die Eingaben somit in ja im Eventdispatcher Thread von Swing laufen und dabei teils in Momenten die Spielwelt durch die Eingaben verändert wird, in denen sie nicht verändert werden darf, weil ich gerade über diese in einem anderen Thread herüberiteriere.
Das endet dann in einer concurrent Modification Exception. Um das zu verhindern hab ich bisher einige synchronized innerhalb das Threads, der die Spielwelt verarbeitet. Aber so richtig sicher bin ich mir damit nicht. Es funktioniert zwar scheinbar schon aber....
Wie genau macht man das am besten mit den Threads in so einem Programm ?
Toll wäre es eigentlich auch noch, wenn ich einen speziellen Renderthread habe oder so ?!
Derzeit hab ich ein paar Probleme mit dem verarbeiten von Eingaben und muss einiges mit synchronize am laufen halten. So läuft es bisher:
Ich starte einen Thread, in dem die Endlosschleife des Spieles läuft, also Spielwelt integrieren, Spielwelt zeichnen und von vorne...
Nun verarbeite ich die Nutzereingaben über die Listener des JPanel, auf dem ich das ganze Zeichne.
Das Problem ist nun, dass die Eingaben somit in ja im Eventdispatcher Thread von Swing laufen und dabei teils in Momenten die Spielwelt durch die Eingaben verändert wird, in denen sie nicht verändert werden darf, weil ich gerade über diese in einem anderen Thread herüberiteriere.
Das endet dann in einer concurrent Modification Exception. Um das zu verhindern hab ich bisher einige synchronized innerhalb das Threads, der die Spielwelt verarbeitet. Aber so richtig sicher bin ich mir damit nicht. Es funktioniert zwar scheinbar schon aber....
Wie genau macht man das am besten mit den Threads in so einem Programm ?
Toll wäre es eigentlich auch noch, wenn ich einen speziellen Renderthread habe oder so ?!