Wpis z mikrobloga

Nie mam zadnego doswiadczenia z programowaniem gier, a tym bardziej z fizyka w grach, stad to moze niezbyt madre pytanie. Gram w bilard na telefonie. Przy rozpoczeciu partii mam defaultowo ustawiony kij, nic nie zmieniam i uderzam zawsze z maksymalna sila. Dlaczego wlasciwie te bile za kazdym razem inaczej leca? #programowanie #gamedev
  • 15
@Pieron: jezeli masz suwak uderzenia, to ta sila zawsze bedzie taka sama, o ile wlasnie nie ma jakiegos generatora liczby losowej w ktoryms momencie. Ciekawy wlasnie jestem jak to sie rozwiazuje
@miknan: dużo możliwości, zakładając, że udarzasz identycznie - może to być wina niedokładności liczb zmiennoprzecinkowych i skalowania fizyki do opóźnień między każdą klatką gry.

W skrócie - czasem robi się w grach tak, że fizyka dostaje parametr deltaT - czyli ile milisekund upłynęło od ostatniej klatki gry. I dzięki temu jak jest zwis na chwilę - to w tym kroku fizyki będzie dłuższy deltaT i piłka poleci dalej - więc dla
@miknan: Zależy od twórcy gry, ja bym to zrobił tak:
Zapomniał o sile, ona może być ta sama i skupił się na kącie (tylko w zderzeniu bila <-> bila, nie w zderzeniu bila<->banda czy bila<-> kij - ten powinien być taki sam!).
Jeżeli kąt uderzenia bili w bile przyjmuje wartości 0-90 (więcej nie trzeba ;)), to losuje zmienną na przestrzeni liczb po przecinku i ją odejmuję/dodaję, żeby nadać jej pseudolosowość.
@MirekLurek: ja wlasnie pomyslalem, ze oni maja tam opcje ustawienia spinu na bili, wiec teoretycznie, chociaz na starcie spin ustawiony jest dokladnie na srodku bili, moga troche losowo zmienic te wartosc przy pierwszym uderzeniu. W prawdziwym zyciu i tak sie nie uderzy centralnie tam gdzie trzeba.
@miknan: jeszcze dodam, że to jest duży problem w grach multiplayer, i jest kilka rozwiązań, najelegantsze chyba robi tak, że fizyka chodzi w osobnym wątku od grafiki i ze stałą częstotliwością, a grafika chodzi najszybciej jak się da i interpoluje dane z 2 ostatnich klatek gry wyliczonych przez wątek fizyki. Dzięki temu dzieje się u każdego to samo, ale jeden gracz widzi to w 100 klatkach na sekundę a drugi w