• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wielowątkowość, czy dobrze rozumiem jak działa w grze

VPS Starter Arubacloud
+1 głos
2,364 wizyt
pytanie zadane 13 czerwca 2017 w C i C++ przez Kodeman Gaduła (4,480 p.)
Witam, chciałem się spytać, jak mogłaby działać wielowątkowość w grze. Dajmy na to Faster than light. Gra strategiczna w kosmosie.

Każda broń ładuje się i strzela niezależnie od siebie, nasza załoga porusza się po statku, załoga przeciwnika również, a jak stoją, to mają animację pracy. W tle poruszające się... tło.

Grę można zapauzować i wtedy nic się nie porusza, ale nadal możemy wydawać rozkazy.

Czy dobrym pomysłem byłoby zrobienie wszystkiego, co miałoby działać w zapauzowanej grze, w głównym wątku, a wszystko co po pauzie ma się nie ruszać, w drugim wątku? Gdy gra jest zapauzowana, to wyświetla się tylko napis pauza. Czy jest to "właściwe"/najlepsze rozwiązanie? Z góry dziękuję.

1 odpowiedź

+3 głosów
odpowiedź 13 czerwca 2017 przez criss Mędrzec (172,590 p.)
wybrane 13 czerwca 2017 przez Kodeman
 
Najlepsza
Wielowątkowość jest ci tu do niczego niepotrzebna. Rozbijanie programu na wiele wątków przydaje się gdy chcesz wykonywać jakieś czynności równolegle. Co nie znaczy, że np. każdy poruszający się przeciwnik powinien mieć dedykowany wątek. Do samej logiki gry z reguły jeden wątek jest wystarczający - wszystko jest obliczane sekwencyjnie (jedno po drugim), a gdy wszystko zostanie obliczone dostajesz wynik w postaci klatki - obrazu.

Wszystkie ruchy, transformacje itd są oparte o czas pomiędzy klatkami (czas przez jaki ostatni klatka była renderowana; w uproszczeniu), zatem taki efekt pauzy można uzyskać poprzez nie obliczanie tego co ma pozostać nieruchome. Oczywiście nadal renderujesz wszystko normalnie, ale po prostu zatrzymujesz obliczenia ruchu, logiki itd - 'update-owania sceny' po prostu.
komentarz 13 czerwca 2017 przez Kodeman Gaduła (4,480 p.)
Rozumiem, dziękuję. Czy to znaczy, że większość gier 2d nie korzysta z wielowątkowości?
1
komentarz 13 czerwca 2017 przez Pajdas Mądrala (5,930 p.)
Tak. Gry 2d w większości przypadków nie używają wielowątkowości, przynajmniej przy działaniu, bo np. kilka wątków może na raz zajmować się wczytywaniem tekstur, albo pliku *.txt z zapisem gry.

A to co mówiłeś o animacji i poruszającym się tle, to zasługa głównie karty graficznej, która korzysta z wielu wątków. tvgry.pl miało nie tak dawno materiał o tym jak działa karta graficzna. Jest to materiał trochę okrojony, ale jest celowany do gracy a nie do developerów. Z tego co wiem, to po samej grze nie da się określić ile wątków obsługuje, ponieważ wiele wątków robi to samo co miałby zrobić jeden.
1
komentarz 13 czerwca 2017 przez criss Mędrzec (172,590 p.)
W kolejnym(ch) wątkach może działać np. komunikacja sieciowa czy doczytywanie modeli/tekstur "w locie", bo to są działania które mogą trwać bardzo długo (przez bardzo długo rozumiem kilkadziesiąt-kilkaset ms), a nie chcielibyśmy, żeby czas rysowania klatki skoczył z kilkunastu do kilkuset ms bo model musiał się doczytać albo czekaliśmy na odpowiedź od serwera.

Samo renderowanie odbywające się na karcie graficznej to już zupełnie inna sprawa i nie ma żadnego związku z powyższym. Wynika to z działania samej karty graficznej, której zadaniem jest zrównoleglać nie dwa czy trzy ale tysiące obliczeń na raz.

Podobne pytania

0 głosów
1 odpowiedź 310 wizyt
pytanie zadane 11 listopada 2018 w C i C++ przez matiibal Użytkownik (620 p.)
+2 głosów
2 odpowiedzi 535 wizyt
0 głosów
1 odpowiedź 1,570 wizyt
pytanie zadane 7 czerwca 2017 w PHP przez Majcon Nowicjusz (200 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...