Gra wielowątkowa - jak powinna działać

Gra wielowątkowa - jak powinna działać
KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
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 :)

LN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1398
0

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

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
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ć).

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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.

massther
  • Rejestracja: dni
  • Ostatnio: dni
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ć.

elwis
  • Rejestracja: dni
  • Ostatnio: dni
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.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
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.

unikalna_nazwa
  • Rejestracja: dni
  • Ostatnio: dni
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 :|

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.