Gra wielowątkowa - jak powinna działać

0

Witam,
postanowiłem napisać prostą grę w Javie (dokładniej bilard) wykorzystującą wielowątkowość. Niestety nie wiem w jaki sposób mam te wątki rozpisać.
Nie wiem czy 1 bila = 1 wątek uruchamiany co 0.05 sekundy, czy dać jeden wątek, który będzie obsługiwał położenie wszystkich bil.
Nie wiem też jak wymieniać dane o współrzędnych między różnymi wątkami.
Planszę rysuję za pomocą Canvas.
Proszę o porady i sugestie :)
Pozdrawiam :)

0

Co znaczy "watek uruchamiany co 0,5 sek" ?

0

No myślałem, że dzięki temu będziemy wiedzieli ile czasu minęło od ostatniego przesunięcia/uderzenia bili (bo za to ten wątek miał odpowiadać).

0

Ale po co chcesz to wiedzieć? Mnie się wydaje że (zważywszy na małą ilość bil) możesz zrobić jedna bila = jeden wątek, ale odpowidzialny za poruszanie się tej bili.

0

Poza tym nie da się zagwarantować przełączania wątków co 50ms, przełączenie też zabiera czas. W systemie pracują inne procesy, które mają wiele wątków, a rdzeni masz ile?
Czy ty chcesz napisać grę bilard, czy tylko poćwiczyć wielowątkowość? Jeśli wielowątkowość, to proponuję zacząć od klasycznych problemów pisarzy-czytających etc. Jak już będziesz miał biegłość w synchronizacji wątków etc. Pomyśl jak to inaczej wykorzystać.

0

Wielowątkowość w grze raczej polega na tym, że pierwszy wątek nasłuchuje wciśniecie klawiszy na klawiaturze, ew. kliknięcia myszy, drugi aktualizuje "scenę" czyli pozycję elemtów w okienku/na ekranie, a trzeci wszystko rysuje, aczkolwiek takie zabawy robiło się za czasów C. W Javie jest to bez sensu.

0

Rozbijanie programu na wątki nie ma sensu jeżeli te wątki muszą wymieniać kosmiczne ilości danych i wzajemnie się synchronizować. Takie rzeczy zabijają wydajność, źle skonstruowane algorytmy wielowątkowe mogą być nawet wolniejsze od jednowątkowych na wielowątkowych komputerach.

0

wiele wątków ma zwiększać wydajność gry, a to co robisz moim zdaniem kompletnie nie ma sensu
w ogóle nie widzę zastosowania dla wątków w grze w bilard

w fpsie na przykład możesz mieć jeden wątek główny - przygotowujący dane i wysyłający je do karty graficznej, jeden odpowiedzialny za fizykę i jeden za AI

poza tym w ogóle nie wiem czy autor wie chociaż co to jest wątek i do czego może służyć, skoro chce go uruchamiać co x sekund :|

1 użytkowników online, w tym zalogowanych: 0, gości: 1